diff --git a/app/controllers/course/enrolment.php b/app/controllers/course/enrolment.php index 8724ff266eed10950d3943f936315e2ae4f310fc..1bd339c3360084d6bec333b249f182a8906c796f 100644 --- a/app/controllers/course/enrolment.php +++ b/app/controllers/course/enrolment.php @@ -89,14 +89,14 @@ class Course_EnrolmentController extends AuthenticatedController } $msg_details = []; $msg = ''; - $user_id = $GLOBALS['user']->id; + $user = User::findCurrent(); $enrol_user = false; $courseset = CourseSet::getSetForCourse($this->course_id); if ($courseset) { - $errors = $courseset->checkAdmission($user_id, $this->course_id); + $errors = $courseset->checkAdmission($user->id, $this->course_id); if (count($errors)) { $this->courseset_message = $courseset->toString(true); - $this->admission_error = MessageBox::error(_("Die Anmeldung war nicht erfolgreich."), $errors); + $this->admission_error = MessageBox::error(_('Die Anmeldung war nicht erfolgreich.'), $errors); $admission_form = ''; foreach ($courseset->getAdmissionRules() as $rule) { $admission_form .= $rule->getInput(); @@ -108,31 +108,34 @@ class Course_EnrolmentController extends AuthenticatedController if ($courseset->isSeatDistributionEnabled()) { if ($courseset->hasAlgorithmRun()) { if ($courseset->getSeatDistributionTime()) { - $msg = _("Die Plätze in dieser Veranstaltung wurden automatisch verteilt."); + $msg = _('Die Plätze in dieser Veranstaltung wurden automatisch verteilt.'); } if (StudipLock::get('enrolment' . $this->course_id)) { $course = Course::find($this->course_id); - $user = User::find($user_id); if ($course->getFreeSeats() && !$course->getNumWaiting()) { $enrol_user = true; } elseif ($user && $course->isWaitlistAvailable()) { - $application = $course->addMemberToWaitlist($user, 'last'); - if ($application) { + + try { + $application = $course->addMemberToWaitlist($user, 'last'); $msg = _('Diese Veranstaltung ist teilnahmebeschränkt.'); $msg_details[] = sprintf(_('Alle Plätze sind belegt, Sie wurden daher auf Platz %s der Warteliste gesetzt.'), $application->position); + } catch (Studip\Exception $e) { + $this->admission_error = MessageBox::error($e->getMessage()); } + } elseif ($course->admission_disable_waitlist) { - $this->admission_error = MessageBox::error(_("Die Anmeldung war nicht erfolgreich. Alle Plätze sind belegt und es steht keine Warteliste zur Verfügung.")); + $this->admission_error = MessageBox::error(_('Die Anmeldung war nicht erfolgreich. Alle Plätze sind belegt und es steht keine Warteliste zur Verfügung.')); } else { - $this->admission_error = MessageBox::error(_("Die Anmeldung war nicht erfolgreich. Alle Plätze sind belegt und es stehen keine Wartelistenplätze zur Verfügung, da die Warteliste voll ist.")); + $this->admission_error = MessageBox::error(_('Die Anmeldung war nicht erfolgreich. Alle Plätze sind belegt und es stehen keine Wartelistenplätze zur Verfügung, da die Warteliste voll ist.')); } } else { - $this->admission_error = MessageBox::error(_("Die Anmeldung war wegen technischer Probleme nicht erfolgreich. Bitte versuchen Sie es später noch einmal.")); + $this->admission_error = MessageBox::error(_('Die Anmeldung war wegen technischer Probleme nicht erfolgreich. Bitte versuchen Sie es später noch einmal.')); } } else { - $msg = _("Die Plätze in dieser Veranstaltung werden automatisch verteilt."); + $msg = _('Die Plätze in dieser Veranstaltung werden automatisch verteilt.'); if ($limit = $courseset->getAdmissionRule('LimitedAdmission')) { - $this->user_max_limit = $limit->getMaxNumberForUser($user_id); + $this->user_max_limit = $limit->getMaxNumberForUser($user->id); if (Config::get()->IMPORTANT_SEMNUMBER) { $order = "ORDER BY VeranstaltungsNummer, Name"; } else { @@ -146,19 +149,19 @@ class Course_EnrolmentController extends AuthenticatedController } ); } - $msg_details[] = sprintf(_("Diese Veranstaltung gehört zu einem Anmeldeset mit %s Veranstaltungen. Sie können maximal %s davon belegen. Bei der Verteilung werden die von Ihnen gewünschten Prioritäten berücksichtigt."), count($this->priocourses), $limit->getMaxNumber()); - $this->user_prio = AdmissionPriority::getPrioritiesByUser($courseset->getId(), $user_id); + $msg_details[] = sprintf(_('Diese Veranstaltung gehört zu einem Anmeldeset mit %s Veranstaltungen. Sie können maximal %s davon belegen. Bei der Verteilung werden die von Ihnen gewünschten Prioritäten berücksichtigt.'), count($this->priocourses), $limit->getMaxNumber()); + $this->user_prio = AdmissionPriority::getPrioritiesByUser($courseset->getId(), $user->id); $this->max_limit = $limit->getMaxNumber(); $this->prio_stats = AdmissionPriority::getPrioritiesStats($courseset->getId()); $this->already_claimed = count($this->user_prio); } else { $this->priocourses = Course::find($this->course_id); - $this->already_claimed = array_key_exists($this->course_id, AdmissionPriority::getPrioritiesByUser($courseset->getId(), $user_id)); + $this->already_claimed = array_key_exists($this->course_id, AdmissionPriority::getPrioritiesByUser($courseset->getId(), $user->id)); } - $msg_details[] = _("Zeitpunkt der automatischen Verteilung: ") . strftime("%x %X", $courseset->getSeatDistributionTime()); + $msg_details[] = _('Zeitpunkt der automatischen Verteilung: ') . strftime("%x %X", $courseset->getSeatDistributionTime()); $this->num_claiming = count(AdmissionPriority::getPrioritiesByCourse($courseset->getId(), $this->course_id)); if ($this->already_claimed) { - $msg_details[] = _("Sie sind bereits für die Verteilung angemeldet."); + $msg_details[] = _('Sie sind bereits für die Verteilung angemeldet.'); } } if ($msg) { @@ -188,17 +191,17 @@ class Course_EnrolmentController extends AuthenticatedController $admission_comment = ''; } try { - $course->addPreliminaryMember($user_id, $admission_comment); + $course->addPreliminaryMember($user, $admission_comment); } catch (Exception $e) { PageLayout::postError($e->getMessage()); return; } if ($course->isStudygroup()) { - if (StudygroupModel::isInvited($user_id, $this->course_id)) { + if (StudygroupModel::isInvited($user->id, $this->course_id)) { // an invitation exists, so accept the join request automatically $status = 'autor'; - StudygroupModel::accept_user(get_username($user_id), $this->course_id); - StudygroupModel::cancelInvitation(get_username($user_id), $this->course_id); + StudygroupModel::accept_user($user->username, $this->course_id); + StudygroupModel::cancelInvitation($user->username, $this->course_id); $success = sprintf( _('Sie wurden in die Veranstaltung %1$s als %2$s eingetragen.'), htmlReady($course->getFullName()), @@ -222,8 +225,8 @@ class Course_EnrolmentController extends AuthenticatedController } else { $status = 'autor'; try { - $course->addMember($user_id, $status); - } catch (Exception $e) { + $course->addMember($user, $status); + } catch (Studip\Exception $e) { PageLayout::postError($e->getMessage()); } $success = sprintf( @@ -233,9 +236,9 @@ class Course_EnrolmentController extends AuthenticatedController ); PageLayout::postSuccess($success); - if (StudygroupModel::isInvited($user_id, $this->course_id)) { + if (StudygroupModel::isInvited($user->id, $this->course_id)) { // delete an existing invitation - StudygroupModel::cancelInvitation(get_username($user_id), $this->course_id); + StudygroupModel::cancelInvitation($user->username, $this->course_id); } } unset($this->courseset_message); diff --git a/lib/classes/admission/RandomAlgorithm.php b/lib/classes/admission/RandomAlgorithm.php index 46ff7623944f2ab2a7d236134df20c0004c48025..f04f01a9e3e07d46b1b43bc07b5e1c5ba66384cc 100644 --- a/lib/classes/admission/RandomAlgorithm.php +++ b/lib/classes/admission/RandomAlgorithm.php @@ -376,9 +376,10 @@ class RandomAlgorithm extends AdmissionAlgorithm */ private function addUsersToCourse($user_list, Course $course, $prio = null) { - foreach ($user_list as $user_id) { - $user = User::find($user_id); - setTempLanguage($user_id); + $message_body = ''; + $users = User::findMany($user_list); + foreach ($users as $user) { + setTempLanguage($user->id); $message_title = sprintf(_('Teilnahme an der Veranstaltung %s'), $course->name); if ($course->admission_prelim) { try { @@ -391,17 +392,20 @@ class RandomAlgorithm extends AdmissionAlgorithm $course->name ); } else { - if ($course->addMember($user_id, 'autor')) { + try { + $course->addMember($user); $message_body = sprintf( _('Sie haben bei der Platzvergabe der Veranstaltung **%s** einen Platz erhalten. Damit sind Sie für die Teilnahme an der Veranstaltung zugelassen. Ab sofort finden Sie die Veranstaltung in der Übersicht Ihrer Veranstaltungen.'), $course->name ); + } catch (\Studip\Exception $e) { + //Nothing here. } } - if ($prio) { - $message_body .= "\n" . sprintf(_('Sie hatten für diese Veranstaltung die Priorität %s gewählt.'), $prio[$user_id]); + if (!empty($prio[$user->id])) { + $message_body .= "\n" . sprintf(_('Sie hatten für diese Veranstaltung die Priorität %s gewählt.'), $prio[$user->id]); } - messaging::sendSystemMessage($user_id, $message_title, $message_body); + messaging::sendSystemMessage($user->id, $message_title, $message_body); restoreLanguage(); } }