Пример #1
0
 /**
  * Deletes the admission rule and all associated data.
  */
 public function delete()
 {
     parent::delete();
     // Delete rule data.
     $stmt = DBManager::get()->prepare("DELETE FROM `lockedadmissions` \n            WHERE `rule_id`=?");
     $stmt->execute(array($this->id));
 }
 /**
  * Validates if the given request data is sufficient to configure this rule
  * (e.g. if required values are present).
  *
  * @param  Array Request data
  * @return Array Error messages.
  */
 public function validate($data)
 {
     $errors = parent::validate($data);
     if (!$data['distributiontime']) {
         $data['distributiontime'] = '23:59';
     }
     $ddate = strtotime($data['distributiondate'] . ' ' . $data['distributiontime']);
     if (!$data['enable_FCFS'] && (!$data['distributiondate'] || $ddate < time() + $this->minimum_timespan_to_distribution_time * 60)) {
         $errors[] = sprintf(_('Bitte geben Sie für die Platzverteilung ein Datum an, das weiter in der Zukunft liegt. Das frühestmögliche Datum ist %s.'), strftime('%x %R', time() + $this->minimum_timespan_to_distribution_time * 60));
     }
     return $errors;
 }
Пример #3
0
 /**
  * Validates if the given request data is sufficient to configure this rule
  * (e.g. if required values are present).
  *
  * @param  Array Request data
  * @return Array Error messages.
  */
 public function validate($data)
 {
     $errors = parent::validate($data);
     if (!$data['startdate'] && !$data['enddate']) {
         $errors[] = _('Bitte geben Sie entweder ein Start- oder Enddatum an.');
     }
     if ($data['startdate'] && $data['enddate'] && strtotime($data['enddate'] . ' ' . $data['endtime']) < strtotime($data['startdate'] . ' ' . $data['starttime'])) {
         $errors[] = _('Das Enddatum darf nicht vor dem Startdatum liegen.');
     }
     return $errors;
 }
Пример #4
0
 /**
  * Fetches the available types of admission rules, including disabled ones..
  */
 public static function getAdmissionRuleTypes()
 {
     return AdmissionRule::getAvailableAdmissionRules(false);
 }
Пример #5
0
 /**
  * Validates if the given request data is sufficient to configure this rule
  * (e.g. if required values are present).
  *
  * @param  Array Request data
  * @return Array Error messages.
  */
 public function validate($data)
 {
     $errors = parent::validate($data);
     if (!$data['password1']) {
         $errors[] = _('Das Passwort darf nicht leer sein.');
     }
     if ($data['password1'] != $data['password2']) {
         $errors[] = _('Das Passwort stimmt nicht mit der Wiederholung überein.');
     }
     return $errors;
 }
Пример #6
0
 /**
  * Validates if the values given in the current request are sufficient to
  * configure a rule of the given type.
  *
  * @param String $ruleType Class name of the rule to check.
  */
 public function validate_action($ruleType)
 {
     $rules = AdmissionRule::getAvailableAdmissionRules();
     $rule = new $ruleType();
     $this->errors = $rule->validate(Request::getInstance());
 }
Пример #7
0
 public function getMessage($condition = null)
 {
     $message = parent::getMessage();
     if ($condition) {
         return sprintf($message, $condition);
     } else {
         return $message;
     }
 }
Пример #8
0
 public function getMessage($course = null)
 {
     $message = parent::getMessage();
     if ($course) {
         return sprintf($message, $course->getFullname('number-name'));
     } else {
         return $message;
     }
 }
Пример #9
0
 function instant_course_set_action()
 {
     $this->response->add_header('X-Title', _('Neue Anmelderegel'));
     list($type, $another_type) = explode('_', Request::option('type'));
     list($rule_id, $another_rule_id) = explode('_', Request::option('rule_id'));
     $rule_types = AdmissionRule::getAvailableAdmissionRules(true);
     if (isset($rule_types[$type])) {
         $rule = new $type($rule_id);
         if (isset($rule_types[$another_type])) {
             $another_rule = new $another_type($another_rule_id);
         }
         $course_set = CourseSet::getSetForRule($rule_id) ?: new CourseSet();
         if (Request::isPost() && Request::submitted('save') || $rule instanceof LockedAdmission) {
             if ($rule instanceof LockedAdmission) {
                 $course_set_id = CourseSet::getGlobalLockedAdmissionSetId();
                 CourseSet::addCourseToSet($course_set_id, $this->course_id);
                 PageLayout::postMessage(MessageBox::success(_("Die Veranstaltung wurde gesperrt.")));
                 $this->redirect($this->url_for('/index'));
                 return;
             } else {
                 CSRFProtection::verifyUnsafeRequest();
                 $rule->setAllData(Request::getInstance());
                 $errors = $rule->validate(Request::getInstance());
                 if ($another_rule) {
                     $another_rule->setAllData(Request::getInstance());
                     $errors = array_merge($errors, $another_rule->validate(Request::getInstance()));
                 }
                 if (!strlen(trim(Request::get('instant_course_set_name')))) {
                     $errors[] = _("Bitte geben Sie einen Namen für die Anmelderegel ein!");
                 } else {
                     $course_set->setName(trim(Request::get('instant_course_set_name')));
                 }
                 if (count($errors)) {
                     PageLayout::postMessage(MessageBox::error(_("Speichern fehlgeschlagen"), array_map('htmlready', $errors)));
                 } else {
                     $rule->store();
                     $course_set->setPrivate(true);
                     $course_set->addAdmissionRule($rule);
                     $course_set->setAlgorithm(new RandomAlgorithm());
                     //TODO
                     $course_set->setCourses(array($this->course_id));
                     if ($another_rule) {
                         $course_set->addAdmissionRule($another_rule);
                     }
                     $course_set->store();
                     PageLayout::postMessage(MessageBox::success(_("Die Anmelderegel wurde erzeugt und der Veranstaltung zugewiesen.")));
                     $this->redirect($this->url_for('/index'));
                     return;
                 }
             }
         }
         if (!$course_set->getId()) {
             $course_set->setName($rule->getName() . ': ' . $this->course->name);
         }
         $this->rule_template = $rule->getTemplate();
         $this->type = $type;
         $this->rule_id = $rule_id;
         if ($another_rule) {
             $this->type = $this->type . '_' . $another_type;
             $this->rule_id = $this->rule_id . '_' . $another_rule->getId();
             $this->rule_template = $this->rule_template . $another_rule->getTemplate();
         }
         $this->course_set_name = $course_set->getName();
     } else {
         throw new Trails_Exception(400);
     }
 }
Пример #10
0
 public function getMessage($max_number = null)
 {
     $message = parent::getMessage();
     if (isset($max_number)) {
         return sprintf($message, $max_number);
     } else {
         return $message;
     }
 }