aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de>2023-07-14 06:31:26 +0000
committerJan-Hendrik Willms <tleilax+github@gmail.com>2023-07-14 15:23:13 +0200
commit33a5e5359d55751c33b7c670aa2c52f8f16d861d (patch)
treecfcba43a43a3e1146e8eeeb6ef1636023afdb1be
parentf2b6afa3b9b7e7f4570da31b940d6726325260bb (diff)
Resolve "Semester lassen sich überschneiden"
Closes #1956 Merge request studip/studip!1899
-rw-r--r--app/controllers/admin/semester.php13
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);
}
}