mirror of
https://github.com/phpbb/phpbb.git
synced 2025-05-05 07:07:51 +02:00
Merge pull request #3064 from marc1706/ticket/13197
[ticket/13197] Also delete group avatar from users that have it set
This commit is contained in:
commit
dd7e09d092
@ -326,17 +326,41 @@ class manager
|
||||
$driver->delete($avatar_data);
|
||||
}
|
||||
|
||||
$result = self::$default_row;
|
||||
|
||||
foreach ($result as $key => $value)
|
||||
{
|
||||
$result[$prefix . $key] = $value;
|
||||
unset($result[$key]);
|
||||
}
|
||||
$result = $this->prefix_avatar_columns($prefix, self::$default_row);
|
||||
|
||||
$sql = 'UPDATE ' . $table . '
|
||||
SET ' . $db->sql_build_array('UPDATE', $result) . '
|
||||
WHERE ' . $prefix . 'id = ' . (int) $avatar_data['id'];
|
||||
SET ' . $db->sql_build_array('UPDATE', $result) . '
|
||||
WHERE ' . $prefix . 'id = ' . (int) $avatar_data['id'];
|
||||
$db->sql_query($sql);
|
||||
|
||||
// Make sure we also delete this avatar from the users
|
||||
if ($prefix === 'group_')
|
||||
{
|
||||
$result = $this->prefix_avatar_columns('user_', self::$default_row);
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
SET ' . $db->sql_build_array('UPDATE', $result) . "
|
||||
WHERE user_avatar = '" . $db->sql_escape($avatar_data['avatar']) . "'";
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prefix avatar columns
|
||||
*
|
||||
* @param string $prefix Column prefix
|
||||
* @param array $data Column data
|
||||
*
|
||||
* @return array Column data with prefixed column names
|
||||
*/
|
||||
public function prefix_avatar_columns($prefix, $data)
|
||||
{
|
||||
foreach ($data as $key => $value)
|
||||
{
|
||||
$data[$prefix . $key] = $value;
|
||||
unset($data[$key]);
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
@ -29,5 +29,33 @@
|
||||
<value></value>
|
||||
<value></value>
|
||||
</row>
|
||||
<row>
|
||||
<value>3</value>
|
||||
<value>foo</value>
|
||||
<value></value>
|
||||
<value></value>
|
||||
<value>g5_1414350991.jpg</value>
|
||||
<value>avatar.driver.upload</value>
|
||||
<value>80</value>
|
||||
<value>80</value>
|
||||
</row>
|
||||
</table>
|
||||
<table name="phpbb_groups">
|
||||
<column>group_id</column>
|
||||
<column>group_type</column>
|
||||
<column>group_name</column>
|
||||
<column>group_avatar</column>
|
||||
<column>group_avatar_type</column>
|
||||
<column>group_avatar_width</column>
|
||||
<column>group_avatar_height</column>
|
||||
<row>
|
||||
<value>5</value>
|
||||
<value>3</value>
|
||||
<value>ADMINISTRATORS</value>
|
||||
<value>g5_1414350991.jpg</value>
|
||||
<value>avatar.driver.upload</value>
|
||||
<value>80</value>
|
||||
<value>80</value>
|
||||
</row>
|
||||
</table>
|
||||
</dataset>
|
||||
|
@ -299,17 +299,32 @@ class phpbb_avatar_manager_test extends \phpbb_database_test_case
|
||||
public function data_handle_avatar_delete()
|
||||
{
|
||||
return array(
|
||||
array(array(
|
||||
'avatar' => '',
|
||||
'avatar_type' => '',
|
||||
'avatar_width' => 0,
|
||||
'avatar_height' => 0,
|
||||
), 1, array(
|
||||
'avatar' => 'foobar@example.com',
|
||||
'avatar_type' => 'avatar.driver.gravatar',
|
||||
'avatar_width' => '16',
|
||||
'avatar_height' => '16',
|
||||
), USERS_TABLE, 'user_'),
|
||||
array(
|
||||
array(
|
||||
'avatar' => '',
|
||||
'avatar_type' => '',
|
||||
'avatar_width' => 0,
|
||||
'avatar_height' => 0,
|
||||
), 1, array(
|
||||
'avatar' => 'foobar@example.com',
|
||||
'avatar_type' => 'avatar.driver.gravatar',
|
||||
'avatar_width' => '16',
|
||||
'avatar_height' => '16',
|
||||
), USERS_TABLE, 'user_',
|
||||
),
|
||||
array(
|
||||
array(
|
||||
'avatar' => '',
|
||||
'avatar_type' => '',
|
||||
'avatar_width' => 0,
|
||||
'avatar_height' => 0,
|
||||
), 5, array(
|
||||
'avatar' => 'g5_1414350991.jpg',
|
||||
'avatar_type' => 'avatar.driver.upload',
|
||||
'avatar_width' => '80',
|
||||
'avatar_height' => '80'
|
||||
), GROUPS_TABLE, 'group_',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@ -333,4 +348,23 @@ class phpbb_avatar_manager_test extends \phpbb_database_test_case
|
||||
$this->assertEquals($value, $row[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @dependsOn test_handle_avatar_delete
|
||||
*/
|
||||
public function test_user_group_avatar_deleted()
|
||||
{
|
||||
$sql = 'SELECT * FROM ' . USERS_TABLE . '
|
||||
WHERE user_id = 3';
|
||||
$result = $this->db->sql_query_limit($sql, 1);
|
||||
$row = $this->manager->clean_row($this->db->sql_fetchrow($result), 'user');
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
$this->assertEquals(array(
|
||||
'avatar' => '',
|
||||
'avatar_type' => '',
|
||||
'avatar_width' => 0,
|
||||
'avatar_height' => 0,
|
||||
), $row);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user