From 0d37e07a0dc1246f1fc349c3a5ad93ceb9422c13 Mon Sep 17 00:00:00 2001 From: slawkens Date: Thu, 9 Nov 2017 11:31:02 +0100 Subject: [PATCH] * (fix) remove hooks from db on plugin deinstall --- system/libs/plugins.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/system/libs/plugins.php b/system/libs/plugins.php index ce82db72..13b84ab0 100644 --- a/system/libs/plugins.php +++ b/system/libs/plugins.php @@ -138,7 +138,7 @@ class Plugins { } public static function uninstall($plugin_name) { - global $cache; + global $cache, $db; $filename = BASE . 'plugins/' . $plugin_name . '.json'; if(!file_exists($filename)) { @@ -166,6 +166,20 @@ class Plugins { } } + if (isset($plugin_info['hooks'])) { + foreach ($plugin_info['hooks'] as $_name => $info) { + if (defined('HOOK_'. $info['type'])) { + $hook = constant('HOOK_'. $info['type']); + $query = $db->query('SELECT `id` FROM `' . TABLE_PREFIX . 'hooks` WHERE `name` = ' . $db->quote($_name) . ';'); + if ($query->rowCount() == 1) { // found something + $query = $query->fetch(); + $db->delete(TABLE_PREFIX . 'hooks', array('id' => (int)$query['id'])); + } + } else + self::$warnings[] = 'Unknown event type: ' . $info['type']; + } + } + if($success) { if($cache->enabled()) { $cache->delete('templates');