diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/classes/MyCoursesHelper.php | 47 | ||||
| -rw-r--r-- | lib/classes/MyRealmModel.php | 45 |
2 files changed, 67 insertions, 25 deletions
diff --git a/lib/classes/MyCoursesHelper.php b/lib/classes/MyCoursesHelper.php index 714a6cb..b82856b 100644 --- a/lib/classes/MyCoursesHelper.php +++ b/lib/classes/MyCoursesHelper.php @@ -52,7 +52,10 @@ final class MyCoursesHelper $_courses = []; foreach ($_outer as $course) { - $_courses[$course['seminar_id']] = $course; + if(!empty($course['sem_number'])) { + $_courses[$course['seminar_id']] = $course; + } + if (!empty($course['children']) && is_array($course['children'])) { foreach ($course['children'] as $child) { $_courses[$child['seminar_id']] = $child; @@ -180,9 +183,9 @@ final class MyCoursesHelper private function convertCourse($course) { - $is_teacher = in_array($course['user_status'], ['tutor', 'dozent']); + $is_teacher = !empty($course['user_status']) && in_array($course['user_status'], ['tutor', 'dozent']); - $avatar = $course['sem_class']['studygroup_mode'] + $avatar = !empty($course['sem_class']['studygroup_mode']) ? StudygroupAvatar::getAvatar($course['seminar_id']) : CourseAvatar::getAvatar($course['seminar_id']); @@ -199,20 +202,44 @@ final class MyCoursesHelper } } + if (!empty($course['children']) && empty($course['seminar_id'])) { + foreach ($course['children'] as $_course) { + return [ + 'id' => (string) $_course['seminar_id'], + 'name' => (string) $_course['name'], + 'number' => (string) $_course['veranstaltungsnummer'], + 'group' => !empty($_course['gruppe']) ? (int) $_course['gruppe'] : '', + 'admission_binding' => !empty($_course['admission_binding']), + 'children' => array_column($_course['children'] ?? [], 'seminar_id'), + 'parent' => $_course['parent_course'] ?? null, + + 'is_teacher' => !empty($_course['user_status']) && in_array($_course['user_status'], ['tutor', 'dozent']), + 'is_studygroup' => !empty($_course['sem_class']['studygroup_mode']), + 'is_hidden' => empty($_course['visible']), + 'is_deputy' => !empty($_course['is_deputy']), + 'is_group' => !empty($_course['is_group']), + + 'avatar' => $avatar->getURL(Avatar::MEDIUM), + + 'navigation' => $this->reduceNavigation($_course['navigation'] ?? null), + 'extra_navigation' => $extra_navigation, + ]; + } + } return [ 'id' => (string) $course['seminar_id'], 'name' => (string) $course['name'], 'number' => (string) $course['veranstaltungsnummer'], - 'group' => (int) $course['gruppe'], - 'admission_binding' => (bool) $course['admission_binding'], + 'group' => !empty($course['gruppe']) ? (int) $course['gruppe'] : '', + 'admission_binding' => !empty($course['admission_binding']), 'children' => array_column($course['children'] ?? [], 'seminar_id'), 'parent' => $course['parent_course'] ?? null, - 'is_teacher' => in_array($course['user_status'], ['tutor', 'dozent']), - 'is_studygroup' => (bool) $course['sem_class']['studygroup_mode'], - 'is_hidden' => !$course['visible'], - 'is_deputy' => (bool) $course['is_deputy'], - 'is_group' => (bool) $course['is_group'], + 'is_teacher' => !empty($course['user_status']) && in_array($course['user_status'], ['tutor', 'dozent']), + 'is_studygroup' => !empty($course['sem_class']['studygroup_mode']), + 'is_hidden' => empty($course['visible']), + 'is_deputy' => !empty($course['is_deputy']), + 'is_group' => !empty($course['is_group']), 'avatar' => $avatar->getURL(Avatar::MEDIUM), diff --git a/lib/classes/MyRealmModel.php b/lib/classes/MyRealmModel.php index 7ebb31c..5bb2faf 100644 --- a/lib/classes/MyRealmModel.php +++ b/lib/classes/MyRealmModel.php @@ -357,6 +357,19 @@ class MyRealmModel if ($course->isStudygroup()) { foreach ($course->connectedcourses as $connectedcourse) { if ($GLOBALS['perm']->have_studip_perm('user', $course->id)) { + if ($course->isOpenEnded()) { + if ($current_semester_nr >= $min_sem_key && $current_semester_nr <= $max_sem_key) { + $semester_assign[$connectedcourse->id] = $current_semester_nr; + } else { + $semester_assign[$connectedcourse->id] = $max_sem_key; + } + } else { + for ($i = $min_sem_key; $i <= $max_sem_key; $i += 1) { + if ($i >= $_course['sem_number'] && $i <= $_course['sem_number_end']) { + $semester_assign[$connectedcourse->id] = $i; + } + } + } $children[$connectedcourse->id][] = $_course; } } @@ -392,12 +405,12 @@ class MyRealmModel uasort($courses, function ($a, $b) { $extra_condition = 0; if (Config::get()->IMPORTANT_SEMNUMBER) { - $extra_condition = strcmp($a['number'], $b['number']); + $extra_condition = !empty($a['number']) && !empty($b['number']) && strcmp($a['number'], $b['number']); } - return ($a['gruppe'] - $b['gruppe']) + return (!empty($a['gruppe']) && !empty($b['gruppe']) && $a['gruppe'] - $b['gruppe']) ?: $extra_condition - ?: strcmp($a['temp_name'], $b['temp_name']); + ?: !empty($a['temp_name']) && !empty($b['temp_name']) && strcmp($a['temp_name'], $b['temp_name']); }); $sem_courses[$index] = $courses; } @@ -502,18 +515,20 @@ class MyRealmModel null ); - foreach ($course['tools'] as $tool) { - $studip_module = $tool->getStudipModule(); - if ( - !$studip_module - || $studip_module instanceof CoreAdmin - || $studip_module instanceof CoreStudygroupAdmin - ) { - continue; - } - if (Seminar_Perm::get()->have_studip_perm($tool->getVisibilityPermission(), $course_id, $user_id)) { - $activated_tools[$tool['plugin_id']]['studip_module'] = $studip_module; - $activated_tools[$tool['plugin_id']]['courses'][$course_id] = $course_id; + if (!empty($course['tools'])) { + foreach ($course['tools'] as $tool) { + $studip_module = $tool->getStudipModule(); + if ( + !$studip_module + || $studip_module instanceof CoreAdmin + || $studip_module instanceof CoreStudygroupAdmin + ) { + continue; + } + if (Seminar_Perm::get()->have_studip_perm($tool->getVisibilityPermission(), $course_id, $user_id)) { + $activated_tools[$tool['plugin_id']]['studip_module'] = $studip_module; + $activated_tools[$tool['plugin_id']]['courses'][$course_id] = $course_id; + } } } } |
