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');