[ticket/12742] Add check for empty $users and add method to fitting methods

The method might now return an empty array in case of an empty users array,
too. The notification types then check if the returned array is empty and
return this if it is empty and if the notification types would otherwise
carry out other operations afterwards.

PHPBB3-12742
This commit is contained in:
Marc Alexander 2014-08-08 16:54:23 +02:00
parent 80788980aa
commit cccd54dde8
7 changed files with 15 additions and 69 deletions

View file

@ -81,14 +81,7 @@ class approve_post extends \phpbb\notification\type\post
$users = array(); $users = array();
$users[$post['poster_id']] = array(''); $users[$post['poster_id']] = array('');
$auth_read = $this->auth->acl_get_list(array_keys($users), 'f_read', $post['forum_id']); return $this->get_authenticated_recipients(array_keys($users), $post['forum_id'], array_merge($options, array(
if (empty($auth_read))
{
return array();
}
return $this->check_user_notification_options($auth_read[$post['forum_id']]['f_read'], array_merge($options, array(
'item_type' => self::$notification_option['id'], 'item_type' => self::$notification_option['id'],
))); )));
} }

View file

@ -81,14 +81,7 @@ class approve_topic extends \phpbb\notification\type\topic
$users = array(); $users = array();
$users[$post['poster_id']] = array(''); $users[$post['poster_id']] = array('');
$auth_read = $this->auth->acl_get_list(array_keys($users), 'f_read', $post['forum_id']); return $this->get_authenticated_recipients(array_keys($users), $post['forum_id'], array_merge($options, array(
if (empty($auth_read))
{
return array();
}
return $this->check_user_notification_options($auth_read[$post['forum_id']]['f_read'], array_merge($options, array(
'item_type' => self::$notification_option['id'], 'item_type' => self::$notification_option['id'],
))); )));
} }

View file

@ -544,6 +544,11 @@ abstract class base implements \phpbb\notification\type\type_interface
*/ */
protected function get_authenticated_recipients($users, $forum_id, $options) protected function get_authenticated_recipients($users, $forum_id, $options)
{ {
if (empty($users))
{
return array();
}
$users = array_unique($users); $users = array_unique($users);
sort($users); sort($users);

View file

@ -83,20 +83,12 @@ class bookmark extends \phpbb\notification\type\post
} }
$this->db->sql_freeresult($result); $this->db->sql_freeresult($result);
if (empty($users)) $notify_users = $this->get_authenticated_recipients($users, $post['forum_id'], $options);
if (empty($notify_users))
{ {
return array(); return array();
} }
sort($users);
$auth_read = $this->auth->acl_get_list($users, 'f_read', $post['forum_id']);
if (empty($auth_read))
{
return array();
}
$notify_users = $this->check_user_notification_options($auth_read[$post['forum_id']]['f_read'], $options);
// Try to find the users who already have been notified about replies and have not read the topic since and just update their notifications // Try to find the users who already have been notified about replies and have not read the topic since and just update their notifications
$update_notifications = array(); $update_notifications = array();

View file

@ -123,23 +123,13 @@ class post extends \phpbb\notification\type\base
} }
$this->db->sql_freeresult($result); $this->db->sql_freeresult($result);
if (empty($users)) $notify_users = $this->get_authenticated_recipients($users, $post['forum_id'], $options);
if (empty($notify_users))
{ {
return array(); return array();
} }
$users = array_unique($users);
sort($users);
$auth_read = $this->auth->acl_get_list($users, 'f_read', $post['forum_id']);
if (empty($auth_read))
{
return array();
}
$notify_users = $this->check_user_notification_options($auth_read[$post['forum_id']]['f_read'], $options);
// Try to find the users who already have been notified about replies and have not read the topic since and just update their notifications // Try to find the users who already have been notified about replies and have not read the topic since and just update their notifications
$update_notifications = array(); $update_notifications = array();
$sql = 'SELECT n.* $sql = 'SELECT n.*

View file

@ -102,22 +102,7 @@ class quote extends \phpbb\notification\type\post
} }
$this->db->sql_freeresult($result); $this->db->sql_freeresult($result);
if (empty($users)) return $this->get_authenticated_recipients($users, $post['forum_id'], $options);
{
return array();
}
sort($users);
$auth_read = $this->auth->acl_get_list($users, 'f_read', $post['forum_id']);
if (empty($auth_read))
{
return array();
}
$notify_users = $this->check_user_notification_options($auth_read[$post['forum_id']]['f_read'], $options);
return $notify_users;
} }
/** /**

View file

@ -111,19 +111,7 @@ class topic extends \phpbb\notification\type\base
} }
$this->db->sql_freeresult($result); $this->db->sql_freeresult($result);
if (empty($users)) return $this->get_authenticated_recipients($users, $topic['forum_id'], $options);
{
return array();
}
$auth_read = $this->auth->acl_get_list($users, 'f_read', $topic['forum_id']);
if (empty($auth_read))
{
return array();
}
return $this->check_user_notification_options($auth_read[$topic['forum_id']]['f_read'], $options);
} }
/** /**