diff options
author | Frédéric Guillot <fred@kanboard.net> | 2014-08-15 17:23:41 -0700 |
---|---|---|
committer | Frédéric Guillot <fred@kanboard.net> | 2014-08-15 17:23:41 -0700 |
commit | 9eeded33f68872515954a2fc177fcb47a9273ae9 (patch) | |
tree | f3ef9507e087ca6bf3ce624232da240a8689b051 /app/Event/BaseNotificationListener.php | |
parent | c539bdc8ab746c5afd48cf87de057dc38d50adac (diff) |
Add email notifications
Diffstat (limited to 'app/Event/BaseNotificationListener.php')
-rw-r--r-- | app/Event/BaseNotificationListener.php | 76 |
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; + } +} |