/**
  * 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);
     }
 }