/** * Add the lucky ones who got a seat to the given course. * * @param Array $user_list users to add as members * @param Course $course course to add users to * @param int $prio user's priority for the given course */ private function addUsersToCourse($user_list, $course, $prio = null) { $seminar = new Seminar($course->id); foreach ($user_list as $chosen_one) { setTempLanguage($chosen_one); $message_title = sprintf(_('Teilnahme an der Veranstaltung %s'), $seminar->getName()); if ($seminar->admission_prelim) { if ($seminar->addPreliminaryMember($chosen_one)) { $message_body = sprintf(_('Sie wurden für die Veranstaltung **%s** ausgelost. Die endgültige Zulassung zu der Veranstaltung ist noch von weiteren Bedingungen abhängig, die Sie bitte der Veranstaltungsbeschreibung entnehmen.'), $seminar->getName()); } } else { if ($seminar->addMember($chosen_one, 'autor')) { $message_body = sprintf(_("Sie wurden für die Veranstaltung **%s** ausgelost. Ab sofort finden Sie die Veranstaltung in der Übersicht Ihrer Veranstaltungen. Damit sind Sie auch für die Präsenzveranstaltung zugelassen."), $seminar->getName()); } } if ($prio) { $message_body .= "\n" . sprintf(_("Sie hatten für diese Veranstaltung die Priorität %s gewählt."), $prio[$chosen_one]); } messaging::sendSystemMessage($chosen_one, $message_title, $message_body); restoreLanguage(); } }
/** * Change preliminary admission settings. */ function change_admission_prelim_action() { CSRFProtection::verifyUnsafeRequest(); $this->response->add_header('X-Title', _('Anmeldemodus ändern')); if (Request::submitted('change_admission_prelim')) { $request = Request::extract('admission_prelim int, admission_binding submitted, admission_prelim_txt'); $request = array_diff_key($request, array_filter($this->is_locked)); $request['change_admission_prelim'] = 1; $this->course->setData($request); if ($this->course->isFieldDirty('admission_prelim')) { if ($this->course->admission_prelim == 1 && $this->course->getNumParticipants()) { $question = _("Sie beabsichtigen den Anmeldemodus auf vorläufiger Eintrag zu ändern. Sollen die bereits in der Veranstaltung eingetragenen Teilnehmer in vorläufige Teilnehmer umgewandelt werden?"); } if ($this->course->admission_prelim == 0 && $this->course->getNumPrelimParticipants()) { $question = _("Sie beabsichtigen den Anmeldemodus auf direkten Eintrag zu ändern. Sollen die vorläufigen Teilnehmer in die Veranstaltung übernommen werden (ansonsten werden die vorläufigen Teilnehmer aus der Veranstaltung entfernt) ?"); } } if (Request::submittedSome('change_admission_prelim_no', 'change_admission_prelim_yes') || !$question) { if ($this->course->admission_prelim == 1 && $this->course->getNumParticipants() && Request::submitted('change_admission_prelim_yes')) { $num_moved = 0; $seminar = new Seminar($this->course_id); foreach ($this->course->members->findBy('status', array('user', 'autor'))->pluck('user_id') as $user_id) { $seminar->addPreliminaryMember($user_id); $num_moved += $seminar->deleteMember($user_id) !== false; setTempLanguage($user_id); $message_body = sprintf(_('Sie wurden in der Veranstaltung **%s** in den Status **vorläufig akzeptiert** befördert, da das Anmeldeverfahren geändert wurde.'), $this->course->name); $message_title = sprintf(_("Statusänderung %s"), $this->course->name); messaging::sendSystemMessage($user_id, $message_title, $message_body); restoreLanguage(); } if ($num_moved) { PageLayout::postMessage(MessageBox::success(sprintf(_("%s Teilnehmer wurden auf vorläufigen Eintrag gesetzt."), $num_moved))); } } if ($this->course->admission_prelim == 0 && $this->course->getNumPrelimParticipants()) { if (Request::submitted('change_admission_prelim_yes')) { $num_moved = 0; $seminar = new Seminar($this->course_id); foreach ($this->course->admission_applicants->findBy('status', 'accepted')->pluck('user_id') as $user_id) { $num_moved += $seminar->addMember($user_id, 'autor') !== false; setTempLanguage($user_id); $message_body = sprintf(_('Sie wurden in der Veranstaltung **%s** in den Status **Autor** versetzt, da das Anmeldeverfahren geändert wurde.'), $this->course->name); $message_title = sprintf(_("Statusänderung %s"), $this->course->name); messaging::sendSystemMessage($user_id, $message_title, $message_body); restoreLanguage(); } if ($num_moved) { PageLayout::postMessage(MessageBox::success(sprintf(_("%s Teilnehmer wurden in die Veranstaltung übernommen."), $num_moved))); } } if (Request::submitted('change_admission_prelim_no')) { $num_moved = 0; foreach ($this->course->admission_applicants->findBy('status', 'accepted') as $applicant) { setTempLanguage($applicant->user_id); $message_body = sprintf(_('Sie wurden aus der Veranstaltung **%s** entfernt, da das Anmeldeverfahren geändert wurde.'), $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 vorläufige Teilnehmer wurden entfernt."), $num_moved))); } } } if ($this->course->store()) { PageLayout::postMessage(MessageBox::success(_("Der Anmeldemodus wurde geändert."))); } unset($question); } } if (!$question) { $this->redirect($this->url_for('/index')); } else { $this->button_yes = 'change_admission_prelim_yes'; $this->button_no = 'change_admission_prelim_no'; $this->request = $request; PageLayout::postMessage(MessageBox::info($question)); $this->render_template('course/admission/_change_admission.php'); } }