public function process(TrackerManager $tracker_manager, $request, $current_user) { if ($request->get('submit')) { if ($request->exist('stop_notification')) { if ($this->tracker->stop_notification != $request->get('stop_notification')) { $this->tracker->stop_notification = $request->get('stop_notification') ? 1 : 0; $dao = new TrackerDao(); if ($dao->save($this->tracker)) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_tracker_admin_notification', 'successfully_updated')); } } } if ($global_notification_data = $request->get('global_notification')) { if (!empty($global_notification_data)) { $this->processGlobalNotificationData($global_notification_data); } } } else { if ($request->get('action') == 'remove_global') { $this->removeGlobalNotification($request->get('global_notification_id')); } } $this->displayAdminNotifications($tracker_manager, $request, $current_user); $reminderRenderer = new Tracker_DateReminderRenderer($this->tracker); if ($this->tracker->userIsAdmin($current_user)) { $reminderRenderer->displayDateReminders($request); } $reminderRenderer->displayFooter($tracker_manager); }
/** * Edit a given date reminder * * @param HTTPRequest $request Reminder edit request * * @return Boolean */ public function editTrackerReminder($request) { $this->csrf->check(); $reminderRenderer = new Tracker_DateReminderRenderer($this->getTracker()); try { $reminderId = $reminderRenderer->validateReminderId($request); $notificationType = $reminderRenderer->validateNotificationType($request); $distance = $reminderRenderer->validateDistance($request); $status = $reminderRenderer->validateStatus($request); $notified = $reminderRenderer->scindReminderNotifiedPeople($request); $ugroups = $reminderRenderer->validateReminderUgroups($notified[0]); $roles = $reminderRenderer->validateReminderRoles($notified[1]); if (!empty($ugroups)) { $ugroups = join(",", $ugroups); } else { $ugroups = ""; } $fieldId = $reminderRenderer->validateFieldId($request); if ($status == 1) { $this->checkDuplicatedReminders($this->getTracker()->getId(), $fieldId, $notificationType, $distance, $reminderId); $this->isReminderBeforeOpenDate($fieldId, $notificationType); } } catch (Tracker_DateReminderException $e) { $GLOBALS['Response']->addFeedback('error', $e->getMessage()); $GLOBALS['Response']->redirect(TRACKER_BASE_URL . '/?func=admin-notifications&tracker=' . $this->getTracker()->id); } $updateReminder = $this->getDao()->updateDateReminder($reminderId, $ugroups, $roles, $notificationType, $distance, $status); if ($updateReminder) { $roles = implode(",", $roles); $historyDao = new ProjectHistoryDao(CodendiDataAccess::instance()); $historyDao->groupAddHistory("tracker_date_reminder_edit", $this->getTracker()->getName() . ":" . $reminderId, $this->getTracker()->getGroupId(), array("Id: " . $reminderId . ", Type: " . $notificationType . ", ProjectUGroup(s): " . $ugroups . ", Tracker Role(s): " . $roles . ", Day(s): " . $distance . ", Status: " . $status)); return $updateReminder; } else { $errorMessage = $GLOBALS['Language']->getText('plugin_tracker_date_reminder', 'tracker_date_reminder_update_failure', array($reminderId)); throw new Tracker_DateReminderException($errorMessage); } }