function change_admission_turnout_action() { CSRFProtection::verifyUnsafeRequest(); $this->response->add_header('X-Title', _('Teilnehmeranzahl ändern')); if (Request::submitted('change_admission_turnout')) { $request = Request::extract('admission_turnout int, admission_disable_waitlist submitted, admission_disable_waitlist_move submitted, admission_waitlist_max int'); $request = array_diff_key($request, array_filter($this->is_locked)); $request['change_admission_turnout'] = 1; if (isset($request['admission_turnout'])) { $this->course->admission_turnout = abs($request['admission_turnout']); } if (isset($request['admission_disable_waitlist'])) { $this->course->admission_disable_waitlist = $request['admission_disable_waitlist'] ? 0 : 1; if ($this->course->admission_disable_waitlist && $this->course->getNumWaiting()) { $question = sprintf(_("Sie beabsichtigen die Warteliste zu deaktivieren. Die bestehende Warteliste mit %s Einträgen wird gelöscht. Sind sie sicher?"), $this->course->getNumWaiting()); } } if (isset($request['admission_disable_waitlist_move'])) { $this->course->admission_disable_waitlist_move = $request['admission_disable_waitlist_move'] ? 0 : 1; } if (isset($request['admission_waitlist_max'])) { $this->course->admission_waitlist_max = abs($request['admission_waitlist_max']); if ($this->course->admission_waitlist_max > 0 && !$this->admission_disable_waitlist && $this->course->getNumWaiting() > $this->course->admission_waitlist_max) { $question = sprintf(_("Sie beabsichtigen die Anzahl der Wartenden zu begrenzen. Die letzten %s Einträge der Warteliste werden gelöscht. Sind sie sicher?"), $this->course->getNumWaiting() - $this->course->admission_waitlist_max); } } if (Request::submitted('change_admission_turnout_yes') || !$question) { $this->course->admission_disable_waitlist = Request::int('admission_disable_waitlist') ? 0 : 1; $this->course->admission_disable_waitlist_move = Request::int('admission_disable_waitlist_move') ? 0 : 1; if ($this->course->admission_disable_waitlist && $this->course->getNumWaiting()) { $removed_applicants = $this->course->admission_applicants->findBy('status', 'awaiting'); } if ($this->course->admission_waitlist_max > 0 && !$this->admission_disable_waitlist && $this->course->getNumWaiting() > $this->course->admission_waitlist_max) { $limit = $this->course->getNumWaiting() - $this->course->admission_waitlist_max; $removed_applicants = $this->course->admission_applicants->findBy('status', 'awaiting')->orderBy('position desc', SORT_NUMERIC)->limit($limit); } if ($removed_applicants) { $num_moved = 0; foreach ($removed_applicants 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 ($this->course->store()) { PageLayout::postMessage(MessageBox::success(_("Die Teilnehmeranzahl wurde geändert."))); } unset($question); } } if (!$question) { $this->redirect($this->url_for('/index')); } else { $this->request = $request; $this->button_yes = 'change_admission_turnout_yes'; PageLayout::postMessage(MessageBox::info($question)); $this->render_template('course/admission/_change_admission.php'); } }