mirror of
https://github.com/phpbb/phpbb.git
synced 2025-05-05 23:25:30 +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);
|
$driver->delete($avatar_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = self::$default_row;
|
$result = $this->prefix_avatar_columns($prefix, self::$default_row);
|
||||||
|
|
||||||
foreach ($result as $key => $value)
|
|
||||||
{
|
|
||||||
$result[$prefix . $key] = $value;
|
|
||||||
unset($result[$key]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$sql = 'UPDATE ' . $table . '
|
$sql = 'UPDATE ' . $table . '
|
||||||
SET ' . $db->sql_build_array('UPDATE', $result) . '
|
SET ' . $db->sql_build_array('UPDATE', $result) . '
|
||||||
WHERE ' . $prefix . 'id = ' . (int) $avatar_data['id'];
|
WHERE ' . $prefix . 'id = ' . (int) $avatar_data['id'];
|
||||||
$db->sql_query($sql);
|
$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>
|
||||||
<value></value>
|
<value></value>
|
||||||
</row>
|
</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>
|
</table>
|
||||||
</dataset>
|
</dataset>
|
||||||
|
@ -299,7 +299,8 @@ class phpbb_avatar_manager_test extends \phpbb_database_test_case
|
|||||||
public function data_handle_avatar_delete()
|
public function data_handle_avatar_delete()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
array(array(
|
array(
|
||||||
|
array(
|
||||||
'avatar' => '',
|
'avatar' => '',
|
||||||
'avatar_type' => '',
|
'avatar_type' => '',
|
||||||
'avatar_width' => 0,
|
'avatar_width' => 0,
|
||||||
@ -309,7 +310,21 @@ class phpbb_avatar_manager_test extends \phpbb_database_test_case
|
|||||||
'avatar_type' => 'avatar.driver.gravatar',
|
'avatar_type' => 'avatar.driver.gravatar',
|
||||||
'avatar_width' => '16',
|
'avatar_width' => '16',
|
||||||
'avatar_height' => '16',
|
'avatar_height' => '16',
|
||||||
), USERS_TABLE, 'user_'),
|
), 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]);
|
$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