diff --git a/lib/classes/SemClass.class.php b/lib/classes/SemClass.class.php index 862747f06964f2bbab49704d5d4db47c1cec5810..cfd7bc03a740f8b6ec8aef6e67bfa64033c95409 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 429bb1b8459776549d1062a4d9074d7604cf9ebe..315b52ede146581520bbfd1f97d496db72bcc7b4 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 1ba4eb08a86d52aa87a186368261e9a2c41d2980..9e662cc32e2e026973fcba978aa087de58d75ad0 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()]); + } } /**