diff options
-rwxr-xr-x | include/plugin.php | 8 | ||||
-rwxr-xr-x | util/addons | 14 |
2 files changed, 21 insertions, 1 deletions
diff --git a/include/plugin.php b/include/plugin.php index 4545e1e8d..28d27619f 100755 --- a/include/plugin.php +++ b/include/plugin.php @@ -53,10 +53,15 @@ function unload_plugin($plugin){ * @return boolean */ function uninstall_plugin($plugin) { + unload_plugin($plugin); - if(! file_exists('addon/' . $plugin . '/' . $plugin . '.php')) + if(! file_exists('addon/' . $plugin . '/' . $plugin . '.php')) { + q("DELETE FROM addon WHERE aname = '%s' ", + dbesc($plugin) + ); return false; + } logger("Addons: uninstalling " . $plugin); //$t = @filemtime('addon/' . $plugin . '/' . $plugin . '.php'); @@ -73,6 +78,7 @@ function uninstall_plugin($plugin) { q("DELETE FROM addon WHERE aname = '%s' ", dbesc($plugin) ); + } /** diff --git a/util/addons b/util/addons index 150a7ca09..3d772bf73 100755 --- a/util/addons +++ b/util/addons @@ -106,9 +106,12 @@ if($argc == 3 && $argv[1] === 'install') { if($argc == 3 && $argv[1] === 'uninstall') { + $found = false; + if($plugins) { foreach($plugins as $p) { if($p[0] === $argv[2]) { + $found = true; if(! $p[1]) echo $p[0] . ' not installed.' . "\n"; elseif($p[2]['disabled']) @@ -125,6 +128,17 @@ if($argc == 3 && $argv[1] === 'uninstall') { } } + // force uninstall of addon which no longer exists + + if(! $found) { + $idx = array_search($argv[2], App::$plugins); + if ($idx !== false) + unset(App::$plugins[$idx]); + uninstall_plugin($argv[2]); + set_config("system","addon", implode(", ",App::$plugins)); + echo $argv[2] . ' uninstalled.' . "\n"; + } + killme(); } |