From 7b16d960abc468abacd6b93a780a21709719ec5d Mon Sep 17 00:00:00 2001
From: noackorama <noackorama@gmail.com>
Date: Thu, 31 Mar 2022 18:29:12 +0200
Subject: [PATCH] closes #844 re #377

---
 lib/models/Course.class.php | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/lib/models/Course.class.php b/lib/models/Course.class.php
index 5a41e02adc5..63e5186df34 100644
--- a/lib/models/Course.class.php
+++ b/lib/models/Course.class.php
@@ -311,12 +311,15 @@ class Course extends SimpleORMap implements Range, PrivacyObject, StudipItem, Fe
     {
         $end_semester = $this->semesters->last();
         $start_semester = $this->semesters->first();
+        if ($start_semester->id === $semester->id) {
+            return;
+        }
         if ($end_semester) {
             if (count($this->semesters) > 1 && $end_semester->beginn < $semester->beginn) {
                 throw new InvalidArgumentException('start-semester must start before end-semester');
             }
             foreach ($this->semesters as $key => $one_semester) {
-                if ($one_semester->beginn <= $semester->beginn) {
+                if ($one_semester->beginn < $semester->beginn) {
                     $this->semesters->offsetUnset($key);
                 }
             }
@@ -334,7 +337,11 @@ class Course extends SimpleORMap implements Range, PrivacyObject, StudipItem, Fe
      */
     public function setEndSemester(?Semester $semester)
     {
+        $end_semester = $this->semesters->last();
         $start_semester = $this->semesters->first();
+        if ((is_null($end_semester) && is_null($semester)) || ($end_semester->id === $semester->id)) {
+            return;
+        }
         if ($start_semester) {
             if ($semester && $start_semester->beginn > $semester->beginn) {
                 throw new InvalidArgumentException('end-semester must start after start-semester');
-- 
GitLab