From 0ea96f5fe459cadec3e0ff8e4d06e33f17af1756 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Wed, 3 Jan 2024 10:33:35 +0000
Subject: [PATCH] fixes #3569

Closes #3569

Merge request studip/studip!2458
---
 lib/plugins/engine/PluginManager.class.php | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/lib/plugins/engine/PluginManager.class.php b/lib/plugins/engine/PluginManager.class.php
index 39f4e870c4e..bb8a5635bb1 100644
--- a/lib/plugins/engine/PluginManager.class.php
+++ b/lib/plugins/engine/PluginManager.class.php
@@ -282,8 +282,20 @@ class PluginManager
         $state = $active ? 1 : 0;
         unset($this->plugins_activated_cache[$user_id]);
 
-        return $db->execute("REPLACE INTO plugins_activated (pluginid, range_type, range_id, state)
-	                          VALUES (?, 'user', ?, ?)", [$pluginid, $user_id, $state]);
+        $query = "REPLACE INTO plugins_activated (pluginid, range_type, range_id, state)
+                  VALUES (?, 'user', ?, ?)";
+        $result = $db->execute($query, [$pluginid, $user_id, $state]);
+
+        if ($result > 0) {
+            $plugin = $this->getPluginById($pluginid);
+            if ($active) {
+                call_user_func([get_class($plugin), 'onActivation'], $pluginid, $user_id);
+            } else {
+                call_user_func([get_class($plugin), 'onDeactivation'], $pluginid, $user_id);
+            }
+        }
+
+        return $result;
     }
 
     /**
-- 
GitLab