diff options
| author | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2023-07-14 06:31:26 +0000 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+github@gmail.com> | 2023-07-14 15:23:13 +0200 |
| commit | 33a5e5359d55751c33b7c670aa2c52f8f16d861d (patch) | |
| tree | cfcba43a43a3e1146e8eeeb6ef1636023afdb1be | |
| parent | f2b6afa3b9b7e7f4570da31b940d6726325260bb (diff) | |
Resolve "Semester lassen sich überschneiden"
Closes #1956
Merge request studip/studip!1899
| -rw-r--r-- | app/controllers/admin/semester.php | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/app/controllers/admin/semester.php b/app/controllers/admin/semester.php index 7c4d7b9..3746e59 100644 --- a/app/controllers/admin/semester.php +++ b/app/controllers/admin/semester.php @@ -196,11 +196,14 @@ class Admin_SemesterController extends AuthenticatedController // Validation, step 3: Check overlapping with other semesters if (empty($errors)) { - $all_semester = SimpleCollection::createFromArray(Semester::getAll())->findBy('id', $this->semester->id, '<>'); - $collisions = $all_semester->findBy('beginn', [$this->semester->beginn, $this->semester->ende], '>=<='); - $collisions->merge($all_semester->findBy('ende', [$this->semester->beginn, $this->semester->ende], '>=<=')); - if ($collisions->count()) { - $errors[] = sprintf(_('Der angegebene Zeitraum des Semester überschneidet sich mit einem anderen Semester (%s)'), join(', ', $collisions->pluck('name'))); + $collisions_beginn = Semester::findByTimestamp($this->semester->beginn); + if ($collisions_beginn && $collisions_beginn->id !== $this->semester->id) { + $errors[] = sprintf(_('Der Beginn des Semester überschneidet sich mit einem anderen Semester (%s)'), $collisions_beginn->name); + } + + $collisions_ende = Semester::findByTimestamp($this->semester->ende); + if ($collisions_ende && $collisions_ende->id !== $this->semester->id) { + $errors[] = sprintf(_('Das Ende des Semester überschneidet sich mit einem anderen Semester (%s)'), $collisions_ende->name); } } |
