1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-31 14:00:31 +02:00

Merge remote-tracking branch 'marc1706/ticket/11538' into develop-olympus

* marc1706/ticket/11538:
  [ticket/11538] Add optional switch as argument to hex colour validation
  [ticket/11538] Modify test colour values
  [ticket/11538] Limit comment in acp_groups to 80 characters per line
  [ticket/11538] Move group ID into abstract test class and add more test cases
  [ticket/11538] Merge calls to validate_data() in acp_groups
  [ticket/11538] Rename phpbb_validate_colour to phpbb_validate_hex_colour
  [ticket/11538] Use abstract class for functional test cases for group colour
  [ticket/11538] Add function phpbb_validate_colour for validating colours
  [ticket/11538] Make sure regex doesn't allow multiple color values
  [ticket/11538] Add tests for acp group manage page
  [ticket/11538] Simplify colour value check and remove support for '#'
  [ticket/11538] Fix incorrect regex and test for duplicate # in color string
  [ticket/11538] Use regex for testing color value and improve tests
  [ticket/11538] Make sure group color can't exceed maximum of 6 characters
This commit is contained in:
Andreas Fischer
2013-05-26 18:24:29 +02:00
8 changed files with 145 additions and 7 deletions

View File

@@ -413,13 +413,21 @@ class acp_groups
}
}
// Validate the length of "Maximum number of allowed recipients per private message" setting.
// We use 16777215 as a maximum because it matches MySQL unsigned mediumint maximum value
// which is the lowest amongst DBMSes supported by phpBB3
if ($max_recipients_error = validate_data($submit_ary, array('max_recipients' => array('num', false, 0, 16777215))))
/*
* Validate the length of "Maximum number of allowed recipients per
* private message" setting. We use 16777215 as a maximum because it matches
* MySQL unsigned mediumint maximum value which is the lowest amongst DBMSes
* supported by phpBB3. Also validate the submitted colour value.
*/
$validation_checks = array(
'max_recipients' => array('num', false, 0, 16777215),
'colour' => array('hex_colour', true),
);
if ($validation_error = validate_data($submit_ary, $validation_checks))
{
// Replace "error" string with its real, localised form
$error = array_merge($error, array_map(array(&$user, 'lang'), $max_recipients_error));
$error = array_merge($error, array_map(array(&$user, 'lang'), $validation_error));
}
if (!sizeof($error))

View File

@@ -1247,8 +1247,9 @@ 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('validate_' . $function, $validate))
if ($result = call_user_func_array($function_prefix . $function, $validate))
{
// 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);
@@ -1898,6 +1899,30 @@ function validate_jabber($jid)
return false;
}
/**
* Validate hex colour value
*
* @param string $colour The hex colour value
* @param bool $optional Whether the colour value is optional. True if an empty
* string will be accepted as correct input, false if not.
* @return bool|string Error message if colour value is incorrect, false if it
* fits the hex colour code
*/
function phpbb_validate_hex_colour($colour, $optional = false)
{
if (empty($colour))
{
return (($optional) ? false : 'WRONG_DATA');
}
if (!preg_match('/^([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/', $colour))
{
return 'WRONG_DATA';
}
return false;
}
/**
* Verifies whether a style ID corresponds to an active style.
*

View File

@@ -595,6 +595,13 @@ class ucp_groups
$error[] = $user->lang['FORM_INVALID'];
}
// Validate submitted colour value
if ($colour_error = validate_data($submit_ary, array('colour' => array('hex_colour', true))))
{
// Replace "error" string with its real, localised form
$error = array_merge($error, array_map(array(&$user, 'lang'), $colour_error));
}
if (!sizeof($error))
{
// Only set the rank, colour, etc. if it's changed or if we're adding a new