diff --git a/lib/classes/admission/UserFilter.class.php b/lib/classes/admission/UserFilter.class.php index cb2e85c4aa4fcf38edd2e4b2f9c23d38c87cd889..32eed4830835304846bd1ab3c14af00f2fd343b9 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 36ed57cea30e9664e864bb3d8927c42e9fa4161d..ab6db5799ce0753467e8a69dd71b25212b873056 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 f896f3434b61694f5c0e9861ce21506a7cfd3466..471b806ca8fdcdca6ad9c3f9e1af44ef9bf253d7 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 bc4d40b77212094bc493ad742e648014e0ac1aef..9180e2d39f2383ac39e522aaf77a36978d2f5053 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 0f2b0a34ccd5fa521462b6b2c4f7058267f669c3..4adfdbfb50f804cce288a64bf9241b3915ef2343 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 13498186f054e898829ca3442e2dca5b91c16b7c..c73475617315e4563e15fdb624d4544c1ee20044 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 e53bfadc536c8897ab2a8db5ac31efcb57edee3e..391fba360e20fb7432f00b60c376d55b2a0dd24b 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 e7f75c1918dcf14f2e421398cac5f0d87ae3752e..ab44d491190f10d04c4a93c8f729cc7d71f0c07a 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 013e16e5b467493272b7b98296bbb6a88647959e..4b3caba06296afcc5414938a7190023a75478054 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 --- /**