phpbb/phpBB/includes/notifications/method/base.php
Nathan Guse 4b4ea7c5cd [ticket/11103] The service now handles all user loading itself
Delete pm notifications when pms are deleted

PHPBB3-11103
2012-09-09 10:19:46 -05:00

103 lines
2.1 KiB
PHP

<?php
/**
*
* @package notifications
* @copyright (c) 2012 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
use Symfony\Component\DependencyInjection\ContainerBuilder;
/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
exit;
}
/**
* Base notifications method class
* @package notifications
*/
abstract class phpbb_notifications_method_base implements phpbb_notifications_method_interface
{
protected $phpbb_container;
protected $service;
protected $db;
protected $user;
protected $phpbb_root_path;
protected $php_ext;
/**
* Desired notifications
* unique by (type, type_id, user_id, method)
* if multiple methods are desired, multiple rows will exist.
*
* method of "none" will over-ride any other options
*
* item_type
* item_id
* user_id
* method
* none (will never receive notifications)
* standard (listed in notifications window
* popup?
* email
* jabber
* sms?
*/
/**
* Queue of messages to be sent
*
* @var array
*/
protected $queue = array();
public function __construct(ContainerBuilder $phpbb_container)
{
// phpBB Container
$this->phpbb_container = $phpbb_container;
// Service
$this->service = $phpbb_container->get('notifications');
// Some common things we're going to use
$this->db = $phpbb_container->get('dbal.conn');
$this->user = $phpbb_container->get('user');
$this->phpbb_root_path = $phpbb_container->getParameter('core.root_path');
$this->php_ext = $phpbb_container->getParameter('core.php_ext');
}
/**
* Add a notification to the queue
*
* @param phpbb_notifications_type_interface $notification
*/
public function add_to_queue(phpbb_notifications_type_interface $notification)
{
$this->queue[] = $notification;
}
/**
* Basic run queue function.
* Child methods should override this function if there are more efficient methods to mass-notification
*/
public function run_queue()
{
foreach ($this->queue as $notification)
{
$this->notify($notification);
}
$this->empty_queue();
}
protected function empty_queue()
{
$this->queue = array();
}
}