From 6b3ca21b124871ca44af1584214a6eb5e907a06f Mon Sep 17 00:00:00 2001 From: Moritz Strohm <strohm@data-quest.de> Date: Wed, 11 May 2022 08:38:14 +0000 Subject: [PATCH] TIC #842 Merge request studip/studip!491 --- lib/classes/ProfileModel.php | 14 +++++++++++++- lib/models/Semester.class.php | 21 +++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/lib/classes/ProfileModel.php b/lib/classes/ProfileModel.php index 152bb195005..663d8ab3ff2 100644 --- a/lib/classes/ProfileModel.php +++ b/lib/classes/ProfileModel.php @@ -96,7 +96,19 @@ class ProfileModel public function getDozentSeminars() { $courses = []; - $semester = array_reverse(Semester::getAll()); + $semester = []; + $next_semester = Semester::findNext(); + $current_semester = Semester::findCurrent(); + $previous_semester = Semester::findPrevious(); + if ($next_semester) { + $semester[$next_semester->id] = $next_semester; + } + if ($current_semester) { + $semester[$current_semester->id] = $current_semester; + } + if ($previous_semester) { + $semester[$previous_semester->id] = $previous_semester; + } $field = 'name'; if (Config::get()->IMPORTANT_SEMNUMBER) { $field = "veranstaltungsnummer,{$field}"; diff --git a/lib/models/Semester.class.php b/lib/models/Semester.class.php index 2652de83784..a5d81c7ca85 100644 --- a/lib/models/Semester.class.php +++ b/lib/models/Semester.class.php @@ -116,6 +116,27 @@ class Semester extends SimpleORMap return null; } + /** + * Returns the previous semester for a semester specified by a timestamp. + * If no timestamp is specified, the previous semester of the current semester is returned. + * + * @param integer|null $timestamp The timestamp of the semester whose predecessor + * shall be found. Defaults to null. + * + * @return null|Semester A previous semester to the specified one or null, if no such semester + * could be found. + */ + public static function findPrevious($timestamp = null) + { + $timestamp = $timestamp ?: time(); + $semester = self::findByTimestamp($timestamp); + if ($semester) { + return self::findByTimestamp((int)$semester->beginn - 1); + } + + return null; + } + /** * returns current Semester */ -- GitLab