summaryrefslogtreecommitdiff
path: root/app/Event/BaseNotificationListener.php
diff options
context:
space:
mode:
authorFrédéric Guillot <fred@kanboard.net>2014-08-15 17:23:41 -0700
committerFrédéric Guillot <fred@kanboard.net>2014-08-15 17:23:41 -0700
commit9eeded33f68872515954a2fc177fcb47a9273ae9 (patch)
treef3ef9507e087ca6bf3ce624232da240a8689b051 /app/Event/BaseNotificationListener.php
parentc539bdc8ab746c5afd48cf87de057dc38d50adac (diff)
Add email notifications
Diffstat (limited to 'app/Event/BaseNotificationListener.php')
-rw-r--r--app/Event/BaseNotificationListener.php76
1 files changed, 76 insertions, 0 deletions
diff --git a/app/Event/BaseNotificationListener.php b/app/Event/BaseNotificationListener.php
new file mode 100644
index 00000000..6c1728cb
--- /dev/null
+++ b/app/Event/BaseNotificationListener.php
@@ -0,0 +1,76 @@
+<?php
+
+namespace Event;
+
+use Core\Listener;
+use Model\Notification;
+
+/**
+ * Base notification listener
+ *
+ * @package event
+ * @author Frederic Guillot
+ */
+abstract class BaseNotificationListener implements Listener
+{
+ /**
+ * Notification model
+ *
+ * @accesss protected
+ * @var Model\Notification
+ */
+ protected $notification;
+
+ /**
+ * Template name
+ *
+ * @accesss private
+ * @var string
+ */
+ private $template = '';
+
+ /**
+ * Fetch data for the mail template
+ *
+ * @access public
+ * @param array $data Event data
+ * @return array
+ */
+ abstract public function getTemplateData(array $data);
+
+ /**
+ * Constructor
+ *
+ * @access public
+ * @param \Model\Notification $notification Notification model instance
+ * @param string $template Template name
+ */
+ public function __construct(Notification $notification, $template)
+ {
+ $this->template = $template;
+ $this->notification = $notification;
+ }
+
+ /**
+ * Execute the action
+ *
+ * @access public
+ * @param array $data Event data dictionary
+ * @return bool True if the action was executed or false when not executed
+ */
+ public function execute(array $data)
+ {
+ $values = $this->getTemplateData($data);
+
+ // Get the list of users to be notified
+ $users = $this->notification->getUsersList($values['task']['project_id']);
+
+ // Send notifications
+ if ($users) {
+ $this->notification->sendEmails($this->template, $users, $values);
+ return true;
+ }
+
+ return false;
+ }
+}