diff --git a/app/controllers/my_courses.php b/app/controllers/my_courses.php index c1374707a975382400f612a024e379543746aacf..5e4c0e9348dea4e6ad4301ef310b754adc2cdd6b 100644 --- a/app/controllers/my_courses.php +++ b/app/controllers/my_courses.php @@ -190,7 +190,7 @@ class MyCoursesController extends AuthenticatedController LEFT JOIN `mvv_lvgruppe` AS ml ON (mls.`lvgruppe_id` = ml.`lvgruppe_id`) LEFT JOIN `mvv_lvgruppe_modulteil` AS mlm on(mls.`lvgruppe_id` = mlm.`lvgruppe_id`) LEFT JOIN `mvv_modulteil` AS mmt ON (mlm.`modulteil_id` = mmt.`modulteil_id`) - LEFT JOIN `mvv_modul` AS mm ON (mmt.`modul_id` = mm.`modul_id`)"; + LEFT JOIN `mvv_modul` AS mm ON (mmt.`modul_id` = mm.`modul_id` AND mm.`stat` = 'genehmigt')"; } diff --git a/lib/classes/MyRealmModel.php b/lib/classes/MyRealmModel.php index f968026a6188ab7a424e63504cf15e735ea312f2..0279fe54ab89ce48462bc2de41c60d55989f777a 100644 --- a/lib/classes/MyRealmModel.php +++ b/lib/classes/MyRealmModel.php @@ -788,7 +788,7 @@ class MyRealmModel foreach ($sem_courses as $sem_key => $collection) { $_tmp_courses[$sem_key] = []; foreach ($collection as $course) { - $modules = Course::getMVVModulesForCourseId($course['seminar_id']); + $modules = Course::getMVVModulesForCourseId($course['seminar_id'], ['genehmigt']); if ($modules) { $modules = array_map(function (Modul $module) { return $module->getDisplayName(); diff --git a/lib/models/Course.class.php b/lib/models/Course.class.php index 866b67de57d2a05440a1c66030bd13681d2aa3e6..d337063cac57eb0aee76f474f1443049e02e6b36 100644 --- a/lib/models/Course.class.php +++ b/lib/models/Course.class.php @@ -306,19 +306,27 @@ class Course extends SimpleORMap implements Range, PrivacyObject, StudipItem, Fe /** * Returns the associated mvv modules for a given course id. * - * @param string $course_id + * @param string $course_id + * @param array|null $statusses Limit the results by a given module status * @return Modul[] */ - public static function getMVVModulesForCourseId(string $course_id): array + public static function getMVVModulesForCourseId(string $course_id, ?array $statusses = null): array { $query = "SELECT mvv_modul.* FROM mvv_lvgruppe_seminar - JOIN `mvv_lvgruppe` on(`mvv_lvgruppe_seminar`.`lvgruppe_id` = `mvv_lvgruppe`.`lvgruppe_id`) - JOIN `mvv_lvgruppe_modulteil` on(`mvv_lvgruppe_seminar`.`lvgruppe_id` = `mvv_lvgruppe_modulteil`.`lvgruppe_id`) - JOIN `mvv_modulteil` on(`mvv_lvgruppe_modulteil`.`modulteil_id` = `mvv_modulteil`.`modulteil_id`) - JOIN `mvv_modul` on(`mvv_modulteil`.`modul_id` = `mvv_modul`.`modul_id`) + JOIN `mvv_lvgruppe` ON (`mvv_lvgruppe_seminar`.`lvgruppe_id` = `mvv_lvgruppe`.`lvgruppe_id`) + JOIN `mvv_lvgruppe_modulteil` ON (`mvv_lvgruppe_seminar`.`lvgruppe_id` = `mvv_lvgruppe_modulteil`.`lvgruppe_id`) + JOIN `mvv_modulteil` ON (`mvv_lvgruppe_modulteil`.`modulteil_id` = `mvv_modulteil`.`modulteil_id`) + JOIN `mvv_modul` ON (`mvv_modulteil`.`modul_id` = `mvv_modul`.`modul_id`) WHERE seminar_id = ?"; - return DBManager::get()->fetchAll($query, [$course_id], function ($row) { + $parameters = [$course_id]; + + if ($statusses !== null) { + $query .= ' AND `mvv_modul`.`stat` IN (?)'; + $parameters[] = $statusses; + } + + return DBManager::get()->fetchAll($query, $parameters, function ($row) { return Modul::buildExisting($row); }); }