aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/notification/manager.php
diff options
context:
space:
mode:
authorNathan Guse <nathaniel.guse@gmail.com>2013-09-13 09:15:23 -0500
committerNathan Guse <nathaniel.guse@gmail.com>2013-09-13 09:15:23 -0500
commita194e6ce7afe373fcb89ab26b3d057f60d10fa3d (patch)
tree7d39cb8a17faf1733db8b5f2ee7d822c0b9080f8 /phpBB/phpbb/notification/manager.php
parentbaa73f6933e70f79482e0c4c978d3bfa53eed768 (diff)
parent16c6e439149cee19b84ab809e913eb41bc5f4fd9 (diff)
downloadforums-a194e6ce7afe373fcb89ab26b3d057f60d10fa3d.tar
forums-a194e6ce7afe373fcb89ab26b3d057f60d10fa3d.tar.gz
forums-a194e6ce7afe373fcb89ab26b3d057f60d10fa3d.tar.bz2
forums-a194e6ce7afe373fcb89ab26b3d057f60d10fa3d.tar.xz
forums-a194e6ce7afe373fcb89ab26b3d057f60d10fa3d.zip
Merge branch 'develop' of github.com:phpbb/phpbb3 into ticket/11832
# By Nathan Guse (22) and others # Via Nathan Guse (10) and others * 'develop' of github.com:phpbb/phpbb3: (39 commits) [ticket/11843] Added newlines and included numbers in the DEFINE vars test [ticket/11843] Add checking DEFINE variables with underscores to template_test [ticket/11843] The twig lexer fixes DEFINE variables with underscores again [ticket/11727] Fix indentation [ticket/11727] Fix indentation [ticket/11745] Correct language, coding guidelines [ticket/11828] Fix greedy operators in lexer [ticket/11833] Prevent Twig errors from invalid template loops using BEGINELSE [ticket/11833] Fix bad template loop [ticket/11816] !$DOESNT_EXIST test [ticket/9550] Add the core.viewtopic_post_rowset_data event to viewtopic.php [ticket/11829] Use report_closed to determine status in MCP report_details [ticket/11816] Test !$DEFINITION [ticket/11822] Use namespace lookup order for asset loading [ticket/11727] Template loader support for safe directories to load files from [ticket/11816] Fix define/loop checks in IF statements containing parenthesis [ticket/11373] Use inheritdoc [ticket/11637] generate_text_for_display on search.php [ticket/11744] Cast to int [ticket/11744] Inheritdoc ...
Diffstat (limited to 'phpBB/phpbb/notification/manager.php')
-rw-r--r--phpBB/phpbb/notification/manager.php21
1 files changed, 12 insertions, 9 deletions
diff --git a/phpBB/phpbb/notification/manager.php b/phpBB/phpbb/notification/manager.php
index 97833710c0..a962a61e6e 100644
--- a/phpBB/phpbb/notification/manager.php
+++ b/phpBB/phpbb/notification/manager.php
@@ -59,7 +59,7 @@ class phpbb_notification_manager
/**
* Notification Constructor
- *
+ *
* @param array $notification_types
* @param array $notification_methods
* @param ContainerBuilder $phpbb_container
@@ -490,15 +490,15 @@ class phpbb_notification_manager
*
* @param string|array $notification_type_name Type identifier or array of item types (only acceptable if the $item_id is identical for the specified types)
* @param int|array $item_id Identifier within the type (or array of ids)
- * @param array $data Data specific for this type that will be updated
+ * @param mixed $parent_id Parent identifier within the type (or array of ids), used in combination with item_id if specified (Default: false; not checked)
*/
- public function delete_notifications($notification_type_name, $item_id)
+ public function delete_notifications($notification_type_name, $item_id, $parent_id = false)
{
if (is_array($notification_type_name))
{
foreach ($notification_type_name as $type)
{
- $this->delete_notifications($type, $item_id);
+ $this->delete_notifications($type, $item_id, $parent_id);
}
return;
@@ -508,7 +508,8 @@ class phpbb_notification_manager
$sql = 'DELETE FROM ' . $this->notifications_table . '
WHERE notification_type_id = ' . (int) $notification_type_id . '
- AND ' . (is_array($item_id) ? $this->db->sql_in_set('item_id', $item_id) : 'item_id = ' . (int) $item_id);
+ AND ' . (is_array($item_id) ? $this->db->sql_in_set('item_id', $item_id) : 'item_id = ' . (int) $item_id) .
+ (($parent_id !== false) ? ' AND ' . ((is_array($parent_id) ? $this->db->sql_in_set('item_parent_id', $parent_id) : 'item_parent_id = ' . (int) $parent_id)) : '');
$this->db->sql_query($sql);
}
@@ -796,11 +797,13 @@ class phpbb_notification_manager
* Delete all notifications older than a certain time
*
* @param int $timestamp Unix timestamp to delete all notifications that were created before
+ * @param bool $only_unread True (default) to only prune read notifications
*/
- public function prune_notifications($timestamp)
+ public function prune_notifications($timestamp, $only_read = true)
{
$sql = 'DELETE FROM ' . $this->notifications_table . '
- WHERE notification_time < ' . (int) $timestamp;
+ WHERE notification_time < ' . (int) $timestamp .
+ (($only_read) ? ' AND notification_read = 1' : '');
$this->db->sql_query($sql);
}
@@ -834,12 +837,12 @@ class phpbb_notification_manager
protected function load_object($object_name)
{
$object = $this->phpbb_container->get($object_name);
-
+
if (method_exists($object, 'set_notification_manager'))
{
$object->set_notification_manager($this);
}
-
+
return $object;
}