mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-09 02:06:32 +02:00
Merge branch 'develop-olympus' into develop
* develop-olympus: [ticket/10605] Use database updater function _sql() instead of $db->sql_query() [ticket/10605] Put end of array on its own line because start of array is too. [ticket/10605] Add parameter documentation to phpbb_delete_user_pms [ticket/10605] Fix left join usage. [ticket/10605] Add a section for updating from 3.0.10 to schema updates. [ticket/10605] Fix syntax error in database updater. [ticket/10605] Reset user´s pm count to 0 when deleting his PMs [ticket/10605] Split query to be able to use indexes [ticket/10605] Rename $delete_rows to $delete_ids. [ticket/10605] Break long comment into multiple lines 80 chars short. [ticket/10605] Remove unnecessary $delete_ids array. [ticket/10605] Remove unnecessary array_keys calls on $delete_rows. [ticket/10605] Remove unused variable declarations. [ticket/10605] Turn $undelivered_user into a real array of counters. [ticket/10605] Use unset() instead of checking user_id over and over again. [ticket/10605] Prefix function with phpbb_ and use true instead of 1 [ticket/10605] Delete orphan private messages on update [ticket/10605] Check for orphan privmsgs when deleting a user
This commit is contained in:
@@ -2164,6 +2164,44 @@ function change_database_data(&$no_updates, $version)
|
||||
_sql($sql, $errored, $error_ary);
|
||||
}
|
||||
|
||||
// Delete orphan private messages
|
||||
$batch_size = 500;
|
||||
|
||||
$sql_array = array(
|
||||
'SELECT' => 'p.msg_id',
|
||||
'FROM' => array(
|
||||
PRIVMSGS_TABLE => 'p',
|
||||
),
|
||||
'LEFT_JOIN' => array(
|
||||
array(
|
||||
'FROM' => array(PRIVMSGS_TO_TABLE => 't'),
|
||||
'ON' => 'p.msg_id = t.msg_id',
|
||||
),
|
||||
),
|
||||
'WHERE' => 't.user_id IS NULL',
|
||||
);
|
||||
$sql = $db->sql_build_query('SELECT', $sql_array);
|
||||
|
||||
do
|
||||
{
|
||||
$result = $db->sql_query_limit($sql, $batch_size);
|
||||
|
||||
$delete_pms = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$delete_pms[] = (int) $row['msg_id'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if (!empty($delete_pms))
|
||||
{
|
||||
$sql = 'DELETE FROM ' . PRIVMSGS_TABLE . '
|
||||
WHERE ' . $db->sql_in_set('msg_id', $delete_pms);
|
||||
_sql($sql, $errored, $error_ary);
|
||||
}
|
||||
}
|
||||
while (sizeof($delete_pms) == $batch_size);
|
||||
|
||||
$no_updates = false;
|
||||
break;
|
||||
|
||||
|
Reference in New Issue
Block a user