/**
  * Add new reminder
  *
  * @param HTTPRequest $request Request object
  *
  * @return Boolean
  */
 public function addNewReminder(HTTPRequest $request)
 {
     $this->csrf->check();
     $reminderRenderer = new Tracker_DateReminderRenderer($this->getTracker());
     try {
         $trackerId = $reminderRenderer->validateTrackerId($request);
         $fieldId = $reminderRenderer->validateFieldId($request);
         $notificationType = $reminderRenderer->validateNotificationType($request);
         $distance = $reminderRenderer->validateDistance($request);
         $notified = $reminderRenderer->scindReminderNotifiedPeople($request);
         $ugroups = $reminderRenderer->validateReminderUgroups($notified[0]);
         $roles = $reminderRenderer->validateReminderRoles($notified[1]);
         if (!empty($ugroups)) {
             $ugroups = join(",", $ugroups);
         } else {
             $ugroups = "";
         }
         $this->checkDuplicatedReminders($trackerId, $fieldId, $notificationType, $distance);
         $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()->getId());
     }
     $reminder = $this->getDao()->addDateReminder($trackerId, $fieldId, $ugroups, $roles, $notificationType, $distance);
     if ($reminder) {
         $roles = implode(",", $roles);
         $historyDao = new ProjectHistoryDao(CodendiDataAccess::instance());
         $historyDao->groupAddHistory("tracker_date_reminder_add", $this->getTracker()->getName() . ":" . $fieldId, $this->getTracker()->getGroupId(), array($distance . ' Day(s), Type: ' . $notificationType . ' ProjectUGroup(s): ' . $ugroups . 'Tracker Role(s): ' . $roles));
         return $reminder;
     } else {
         $errorMessage = $GLOBALS['Language']->getText('plugin_tracker_date_reminder', 'tracker_date_reminder_add_failure', array($trackerId, $fieldId));
         throw new Tracker_DateReminderException($errorMessage);
     }
 }