aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/notifications/method
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes/notifications/method')
-rw-r--r--phpBB/includes/notifications/method/base.php32
-rw-r--r--phpBB/includes/notifications/method/interface.php1
2 files changed, 33 insertions, 0 deletions
diff --git a/phpBB/includes/notifications/method/base.php b/phpBB/includes/notifications/method/base.php
index 1c223df045..dbf851a059 100644
--- a/phpBB/includes/notifications/method/base.php
+++ b/phpBB/includes/notifications/method/base.php
@@ -27,6 +27,13 @@ abstract class phpbb_notifications_method_base implements phpbb_notifications_me
protected $db;
protected $user;
+ /**
+ * Queue of messages to be sent
+ *
+ * @var array
+ */
+ protected $queue = array();
+
public function __construct(ContainerBuilder $phpbb_container, $data = array())
{
// phpBB Container
@@ -36,4 +43,29 @@ abstract class phpbb_notifications_method_base implements phpbb_notifications_me
$this->db = $phpbb_container->get('dbal.conn');
$this->user = $phpbb_container->get('user');
}
+
+ /**
+ * 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);
+ }
+
+ // Empty queue
+ $this->queue = array();
+ }
}
diff --git a/phpBB/includes/notifications/method/interface.php b/phpBB/includes/notifications/method/interface.php
index 2d8a8b605e..f18d005b8b 100644
--- a/phpBB/includes/notifications/method/interface.php
+++ b/phpBB/includes/notifications/method/interface.php
@@ -21,4 +21,5 @@ if (!defined('IN_PHPBB'))
*/
interface phpbb_notifications_method_interface
{
+ public function notify($notification);
}