From e08d2d6e3f0c646d93ae39203962dfc7da512294 Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms Date: Tue, 10 Feb 2026 10:18:09 +0100 Subject: don't send messages for waitlist changes for course that have ended, fixes #6224 Closes #6224 Merge request studip/studip!4710 --- lib/models/AdmissionApplication.php | 7 ++++++- lib/models/Course.php | 12 +++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/models/AdmissionApplication.php b/lib/models/AdmissionApplication.php index 2862089..d3df1e9 100644 --- a/lib/models/AdmissionApplication.php +++ b/lib/models/AdmissionApplication.php @@ -314,7 +314,12 @@ class AdmissionApplication extends SimpleORMap implements PrivacyObject $position = 1; foreach ($admission_users as $admission) { $admission->position = $position; - if ($admission->store() && Config::get()->NOTIFY_ON_WAITLIST_ADVANCE && $send_message) { + if ( + $admission->store() + && Config::get()->getValue('NOTIFY_ON_WAITLIST_ADVANCE') + && $send_message + && !$course->hasEnded() + ) { $username = $admission->user->username; setTempLanguage($admission->user_id); $message = sprintf(_('Sie sind auf der Warteliste der Veranstaltung **%s (%s)** hochgestuft worden. Sie stehen zur Zeit auf Position %s.'), diff --git a/lib/models/Course.php b/lib/models/Course.php index d35c6c3..dbe8445 100644 --- a/lib/models/Course.php +++ b/lib/models/Course.php @@ -584,7 +584,7 @@ class Course extends SimpleORMap implements Range, PrivacyObject, StudipItem, Fe * @returns Semester|null Either the last semester of the course * or null, if no semester could be found. */ - public function getEndSemester() + public function getEndSemester(): ?Semester { //this is called by __get() and therefore using magic properties is not always safe if ($this->relations['semesters'] === null) { @@ -636,6 +636,16 @@ class Course extends SimpleORMap implements Range, PrivacyObject, StudipItem, Fe } } + /** + * Returns whether the course has ended, meaning it is not open ended and + * all semesters the course takes place in are in the past. + */ + public function hasEnded(): bool + { + return !$this->isOpenEnded() + && $this->getEndSemester()->isPast(); + } + public function getTeachers() { return $this->members->filter(function ($m) { -- cgit v1.0