From c9a13b734dc73aeef669b2b55e6bc50e292d9d3a Mon Sep 17 00:00:00 2001 From: Thomas Hackl <hackl@data-quest.de> Date: Tue, 28 Sep 2021 07:59:38 +0000 Subject: [PATCH] =?UTF-8?q?Resolve=20"Anmelderegel=20"h=C3=B6heres=20Fachs?= =?UTF-8?q?emester=20bevorzugen"=20zuf=C3=A4llige=20Darstellung=20der=20St?= =?UTF-8?q?udiengangsbedingungen"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/classes/admission/UserFilter.class.php | 3 +++ lib/classes/admission/UserFilterField.class.php | 6 ++++++ .../admission/userfilter/DatafieldCondition.class.php | 2 ++ lib/classes/admission/userfilter/DegreeCondition.class.php | 2 ++ .../admission/userfilter/PermissionCondition.class.php | 2 ++ .../admission/userfilter/SemesterOfStudyCondition.class.php | 2 ++ .../admission/userfilter/StgteilVersionCondition.class.php | 2 ++ lib/classes/admission/userfilter/SubjectCondition.class.php | 2 ++ .../admission/userfilter/SubjectConditionAny.class.php | 2 ++ 9 files changed, 23 insertions(+) diff --git a/lib/classes/admission/UserFilter.class.php b/lib/classes/admission/UserFilter.class.php index cb2e85c4aa4..32eed483083 100644 --- a/lib/classes/admission/UserFilter.class.php +++ b/lib/classes/admission/UserFilter.class.php @@ -101,6 +101,9 @@ class UserFilter */ public function getFields() { + uasort($this->fields, function($a, $b) { + return $a->sortOrder - $b->sortOrder; + }); return $this->fields; } diff --git a/lib/classes/admission/UserFilterField.class.php b/lib/classes/admission/UserFilterField.class.php index 36ed57cea30..ab6db5799ce 100644 --- a/lib/classes/admission/UserFilterField.class.php +++ b/lib/classes/admission/UserFilterField.class.php @@ -51,6 +51,12 @@ class UserFilterField */ public $value = null; + /* + * Provide some kind of sort order for filter fields. By default, + * all subclasses without an explicitly given order will be sorted at the end. + */ + public $sortOrder = 99; + public static $isParameterized = false; /** diff --git a/lib/classes/admission/userfilter/DatafieldCondition.class.php b/lib/classes/admission/userfilter/DatafieldCondition.class.php index f896f3434b6..471b806ca8f 100644 --- a/lib/classes/admission/userfilter/DatafieldCondition.class.php +++ b/lib/classes/admission/userfilter/DatafieldCondition.class.php @@ -18,6 +18,8 @@ class DatafieldCondition extends UserFilterField public $datafield_id, $null_yields, $datafield_name; + public $sortOrder = 6; + public static function getParameterizedTypes() { $ret = []; diff --git a/lib/classes/admission/userfilter/DegreeCondition.class.php b/lib/classes/admission/userfilter/DegreeCondition.class.php index bc4d40b7721..9180e2d39f2 100644 --- a/lib/classes/admission/userfilter/DegreeCondition.class.php +++ b/lib/classes/admission/userfilter/DegreeCondition.class.php @@ -22,6 +22,8 @@ class DegreeCondition extends UserFilterField public $userDataDbTable = 'user_studiengang'; public $userDataDbField = 'abschluss_id'; + public $sortOrder = 1; + /** * @see UserFilterField::__construct */ diff --git a/lib/classes/admission/userfilter/PermissionCondition.class.php b/lib/classes/admission/userfilter/PermissionCondition.class.php index 0f2b0a34ccd..4adfdbfb50f 100644 --- a/lib/classes/admission/userfilter/PermissionCondition.class.php +++ b/lib/classes/admission/userfilter/PermissionCondition.class.php @@ -15,6 +15,8 @@ */ class PermissionCondition extends UserFilterField { + public $sortOrder = 7; + /** * @see UserFilterField::__construct */ diff --git a/lib/classes/admission/userfilter/SemesterOfStudyCondition.class.php b/lib/classes/admission/userfilter/SemesterOfStudyCondition.class.php index 13498186f05..c7347561731 100644 --- a/lib/classes/admission/userfilter/SemesterOfStudyCondition.class.php +++ b/lib/classes/admission/userfilter/SemesterOfStudyCondition.class.php @@ -22,6 +22,8 @@ class SemesterOfStudyCondition extends UserFilterField public $userDataDbTable = 'user_studiengang'; public $userDataDbField = 'semester'; + public $sortOrder = 4; + // --- OPERATIONS --- /** diff --git a/lib/classes/admission/userfilter/StgteilVersionCondition.class.php b/lib/classes/admission/userfilter/StgteilVersionCondition.class.php index e53bfadc536..391fba360e2 100644 --- a/lib/classes/admission/userfilter/StgteilVersionCondition.class.php +++ b/lib/classes/admission/userfilter/StgteilVersionCondition.class.php @@ -22,6 +22,8 @@ class StgteilVersionCondition extends UserFilterField public $userDataDbTable = 'user_studiengang'; public $userDataDbField = 'version_id'; + public $sortOrder = 5; + public static $isParameterized = true; public static function getParameterizedTypes() diff --git a/lib/classes/admission/userfilter/SubjectCondition.class.php b/lib/classes/admission/userfilter/SubjectCondition.class.php index e7f75c1918d..ab44d491190 100644 --- a/lib/classes/admission/userfilter/SubjectCondition.class.php +++ b/lib/classes/admission/userfilter/SubjectCondition.class.php @@ -22,6 +22,8 @@ class SubjectCondition extends UserFilterField public $userDataDbTable = 'user_studiengang'; public $userDataDbField = 'fach_id'; + public $sortOrder = 2; + // --- OPERATIONS --- /** diff --git a/lib/classes/admission/userfilter/SubjectConditionAny.class.php b/lib/classes/admission/userfilter/SubjectConditionAny.class.php index 013e16e5b46..4b3caba0629 100644 --- a/lib/classes/admission/userfilter/SubjectConditionAny.class.php +++ b/lib/classes/admission/userfilter/SubjectConditionAny.class.php @@ -25,6 +25,8 @@ class SubjectConditionAny extends UserFilterField public $userDataDbTable = 'user_studiengang'; public $userDataDbField = 'fach_id'; + public $sortOrder = 3; + // --- OPERATIONS --- /** -- GitLab