Exemplo n.º 1
0
 /**
  * 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();
     }
 }
Exemplo n.º 2
0
 /**
  * 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');
     }
 }