1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-02-24 03:54:10 +01:00

Merge pull request #2359 from Nicofuma/ticket/12097

[ticket/12097] Validate_data() should work with class method

* Nicofuma/ticket/12097:
  [ticket/12097] Bug fix and adding unit test
  [ticket/12097] Validate_data() should work with class method
This commit is contained in:
Joas Schilling 2014-04-27 20:43:03 +02:00
commit 0b6accf1ac
2 changed files with 50 additions and 2 deletions

View File

@ -1326,9 +1326,18 @@ function validate_data($data, $val_ary)
{
$function = array_shift($validate);
array_unshift($validate, $data[$var]);
$function_prefix = (function_exists('phpbb_validate_' . $function)) ? 'phpbb_validate_' : 'validate_';
if ($result = call_user_func_array($function_prefix . $function, $validate))
if (is_array($function))
{
$result = call_user_func_array(array($function[0], 'validate_' . $function[1]), $validate);
}
else
{
$function_prefix = (function_exists('phpbb_validate_' . $function)) ? 'phpbb_validate_' : 'validate_';
$result = call_user_func_array($function_prefix . $function, $validate);
}
if ($result)
{
// Since errors are checked later for their language file existence, we need to make sure custom errors are not adjusted.
$error[] = (empty($user->lang[$result . '_' . strtoupper($var)])) ? $result : $result . '_' . strtoupper($var);

View File

@ -0,0 +1,39 @@
<?php
/**
*
* @package testing
* @copyright (c) 2014 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
require_once dirname(__FILE__) . '/validate_data_helper.php';
class phpbb_functions_validate_with_method_test extends phpbb_test_case
{
protected $helper;
protected function setUp()
{
parent::setUp();
$this->helper = new phpbb_functions_validate_data_helper($this);
}
public function test_validate_date()
{
$this->helper->assert_valid_data(array(
'method_call' => array(
array(),
true,
array(array(array($this, 'with_method'), false)),
),
));
}
public function validate_with_method($bool, $optional = false)
{
return ! $bool;
}
}