Merge pull request #5483 from marc1706/ticket/15911

[ticket/15911] Prevent errors when trying to delete from non-existent tables
This commit is contained in:
Marc Alexander 2018-12-19 19:57:57 +01:00
commit 2a72b9b3ec
No known key found for this signature in database
GPG key ID: 50E0D2423696F995
3 changed files with 31 additions and 4 deletions

View file

@ -666,8 +666,29 @@ function user_delete($mode, $user_ids, $retain_username = true)
delete_posts('poster_id', $user_ids);
}
$table_ary = array(USERS_TABLE, USER_GROUP_TABLE, TOPICS_WATCH_TABLE, FORUMS_WATCH_TABLE, ACL_USERS_TABLE, TOPICS_TRACK_TABLE, TOPICS_POSTED_TABLE, FORUMS_TRACK_TABLE, PROFILE_FIELDS_DATA_TABLE, MODERATOR_CACHE_TABLE, DRAFTS_TABLE, BOOKMARKS_TABLE, SESSIONS_KEYS_TABLE, PRIVMSGS_FOLDER_TABLE, PRIVMSGS_RULES_TABLE, $phpbb_container->getParameter('tables.auth_provider_oauth_token_storage'), $phpbb_container->getParameter('tables.auth_provider_oauth_states'), $phpbb_container->getParameter('tables.auth_provider_oauth_account_assoc'));
$table_ary = [
USERS_TABLE,
USER_GROUP_TABLE,
TOPICS_WATCH_TABLE,
FORUMS_WATCH_TABLE,
ACL_USERS_TABLE,
TOPICS_TRACK_TABLE,
TOPICS_POSTED_TABLE,
FORUMS_TRACK_TABLE,
PROFILE_FIELDS_DATA_TABLE,
MODERATOR_CACHE_TABLE,
DRAFTS_TABLE,
BOOKMARKS_TABLE,
SESSIONS_KEYS_TABLE,
PRIVMSGS_FOLDER_TABLE,
PRIVMSGS_RULES_TABLE,
$phpbb_container->getParameter('tables.auth_provider_oauth_token_storage'),
$phpbb_container->getParameter('tables.auth_provider_oauth_states'),
$phpbb_container->getParameter('tables.auth_provider_oauth_account_assoc')
];
// Ignore errors on deleting from non-existent tables, e.g. when migrating
$db->sql_return_on_error(true);
// Delete the miscellaneous (non-post) data for the user
foreach ($table_ary as $table)
{
@ -675,6 +696,7 @@ function user_delete($mode, $user_ids, $retain_username = true)
WHERE " . $user_id_sql;
$db->sql_query($sql);
}
$db->sql_return_on_error();
$cache->destroy('sql', MODERATOR_CACHE_TABLE);

View file

@ -58,9 +58,14 @@ class release_3_0_8_rc1 extends \phpbb\db\migration\migration
$result = $this->db->sql_query($sql);
$extension_groups_updated = array();
while ($lang_dir = $this->db->sql_fetchfield('lang_dir'))
while ($row = $this->db->sql_fetchrow($result))
{
$lang_dir = basename($lang_dir);
if (empty($row['lang_dir']))
{
continue;
}
$lang_dir = basename($row['lang_dir']);
// The language strings we need are either in language/.../acp/attachments.php
// in the update package if we're updating to 3.0.8-RC1 or later,

View file

@ -65,7 +65,7 @@ class email extends \phpbb\notification\method\messenger_base
*/
public function is_available(type_interface $notification_type = null)
{
return parent::is_available($notification_type) && $this->config['email_enable'] && $this->user->data['user_email'];
return parent::is_available($notification_type) && $this->config['email_enable'] && !empty($this->user->data['user_email']);
}
/**