aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+studip@gmail.com>2024-04-05 07:32:39 +0000
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2024-04-05 07:32:39 +0000
commitce29a764567cfdd792e1fe7b5e0bfb06d2f278e3 (patch)
treee91c5c198b31753d70a53dd56354f9ee6ecba437 /lib
parent6e4031571ca4ce1ed59bc1d936fa4c473375b8d1 (diff)
fixes #3946
Closes #3946 Merge request studip/studip!2811
Diffstat (limited to 'lib')
-rw-r--r--lib/classes/MyRealmModel.php2
-rw-r--r--lib/models/Course.class.php22
2 files changed, 16 insertions, 8 deletions
diff --git a/lib/classes/MyRealmModel.php b/lib/classes/MyRealmModel.php
index f968026..0279fe5 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 59f9b82..bfea7a0 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);
});
}