aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndré Noack <noack@data-quest.de>2023-05-02 08:24:09 +0000
committerAndré Noack <noack@data-quest.de>2023-05-02 08:24:09 +0000
commit736c8d12156eceace76b4a53043b69edbc6e3996 (patch)
tree0b617cab219daca45ff926fe0cce7b30b93bc39e /lib
parent290e442357859b6b7a19432dd19a8704d4ec29c1 (diff)
Resolve #2594 "onActivation/onDeactivation wird für Plugins nicht aufgerufen wenn eine neue Veranstaltung angelegt wird oder ein Plugin zwangsweise aktiviert wird"
Closes #2594 Merge request studip/studip!1750
Diffstat (limited to 'lib')
-rw-r--r--lib/classes/SemClass.class.php18
-rw-r--r--lib/models/Course.class.php12
-rw-r--r--lib/models/Institute.class.php16
3 files changed, 11 insertions, 35 deletions
diff --git a/lib/classes/SemClass.class.php b/lib/classes/SemClass.class.php
index 862747f..cfd7bc0 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 429bb1b..315b52e 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 1ba4eb0..9e662cc 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()]);
+ }
}
/**