Merge pull request #3819 from Nicofuma/ticket/14079

[ticket/14079] Correctly mark notifications as read
This commit is contained in:
Máté Bartus 2015-08-08 19:53:34 +02:00
commit 962fb6b19b
3 changed files with 17 additions and 10 deletions

View file

@ -166,6 +166,7 @@ class manager
$notification_type_id = false;
}
/** @var method_interface $method */
foreach ($this->get_available_subscription_methods() as $method)
{
$method->mark_notifications($notification_type_id, $item_id, $user_id, $time, $mark_read);
@ -597,26 +598,32 @@ class manager
{
foreach ($types as $id => $type)
{
$subscriptions[$id] = array();
$type_subscriptions = $default_methods;
if (!empty($user_notifications[$id]))
{
foreach ($user_notifications[$id] as $user_notification)
{
$key = array_search($user_notification['method'], $type_subscriptions, true);
if (!$user_notification['notify'])
{
if ($key !== false)
{
unset($type_subscriptions[$key]);
}
continue;
}
if (!isset($subscriptions[$id]))
else if ($key === false)
{
$subscriptions[$id] = array();
$type_subscriptions[] = $user_notification['method'];
}
$subscriptions[$id][] = $user_notification['method'];
}
}
$subscriptions[$id] = array_merge($subscriptions[$id], $default_methods);
if (!empty($type_subscriptions))
{
$subscriptions[$id] = $type_subscriptions;
}
}
}

View file

@ -503,7 +503,7 @@ abstract class base implements \phpbb\notification\type\type_interface
}
else
{
$this->notification_manager->mark_notifications($this->get_type(), (int) $this->item_id, (int) $this->user_id, $this->notification_read);
$this->notification_manager->mark_notifications($this->get_type(), (int) $this->item_id, (int) $this->user_id, false, $this->notification_read);
}
}

View file

@ -206,7 +206,7 @@ interface type_interface
* @param bool $return True to return a string containing the SQL code to update this item, False to execute it (Default: False)
* @return string
*/
public function mark_read($return);
public function mark_read($return = false);
/**
* Mark this item unread
@ -214,5 +214,5 @@ interface type_interface
* @param bool $return True to return a string containing the SQL code to update this item, False to execute it (Default: False)
* @return string
*/
public function mark_unread($return);
public function mark_unread($return = false);
}