[ticket/11103] Use dependency injection instead of phpbb_container

PHPBB3-11103
This commit is contained in:
Nathan Guse 2012-10-04 14:27:43 -05:00
parent 64820546d7
commit cea94d8984
18 changed files with 204 additions and 218 deletions

View file

@ -92,7 +92,15 @@ services:
notifications: notifications:
class: phpbb_notification_manager class: phpbb_notification_manager
arguments: arguments:
- @container - @dbal.conn
- @cache.driver
- @template
- @ext.manager
- @user
- @auth
- @config
- %core.root_path%
- %core.php_ext%
processor.ext: processor.ext:
class: phpbb_di_processor_ext class: phpbb_di_processor_ext

View file

@ -23,8 +23,7 @@ if (!defined('IN_PHPBB'))
*/ */
class phpbb_notification_manager class phpbb_notification_manager
{ {
protected $phpbb_container; protected $db, $cache, $template, $extension_manager, $user, $auth, $config, $phpbb_root_path, $php_ext = null;
protected $db;
/** /**
* Users loaded from the DB * Users loaded from the DB
@ -33,12 +32,17 @@ class phpbb_notification_manager
*/ */
protected $users = array(); protected $users = array();
public function __construct(ContainerBuilder $phpbb_container) public function __construct(dbal $db, phpbb_cache_driver_interface $cache, phpbb_template $template, phpbb_extension_manager $extension_manager, phpbb_user $user, phpbb_auth $auth, phpbb_config $config, $phpbb_root_path, $php_ext)
{ {
$this->phpbb_container = $phpbb_container; $this->db = $db;
$this->cache = $cache;
// Some common things we're going to use $this->template = $template;
$this->db = $phpbb_container->get('dbal.conn'); $this->extension_manager = $extension_manager;
$this->user = $user;
$this->auth = $auth;
$this->config = $config;
$this->phpbb_root_path = $phpbb_root_path;
$this->php_ext = $php_ext;
} }
/** /**
@ -56,12 +60,10 @@ class phpbb_notification_manager
*/ */
public function load_notifications($options = array()) public function load_notifications($options = array())
{ {
$user = $this->phpbb_container->get('user');
// Merge default options // Merge default options
$options = array_merge(array( $options = array_merge(array(
'notification_id' => false, 'notification_id' => false,
'user_id' => $user->data['user_id'], 'user_id' => $this->user->data['user_id'],
'order_by' => 'time', 'order_by' => 'time',
'order_dir' => 'DESC', 'order_dir' => 'DESC',
'limit' => 0, 'limit' => 0,
@ -74,7 +76,7 @@ class phpbb_notification_manager
$options['count_unread'] = ($options['all_unread']) ? true : $options['count_unread']; $options['count_unread'] = ($options['all_unread']) ? true : $options['count_unread'];
// Anonymous users and bots never receive notifications // Anonymous users and bots never receive notifications
if ($options['user_id'] == $user->data['user_id'] && ($user->data['user_id'] == ANONYMOUS || $user->data['user_type'] == USER_IGNORE)) if ($options['user_id'] == $this->user->data['user_id'] && ($this->user->data['user_id'] == ANONYMOUS || $this->user->data['user_type'] == USER_IGNORE))
{ {
return array( return array(
'notifications' => array(), 'notifications' => array(),
@ -136,7 +138,7 @@ class phpbb_notification_manager
{ {
$item_type_class_name = $this->get_item_type_class_name($row['item_type'], true); $item_type_class_name = $this->get_item_type_class_name($row['item_type'], true);
$notification = new $item_type_class_name($this->phpbb_container, $row); $notification = $this->get_item_type_class($item_type_class_name, $row);
// Array of user_ids to query all at once // Array of user_ids to query all at once
$user_ids = array_merge($user_ids, $notification->users_to_query()); $user_ids = array_merge($user_ids, $notification->users_to_query());
@ -153,12 +155,14 @@ class phpbb_notification_manager
$this->load_users($user_ids); $this->load_users($user_ids);
// Allow each type to load it's own special items // Allow each type to load its own special items
foreach ($load_special as $item_type => $data) foreach ($load_special as $item_type => $data)
{ {
$item_type_class_name = $this->get_item_type_class_name($item_type, true); $item_type_class_name = $this->get_item_type_class_name($item_type, true);
$item_type_class_name::load_special($this->phpbb_container, $data, $notifications); $item_class = $this->get_item_type_class($item_type_class_name);
$item_class->load_special($data, $notifications);
} }
return array( return array(
@ -283,7 +287,7 @@ class phpbb_notification_manager
$item_id = $item_type_class_name::get_item_id($data); $item_id = $item_type_class_name::get_item_id($data);
// find out which users want to receive this type of notification // find out which users want to receive this type of notification
$notify_users = $item_type_class_name::find_users_for_notification($this->phpbb_container, $data, $options); $notify_users = $this->get_item_type_class($item_type_class_name)->find_users_for_notification($data, $options);
$this->add_notifications_for_users($item_type, $data, $notify_users); $this->add_notifications_for_users($item_type, $data, $notify_users);
@ -343,7 +347,7 @@ class phpbb_notification_manager
// Go through each user so we can insert a row in the DB and then notify them by their desired means // Go through each user so we can insert a row in the DB and then notify them by their desired means
foreach ($notify_users as $user => $methods) foreach ($notify_users as $user => $methods)
{ {
$notification = new $item_type_class_name($this->phpbb_container); $notification = $this->get_item_type_class($item_type_class_name);
$notification->user_id = (int) $user; $notification->user_id = (int) $user;
@ -361,7 +365,7 @@ class phpbb_notification_manager
if (!isset($notification_methods[$method])) if (!isset($notification_methods[$method]))
{ {
$method_class_name = 'phpbb_notification_method_' . $method; $method_class_name = 'phpbb_notification_method_' . $method;
$notification_methods[$method] = new $method_class_name($this->phpbb_container); $notification_methods[$method] = $this->get_method_class($method_class_name);
} }
$notification_methods[$method]->add_to_queue($notification); $notification_methods[$method]->add_to_queue($notification);
@ -406,7 +410,7 @@ class phpbb_notification_manager
if (method_exists($item_type_class_name, 'update_notifications')) if (method_exists($item_type_class_name, 'update_notifications'))
{ {
// Return False to over-ride the rest of the update // Return False to over-ride the rest of the update
if ($item_type_class_name::update_notifications($this->phpbb_container, $data) === false) if ($this->get_item_type_class($item_type_class_name)->update_notifications($data) === false)
{ {
return; return;
} }
@ -414,7 +418,7 @@ class phpbb_notification_manager
$item_id = $item_type_class_name::get_item_id($data); $item_id = $item_type_class_name::get_item_id($data);
$notification = new $item_type_class_name($this->phpbb_container); $notification = $this->get_item_type_class($item_type_class_name);
$update_array = $notification->create_update_array($data); $update_array = $notification->create_update_array($data);
$sql = 'UPDATE ' . NOTIFICATIONS_TABLE . ' $sql = 'UPDATE ' . NOTIFICATIONS_TABLE . '
@ -460,24 +464,26 @@ class phpbb_notification_manager
{ {
$subscription_types = array(); $subscription_types = array();
foreach ($this->get_subscription_files('notifications/type/') as $class => $file) foreach ($this->get_subscription_files('notifications/type/') as $class_name => $file)
{ {
$class = $this->get_item_type_class_name($class); $class_name = $this->get_item_type_class_name($class_name);
if (!class_exists($class)) if (!class_exists($class_name))
{ {
include($file); include($file);
} }
if ($class::is_available($this->phpbb_container) && method_exists($class, 'get_item_type')) $class = $this->get_item_type_class($class_name);
if ($class->is_available() && method_exists($class_name, 'get_item_type'))
{ {
if ($class::$notification_option === false) if ($class_name::$notification_option === false)
{ {
$subscription_types[$class::get_item_type()] = $class::get_item_type(); $subscription_types[$class_name::get_item_type()] = $class_name::get_item_type();
} }
else else
{ {
$subscription_types[$class::$notification_option['id']] = $class::$notification_option; $subscription_types[$class_name::$notification_option['id']] = $class_name::$notification_option;
} }
} }
} }
@ -503,7 +509,7 @@ class phpbb_notification_manager
include($file); include($file);
} }
$method = new $class_name($this->phpbb_container); $method = $this->get_method_class($class_name);
if ($method->is_available()) if ($method->is_available())
{ {
@ -524,7 +530,7 @@ class phpbb_notification_manager
*/ */
public function get_subscriptions($user_id = false, $only_global = false) public function get_subscriptions($user_id = false, $only_global = false)
{ {
$user_id = ($user_id === false) ? $this->phpbb_container->get('user')->data['user_id'] : $user_id; $user_id = ($user_id === false) ? $this->user->data['user_id'] : $user_id;
$subscriptions = array(); $subscriptions = array();
@ -566,7 +572,7 @@ class phpbb_notification_manager
{ {
$this->get_item_type_class_name($item_type); $this->get_item_type_class_name($item_type);
$user_id = ($user_id === false) ? $this->phpbb_container->get('user')->data['user_id'] : $user_id; $user_id = ($user_id === false) ? $this->user->data['user_id'] : $user_id;
$sql = 'INSERT INTO ' . USER_NOTIFICATIONS_TABLE . ' ' . $sql = 'INSERT INTO ' . USER_NOTIFICATIONS_TABLE . ' ' .
$this->db->sql_build_array('INSERT', array( $this->db->sql_build_array('INSERT', array(
@ -590,7 +596,7 @@ class phpbb_notification_manager
{ {
$this->get_item_type_class_name($item_type); $this->get_item_type_class_name($item_type);
$user_id = ($user_id === false) ? $this->phpbb_container->get('user')->data['user_id'] : $user_id; $user_id = ($user_id === false) ? $this->user->data['user_id'] : $user_id;
$sql = 'DELETE FROM ' . USER_NOTIFICATIONS_TABLE . " $sql = 'DELETE FROM ' . USER_NOTIFICATIONS_TABLE . "
WHERE item_type = '" . $this->db->sql_escape($item_type) . "' WHERE item_type = '" . $this->db->sql_escape($item_type) . "'
@ -654,15 +660,32 @@ class phpbb_notification_manager
return 'phpbb_notification_type_' . $item_type; return 'phpbb_notification_type_' . $item_type;
} }
/**
* Helper to get the notifications item type class and set it up
*/
private function get_item_type_class($item_type, $data = array())
{
$item = new $item_type($this, $this->db, $this->cache, $this->template, $this->extension_manager, $this->user, $this->auth, $this->config, $this->phpbb_root_path, $this->php_ext);
$item->set_initial_data($data);
return $item;
}
/**
* Helper to get the notifications method class and set it up
*/
private function get_method_class($method_name)
{
return new $method_name($this, $this->db, $this->cache, $this->template, $this->extension_manager, $this->user, $this->auth, $this->config, $this->phpbb_root_path, $this->php_ext);
}
/** /**
* Helper to get subscription related files with the finder * Helper to get subscription related files with the finder
*/ */
private function get_subscription_files($path) private function get_subscription_files($path)
{ {
$ext_manager = $this->phpbb_container->get('ext.manager'); $finder = $this->extension_manager->get_finder();
$php_ext = $this->phpbb_container->getParameter('core.php_ext');
$finder = $ext_manager->get_finder();
$subscription_files = array(); $subscription_files = array();
@ -673,7 +696,7 @@ class phpbb_notification_manager
foreach ($files as $file) foreach ($files as $file)
{ {
$class = substr($file, strrpos($file, '/')); $class = substr($file, strrpos($file, '/'));
$class = substr($class, 1, (strpos($class, '.' . $php_ext) - 1)); $class = substr($class, 1, (strpos($class, '.' . $this->php_ext) - 1));
if ($class == 'interface' || $class == 'base') if ($class == 'interface' || $class == 'base')
{ {

View file

@ -23,12 +23,7 @@ if (!defined('IN_PHPBB'))
*/ */
abstract class phpbb_notification_method_base implements phpbb_notification_method_interface abstract class phpbb_notification_method_base implements phpbb_notification_method_interface
{ {
protected $phpbb_container; protected $notification_manager, $db, $cache, $template, $extension_manager, $user, $auth, $config, $phpbb_root_path, $php_ext = null;
protected $service;
protected $db;
protected $user;
protected $phpbb_root_path;
protected $php_ext;
/** /**
* Desired notifications * Desired notifications
@ -56,20 +51,17 @@ abstract class phpbb_notification_method_base implements phpbb_notification_meth
*/ */
protected $queue = array(); protected $queue = array();
public function __construct(ContainerBuilder $phpbb_container) public function __construct(dbal $db, phpbb_cache_driver_interface $cache, phpbb_template $template, phpbb_extension_manager $extension_manager, phpbb_user $user, phpbb_auth $auth, phpbb_config $config, $phpbb_root_path, $php_ext)
{ {
// phpBB Container $this->db = $db;
$this->phpbb_container = $phpbb_container; $this->cache = $cache;
$this->template = $template;
// Service $this->extension_manager = $extension_manager;
$this->service = $phpbb_container->get('notifications'); $this->user = $user;
$this->auth = $auth;
// Some common things we're going to use $this->config = $config;
$this->db = $phpbb_container->get('dbal.conn'); $this->phpbb_root_path = $phpbb_root_path;
$this->user = $phpbb_container->get('user'); $this->php_ext = $php_ext;
$this->phpbb_root_path = $phpbb_container->getParameter('core.root_path');
$this->php_ext = $phpbb_container->getParameter('core.php_ext');
} }
/** /**

View file

@ -57,12 +57,12 @@ class phpbb_notification_method_email extends phpbb_notification_method_base
// We do not send emails to banned users // We do not send emails to banned users
if (!function_exists('phpbb_get_banned_user_ids')) if (!function_exists('phpbb_get_banned_user_ids'))
{ {
include($this->phpbb_container->getParameter('core.root_path') . 'includes/functions_user.' . $this->phpbb_container->getParameter('core.php_ext')); include($this->phpbb_root_path . 'includes/functions_user.' . $this->php_ext);
} }
$banned_users = phpbb_get_banned_user_ids($user_ids); $banned_users = phpbb_get_banned_user_ids($user_ids);
// Load all the users we need // Load all the users we need
$this->service->load_users($user_ids); $this->notification_manager->load_users($user_ids);
// Load the messenger // Load the messenger
if (!class_exists('messenger')) if (!class_exists('messenger'))
@ -75,7 +75,7 @@ class phpbb_notification_method_email extends phpbb_notification_method_base
// Time to go through the queue and send emails // Time to go through the queue and send emails
foreach ($this->queue as $notification) foreach ($this->queue as $notification)
{ {
$user = $this->service->get_user($notification->user_id); $user = $this->notification_manager->get_user($notification->user_id);
if ($user['user_type'] == USER_IGNORE || in_array($notification->user_id, $banned_users)) if ($user['user_type'] == USER_IGNORE || in_array($notification->user_id, $banned_users))
{ {

View file

@ -36,7 +36,7 @@ class phpbb_notification_method_jabber extends phpbb_notification_method_email
*/ */
public function is_available() public function is_available()
{ {
return ($this->global_available() && $this->phpbb_container->get('user')->data['jabber']); return ($this->global_available() && $this->user->data['jabber']);
} }
/** /**
@ -45,9 +45,7 @@ class phpbb_notification_method_jabber extends phpbb_notification_method_email
*/ */
public function global_available() public function global_available()
{ {
$config = $this->phpbb_container->get('config'); return ($this->config['jab_enable'] && @extension_loaded('xml'));
return ($config['jab_enable'] && @extension_loaded('xml'));
} }
public function notify() public function notify()

View file

@ -62,23 +62,20 @@ class phpbb_notification_type_approve_post extends phpbb_notification_type_post
/** /**
* Find the users who want to receive notifications * Find the users who want to receive notifications
* *
* @param ContainerBuilder $phpbb_container
* @param array $post Data from * @param array $post Data from
* *
* @return array * @return array
*/ */
public static function find_users_for_notification(ContainerBuilder $phpbb_container, $post, $options = array()) public function find_users_for_notification($post, $options = array())
{ {
$options = array_merge(array( $options = array_merge(array(
'ignore_users' => array(), 'ignore_users' => array(),
), $options); ), $options);
$db = $phpbb_container->get('dbal.conn');
$users = array(); $users = array();
$users[$post['poster_id']] = array(''); $users[$post['poster_id']] = array('');
$auth_read = $phpbb_container->get('auth')->acl_get_list(array_keys($users), 'f_read', $post['forum_id']); $auth_read = $this->auth->acl_get_list(array_keys($users), 'f_read', $post['forum_id']);
if (empty($auth_read)) if (empty($auth_read))
{ {
@ -90,9 +87,9 @@ class phpbb_notification_type_approve_post extends phpbb_notification_type_post
$sql = 'SELECT * $sql = 'SELECT *
FROM ' . USER_NOTIFICATIONS_TABLE . " FROM ' . USER_NOTIFICATIONS_TABLE . "
WHERE item_type = '" . self::$notification_option['id'] . "' WHERE item_type = '" . self::$notification_option['id'] . "'
AND " . $db->sql_in_set('user_id', $auth_read[$post['forum_id']]['f_read']); AND " . $this->db->sql_in_set('user_id', $auth_read[$post['forum_id']]['f_read']);
$result = $db->sql_query($sql); $result = $this->db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) while ($row = $this->db->sql_fetchrow($result))
{ {
if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']])) if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']]))
{ {
@ -106,7 +103,7 @@ class phpbb_notification_type_approve_post extends phpbb_notification_type_post
$notify_users[$row['user_id']][] = $row['method']; $notify_users[$row['user_id']][] = $row['method'];
} }
$db->sql_freeresult($result); $this->db->sql_freeresult($result);
return $notify_users; return $notify_users;
} }

View file

@ -62,23 +62,20 @@ class phpbb_notification_type_approve_topic extends phpbb_notification_type_topi
/** /**
* Find the users who want to receive notifications * Find the users who want to receive notifications
* *
* @param ContainerBuilder $phpbb_container
* @param array $post Data from * @param array $post Data from
* *
* @return array * @return array
*/ */
public static function find_users_for_notification(ContainerBuilder $phpbb_container, $post, $options = array()) public function find_users_for_notification($post, $options = array())
{ {
$options = array_merge(array( $options = array_merge(array(
'ignore_users' => array(), 'ignore_users' => array(),
), $options); ), $options);
$db = $phpbb_container->get('dbal.conn');
$users = array(); $users = array();
$users[$post['poster_id']] = array(''); $users[$post['poster_id']] = array('');
$auth_read = $phpbb_container->get('auth')->acl_get_list(array_keys($users), 'f_read', $post['forum_id']); $auth_read = $this->auth->acl_get_list(array_keys($users), 'f_read', $post['forum_id']);
if (empty($auth_read)) if (empty($auth_read))
{ {
@ -90,9 +87,9 @@ class phpbb_notification_type_approve_topic extends phpbb_notification_type_topi
$sql = 'SELECT * $sql = 'SELECT *
FROM ' . USER_NOTIFICATIONS_TABLE . " FROM ' . USER_NOTIFICATIONS_TABLE . "
WHERE item_type = '" . self::$notification_option['id'] . "' WHERE item_type = '" . self::$notification_option['id'] . "'
AND " . $db->sql_in_set('user_id', $auth_read[$post['forum_id']]['f_read']); AND " . $this->db->sql_in_set('user_id', $auth_read[$post['forum_id']]['f_read']);
$result = $db->sql_query($sql); $result = $this->db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) while ($row = $this->db->sql_fetchrow($result))
{ {
if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']])) if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']]))
{ {
@ -106,7 +103,7 @@ class phpbb_notification_type_approve_topic extends phpbb_notification_type_topi
$notify_users[$row['user_id']][] = $row['method']; $notify_users[$row['user_id']][] = $row['method'];
} }
$db->sql_freeresult($result); $this->db->sql_freeresult($result);
return $notify_users; return $notify_users;
} }

View file

@ -23,11 +23,7 @@ if (!defined('IN_PHPBB'))
*/ */
abstract class phpbb_notification_type_base implements phpbb_notification_type_interface abstract class phpbb_notification_type_base implements phpbb_notification_type_interface
{ {
protected $phpbb_container; protected $notification_manager, $db, $cache, $template, $extension_manager, $user, $auth, $config, $phpbb_root_path, $php_ext = null;
protected $service;
protected $db;
protected $phpbb_root_path;
protected $php_ext;
/** /**
* Array of user data containing information needed to output the notifications to the template * Array of user data containing information needed to output the notifications to the template
@ -39,7 +35,7 @@ abstract class phpbb_notification_type_base implements phpbb_notification_type_i
/** /**
* Notification option data (for outputting to the user) * Notification option data (for outputting to the user)
* *
* @var bool|array False if the service should use it's default data * @var bool|array False if the service should use its default data
* Array of data (including keys 'id' and 'lang') * Array of data (including keys 'id' and 'lang')
*/ */
public static $notification_option = false; public static $notification_option = false;
@ -60,20 +56,27 @@ abstract class phpbb_notification_type_base implements phpbb_notification_type_i
*/ */
private $data = array(); private $data = array();
public function __construct(ContainerBuilder $phpbb_container, $data = array()) public function __construct(phpbb_notification_manager $notification_manager, dbal $db, phpbb_cache_driver_interface $cache, phpbb_template $template, phpbb_extension_manager $extension_manager, phpbb_user $user, phpbb_auth $auth, phpbb_config $config, $phpbb_root_path, $php_ext)
{ {
// phpBB Container $this->notification_manager = $notification_manager;
$this->phpbb_container = $phpbb_container; $this->db = $db;
$this->cache = $cache;
// Service $this->template = $template;
$this->service = $phpbb_container->get('notifications'); $this->extension_manager = $extension_manager;
$this->user = $user;
// Some common things we're going to use $this->auth = $auth;
$this->db = $phpbb_container->get('dbal.conn'); $this->config = $config;
$this->phpbb_root_path = $phpbb_root_path;
$this->phpbb_root_path = $phpbb_container->getParameter('core.root_path'); $this->php_ext = $php_ext;
$this->php_ext = $phpbb_container->getParameter('core.php_ext'); }
/**
* Set initial data from the database
*
* @param array $data Row directly from the database
*/
public function set_initial_data($data = array())
{
// The row from the database (unless this is a new notification we're going to add) // The row from the database (unless this is a new notification we're going to add)
$this->data = $data; $this->data = $data;
$this->data['data'] = (isset($this->data['data'])) ? unserialize($this->data['data']) : array(); $this->data['data'] = (isset($this->data['data'])) ? unserialize($this->data['data']) : array();
@ -117,15 +120,13 @@ abstract class phpbb_notification_type_base implements phpbb_notification_type_i
*/ */
public function prepare_for_display() public function prepare_for_display()
{ {
$user = $this->phpbb_container->get('user');
return array( return array(
'AVATAR' => $this->get_avatar(), 'AVATAR' => $this->get_avatar(),
'FORMATTED_TITLE' => $this->get_title(), 'FORMATTED_TITLE' => $this->get_title(),
'URL' => $this->get_url(), 'URL' => $this->get_url(),
'TIME' => $user->format_date($this->time), 'TIME' => $this->user->format_date($this->time),
'UNREAD' => $this->unread, 'UNREAD' => $this->unread,
@ -239,7 +240,7 @@ abstract class phpbb_notification_type_base implements phpbb_notification_type_i
/** /**
* Load the special items (fall-back) * Load the special items (fall-back)
*/ */
public static function load_special(ContainerBuilder $phpbb_container, $data, $notifications) public function load_special($data, $notifications)
{ {
return; return;
} }
@ -247,7 +248,7 @@ abstract class phpbb_notification_type_base implements phpbb_notification_type_i
/** /**
* Is available (fall-back) * Is available (fall-back)
*/ */
public static function is_available(ContainerBuilder $phpbb_container) public function is_available()
{ {
return true; return true;
} }
@ -259,27 +260,24 @@ abstract class phpbb_notification_type_base implements phpbb_notification_type_i
/** /**
* Find the users who want to receive notifications (helper) * Find the users who want to receive notifications (helper)
* *
* @param ContainerBuilder $phpbb_container
* @param array $item_id The item_id to search for * @param array $item_id The item_id to search for
* *
* @return array * @return array
*/ */
protected static function _find_users_for_notification(ContainerBuilder $phpbb_container, $item_id, $options) protected function _find_users_for_notification($item_id, $options)
{ {
$options = array_merge(array( $options = array_merge(array(
'ignore_users' => array(), 'ignore_users' => array(),
), $options); ), $options);
$db = $phpbb_container->get('dbal.conn');
$rowset = array(); $rowset = array();
$sql = 'SELECT * $sql = 'SELECT *
FROM ' . USER_NOTIFICATIONS_TABLE . " FROM ' . USER_NOTIFICATIONS_TABLE . "
WHERE item_type = '" . static::get_item_type() . "' WHERE item_type = '" . static::get_item_type() . "'
AND item_id = " . (int) $item_id; AND item_id = " . (int) $item_id;
$result = $db->sql_query($sql); $result = $this->db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) while ($row = $this->db->sql_fetchrow($result))
{ {
if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']])) if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']]))
{ {
@ -293,7 +291,7 @@ abstract class phpbb_notification_type_base implements phpbb_notification_type_i
$rowset[$row['user_id']][] = $row['method']; $rowset[$row['user_id']][] = $row['method'];
} }
$db->sql_freeresult($result); $this->db->sql_freeresult($result);
return $rowset; return $rowset;
} }
@ -306,7 +304,7 @@ abstract class phpbb_notification_type_base implements phpbb_notification_type_i
*/ */
protected function _get_avatar($user_id) protected function _get_avatar($user_id)
{ {
$user = $this->service->get_user($user_id); $user = $this->notification_manager->get_user($user_id);
if (!function_exists('get_user_avatar')) if (!function_exists('get_user_avatar'))
{ {

View file

@ -51,38 +51,35 @@ class phpbb_notification_type_bookmark extends phpbb_notification_type_post
/** /**
* Find the users who want to receive notifications * Find the users who want to receive notifications
* *
* @param ContainerBuilder $phpbb_container
* @param array $post Data from * @param array $post Data from
* *
* @return array * @return array
*/ */
public static function find_users_for_notification(ContainerBuilder $phpbb_container, $post, $options = array()) public function find_users_for_notification($post, $options = array())
{ {
$options = array_merge(array( $options = array_merge(array(
'ignore_users' => array(), 'ignore_users' => array(),
), $options); ), $options);
$db = $phpbb_container->get('dbal.conn');
$users = array(); $users = array();
$sql = 'SELECT user_id $sql = 'SELECT user_id
FROM ' . BOOKMARKS_TABLE . ' FROM ' . BOOKMARKS_TABLE . '
WHERE ' . $db->sql_in_set('topic_id', $post['topic_id']) . ' WHERE ' . $this->db->sql_in_set('topic_id', $post['topic_id']) . '
AND user_id <> ' . (int) $post['poster_id']; AND user_id <> ' . (int) $post['poster_id'];
$result = $db->sql_query($sql); $result = $this->db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) while ($row = $this->db->sql_fetchrow($result))
{ {
$users[] = $row['user_id']; $users[] = $row['user_id'];
} }
$db->sql_freeresult($result); $this->db->sql_freeresult($result);
if (empty($users)) if (empty($users))
{ {
return array(); return array();
} }
$auth_read = $phpbb_container->get('auth')->acl_get_list($users, 'f_read', $post['forum_id']); $auth_read = $this->auth->acl_get_list($users, 'f_read', $post['forum_id']);
if (empty($auth_read)) if (empty($auth_read))
{ {
@ -94,9 +91,9 @@ class phpbb_notification_type_bookmark extends phpbb_notification_type_post
$sql = 'SELECT * $sql = 'SELECT *
FROM ' . USER_NOTIFICATIONS_TABLE . " FROM ' . USER_NOTIFICATIONS_TABLE . "
WHERE item_type = '" . self::get_item_type() . "' WHERE item_type = '" . self::get_item_type() . "'
AND " . $db->sql_in_set('user_id', $auth_read[$post['forum_id']]['f_read']); AND " . $this->db->sql_in_set('user_id', $auth_read[$post['forum_id']]['f_read']);
$result = $db->sql_query($sql); $result = $this->db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) while ($row = $this->db->sql_fetchrow($result))
{ {
if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']])) if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']]))
{ {
@ -110,7 +107,7 @@ class phpbb_notification_type_bookmark extends phpbb_notification_type_post
$notify_users[$row['user_id']][] = $row['method']; $notify_users[$row['user_id']][] = $row['method'];
} }
$db->sql_freeresult($result); $this->db->sql_freeresult($result);
return $notify_users; return $notify_users;
} }

View file

@ -66,7 +66,7 @@ class phpbb_notification_type_disapprove_post extends phpbb_notification_type_ap
*/ */
public function get_title() public function get_title()
{ {
return $this->phpbb_container->get('user')->lang( return $this->user->lang(
$this->language_key, $this->language_key,
censor_text($this->get_data('topic_title')), censor_text($this->get_data('topic_title')),
$this->get_data('disapprove_reason') $this->get_data('disapprove_reason')

View file

@ -66,7 +66,7 @@ class phpbb_notification_type_disapprove_topic extends phpbb_notification_type_a
*/ */
public function get_title() public function get_title()
{ {
return $this->phpbb_container->get('user')->lang( return $this->user->lang(
$this->language_key, $this->language_key,
censor_text($this->get_data('topic_title')), censor_text($this->get_data('topic_title')),
$this->get_data('disapprove_reason') $this->get_data('disapprove_reason')

View file

@ -25,9 +25,9 @@ interface phpbb_notification_type_interface
public static function get_item_id($type_data); public static function get_item_id($type_data);
public static function is_available(ContainerBuilder $phpbb_container); public function is_available();
public static function find_users_for_notification(ContainerBuilder $phpbb_container, $type_data, $options); public function find_users_for_notification($type_data, $options);
public function get_title(); public function get_title();
@ -45,5 +45,5 @@ interface phpbb_notification_type_interface
public function get_load_special(); public function get_load_special();
public static function load_special(ContainerBuilder $phpbb_container, $data, $notifications); public function load_special($data, $notifications);
} }

View file

@ -65,36 +65,31 @@ class phpbb_notification_type_pm extends phpbb_notification_type_base
/** /**
* Find the users who want to receive notifications * Find the users who want to receive notifications
* *
* @param ContainerBuilder $phpbb_container
* @param array $pm Data from * @param array $pm Data from
* *
* @return array * @return array
*/ */
public static function find_users_for_notification(ContainerBuilder $phpbb_container, $pm, $options = array()) public function find_users_for_notification($pm, $options = array())
{ {
$options = array_merge(array( $options = array_merge(array(
'ignore_users' => array(), 'ignore_users' => array(),
), $options); ), $options);
$service = $phpbb_container->get('notifications');
$db = $phpbb_container->get('dbal.conn');
$user = $phpbb_container->get('user');
if (!sizeof($pm['recipients'])) if (!sizeof($pm['recipients']))
{ {
return array(); return array();
} }
$service->load_users(array_keys($pm['recipients'])); $this->notification_manager->load_users(array_keys($pm['recipients']));
$notify_users = array(); $notify_users = array();
$sql = 'SELECT * $sql = 'SELECT *
FROM ' . USER_NOTIFICATIONS_TABLE . " FROM ' . USER_NOTIFICATIONS_TABLE . "
WHERE item_type = '" . self::get_item_type() . "' WHERE item_type = '" . self::get_item_type() . "'
AND " . $db->sql_in_set('user_id', array_keys($pm['recipients'])); AND " . $this->db->sql_in_set('user_id', array_keys($pm['recipients']));
$result = $db->sql_query($sql); $result = $this->db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) while ($row = $this->db->sql_fetchrow($result))
{ {
if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']])) if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']]))
{ {
@ -108,7 +103,7 @@ class phpbb_notification_type_pm extends phpbb_notification_type_base
$notify_users[$row['user_id']][] = $row['method']; $notify_users[$row['user_id']][] = $row['method'];
} }
$db->sql_freeresult($result); $this->db->sql_freeresult($result);
return $notify_users; return $notify_users;
} }
@ -128,11 +123,11 @@ class phpbb_notification_type_pm extends phpbb_notification_type_base
*/ */
public function get_title() public function get_title()
{ {
$user_data = $this->service->get_user($this->get_data('from_user_id')); $user_data = $this->notification_manager->get_user($this->get_data('from_user_id'));
$username = get_username_string('no_profile', $user_data['user_id'], $user_data['username'], $user_data['user_colour']); $username = get_username_string('no_profile', $user_data['user_id'], $user_data['username'], $user_data['user_colour']);
return $this->phpbb_container->get('user')->lang('NOTIFICATION_PM', $username, $this->get_data('message_subject')); return $this->user->lang('NOTIFICATION_PM', $username, $this->get_data('message_subject'));
} }
/** /**
@ -142,7 +137,7 @@ class phpbb_notification_type_pm extends phpbb_notification_type_base
*/ */
public function get_email_template_variables() public function get_email_template_variables()
{ {
$user_data = $this->service->get_user($this->get_data('from_user_id')); $user_data = $this->notification_manager->get_user($this->get_data('from_user_id'));
return array( return array(
'AUTHOR_NAME' => htmlspecialchars_decode($user_data['username']), 'AUTHOR_NAME' => htmlspecialchars_decode($user_data['username']),

View file

@ -71,12 +71,11 @@ class phpbb_notification_type_post extends phpbb_notification_type_base
/** /**
* Find the users who want to receive notifications * Find the users who want to receive notifications
* *
* @param ContainerBuilder $phpbb_container
* @param array $post Data from * @param array $post Data from
* *
* @return array * @return array
*/ */
public static function find_users_for_notification(ContainerBuilder $phpbb_container, $post, $options = array()) public function find_users_for_notification($post, $options = array())
{ {
$options = array_merge(array( $options = array_merge(array(
'ignore_users' => array(), 'ignore_users' => array(),
@ -86,8 +85,6 @@ class phpbb_notification_type_post extends phpbb_notification_type_base
// It may not be the nicest thing, but it is already working and it would be significant work to replace it // It may not be the nicest thing, but it is already working and it would be significant work to replace it
//$users = parent::_find_users_for_notification($phpbb_container, $post['topic_id']); //$users = parent::_find_users_for_notification($phpbb_container, $post['topic_id']);
$db = $phpbb_container->get('dbal.conn');
$users = array(); $users = array();
$sql = 'SELECT user_id $sql = 'SELECT user_id
@ -95,19 +92,19 @@ class phpbb_notification_type_post extends phpbb_notification_type_base
WHERE topic_id = ' . (int) $post['topic_id'] . ' WHERE topic_id = ' . (int) $post['topic_id'] . '
AND notify_status = ' . NOTIFY_YES . ' AND notify_status = ' . NOTIFY_YES . '
AND user_id <> ' . (int) $post['poster_id']; AND user_id <> ' . (int) $post['poster_id'];
$result = $db->sql_query($sql); $result = $this->db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) while ($row = $this->db->sql_fetchrow($result))
{ {
$users[] = $row['user_id']; $users[] = $row['user_id'];
} }
$db->sql_freeresult($result); $this->db->sql_freeresult($result);
if (empty($users)) if (empty($users))
{ {
return array(); return array();
} }
$auth_read = $phpbb_container->get('auth')->acl_get_list($users, 'f_read', $post['forum_id']); $auth_read = $this->auth->acl_get_list($users, 'f_read', $post['forum_id']);
if (empty($auth_read)) if (empty($auth_read))
{ {
@ -119,9 +116,9 @@ class phpbb_notification_type_post extends phpbb_notification_type_base
$sql = 'SELECT * $sql = 'SELECT *
FROM ' . USER_NOTIFICATIONS_TABLE . " FROM ' . USER_NOTIFICATIONS_TABLE . "
WHERE item_type = '" . self::get_item_type() . "' WHERE item_type = '" . self::get_item_type() . "'
AND " . $db->sql_in_set('user_id', $auth_read[$post['forum_id']]['f_read']); AND " . $this->db->sql_in_set('user_id', $auth_read[$post['forum_id']]['f_read']);
$result = $db->sql_query($sql); $result = $this->db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) while ($row = $this->db->sql_fetchrow($result))
{ {
if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']])) if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']]))
{ {
@ -135,7 +132,7 @@ class phpbb_notification_type_post extends phpbb_notification_type_base
$notify_users[$row['user_id']][] = $row['method']; $notify_users[$row['user_id']][] = $row['method'];
} }
$db->sql_freeresult($result); $this->db->sql_freeresult($result);
return $notify_users; return $notify_users;
} }
@ -161,12 +158,12 @@ class phpbb_notification_type_post extends phpbb_notification_type_base
} }
else else
{ {
$user_data = $this->service->get_user($this->get_data('poster_id')); $user_data = $this->notification_manager->get_user($this->get_data('poster_id'));
$username = get_username_string('no_profile', $user_data['user_id'], $user_data['username'], $user_data['user_colour']); $username = get_username_string('no_profile', $user_data['user_id'], $user_data['username'], $user_data['user_colour']);
} }
return $this->phpbb_container->get('user')->lang( return $this->user->lang(
$this->language_key, $this->language_key,
$username, $username,
censor_text($this->get_data('topic_title')) censor_text($this->get_data('topic_title'))

View file

@ -62,9 +62,9 @@ class phpbb_notification_type_post_in_queue extends phpbb_notification_type_post
/** /**
* Is available * Is available
*/ */
public static function is_available(ContainerBuilder $phpbb_container) public function is_available()
{ {
$m_approve = $phpbb_container->get('auth')->acl_getf('m_approve', true); $m_approve = $this->auth->acl_getf('m_approve', true);
return (!empty($m_approve)); return (!empty($m_approve));
} }
@ -72,20 +72,17 @@ class phpbb_notification_type_post_in_queue extends phpbb_notification_type_post
/** /**
* Find the users who want to receive notifications * Find the users who want to receive notifications
* *
* @param ContainerBuilder $phpbb_container
* @param array $post Data from the post * @param array $post Data from the post
* *
* @return array * @return array
*/ */
public static function find_users_for_notification(ContainerBuilder $phpbb_container, $post, $options = array()) public function find_users_for_notification($post, $options = array())
{ {
$options = array_merge(array( $options = array_merge(array(
'ignore_users' => array(), 'ignore_users' => array(),
), $options); ), $options);
$db = $phpbb_container->get('dbal.conn'); $auth_approve = $this->auth->acl_get_list(false, 'm_approve', $post['forum_id']);
$auth_approve = $phpbb_container->get('auth')->acl_get_list(false, 'm_approve', $post['forum_id']);
if (empty($auth_approve)) if (empty($auth_approve))
{ {
@ -97,9 +94,9 @@ class phpbb_notification_type_post_in_queue extends phpbb_notification_type_post
$sql = 'SELECT * $sql = 'SELECT *
FROM ' . USER_NOTIFICATIONS_TABLE . " FROM ' . USER_NOTIFICATIONS_TABLE . "
WHERE item_type = '" . self::$notification_option['id'] . "' WHERE item_type = '" . self::$notification_option['id'] . "'
AND " . $db->sql_in_set('user_id', $auth_approve[$post['forum_id']]['m_approve']); AND " . $this->db->sql_in_set('user_id', $auth_approve[$post['forum_id']]['m_approve']);
$result = $db->sql_query($sql); $result = $this->db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) while ($row = $this->db->sql_fetchrow($result))
{ {
if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']])) if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']]))
{ {
@ -113,7 +110,7 @@ class phpbb_notification_type_post_in_queue extends phpbb_notification_type_post
$notify_users[$row['user_id']][] = $row['method']; $notify_users[$row['user_id']][] = $row['method'];
} }
$db->sql_freeresult($result); $this->db->sql_freeresult($result);
return $notify_users; return $notify_users;
} }

View file

@ -58,19 +58,16 @@ class phpbb_notification_type_quote extends phpbb_notification_type_post
/** /**
* Find the users who want to receive notifications * Find the users who want to receive notifications
* *
* @param ContainerBuilder $phpbb_container
* @param array $post Data from * @param array $post Data from
* *
* @return array * @return array
*/ */
public static function find_users_for_notification(ContainerBuilder $phpbb_container, $post, $options = array()) public function find_users_for_notification($post, $options = array())
{ {
$options = array_merge(array( $options = array_merge(array(
'ignore_users' => array(), 'ignore_users' => array(),
), $options); ), $options);
$db = $phpbb_container->get('dbal.conn');
$usernames = false; $usernames = false;
preg_match_all(self::$regular_expression_match, $post['post_text'], $usernames); preg_match_all(self::$regular_expression_match, $post['post_text'], $usernames);
@ -87,21 +84,21 @@ class phpbb_notification_type_quote extends phpbb_notification_type_post
$sql = 'SELECT user_id $sql = 'SELECT user_id
FROM ' . USERS_TABLE . ' FROM ' . USERS_TABLE . '
WHERE ' . $db->sql_in_set('username_clean', $usernames) . ' WHERE ' . $this->db->sql_in_set('username_clean', $usernames) . '
AND user_id <> ' . (int) $post['poster_id']; AND user_id <> ' . (int) $post['poster_id'];
$result = $db->sql_query($sql); $result = $this->db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) while ($row = $this->db->sql_fetchrow($result))
{ {
$users[] = $row['user_id']; $users[] = $row['user_id'];
} }
$db->sql_freeresult($result); $this->db->sql_freeresult($result);
if (empty($users)) if (empty($users))
{ {
return array(); return array();
} }
$auth_read = $phpbb_container->get('auth')->acl_get_list($users, 'f_read', $post['forum_id']); $auth_read = $this->auth->acl_get_list($users, 'f_read', $post['forum_id']);
if (empty($auth_read)) if (empty($auth_read))
{ {
@ -113,9 +110,9 @@ class phpbb_notification_type_quote extends phpbb_notification_type_post
$sql = 'SELECT * $sql = 'SELECT *
FROM ' . USER_NOTIFICATIONS_TABLE . " FROM ' . USER_NOTIFICATIONS_TABLE . "
WHERE item_type = '" . self::get_item_type() . "' WHERE item_type = '" . self::get_item_type() . "'
AND " . $db->sql_in_set('user_id', $auth_read[$post['forum_id']]['f_read']); AND " . $this->db->sql_in_set('user_id', $auth_read[$post['forum_id']]['f_read']);
$result = $db->sql_query($sql); $result = $this->db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) while ($row = $this->db->sql_fetchrow($result))
{ {
if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']])) if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']]))
{ {
@ -129,7 +126,7 @@ class phpbb_notification_type_quote extends phpbb_notification_type_post
$notify_users[$row['user_id']][] = $row['method']; $notify_users[$row['user_id']][] = $row['method'];
} }
$db->sql_freeresult($result); $this->db->sql_freeresult($result);
return $notify_users; return $notify_users;
} }
@ -137,28 +134,24 @@ class phpbb_notification_type_quote extends phpbb_notification_type_post
/** /**
* Update a notification * Update a notification
* *
* @param ContainerBuilder $phpbb_container
* @param array $data Data specific for this type that will be updated * @param array $data Data specific for this type that will be updated
*/ */
public static function update_notifications(ContainerBuilder $phpbb_container, $post) public function update_notifications($post)
{ {
$service = $phpbb_container->get('notifications');
$db = $phpbb_container->get('dbal.conn');
$old_notifications = array(); $old_notifications = array();
$sql = 'SELECT user_id $sql = 'SELECT user_id
FROM ' . NOTIFICATIONS_TABLE . " FROM ' . NOTIFICATIONS_TABLE . "
WHERE item_type = '" . self::get_item_type() . "' WHERE item_type = '" . self::get_item_type() . "'
AND item_id = " . self::get_item_id($post); AND item_id = " . self::get_item_id($post);
$result = $db->sql_query($sql); $result = $this->db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) while ($row = $this->db->sql_fetchrow($result))
{ {
$old_notifications[] = $row['user_id']; $old_notifications[] = $row['user_id'];
} }
$db->sql_freeresult($result); $this->db->sql_freeresult($result);
// Find the new users to notify // Find the new users to notify
$notifications = self::find_users_for_notification($phpbb_container, $post); $notifications = $this->find_users_for_notification($post);
// Find the notifications we must delete // Find the notifications we must delete
$remove_notifications = array_diff($old_notifications, array_keys($notifications)); $remove_notifications = array_diff($old_notifications, array_keys($notifications));
@ -185,8 +178,8 @@ class phpbb_notification_type_quote extends phpbb_notification_type_post
$sql = 'DELETE FROM ' . NOTIFICATIONS_TABLE . " $sql = 'DELETE FROM ' . NOTIFICATIONS_TABLE . "
WHERE item_type = '" . self::get_item_type() . "' WHERE item_type = '" . self::get_item_type() . "'
AND item_id = " . self::get_item_id($post) . ' AND item_id = " . self::get_item_id($post) . '
AND ' . $db->sql_in_set('user_id', $remove_notifications); AND ' . $this->db->sql_in_set('user_id', $remove_notifications);
$db->sql_query($sql); $this->db->sql_query($sql);
} }
// return true to continue with the update code in the notifications service (this will update the rest of the notifications) // return true to continue with the update code in the notifications service (this will update the rest of the notifications)
@ -200,7 +193,7 @@ class phpbb_notification_type_quote extends phpbb_notification_type_post
*/ */
public function get_email_template_variables() public function get_email_template_variables()
{ {
$user_data = $this->service->get_user($this->get_data('poster_id')); $user_data = $this->notification_manager->get_user($this->get_data('poster_id'));
return array_merge(parent::get_email_template_variables(), array( return array_merge(parent::get_email_template_variables(), array(
'AUTHOR_NAME' => htmlspecialchars_decode($user_data['username']), 'AUTHOR_NAME' => htmlspecialchars_decode($user_data['username']),

View file

@ -71,12 +71,11 @@ class phpbb_notification_type_topic extends phpbb_notification_type_base
/** /**
* Find the users who want to receive notifications * Find the users who want to receive notifications
* *
* @param ContainerBuilder $phpbb_container
* @param array $topic Data from the topic * @param array $topic Data from the topic
* *
* @return array * @return array
*/ */
public static function find_users_for_notification(ContainerBuilder $phpbb_container, $topic, $options = array()) public function find_users_for_notification($topic, $options = array())
{ {
$options = array_merge(array( $options = array_merge(array(
'ignore_users' => array(), 'ignore_users' => array(),
@ -86,8 +85,6 @@ class phpbb_notification_type_topic extends phpbb_notification_type_base
// It may not be the nicest thing, but it is already working and it would be significant work to replace it // It may not be the nicest thing, but it is already working and it would be significant work to replace it
//$users = parent::_find_users_for_notification($phpbb_container, $topic['forum_id']); //$users = parent::_find_users_for_notification($phpbb_container, $topic['forum_id']);
$db = $phpbb_container->get('dbal.conn');
$users = array(); $users = array();
$sql = 'SELECT user_id $sql = 'SELECT user_id
@ -95,19 +92,19 @@ class phpbb_notification_type_topic extends phpbb_notification_type_base
WHERE forum_id = ' . (int) $topic['forum_id'] . ' WHERE forum_id = ' . (int) $topic['forum_id'] . '
AND notify_status = ' . NOTIFY_YES . ' AND notify_status = ' . NOTIFY_YES . '
AND user_id <> ' . (int) $topic['poster_id']; AND user_id <> ' . (int) $topic['poster_id'];
$result = $db->sql_query($sql); $result = $this->db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) while ($row = $this->db->sql_fetchrow($result))
{ {
$users[] = $row['user_id']; $users[] = $row['user_id'];
} }
$db->sql_freeresult($result); $this->db->sql_freeresult($result);
if (empty($users)) if (empty($users))
{ {
return array(); return array();
} }
$auth_read = $phpbb_container->get('auth')->acl_get_list($users, 'f_read', $topic['forum_id']); $auth_read = $this->auth->acl_get_list($users, 'f_read', $topic['forum_id']);
if (empty($auth_read)) if (empty($auth_read))
{ {
@ -119,9 +116,9 @@ class phpbb_notification_type_topic extends phpbb_notification_type_base
$sql = 'SELECT * $sql = 'SELECT *
FROM ' . USER_NOTIFICATIONS_TABLE . " FROM ' . USER_NOTIFICATIONS_TABLE . "
WHERE item_type = '" . self::get_item_type() . "' WHERE item_type = '" . self::get_item_type() . "'
AND " . $db->sql_in_set('user_id', $auth_read[$topic['forum_id']]['f_read']); AND " . $this->db->sql_in_set('user_id', $auth_read[$topic['forum_id']]['f_read']);
$result = $db->sql_query($sql); $result = $this->db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) while ($row = $this->db->sql_fetchrow($result))
{ {
if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']])) if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']]))
{ {
@ -135,7 +132,7 @@ class phpbb_notification_type_topic extends phpbb_notification_type_base
$notify_users[$row['user_id']][] = $row['method']; $notify_users[$row['user_id']][] = $row['method'];
} }
$db->sql_freeresult($result); $this->db->sql_freeresult($result);
return $notify_users; return $notify_users;
} }
@ -161,12 +158,12 @@ class phpbb_notification_type_topic extends phpbb_notification_type_base
} }
else else
{ {
$user_data = $this->service->get_user($this->get_data('poster_id')); $user_data = $this->notification_manager->get_user($this->get_data('poster_id'));
$username = get_username_string('no_profile', $user_data['user_id'], $user_data['username'], $user_data['user_colour']); $username = get_username_string('no_profile', $user_data['user_id'], $user_data['username'], $user_data['user_colour']);
} }
return $this->phpbb_container->get('user')->lang( return $this->user->lang(
$this->language_key, $this->language_key,
$username, $username,
censor_text($this->get_data('topic_title')), censor_text($this->get_data('topic_title')),

View file

@ -53,9 +53,9 @@ class phpbb_notification_type_topic_in_queue extends phpbb_notification_type_top
/** /**
* Is available * Is available
*/ */
public static function is_available(ContainerBuilder $phpbb_container) public function is_available()
{ {
$m_approve = $phpbb_container->get('auth')->acl_getf('m_approve', true); $m_approve = $this->auth->acl_getf('m_approve', true);
return (!empty($m_approve)); return (!empty($m_approve));
} }
@ -72,20 +72,17 @@ class phpbb_notification_type_topic_in_queue extends phpbb_notification_type_top
/** /**
* Find the users who want to receive notifications * Find the users who want to receive notifications
* *
* @param ContainerBuilder $phpbb_container
* @param array $topic Data from the topic * @param array $topic Data from the topic
* *
* @return array * @return array
*/ */
public static function find_users_for_notification(ContainerBuilder $phpbb_container, $topic, $options = array()) public function find_users_for_notification($topic, $options = array())
{ {
$options = array_merge(array( $options = array_merge(array(
'ignore_users' => array(), 'ignore_users' => array(),
), $options); ), $options);
$db = $phpbb_container->get('dbal.conn'); $auth_approve = $this->auth->acl_get_list(false, 'm_approve', $topic['forum_id']);
$auth_approve = $phpbb_container->get('auth')->acl_get_list(false, 'm_approve', $topic['forum_id']);
if (empty($auth_approve)) if (empty($auth_approve))
{ {
@ -97,9 +94,9 @@ class phpbb_notification_type_topic_in_queue extends phpbb_notification_type_top
$sql = 'SELECT * $sql = 'SELECT *
FROM ' . USER_NOTIFICATIONS_TABLE . " FROM ' . USER_NOTIFICATIONS_TABLE . "
WHERE item_type = '" . self::$notification_option['id'] . "' WHERE item_type = '" . self::$notification_option['id'] . "'
AND " . $db->sql_in_set('user_id', $auth_approve[$topic['forum_id']]['m_approve']); AND " . $this->db->sql_in_set('user_id', $auth_approve[$topic['forum_id']]['m_approve']);
$result = $db->sql_query($sql); $result = $this->db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) while ($row = $this->db->sql_fetchrow($result))
{ {
if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']])) if (isset($options['ignore_users'][$row['user_id']]) && in_array($row['method'], $options['ignore_users'][$row['user_id']]))
{ {
@ -113,7 +110,7 @@ class phpbb_notification_type_topic_in_queue extends phpbb_notification_type_top
$notify_users[$row['user_id']][] = $row['method']; $notify_users[$row['user_id']][] = $row['method'];
} }
$db->sql_freeresult($result); $this->db->sql_freeresult($result);
return $notify_users; return $notify_users;
} }