/** * Lock or unlock courses */ public function set_locked_action() { $admission_locked = Request::getArray('admission_locked'); $all_courses = Request::getArray('all_sem'); $course_set_id = CourseSet::getGlobalLockedAdmissionSetId(); foreach ($all_courses as $course_id) { $set = CourseSet::getSetForCourse($course_id); if (!is_null($set)) { if (!$set->hasAdmissionRule('LockedAdmission')) { continue; } if ($set->hasAdmissionRule('LockedAdmission') && !isset($admission_locked[$course_id])) { if (CourseSet::removeCourseFromSet($set->getId(), $course_id)) { $log_msg = _('Veranstaltung wurde entsperrt'); } } } if (is_null($set) && isset($admission_locked[$course_id])) { if (CourseSet::addCourseToSet($course_set_id, $course_id)) { $log_msg = sprintf(_('Veranstaltung wurde gesperrt, set_id: %s'), $course_set_id); } } if ($log_msg) { StudipLog::log('SEM_CHANGED_ACCESS', $course_id, NULL, $log_msg); } } PageLayout::postMessage(MessageBox::success(_('Die gewünschten Änderungen wurden ausgeführt!'))); $this->redirect('admin/courses/index'); }
/** * Exports member-list for a Stud.IP-lecture. * * This function gets the data of the members of a lecture and writes it into $data_object. * It calls output_data afterwards. * * @access public * @param string $inst_id Stud.IP-inst_id for export * @param string $ex_sem_id allows to choose which lecture is to be exported */ function export_teilis($inst_id, $ex_sem_id = "no") { global $range_id, $xml_file, $o_mode, $xml_names_person, $xml_groupnames_person, $xml_names_studiengaenge, $xml_groupnames_studiengaenge, $object_counter, $filter, $SEM_CLASS, $SEM_TYPE, $SessSemName; if ($filter == 'status') { $query = "SELECT statusgruppe_id, name\n FROM statusgruppen\n WHERE range_id = ?\n ORDER BY position ASC"; $statement = DBManager::get()->prepare($query); $statement->execute(array($ex_sem_id)); $gruppe = $statement->fetchGrouped(PDO::FETCH_COLUMN); $gruppe['no'] = _('keiner Funktion oder Gruppe zugeordnet'); } else { if (!in_array($filter, words('awaiting claiming'))) { if (!$SEM_CLASS[$SEM_TYPE[$SessSemName['art_num']]['class']]['workgroup_mode']) { $gruppe = array('dozent' => _('Lehrende'), 'tutor' => _('Tutor/-innen'), 'autor' => _('Studierende'), 'user' => _('Leser/-innen'), 'accepted' => _('Vorläufig akzeptierte Personen')); } else { $gruppe = array('dozent' => _('Leitung'), 'tutor' => _('Mitglieder'), 'autor' => _('Autor/-innen'), 'user' => _('Leser/-innen'), 'accepted' => _('Vorläufig akzeptierte Personen')); } } else { $gruppe[$filter] = _('Anmeldeliste'); } } $data_object .= xml_open_tag($xml_groupnames_person['group']); while (list($key1, $val1) = each($gruppe)) { $parameters = array(); if ($filter == 'status') { // Gruppierung nach Statusgruppen / Funktionen if ($key1 == 'no') { $query = "SELECT ui.*, aum.*, su.*, FROM_UNIXTIME(su.mkdate) AS registration_date,\n GROUP_CONCAT(CONCAT_WS(',', sg.name, a.name, user_studiengang.semester) SEPARATOR '; ') AS nutzer_studiengaenge\n FROM seminar_user AS su\n LEFT JOIN auth_user_md5 AS aum USING (user_id)\n LEFT JOIN user_info AS ui USING (user_id)\n LEFT JOIN user_studiengang USING (user_id)\n LEFT JOIN studiengaenge AS sg USING(studiengang_id)\n LEFT JOIN abschluss AS a USING (abschluss_id)\n WHERE seminar_id = :seminar_id\n GROUP BY aum.user_id\n ORDER BY Nachname"; $parameters[':seminar_id'] = $ex_sem_id; } else { $query = "SELECT DISTINCT ui.*, aum.*, su.*, FROM_UNIXTIME(su.mkdate) AS registration_date,\n GROUP_CONCAT(CONCAT_WS(',', sg.name, a.name, user_studiengang.semester) SEPARATOR '; ') AS nutzer_studiengaenge\n FROM statusgruppe_user\n LEFT JOIN seminar_user AS su USING (user_id)\n LEFT JOIN auth_user_md5 AS aum USING (user_id)\n LEFT JOIN user_info AS ui USING (user_id)\n LEFT JOIN user_studiengang USING(user_id)\n LEFT JOIN studiengaenge AS sg USING(studiengang_id)\n LEFT JOIN abschluss AS a USING (abschluss_id)\n WHERE statusgruppe_id = :statusgruppe_id AND seminar_id = :seminar_id\n GROUP BY aum.user_id\n ORDER BY Nachname"; $parameters[':seminar_id'] = $ex_sem_id; $parameters[':statusgruppe_id'] = $key1; } } else { if ($key1 == 'accepted') { $query = "SELECT ui.*, aum.*, asu.comment,\n FROM_UNIXTIME(asu.mkdate) AS registration_date,\n GROUP_CONCAT(CONCAT_WS(',', sg.name, a.name, user_studiengang.semester) SEPARATOR '; ') AS nutzer_studiengaenge\n FROM admission_seminar_user AS asu\n LEFT JOIN user_info AS ui USING (user_id)\n LEFT JOIN auth_user_md5 AS aum USING (user_id)\n LEFT JOIN user_studiengang USING (user_id)\n LEFT JOIN studiengaenge AS sg ON (user_studiengang.studiengang_id = sg.studiengang_id)\n LEFT JOIN abschluss AS a USING (abschluss_id)\n WHERE seminar_id = :seminar_id AND asu.status = 'accepted'\n GROUP BY aum.user_id\n ORDER BY Nachname"; $parameters[':seminar_id'] = $ex_sem_id; } elseif ($key1 == 'awaiting') { $query = "SELECT ui.*, aum.*, asu.comment,\n asu.position AS admission_position,\n GROUP_CONCAT(CONCAT_WS(',', sg.name, a.name, user_studiengang.semester) SEPARATOR '; ') AS nutzer_studiengaenge\n FROM admission_seminar_user AS asu\n LEFT JOIN user_info AS ui USING(user_id)\n LEFT JOIN auth_user_md5 AS aum USING(user_id)\n LEFT JOIN user_studiengang USING(user_id)\n LEFT JOIN studiengaenge AS sg ON (user_studiengang.studiengang_id = sg.studiengang_id)\n LEFT JOIN abschluss AS a USING (abschluss_id)\n WHERE asu.seminar_id = :seminar_id AND asu.status != 'accepted'\n GROUP BY aum.user_id ORDER BY position"; $parameters[':seminar_id'] = $ex_sem_id; } elseif ($key1 == 'claiming') { $cs = CourseSet::getSetForCourse($ex_sem_id); if (is_object($cs) && !$cs->hasAlgorithmRun()) { $parameters[':users'] = array_keys(AdmissionPriority::getPrioritiesByCourse($cs->getId(), $ex_sem_id)); } else { $parameters[':users'] = array(); } $query = "SELECT ui.*, aum.*, '' as comment,\n 0 AS admission_position,\n GROUP_CONCAT(CONCAT_WS(',', sg.name, a.name, user_studiengang.semester) SEPARATOR '; ') AS nutzer_studiengaenge\n FROM auth_user_md5 AS aum\n INNER JOIN user_info AS ui USING(user_id)\n LEFT JOIN user_studiengang USING(user_id)\n LEFT JOIN studiengaenge AS sg ON (user_studiengang.studiengang_id = sg.studiengang_id)\n LEFT JOIN abschluss AS a USING (abschluss_id)\n WHERE aum.user_id IN (:users)\n GROUP BY aum.user_id ORDER BY Nachname"; } else { $query = "SELECT ui.*, aum.*, su.*, FROM_UNIXTIME(su.mkdate) AS registration_date,\n GROUP_CONCAT(CONCAT_WS(',', sg.name, a.name, us.semester) SEPARATOR '; ') AS nutzer_studiengaenge\n FROM seminar_user AS su\n LEFT JOIN auth_user_md5 AS aum USING ( user_id )\n LEFT JOIN user_info AS ui USING ( user_id )\n LEFT JOIN user_studiengang AS us USING(user_id)\n LEFT JOIN studiengaenge AS sg USING (studiengang_id)\n LEFT JOIN abschluss AS a USING (abschluss_id)\n WHERE seminar_id = :seminar_id AND su.status = :status\n GROUP BY aum.user_id\n ORDER BY " . ($key1 == 'dozent' ? 'position, ' : '') . "Nachname"; $parameters[':seminar_id'] = $ex_sem_id; $parameters[':status'] = $key1; } } $statement = DBManager::get()->prepare($query); $statement->execute($parameters); $data = $statement->fetchAll(PDO::FETCH_ASSOC); $data_object_tmp = ''; $object_counter_tmp = $object_counter; if (count($data) > 0) { $data_object_tmp .= xml_open_tag($xml_groupnames_person['subgroup1'], $val1); foreach ($data as $row) { // Nur Personen ausgeben, die entweder einer Gruppe angehoeren // oder zur Veranstaltung gehoeren und noch nicht ausgegeben wurden. if ($key1 != 'no' || $person_out[$row['user_id']] != true) { $object_counter += 1; $data_object_tmp .= xml_open_tag($xml_groupnames_person["object"], $row['username']); reset($xml_names_person); while (list($key, $val) = each($xml_names_person)) { if ($val == '') { $val = $key; } if ($row[$key] != '') { $data_object_tmp .= xml_tag($val, $row[$key]); } } // freie Datenfelder ausgeben $data_object_tmp .= export_datafields($row['user_id'], $xml_groupnames_person['childgroup1'], $xml_groupnames_person['childobject1'], 'user'); $data_object_tmp .= xml_close_tag($xml_groupnames_person['object']); $person_out[$row['user_id']] = true; } } $data_object_tmp .= xml_close_tag($xml_groupnames_person['subgroup1']); if ($object_counter_tmp != $object_counter) { $data_object .= $data_object_tmp; } } } $data_object .= xml_close_tag($xml_groupnames_person['group']); if (!in_array($filter, words('status awaiting accepted'))) { $query = "SELECT CONCAT_WS(',', studiengaenge.name, abschluss.name) AS name, COUNT(*) AS c\n FROM seminar_user\n INNER JOIN user_studiengang USING (user_id)\n LEFT JOIN studiengaenge USING (studiengang_id)\n LEFT JOIN abschluss USING (abschluss_id)\n WHERE seminar_id = ?\n GROUP BY name"; $statement = DBManager::get()->prepare($query); $statement->execute(array($ex_sem_id)); $studiengang_count = $statement->fetchGrouped(PDO::FETCH_COLUMN); if (count($studiengang_count) > 0) { $data_object .= xml_open_tag($xml_groupnames_studiengaenge["group"]); for ($i = 0; $i < count($studiengang_count); $i += 1) { // TODO: Is this really neccessary? while (list($key, $val) = each($studiengang_count)) { $data_object .= xml_open_tag($xml_groupnames_studiengaenge['object']); $data_object .= xml_tag($xml_names_studiengaenge['name'], $key); $data_object .= xml_tag($xml_names_studiengaenge['count'], $val); $data_object .= xml_close_tag($xml_groupnames_studiengaenge['object']); } } $data_object .= xml_close_tag($xml_groupnames_studiengaenge['group']); } } output_data($data_object, $o_mode); }
/** * returns courseset object for this course * * @return CourseSet courseset object or null */ public function getCourseSet() { if ($this->course_set === null) { $this->course_set = CourseSet::getSetForCourse($this->id); if ($this->course_set === null) { $this->course_set = false; } } return $this->course_set ?: null; }
/** * Lets the user compose a message and send it. */ public function write_action() { PageLayout::setTitle(_("Neue Nachricht schreiben")); //collect possible default adressees $this->to = array(); $this->default_message = new Message(); if (Request::username("rec_uname")) { $user = new MessageUser(); $user->setData(array('user_id' => get_userid(Request::username("rec_uname")), 'snd_rec' => "rec")); $this->default_message->receivers[] = $user; } if (Request::getArray("rec_uname")) { foreach (Request::usernameArray("rec_uname") as $username) { $user = new MessageUser(); $user->setData(array('user_id' => get_userid($username), 'snd_rec' => "rec")); $this->default_message->receivers[] = $user; } } if (Request::option("group_id")) { $this->default_message->receivers = array(); $group = Statusgruppen::find(Request::option("group_id")); if ($group['range_id'] === $GLOBALS['user']->id || $GLOBALS['perm']->have_studip_perm("autor", $group['range_id'])) { foreach ($group->members as $member) { $user = new MessageUser(); $user->setData(array('user_id' => $member['user_id'], 'snd_rec' => "rec")); $this->default_message->receivers[] = $user; } } } if (Request::get('inst_id') && $GLOBALS['perm']->have_perm('admin')) { $query = "SELECT user_id FROM user_inst WHERE Institut_id = ? AND inst_perms != 'user'"; $this->default_message->receivers = DBManager::get()->fetchAll($query, array(Request::option('inst_id')), 'MessageUser::build'); } if (Request::get("filter") && Request::option("course_id")) { $course = new Course(Request::option('course_id')); if ($GLOBALS['perm']->have_studip_perm("tutor", Request::option('course_id')) || $course->getSemClass()['studygroup_mode']) { $this->default_message->receivers = array(); if (Request::get("filter") === 'claiming') { $cs = CourseSet::getSetForCourse(Request::option("course_id")); if (is_object($cs) && !$cs->hasAlgorithmRun()) { foreach (AdmissionPriority::getPrioritiesByCourse($cs->getId(), Request::option("course_id")) as $user_id => $p) { $this->default_message->receivers[] = MessageUser::build(array('user_id' => $user_id, 'snd_rec' => 'rec')); } } } else { $params = array(Request::option('course_id'), Request::option('who')); switch (Request::get("filter")) { case 'send_sms_to_all': $query = "SELECT b.user_id,'rec' as snd_rec FROM seminar_user a, auth_user_md5 b WHERE a.Seminar_id = ? AND a.user_id = b.user_id AND a.status = ? ORDER BY Nachname, Vorname"; break; case 'all': $query = "SELECT user_id,'rec' as snd_rec FROM seminar_user LEFT JOIN auth_user_md5 USING(user_id) WHERE Seminar_id = ? ORDER BY Nachname, Vorname"; break; case 'prelim': $query = "SELECT user_id,'rec' as snd_rec FROM admission_seminar_user LEFT JOIN auth_user_md5 USING(user_id) WHERE seminar_id = ? AND status='accepted' ORDER BY Nachname, Vorname"; break; case 'awaiting': $query = "SELECT user_id,'rec' as snd_rec FROM admission_seminar_user LEFT JOIN auth_user_md5 USING(user_id) WHERE seminar_id = ? AND status='awaiting' ORDER BY Nachname, Vorname"; break; case 'inst_status': $query = "SELECT b.user_id,'rec' as snd_rec FROM user_inst a, auth_user_md5 b WHERE a.Institut_id = ? AND a.user_id = b.user_id AND a.inst_perms = ? ORDER BY Nachname, Vorname"; break; } $this->default_message->receivers = DBManager::get()->fetchAll($query, $params, 'MessageUser::build'); } } } if (Request::option('prof_id') && Request::option('deg_id') && $GLOBALS['perm']->have_perm('root')) { $query = "SELECT DISTINCT user_id,'rec' as snd_rec\n FROM user_studiengang\n WHERE studiengang_id = ? AND abschluss_id = ?"; $this->default_message->receivers = DBManager::get()->fetchAll($query, array(Request::option('prof_id'), Request::option('deg_id')), 'MessageUser::build'); } if (Request::option('sd_id') && $GLOBALS['perm']->have_perm('root')) { $query = "SELECT DISTINCT user_id,'rec' as snd_rec\n FROM user_studiengang\n WHERE abschluss_id = ?"; $this->default_message->receivers = DBManager::get()->fetchAll($query, array(Request::option('sd_id')), 'MessageUser::build'); } if (Request::option('sp_id') && $GLOBALS['perm']->have_perm('root')) { $query = "SELECT DISTINCT user_id,'rec' as snd_rec\n FROM user_studiengang\n WHERE studiengang_id = ?"; $this->default_message->receivers = DBManager::get()->fetchAll($query, array(Request::option('sp_id')), 'MessageUser::build'); } if (!$this->default_message->receivers->count() && is_array($_SESSION['sms_data']['p_rec'])) { $this->default_message->receivers = DBManager::get()->fetchAll("SELECT user_id,'rec' as snd_rec FROM auth_user_md5 WHERE username IN(?) ORDER BY Nachname,Vorname", array($_SESSION['sms_data']['p_rec']), 'MessageUser::build'); unset($_SESSION['sms_data']); } if (Request::option("answer_to")) { $this->default_message->receivers = array(); $old_message = new Message(Request::option("answer_to")); if (!$old_message->permissionToRead()) { throw new AccessDeniedException("Message is not for you."); } if (!Request::get('forward')) { if (Request::option("quote") === $old_message->getId()) { if (Studip\Markup::isHtml($old_message['message'])) { $this->default_message['message'] = "<div>[quote]\n" . $old_message['message'] . "\n[/quote]</div>"; } else { $this->default_message['message'] = "[quote]\n" . $old_message['message'] . "\n[/quote]"; } } $this->default_message['subject'] = substr($old_message['subject'], 0, 4) === "RE: " ? $old_message['subject'] : "RE: " . $old_message['subject']; $user = new MessageUser(); $user->setData(array('user_id' => $old_message['autor_id'], 'snd_rec' => "rec")); $this->default_message->receivers[] = $user; $this->answer_to = $old_message->id; } else { $messagesubject = 'FWD: ' . $old_message['subject']; $message = _("-_-_ Weitergeleitete Nachricht _-_-"); $message .= "\n" . _("Betreff") . ": " . $old_message['subject']; $message .= "\n" . _("Datum") . ": " . strftime('%x %X', $old_message['mkdate']); $message .= "\n" . _("Von") . ": " . get_fullname($old_message['autor_id']); $num_recipients = $old_message->getNumRecipients(); if ($GLOBALS['user']->id == $old_message->autor_id) { $message .= "\n" . _("An") . ": " . ($num_recipients == 1 ? _('Eine Person') : sprintf(_('%s Personen'), $num_recipients)); } else { $message .= "\n" . _("An") . ": " . $GLOBALS['user']->getFullname() . ($num_recipients > 1 ? ' ' . sprintf(_('(und %d weitere)'), $num_recipients) : ''); } $message .= "\n\n"; if (Studip\Markup::isHtml($old_message['message'])) { $message = '<div>' . htmlReady($message, false, true) . '</div>' . $old_message['message']; } else { $message .= $old_message['message']; } if (count($old_message->attachments)) { Request::set('message_id', $old_message->getNewId()); foreach ($old_message->attachments as $attachment) { $attachment->range_id = 'provisional'; $attachment->seminar_id = $GLOBALS['user']->id; $attachment->autor_host = $_SERVER['REMOTE_ADDR']; $attachment->user_id = $GLOBALS['user']->id; $attachment->description = Request::option('message_id'); $new_attachment = $attachment->toArray(array('range_id', 'user_id', 'seminar_id', 'name', 'description', 'filename', 'filesize')); $new_attachment = StudipDocument::createWithFile(get_upload_file_path($attachment->getId()), $new_attachment); $this->default_attachments[] = array('icon' => GetFileIcon(getFileExtension($new_attachment['filename']))->asImg(['class' => "text-bottom"]), 'name' => $new_attachment['filename'], 'document_id' => $new_attachment->id, 'size' => relsize($new_attachment['filesize'], false)); } } $this->default_message['subject'] = $messagesubject; $this->default_message['message'] = $message; } } if (Request::get("default_body")) { $this->default_message['message'] = Request::get("default_body"); } if (Request::get("default_subject")) { $this->default_message['subject'] = Request::get("default_subject"); } $settings = UserConfig::get($GLOBALS['user']->id)->MESSAGING_SETTINGS; $this->mailforwarding = Request::get('emailrequest') ? true : $settings['request_mail_forward']; if (trim($settings['sms_sig'])) { if (Studip\Markup::isHtml($this->default_message['message']) || Studip\Markup::isHtml($settings['sms_sig'])) { if (!Studip\Markup::isHtml($this->default_message['message'])) { $this->default_message['message'] = '<div>' . nl2br($this->default_message['message']) . '</div>'; } $this->default_message['message'] .= '<br><br>--<br>'; if (Studip\Markup::isHtml($settings['sms_sig'])) { $this->default_message['message'] .= $settings['sms_sig']; } else { $this->default_message['message'] .= formatReady($settings['sms_sig']); } } else { $this->default_message['message'] .= "\n\n--\n" . $settings['sms_sig']; } } NotificationCenter::postNotification("DefaultMessageForComposerCreated", $this->default_message); }
/** * Prioritize courses. */ function claim_action() { CSRFProtection::verifyUnsafeRequest(); $user_id = $GLOBALS['user']->id; $courseset = CourseSet::getSetForCourse($this->course_id); if ($courseset->isSeatDistributionEnabled() && !count($courseset->checkAdmission($user_id, $this->course_id))) { if ($limit = $courseset->getAdmissionRule('LimitedAdmission')) { $admission_user_limit = Request::int('admission_user_limit'); if ($admission_user_limit && $admission_user_limit <= $limit->getMaxNumber()) { $limit->setCustomMaxNumber($user_id, $admission_user_limit); } $admission_prio = Request::getArray('admission_prio'); $max_prio = max($admission_prio); $admission_prio = array_map(function ($a) use(&$max_prio) { return $a > 0 ? $a : ++$max_prio; }, $admission_prio); if (count(array_unique($admission_prio)) != count(Request::getArray('admission_prio'))) { PageLayout::postMessage(MessageBox::info(_("Sie dürfen jede Priorität nur einmal auswählen. Überprüfen Sie bitte Ihre Auswahl!"))); } $old_prio_count = AdmissionPriority::unsetAllPrioritiesForUser($courseset->getId(), $user_id); if ($order_up = key(Request::getArray('admission_prio_order_up'))) { $prio_to_move = $admission_prio[$order_up]; $change_with = array_search($prio_to_move - 1, $admission_prio); $admission_prio[$order_up] = $prio_to_move - 1; $admission_prio[$change_with] = $prio_to_move; } if ($order_down = key(Request::getArray('admission_prio_order_down'))) { $prio_to_move = $admission_prio[$order_down]; $change_with = array_search($prio_to_move + 1, $admission_prio); $admission_prio[$order_down] = $prio_to_move + 1; $admission_prio[$change_with] = $prio_to_move; } if ($delete = key(Request::getArray('admission_prio_delete'))) { unset($admission_prio[$delete]); $changed = 1; $admission_prio = array_map(function ($a) { static $c = 1; return $c++; }, $admission_prio); } foreach ($admission_prio as $course_id => $p) { $changed += AdmissionPriority::setPriority($courseset->getId(), $user_id, $course_id, $p); } if ($changed || $old_prio_count && !count($admission_prio)) { if (count(AdmissionPriority::getPrioritiesByUser($courseset->getId(), $user_id))) { PageLayout::postMessage(MessageBox::success(_("Ihre Priorisierung wurde gespeichert."))); } else { PageLayout::postMessage(MessageBox::success(_("Ihre Anmeldung zur Platzvergabe wurde zurückgezogen."))); } } } else { if (Request::int('courseset_claimed')) { if (AdmissionPriority::setPriority($courseset->getId(), $user_id, $this->course_id, 1)) { PageLayout::postMessage(MessageBox::success(_("Ihre Anmeldung zur Platzvergabe wurde gespeichert."))); } } else { if (AdmissionPriority::unsetPriority($courseset->getId(), $user_id, $this->course_id)) { PageLayout::postMessage(MessageBox::success(_("Ihre Anmeldung zur Platzvergabe wurde zurückgezogen."))); } } } } $this->redirect($this->url_for('/apply/' . $this->course_id)); }
function change_course_set_action() { CSRFProtection::verifyUnsafeRequest(); if (Request::submitted('change_course_set_assign') && Request::get('course_set_assign') && !LockRules::Check($this->course_id, 'admission_type')) { $cs = new CourseSet(Request::option('course_set_assign')); if ($cs->isUserAllowedToAssignCourse($this->user_id, $this->course_id)) { CourseSet::addCourseToSet($cs->getId(), $this->course_id); $cs->load(); if (in_array($this->course_id, $cs->getCourses())) { PageLayout::postMessage(MessageBox::success(sprintf(_("Die Zuordnung zum Anmeldeset %s wurde durchgeführt."), htmlReady($cs->getName())))); } } } if (Request::submitted('change_course_set_unassign') && !LockRules::Check($this->course_id, 'admission_type')) { $this->response->add_header('X-Title', _('Anmelderegeln aufheben')); if ($this->course->getNumWaiting() && !Request::submitted('change_course_set_unassign_yes')) { $question = sprintf(_("In dieser Veranstaltung existiert eine Warteliste. Die bestehende Warteliste mit %s Einträgen wird gelöscht. Sind sie sicher?"), $this->course->getNumWaiting()); } $cs = CourseSet::getSetForCourse($this->course_id); if ($cs) { $priorities = AdmissionPriority::getPrioritiesByCourse($cs->getId(), $this->course_id); if (count($priorities) && !Request::submitted('change_course_set_unassign_yes')) { $question = sprintf(_("In dieser Veranstaltung existiert eine Anmeldeliste (Losverfahren am %s). Die bestehende Anmeldeliste mit %s Einträgen wird gelöscht. Sind sie sicher?"), strftime('%x %R', $cs->getSeatDistributionTime()), count($priorities)); } } if (!$question && $cs) { CourseSet::removeCourseFromSet($cs->getId(), $this->course_id); $cs->load(); if (!in_array($this->course_id, $cs->getCourses())) { PageLayout::postMessage(MessageBox::success(sprintf(_("Die Zuordnung zum Anmeldeset %s wurde aufgehoben."), htmlReady($cs->getName())))); } if (!count($cs->getCourses()) && $cs->isGlobal() && $cs->getUserid() != '') { $cs->delete(); } if ($this->course->getNumWaiting()) { $num_moved = 0; foreach ($this->course->admission_applicants->findBy('status', 'awaiting') as $applicant) { setTempLanguage($applicant->user_id); $message_body = sprintf(_('Die Warteliste der Veranstaltung **%s** wurde deaktiviert, Sie sind damit __nicht__ zugelassen worden.'), $this->course->name); $message_title = sprintf(_("Statusänderung %s"), $this->course->name); messaging::sendSystemMessage($applicant->user_id, $message_title, $message_body); restoreLanguage(); $num_moved += $applicant->delete(); } if ($num_moved) { PageLayout::postMessage(MessageBox::success(sprintf(_("%s Wartende wurden entfernt."), $num_moved))); } } } } if (!$question) { $this->redirect($this->url_for('/index')); } else { $this->request = array('change_course_set_unassign' => 1); $this->button_yes = 'change_course_set_unassign_yes'; PageLayout::postMessage(MessageBox::info($question)); $this->render_template('course/admission/_change_admission.php'); } }
/** * @param string $sort_status * @param string $order_by * @return SimpleCollection */ function getAdmissionMembers($sort_status = 'autor', $order_by = 'nachname asc') { $cs = CourseSet::getSetForCourse($this->course_id); $claiming = array(); if (is_object($cs) && !$cs->hasAlgorithmRun()) { foreach (AdmissionPriority::getPrioritiesByCourse($cs->getId(), $this->course_id) as $user_id => $p) { $user = User::find($user_id); $data = $user->toArray('user_id username vorname nachname email'); $data['fullname'] = $user->getFullname('full_rev'); $data['position'] = $p; $data['visible'] = 'unknown'; $data['status'] = 'claiming'; $claiming[] = $data; } } $query = "SELECT asu.user_id,username,vorname,nachname,email,status,position,asu.mkdate,asu.visible, asu.comment,\n " . $GLOBALS['_fullname_sql']['full_rev'] . " as fullname\n FROM admission_seminar_user asu INNER JOIN auth_user_md5 USING(user_id)\n INNER JOIN user_info USING(user_id)\n WHERE seminar_id = ? ORDER BY position, nachname ASC"; $st = DBManager::get()->prepare($query); $st->execute(array($this->course_id)); $application_members = SimpleCollection::createFromArray(array_merge($claiming, $st->fetchAll(PDO::FETCH_ASSOC))); $filtered_members = array(); foreach (words('awaiting accepted claiming') as $status) { $filtered_members[$status] = $application_members->findBy('status', $status); if ($status == $sort_status) { $filtered_members[$status]->orderBy($order_by, strpos($order_by, 'nachname') === false ? SORT_NUMERIC : SORT_LOCALE_STRING); } } return $filtered_members; }