diff --git a/lib/classes/ProfileModel.php b/lib/classes/ProfileModel.php index 152bb195005c6f74bda5d4c42c70f81bb580890c..663d8ab3ff2d49caec7f8bd8ae9704b83ac5b9ea 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 2652de837840d634b394d407ef6c0046ecd0885e..a5d81c7ca8565da1cdd4a19a46d302a34b6d312a 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 */