function buildCourseset($course, $grouped) { $db = DBManager::get(); $cs = new CourseSet(); $rule = new ParticipantRestrictedAdmission(); // Loszeitpunkt übernehmen. $rule->setDistributionTime($course['admission_type'] == 1 ? $course['admission_endtime'] : 0); $cs->addAdmissionRule($rule); // Beschränkung 1 aus n, falls erforderlich if ($grouped) { $rule = new LimitedAdmission(); $rule->setMaxNumber(1); $cs->addAdmissionRule($rule); } // Falls Anmeldezeitraum eingestellt, diesen übernehmen. if ($course['admission_starttime'] != -1 || $course['admission_endtime_sem'] != -1) { $rule = new TimedAdmission(); if ($course['admission_starttime'] != -1) { $rule->setStartTime($course['admission_starttime']); } if ($course['admission_endtime_sem'] != -1) { $rule->setEndTime($course['admission_endtime_sem']); } $cs->addAdmissionRule($rule); } // Studiengänge eintragen $stmt = $db->prepare('SELECT studiengang_id FROM admission_seminar_studiengang WHERE seminar_id = ?'); $stmt->execute(array($course['seminar_id'])); $subjects = $stmt->fetchAll(PDO::FETCH_COLUMN); if (!in_array('all', $subjects) && $subjects) { $rule = new ConditionalAdmission(); foreach ($subjects as $subject) { $condition = new UserFilter(); $subject_field = new SubjectCondition(); $subject_field->setCompareOperator('='); $subject_field->setValue($subject); $condition->addField($subject_field); $rule->addCondition($condition); } $cs->addAdmissionRule($rule); } return $cs; }
/** * Saves the given course set to database. * * @param String $coursesetId the course set to save or empty if it is a * new course set */ public function save_action($coursesetId = '') { if (!$this->instant_course_set_view && (!Request::submitted('submit') || !Request::get('name') || !Request::getArray('institutes'))) { $this->flash['name'] = Request::get('name'); $this->flash['institutes'] = Request::getArray('institutes'); $this->flash['courses'] = Request::getArray('courses'); $this->flash['rules'] = Request::getArray('rules'); $this->flash['userlists'] = Request::getArray('userlists'); $this->flash['infotext'] = Request::get('infotext'); $this->flash['private'] = (bool) Request::get('private'); if (Request::submitted('add_institute')) { $this->flash['institutes'] = array_merge($this->flash['institutes'], array(Request::option('institute_id'))); } else { $this->flash['institute_id'] = Request::get('institute_id'); $this->flash['institute_id_parameter'] = Request::get('institute_id_parameter'); } if (!Request::submitted('add_institute') && !Request::option('name')) { $this->flash['error'] = _('Bitte geben Sie einen Namen für das Anmeldeset an!'); } if (!Request::submitted('add_institute') && !Request::getArray('institutes')) { $this->flash['error'] = _('Bitte geben Sie mindestens eine Einrichtung an, zu der das Anmeldeset gehört!'); } $this->redirect($this->url_for('admission/courseset/configure', $coursesetId)); } else { $courseset = new CourseSet($coursesetId); if (!$courseset->getUserId()) { $courseset->setUserId($GLOBALS['user']->id); } $courseset->setName(Request::get('name')); if (Request::submitted('institutes')) { $courseset->setInstitutes(Request::getArray('institutes')); } if (Request::submitted('semester')) { $courseset->setCourses(Request::getArray('courses')); } if (Request::submitted('userlists')) { $courseset->setUserLists(Request::getArray('userlists')); } if (!$this->instant_course_set_view && $courseset->isUserAllowedToEdit($GLOBALS['user']->id)) { $courseset->setPrivate((bool) Request::get('private')); } if (Request::submitted('infotext')) { $courseset->setInfoText(Request::get('infotext')); } $courseset->clearAdmissionRules(); foreach (Request::getArray('rules') as $serialized) { $rule = unserialize($serialized); $courseset->addAdmissionRule($rule); } $courseset->store(); PageLayout::postMessage(MessageBox::success(sprintf(_("Das Anmeldeset: %s wurde gespeichert"), htmlReady($courseset->getName())))); if ($this->instant_course_set_view) { $this->redirect($this->url_for('course/admission')); } else { $this->redirect($this->url_for('admission/courseset/configure', $courseset->getId())); } } }