From 5fc88cf5b6bcbec959db8235b21180bf0bbf08dd Mon Sep 17 00:00:00 2001
From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de>
Date: Mon, 14 Nov 2022 13:42:56 +0000
Subject: [PATCH] apply chdate filter first (and fix the filter so it actually
 works), fixes #1779

Closes #1779

Merge request studip/studip!1156
---
 app/controllers/course/admission.php      |  6 +++---
 lib/classes/admission/CourseSet.class.php | 12 ++++++------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/app/controllers/course/admission.php b/app/controllers/course/admission.php
index 8738e60e6b3..1e28002c10a 100644
--- a/app/controllers/course/admission.php
+++ b/app/controllers/course/admission.php
@@ -82,7 +82,8 @@ class Course_AdmissionController extends AuthenticatedController
         $this->activated_admission_rules = AdmissionRule::getAvailableAdmissionRules();
         if (!$this->current_courseset) {
             $available_coursesets = new SimpleCollection();
-            foreach (CourseSet::getCoursesetsByInstituteId($this->course->institut_id) as $cs) {
+            $filter = ['course_set_chdate' => strtotime('-1 year')];
+            foreach (CourseSet::getCoursesetsByInstituteId($this->course->institut_id, $filter) as $cs) {
                 $cs = new CourseSet($cs['set_id']);
                 if ($cs->isUserAllowedToAssignCourse($this->user_id, $this->course_id)) {
                     $available_coursesets[] = ['id' => $cs->getId(),
@@ -91,7 +92,7 @@ class Course_AdmissionController extends AuthenticatedController
                                                     'my_own' => $cs->getUserId() === $GLOBALS['user']->id];
                 }
             }
-            foreach (CourseSet::getglobalCoursesets() as $cs) {
+            foreach (CourseSet::getglobalCoursesets($filter) as $cs) {
                 $cs = new CourseSet($cs['set_id']);
                 if ($cs->isUserAllowedToAssignCourse($this->user_id, $this->course_id)) {
                     $available_coursesets[] = ['id' => $cs->getId(),
@@ -100,7 +101,6 @@ class Course_AdmissionController extends AuthenticatedController
                                                     'my_own' => $cs->getUserId() === $GLOBALS['user']->id];
                 }
             }
-            $available_coursesets = $available_coursesets->findBy('chdate', strtotime('-1 year'), '>');
             $available_coursesets->orderBy('name');
             $this->available_coursesets = $available_coursesets;
 
diff --git a/lib/classes/admission/CourseSet.class.php b/lib/classes/admission/CourseSet.class.php
index 054c9506479..143f7d86df9 100644
--- a/lib/classes/admission/CourseSet.class.php
+++ b/lib/classes/admission/CourseSet.class.php
@@ -393,9 +393,9 @@ class CourseSet
             $query .= " AND s.start_time = ?";
             $parameters[] = Semester::find($filter['semester_id'])->beginn;
         }
-        if ($filter['course_set_chdate']) {
-            $query .= " AND c.chdate < ?";
-            $parameters[] = $filter['chdate'];
+        if (!empty($filter['course_set_chdate'])) {
+            $query .= " AND c.chdate > ?";
+            $parameters[] = $filter['course_set_chdate'];
         }
         $query .= " ORDER BY c.name";
         $stmt = DBManager::get()->prepare($query);
@@ -432,9 +432,9 @@ class CourseSet
             $query .= " AND s.start_time = ?";
             $parameters[] = Semester::find($filter['semester_id'])->beginn;
         }
-        if ($filter['course_set_chdate']) {
-            $query .= " AND c.chdate < ?";
-            $parameters[] = $filter['chdate'];
+        if (!empty($filter['course_set_chdate'])) {
+            $query .= " AND c.chdate > ?";
+            $parameters[] = $filter['course_set_chdate'];
         }
         $query .= " ORDER BY c.name";
         $stmt = DBManager::get()->prepare($query);
-- 
GitLab