From 736c8d12156eceace76b4a53043b69edbc6e3996 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Noack?= <noack@data-quest.de> Date: Tue, 2 May 2023 08:24:09 +0000 Subject: [PATCH] =?UTF-8?q?Resolve=20#2594=20"onActivation/onDeactivation?= =?UTF-8?q?=20wird=20f=C3=BCr=20Plugins=20nicht=20aufgerufen=20wenn=20eine?= =?UTF-8?q?=20neue=20Veranstaltung=20angelegt=20wird=20oder=20ein=20Plugin?= =?UTF-8?q?=20zwangsweise=20aktiviert=20wird"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2594 Merge request studip/studip!1750 --- lib/classes/SemClass.class.php | 18 +++--------------- lib/models/Course.class.php | 12 +++--------- lib/models/Institute.class.php | 16 +++++----------- 3 files changed, 11 insertions(+), 35 deletions(-) diff --git a/lib/classes/SemClass.class.php b/lib/classes/SemClass.class.php index 862747f0696..cfd7bc03a74 100644 --- a/lib/classes/SemClass.class.php +++ b/lib/classes/SemClass.class.php @@ -147,16 +147,8 @@ class SemClass implements ArrayAccess $plugin = PluginManager::getInstance()->getPlugin($module); if ($plugin) { return Course::findEachBySQL(function ($course) use ($plugin) { - if (!$course->tools->findOneby('plugin_id', $plugin->getPluginId())) { - return ToolActivation::create([ - 'plugin_id' => $plugin->getPluginId(), - 'range_type' => 'course', - 'range_id' => $course->id - ]); - } else { - return 0; - } - }, + return PluginManager::getInstance()->setPluginActivated($plugin->getPluginId(), $course->id, true); + }, "seminare.status IN (?)", [array_keys($this->getSemTypes())]); } else { @@ -173,11 +165,7 @@ class SemClass implements ArrayAccess $plugin = PluginManager::getInstance()->getPlugin($module); if ($plugin) { return Course::findEachBySQL(function ($course) use ($plugin) { - if ($tool = $course->tools->findOneby('plugin_id', $plugin->getPluginId())) { - return $tool->delete(); - } else { - return 0; - } + return PluginManager::getInstance()->setPluginActivated($plugin->getPluginId(), $course->id, false); }, "seminare.status IN (?)", [array_keys($this->getSemTypes())]); diff --git a/lib/models/Course.class.php b/lib/models/Course.class.php index 429bb1b8459..315b52ede14 100644 --- a/lib/models/Course.class.php +++ b/lib/models/Course.class.php @@ -1004,15 +1004,9 @@ class Course extends SimpleORMap implements Range, PrivacyObject, StudipItem, Fe public function setDefaultTools() { $this->tools = []; - foreach (array_values($this->getSemClass()->getActivatedModuleObjects()) as $pos => $module) { - $this->tools[] = ToolActivation::create( - [ - 'plugin_id' => $module->getPluginId(), - 'range_type' => 'course', - 'range_id' => $this->id, - 'position' => $pos - ] - ); + foreach (array_values($this->getSemClass()->getActivatedModuleObjects()) as $module) { + PluginManager::getInstance()->setPluginActivated($module->getPluginId(), $this->id, true); + $this->tools[] = ToolActivation::find([$this->id, $module->getPluginId()]); } } diff --git a/lib/models/Institute.class.php b/lib/models/Institute.class.php index 1ba4eb08a86..9e662cc32e2 100644 --- a/lib/models/Institute.class.php +++ b/lib/models/Institute.class.php @@ -320,17 +320,11 @@ class Institute extends SimpleORMap implements Range */ public function setDefaultTools() { - $this->tools = []; - foreach (array_values($this->getSemClass()->getActivatedModuleObjects()) as $pos => $module) { - $this->tools[] = ToolActivation::create( - [ - 'plugin_id' => $module->getPluginId(), - 'range_type' => 'institute', - 'range_id' => $this->id, - 'position' => $pos - ] - ); - } + $this->tools = []; + foreach (array_values($this->getSemClass()->getActivatedModuleObjects()) as $module) { + PluginManager::getInstance()->setPluginActivated($module->getPluginId(), $this->id, true); + $this->tools[] = ToolActivation::find([$this->id, $module->getPluginId()]); + } } /** -- GitLab