mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
[ticket/11103] Use dependency injection instead of phpbb_container
PHPBB3-11103
This commit is contained in:
parent
64820546d7
commit
cea94d8984
18 changed files with 204 additions and 218 deletions
|
@ -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
|
||||||
|
|
|
@ -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')
|
||||||
{
|
{
|
||||||
|
|
|
@ -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');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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))
|
||||||
{
|
{
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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'))
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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')
|
||||||
|
|
|
@ -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')
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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']),
|
||||||
|
|
|
@ -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'))
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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']),
|
||||||
|
|
|
@ -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')),
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue