From 9bfede30d203fb44480212d94d3261e59dcb0925 Mon Sep 17 00:00:00 2001 From: noackorama <noackorama@gmail.com> Date: Fri, 3 Dec 2021 17:52:39 +0100 Subject: [PATCH] check SemClass for mandatory and forbidden plugins --- db/migrations/1.314_step_00349.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/db/migrations/1.314_step_00349.php b/db/migrations/1.314_step_00349.php index f6cba395026..51e8ae4e990 100644 --- a/db/migrations/1.314_step_00349.php +++ b/db/migrations/1.314_step_00349.php @@ -120,8 +120,16 @@ class Step00349 extends Migration $all_plugins = $db->fetchPairs("SELECT pluginclassname, pluginid FROM plugins"); - foreach ($db->query("SELECT seminar_id, status, modules FROM seminare") as $row) { + foreach ($db->query("SELECT seminar_id, status, modules, class FROM seminare LEFT JOIN sem_types ON sem_types.id = seminare.status") as $row) { $activated_plugins = $db->fetchPairs("SELECT plugins_activated.pluginid, state FROM `plugins_activated` INNER JOIN `plugins` USING(pluginid) WHERE range_id=? AND range_type='sem' ORDER BY navigationpos", [$row['seminar_id']]); + $sem_class = OldSemClass::getClasses()[$row['class']] ?: OldSemClass::getDefaultSemClass(); + foreach ($sem_class->getModules() as $sem_class_module => $sem_class_module_meta) { + if (!isset($studip_modules[$sem_class_module]) && isset($all_plugins[$sem_class_module])) { + if ($sem_class_module_meta['sticky']) { + $activated_plugins[$all_plugins[$sem_class_module]] = $sem_class_module_meta['activated'] ? '1' : '0'; + } + } + } $modules = $this->getLocalModules('sem', $row['modules'], $row['status']); $pos = 0; foreach ($modules as $pos => $module) { -- GitLab