diff options
| author | Andreas Fischer <bantu@phpbb.com> | 2012-05-14 00:40:20 +0200 |
|---|---|---|
| committer | Andreas Fischer <bantu@phpbb.com> | 2012-05-14 00:40:20 +0200 |
| commit | f3d33bf9d7858ad6ed9d82f3f794f4ec0266d68e (patch) | |
| tree | 5197957d1b922229ea14e7e2f21dae79fdc82e57 /phpBB/install/database_update.php | |
| parent | 9b96c1fb78c1cfcbc57e2206cd5d6f24f0c5922c (diff) | |
| parent | 86fa185a1ba4754b6c2dc9769b826aa9d57aa148 (diff) | |
| download | forums-f3d33bf9d7858ad6ed9d82f3f794f4ec0266d68e.tar forums-f3d33bf9d7858ad6ed9d82f3f794f4ec0266d68e.tar.gz forums-f3d33bf9d7858ad6ed9d82f3f794f4ec0266d68e.tar.bz2 forums-f3d33bf9d7858ad6ed9d82f3f794f4ec0266d68e.tar.xz forums-f3d33bf9d7858ad6ed9d82f3f794f4ec0266d68e.zip | |
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
Diffstat (limited to 'phpBB/install/database_update.php')
| -rw-r--r-- | phpBB/install/database_update.php | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 665db1f2f0..ac304f24c6 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -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; |
