summaryrefslogtreecommitdiff
path: root/app/Model/ProjectNotificationModel.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Model/ProjectNotificationModel.php')
-rw-r--r--app/Model/ProjectNotificationModel.php67
1 files changed, 67 insertions, 0 deletions
diff --git a/app/Model/ProjectNotificationModel.php b/app/Model/ProjectNotificationModel.php
new file mode 100644
index 00000000..aeeee4cd
--- /dev/null
+++ b/app/Model/ProjectNotificationModel.php
@@ -0,0 +1,67 @@
+<?php
+
+namespace Kanboard\Model;
+
+use Kanboard\Core\Base;
+
+/**
+ * Project Notification
+ *
+ * @package Kanboard\Model
+ * @author Frederic Guillot
+ */
+class ProjectNotificationModel extends Base
+{
+ /**
+ * Send notifications
+ *
+ * @access public
+ * @param integer $project_id
+ * @param string $event_name
+ * @param array $event_data
+ */
+ public function sendNotifications($project_id, $event_name, array $event_data)
+ {
+ $project = $this->projectModel->getById($project_id);
+
+ $types = array_merge(
+ $this->projectNotificationTypeModel->getHiddenTypes(),
+ $this->projectNotificationTypeModel->getSelectedTypes($project_id)
+ );
+
+ foreach ($types as $type) {
+ $this->projectNotificationTypeModel->getType($type)->notifyProject($project, $event_name, $event_data);
+ }
+ }
+
+ /**
+ * Save settings for the given project
+ *
+ * @access public
+ * @param integer $project_id
+ * @param array $values
+ */
+ public function saveSettings($project_id, array $values)
+ {
+ $this->db->startTransaction();
+
+ $types = empty($values['notification_types']) ? array() : array_keys($values['notification_types']);
+ $this->projectNotificationTypeModel->saveSelectedTypes($project_id, $types);
+
+ $this->db->closeTransaction();
+ }
+
+ /**
+ * Read user settings to display the form
+ *
+ * @access public
+ * @param integer $project_id
+ * @return array
+ */
+ public function readSettings($project_id)
+ {
+ return array(
+ 'notification_types' => $this->projectNotificationTypeModel->getSelectedTypes($project_id),
+ );
+ }
+}