mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 22:28:51 +00:00
Merge pull request #1815 from marc1706/ticket/11525
[ticket/11525] Only remove group or user prefix from given avatar data
This commit is contained in:
commit
52845b22f2
7 changed files with 70 additions and 58 deletions
|
@ -324,7 +324,7 @@ class acp_groups
|
||||||
$avatar_drivers = $phpbb_avatar_manager->get_enabled_drivers();
|
$avatar_drivers = $phpbb_avatar_manager->get_enabled_drivers();
|
||||||
|
|
||||||
// This is normalised data, without the group_ prefix
|
// This is normalised data, without the group_ prefix
|
||||||
$avatar_data = \phpbb\avatar\manager::clean_row($group_row);
|
$avatar_data = \phpbb\avatar\manager::clean_row($group_row, 'group');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1745,7 +1745,7 @@ class acp_users
|
||||||
$avatar_drivers = $phpbb_avatar_manager->get_enabled_drivers();
|
$avatar_drivers = $phpbb_avatar_manager->get_enabled_drivers();
|
||||||
|
|
||||||
// This is normalised data, without the user_ prefix
|
// This is normalised data, without the user_ prefix
|
||||||
$avatar_data = \phpbb\avatar\manager::clean_row($user_row);
|
$avatar_data = \phpbb\avatar\manager::clean_row($user_row, 'user');
|
||||||
|
|
||||||
if ($submit)
|
if ($submit)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1352,7 +1352,7 @@ function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank
|
||||||
*/
|
*/
|
||||||
function phpbb_get_user_avatar($user_row, $alt = 'USER_AVATAR', $ignore_config = false)
|
function phpbb_get_user_avatar($user_row, $alt = 'USER_AVATAR', $ignore_config = false)
|
||||||
{
|
{
|
||||||
$row = \phpbb\avatar\manager::clean_row($user_row);
|
$row = \phpbb\avatar\manager::clean_row($user_row, 'user');
|
||||||
return phpbb_get_avatar($row, $alt, $ignore_config);
|
return phpbb_get_avatar($row, $alt, $ignore_config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1367,7 +1367,7 @@ function phpbb_get_user_avatar($user_row, $alt = 'USER_AVATAR', $ignore_config =
|
||||||
*/
|
*/
|
||||||
function phpbb_get_group_avatar($user_row, $alt = 'GROUP_AVATAR', $ignore_config = false)
|
function phpbb_get_group_avatar($user_row, $alt = 'GROUP_AVATAR', $ignore_config = false)
|
||||||
{
|
{
|
||||||
$row = \phpbb\avatar\manager::clean_row($user_row);
|
$row = \phpbb\avatar\manager::clean_row($user_row, 'group');
|
||||||
return phpbb_get_avatar($row, $alt, $ignore_config);
|
return phpbb_get_avatar($row, $alt, $ignore_config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -465,7 +465,7 @@ class ucp_groups
|
||||||
$avatar_drivers = $phpbb_avatar_manager->get_enabled_drivers();
|
$avatar_drivers = $phpbb_avatar_manager->get_enabled_drivers();
|
||||||
|
|
||||||
// This is normalised data, without the group_ prefix
|
// This is normalised data, without the group_ prefix
|
||||||
$avatar_data = \phpbb\avatar\manager::clean_row($group_row);
|
$avatar_data = \phpbb\avatar\manager::clean_row($group_row, 'group');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Did we submit?
|
// Did we submit?
|
||||||
|
|
|
@ -567,7 +567,7 @@ class ucp_profile
|
||||||
$avatar_drivers = $phpbb_avatar_manager->get_enabled_drivers();
|
$avatar_drivers = $phpbb_avatar_manager->get_enabled_drivers();
|
||||||
|
|
||||||
// This is normalised data, without the user_ prefix
|
// This is normalised data, without the user_ prefix
|
||||||
$avatar_data = \phpbb\avatar\manager::clean_row($user->data);
|
$avatar_data = \phpbb\avatar\manager::clean_row($user->data, 'user');
|
||||||
|
|
||||||
if ($submit)
|
if ($submit)
|
||||||
{
|
{
|
||||||
|
|
|
@ -178,14 +178,16 @@ class manager
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Strip out user_ and group_ prefixes from keys
|
* Strip out user_, group_, or other prefixes from array keys
|
||||||
*
|
*
|
||||||
* @param array $row User data or group data
|
* @param array $row User data or group data
|
||||||
|
* @param string $prefix Prefix of data keys (e.g. user), should not include the trailing underscore
|
||||||
*
|
*
|
||||||
* @return array User data or group data with keys that have been
|
* @return array User or group data with keys that have been
|
||||||
* stripped from the preceding "user_" or "group_"
|
* stripped from the preceding "user_" or "group_"
|
||||||
|
* Also the group id is prefixed with g, when the prefix group is removed.
|
||||||
*/
|
*/
|
||||||
static public function clean_row($row)
|
static public function clean_row($row, $prefix = '')
|
||||||
{
|
{
|
||||||
// Upon creation of a user/group $row might be empty
|
// Upon creation of a user/group $row might be empty
|
||||||
if (empty($row))
|
if (empty($row))
|
||||||
|
@ -193,23 +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)
|
||||||
|
{
|
||||||
|
$key = preg_replace("#^(?:{$prefix}_)#", '', $key);
|
||||||
|
$output[$key] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
$keys = array_map(array('\phpbb\avatar\manager', 'strip_prefix'), $keys);
|
if ($prefix === 'group' && isset($output['id']))
|
||||||
|
{
|
||||||
|
$output['id'] = 'g' . $output['id'];
|
||||||
|
}
|
||||||
|
|
||||||
return array_combine($keys, $values);
|
return $output;
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Strip prepending user_ or group_ prefix from key
|
|
||||||
*
|
|
||||||
* @param string Array key
|
|
||||||
* @return string Key that has been stripped from its prefix
|
|
||||||
*/
|
|
||||||
static protected function strip_prefix($key)
|
|
||||||
{
|
|
||||||
return preg_replace('#^(?:user_|group_)#', '', $key);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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(),
|
||||||
|
@ -189,32 +178,57 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
array(
|
array(
|
||||||
'foobar_avatar' => '',
|
'user_avatar' => '',
|
||||||
'foobar_avatar_type' => '',
|
'user_id' => 5,
|
||||||
'foobar_avatar_width' => '',
|
'group_id' => 4,
|
||||||
'foobar_avatar_height' => '',
|
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'foobar_avatar' => '',
|
'user_avatar' => '',
|
||||||
'foobar_avatar_type' => '',
|
'user_id' => 5,
|
||||||
'foobar_avatar_width' => '',
|
'group_id' => 4,
|
||||||
'foobar_avatar_height' => '',
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
array(
|
||||||
|
array(
|
||||||
|
'user_avatar' => '',
|
||||||
|
'user_id' => 5,
|
||||||
|
'group_id' => 4,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'avatar' => '',
|
||||||
|
'id' => 5,
|
||||||
|
'group_id' => 4,
|
||||||
|
),
|
||||||
|
'user',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
array(
|
||||||
|
'group_avatar' => '',
|
||||||
|
'user_id' => 5,
|
||||||
|
'group_id' => 4,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'avatar' => '',
|
||||||
|
'id' => 'g4',
|
||||||
|
'user_id' => 5,
|
||||||
|
),
|
||||||
|
'group',
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider database_row_data
|
* @dataProvider database_row_data
|
||||||
*/
|
*/
|
||||||
public function test_clean_row(array $input, array $output)
|
public function test_clean_row(array $input, array $output, $prefix = '')
|
||||||
{
|
{
|
||||||
$cleaned_row = array();
|
$cleaned_row = array();
|
||||||
|
|
||||||
$cleaned_row = \phpbb\avatar\manager::clean_row($input);
|
$cleaned_row = \phpbb\avatar\manager::clean_row($input, $prefix);
|
||||||
foreach ($output as $key => $null)
|
foreach ($output as $key => $value)
|
||||||
{
|
{
|
||||||
$this->assertArrayHasKey($key, $cleaned_row);
|
$this->assertArrayHasKey($key, $cleaned_row);
|
||||||
|
$this->assertEquals($cleaned_row[$key], $value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue