diff options
Diffstat (limited to 'app/Model/ProjectNotification.php')
-rw-r--r-- | app/Model/ProjectNotification.php | 38 |
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), + ); + } } |