summaryrefslogtreecommitdiff
path: root/app/Model/ProjectNotification.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Model/ProjectNotification.php')
-rw-r--r--app/Model/ProjectNotification.php38
1 files changed, 37 insertions, 1 deletions
diff --git a/app/Model/ProjectNotification.php b/app/Model/ProjectNotification.php
index 49fcc61d..a355902f 100644
--- a/app/Model/ProjectNotification.php
+++ b/app/Model/ProjectNotification.php
@@ -22,8 +22,44 @@ class ProjectNotification extends Base
{
$project = $this->project->getById($project_id);
- foreach ($this->projectNotificationType->getSelectedTypes($project_id) as $type) {
+ $types = array_merge(
+ $this->projectNotificationType->getHiddenTypes(),
+ $this->projectNotificationType->getSelectedTypes($project_id)
+ );
+
+ foreach ($types as $type) {
$this->projectNotificationType->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->projectNotificationType->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->projectNotificationType->getSelectedTypes($project_id),
+ );
+ }
}