From 038a5bdccdc8d47d3d7342e2d2f9a1d350585e48 Mon Sep 17 00:00:00 2001
From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de>
Date: Tue, 12 Sep 2023 16:54:44 +0000
Subject: [PATCH] start counting weeks from the current week of
 `vorles_beginn`, fixes #2608

Closes #2608

Merge request studip/studip!2151
---
 lib/models/Semester.class.php   | 15 +--------------
 lib/raumzeit/MetaDate.class.php | 17 +++--------------
 2 files changed, 4 insertions(+), 28 deletions(-)

diff --git a/lib/models/Semester.class.php b/lib/models/Semester.class.php
index 1a490a60c78..a380781196d 100644
--- a/lib/models/Semester.class.php
+++ b/lib/models/Semester.class.php
@@ -410,20 +410,7 @@ class Semester extends SimpleORMap
      */
     public function getCorrectedLectureBegin()
     {
-        $dow = (int)date('w', $this->vorles_beginn);
-
-        // Date is already on a monday
-        if ($dow === 1) {
-            return $this->vorles_beginn;
-        }
-
-        // Saturday or sunday: return next monday
-        if ($dow === 0 || $dow === 6) {
-            return strtotime('next monday', $this->vorles_beginn);
-        }
-
-        // Otherwise return last monday
-        return strtotime('last monday', $this->vorles_beginn);
+        return strtotime('this week monday', $this->vorles_beginn);
     }
 
 
diff --git a/lib/raumzeit/MetaDate.class.php b/lib/raumzeit/MetaDate.class.php
index b74b871f6be..0af632d0f09 100644
--- a/lib/raumzeit/MetaDate.class.php
+++ b/lib/raumzeit/MetaDate.class.php
@@ -550,18 +550,7 @@ class MetaDate
                 $passed = true;
             }
             if ($passed && ($sem_end >= $val['vorles_ende']) && ($startAfterTimeStamp <= $val['ende'])) {
-                // correction calculation, if the semester does not start on monday
-                $dow = (int)date('w', $val['vorles_beginn']);
-                if ($dow === 0) {
-                    $corr = 1;
-                } elseif ($dow <= 5) {
-                    $corr = ($dow - 1) * -1;
-                } elseif ($dow == 6) {
-                    $corr = 2;
-                } else {
-                    $corr = 0;
-                }
-                $ret[$val['semester_id']] = $this->getVirtualSingleDatesForSemester($metadate_id, $val['vorles_beginn'], $val['vorles_ende'], $startAfterTimeStamp, $corr);
+                $ret[$val['semester_id']] = $this->getVirtualSingleDatesForSemester($metadate_id, $val['vorles_beginn'], $val['vorles_ende'], $startAfterTimeStamp);
             }
         }
 
@@ -575,10 +564,10 @@ class MetaDate
      * @param int    timestamp of semester start
      * @param int    timestamp of semester end
      * @param int    alternative timestamp to start from
-     * @param int    correction calculation, if the semester does not start on monday (number of days?)
+     * @param int    correction calculation (obsolete)
      * @return array returns an array of two arrays of SingleDate objects: 'dates' => all new and surviving dates, 'dates_to_delete' => obsolete dates
      */
-    function getVirtualSingleDatesForSemester($metadate_id, $sem_begin, $sem_end, $startAfterTimeStamp, $corr)
+    function getVirtualSingleDatesForSemester($metadate_id, $sem_begin, $sem_end, $startAfterTimeStamp, $corr = 0)
     {
         $dates = [];
         $dates_to_delete = [];
-- 
GitLab