[ticket/11525] Use foreach instead of array_walk in method clean_row()

This approach is cleaner and probably even faster the previous ways that
included using array_walk() or array_map() and other helper functions
and methods.

PHPBB3-11525
This commit is contained in:
Marc Alexander 2013-11-13 18:27:40 +01:00
parent 0ec644532d
commit 13a4ceedb1
2 changed files with 22 additions and 60 deletions

View file

@ -195,33 +195,19 @@ class manager
return self::$default_row; return self::$default_row;
} }
$keys = array_keys($row); $output = array();
$values = array_values($row); foreach ($row as $key => $value)
array_walk($keys, array('\phpbb\avatar\manager', 'strip_prefix'), $prefix);
$row = array_combine($keys, $values);
if ($prefix == 'group')
{ {
$row['id'] = 'g' . $row['id']; $key = preg_replace("#^(?:{$prefix}_)#", '', $key);
$output[$key] = $value;
} }
return $row; if ($prefix === 'group' && isset($output['id']))
} {
$output['id'] = 'g' . $output['id'];
}
/** return $output;
* Strip prepending user_ or group_ prefix from key
*
* @param string $key Array key
* @param string $null Parameter is ignored by the function, just required by the array_walk
* @param string $prefix Prefix that should be stripped off from the keys (e.g. user)
* Should not include the trailing underscore
* @return null
*/
static protected function strip_prefix(&$key, $null, $prefix)
{
$regex = ($prefix !== '') ? "#^(?:{$prefix}_)#" : '#^(?:user_|group_)#';
$key = preg_replace($regex, '', $key);
} }
/** /**

View file

@ -152,31 +152,20 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase
return array( return array(
array( array(
array( array(
'user_avatar' => '', 'user_avatar' => '',
'user_avatar_type' => '', 'user_avatar_type' => '',
'user_avatar_width' => '', 'user_avatar_width' => '',
'user_avatar_height' => '', 'user_avatar_height' => '',
'group_avatar' => '',
), ),
array( array(
'avatar' => '', 'user_avatar' => '',
'avatar_type' => '', 'user_avatar_type' => '',
'avatar_width' => '', 'user_avatar_width' => '',
'avatar_height' => '', 'user_avatar_height' => '',
), 'group_avatar' => '',
),
array(
array(
'group_avatar' => '',
'group_avatar_type' => '',
'group_avatar_width' => '',
'group_avatar_height' => '',
),
array(
'avatar' => '',
'avatar_type' => '',
'avatar_width' => '',
'avatar_height' => '',
), ),
'foobar',
), ),
array( array(
array(), array(),
@ -187,20 +176,6 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase
'avatar_height' => '', 'avatar_height' => '',
), ),
), ),
array(
array(
'foobar_avatar' => '',
'foobar_avatar_type' => '',
'foobar_avatar_width' => '',
'foobar_avatar_height' => '',
),
array(
'foobar_avatar' => '',
'foobar_avatar_type' => '',
'foobar_avatar_width' => '',
'foobar_avatar_height' => '',
),
),
array( array(
array( array(
'user_avatar' => '', 'user_avatar' => '',
@ -208,8 +183,9 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase
'group_id' => 4, 'group_id' => 4,
), ),
array( array(
'avatar' => '', 'user_avatar' => '',
'id' => 4, 'user_id' => 5,
'group_id' => 4,
), ),
), ),
array( array(