diff options
author | Andreas Fischer <bantu@phpbb.com> | 2014-05-14 23:12:11 +0200 |
---|---|---|
committer | Andreas Fischer <bantu@phpbb.com> | 2014-05-14 23:12:11 +0200 |
commit | d867e52a2e992ed7593e13bc922bffaf15c76da3 (patch) | |
tree | 6acca849bceeee2fdedf5ae50868bfeaf8fccc02 | |
parent | 84f8f18b1c45520deaacb997e18f52ccc72052ce (diff) | |
parent | dacece711b24ac0b8828b6b5d7776ab6ae7b5333 (diff) | |
download | forums-d867e52a2e992ed7593e13bc922bffaf15c76da3.tar forums-d867e52a2e992ed7593e13bc922bffaf15c76da3.tar.gz forums-d867e52a2e992ed7593e13bc922bffaf15c76da3.tar.bz2 forums-d867e52a2e992ed7593e13bc922bffaf15c76da3.tar.xz forums-d867e52a2e992ed7593e13bc922bffaf15c76da3.zip |
Merge branch 'develop-ascraeus' into develop
* develop-ascraeus:
[ticket/12435] Update the comment
[ticket/12435] purge_notifications() fails for unused notifications
-rw-r--r-- | phpBB/phpbb/notification/manager.php | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/phpBB/phpbb/notification/manager.php b/phpBB/phpbb/notification/manager.php index 09d9677ccd..2f7d846d75 100644 --- a/phpBB/phpbb/notification/manager.php +++ b/phpBB/phpbb/notification/manager.php @@ -760,17 +760,30 @@ class manager */ public function purge_notifications($notification_type_name) { - $notification_type_id = $this->get_notification_type_id($notification_type_name); + // If a notification is never used, its type will not be added to the database + // nor its id cached. If this method is called by an extension during the + // purge step, and that extension never used its notifications, + // get_notification_type_id() will throw an exception. However, + // because no notification type was added to the database, + // there is nothing to delete, so we can silently drop the exception. + try + { + $notification_type_id = $this->get_notification_type_id($notification_type_name); - $sql = 'DELETE FROM ' . $this->notifications_table . ' - WHERE notification_type_id = ' . (int) $notification_type_id; - $this->db->sql_query($sql); + $sql = 'DELETE FROM ' . $this->notifications_table . ' + WHERE notification_type_id = ' . (int) $notification_type_id; + $this->db->sql_query($sql); - $sql = 'DELETE FROM ' . $this->notification_types_table . ' - WHERE notification_type_id = ' . (int) $notification_type_id; - $this->db->sql_query($sql); + $sql = 'DELETE FROM ' . $this->notification_types_table . ' + WHERE notification_type_id = ' . (int) $notification_type_id; + $this->db->sql_query($sql); - $this->cache->destroy('notification_type_ids'); + $this->cache->destroy('notification_type_ids'); + } + catch (\phpbb\notification\exception $e) + { + // Continue + } } /** |