aboutsummaryrefslogtreecommitdiff
path: root/lib/classes
diff options
context:
space:
mode:
Diffstat (limited to 'lib/classes')
-rw-r--r--lib/classes/MyCoursesHelper.php47
-rw-r--r--lib/classes/MyRealmModel.php45
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;
+ }
}
}
}