]> git.mxchange.org Git - friendica.git/commitdiff
enable/disable plugins from admin page
authorFabio Comuni <fabrix.xm@gmail.com>
Tue, 14 Jun 2011 09:16:27 +0000 (11:16 +0200)
committerFabio Comuni <fabrix.xm@gmail.com>
Tue, 14 Jun 2011 09:16:27 +0000 (11:16 +0200)
boot.php
images/icons.png
mod/admin.php

index 8edc749109eb3debb1b74a1b8201c526fa94e28b..42b0ca41e67f4c38ece559aaca18f8b84876f367 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -453,6 +453,37 @@ function system_unavailable() {
        killme();
 }}
 
+
+// install and uninstall plugin
+if (! function_exists('uninstall_plugin')){
+function uninstall_plugin($plugin){
+       logger("Addons: uninstalling " . $plugin);
+       q("DELETE FROM `addon` WHERE `name` = '%s' LIMIT 1",
+               dbesc($plugin)
+       );
+
+       @include_once('addon/' . $plugin . '/' . $plugin . '.php');
+       if(function_exists($plugin . '_uninstall')) {
+               $func = $plugin . '_uninstall';
+               $func();
+       }
+}}
+
+if (! function_exists('install_plugin')){
+function install_plugin($plugin){
+       logger("Addons: installing " . $plugin);
+       $t = filemtime('addon/' . $plugin . '/' . $plugin . '.php');
+       @include_once('addon/' . $plugin . '/' . $plugin . '.php');
+       if(function_exists($plugin . '_install')) {
+               $func = $plugin . '_install';
+               $func();
+               $r = q("INSERT INTO `addon` (`name`, `installed`, `timestamp`) VALUES ( '%s', 1, %d ) ",
+                       dbesc($plugin),
+                       intval($t)
+               );
+       }
+}}
+
 // Primarily involved with database upgrade, but also sets the 
 // base url for use in cmdline programs which don't have
 // $_SERVER variables, and synchronising the state of installed plugins.
@@ -538,16 +569,7 @@ function check_config(&$a) {
        if(count($installed)) {
                foreach($installed as $i) {
                        if(! in_array($i['name'],$plugins_arr)) {
-                               logger("Addons: uninstalling " . $i['name']);
-                               q("DELETE FROM `addon` WHERE `id` = %d LIMIT 1",
-                                       intval($i['id'])
-                               );
-
-                               @include_once('addon/' . $i['name'] . '/' . $i['name'] . '.php');
-                               if(function_exists($i['name'] . '_uninstall')) {
-                                       $func = $i['name'] . '_uninstall';
-                                       $func();
-                               }
+                               uninstall_plugin($i['name']);
                        }
                        else
                                $installed_arr[] = $i['name'];
@@ -557,17 +579,7 @@ function check_config(&$a) {
        if(count($plugins_arr)) {
                foreach($plugins_arr as $p) {
                        if(! in_array($p,$installed_arr)) {
-                               logger("Addons: installing " . $p);
-                               $t = filemtime('addon/' . $p . '/' . $p . '.php');
-                               @include_once('addon/' . $p . '/' . $p . '.php');
-                               if(function_exists($p . '_install')) {
-                                       $func = $p . '_install';
-                                       $func();
-                                       $r = q("INSERT INTO `addon` (`name`, `installed`, `timestamp`) VALUES ( '%s', 1, %d ) ",
-                                               dbesc($p),
-                                               intval($t)
-                                       );
-                               }
+                               install_plugin($p);
                        }
                }
        }
index 4c4c00b8a5e2065d3c88408157b526bcdff06402..fee7781c84240db21d26cd62837a82fb0b99a1ea 100644 (file)
Binary files a/images/icons.png and b/images/icons.png differ
index f9d248210d414e9fd4323b0b129fd9b2cb40306a..054b49a2117da46665c9cfdc52b3c0aaf1aaaa2b 100644 (file)
@@ -310,7 +310,58 @@ function admin_page_users(&$a){
 
 function admin_page_plugins(&$a){
        
-       /* all plugins */
+       /**
+        * Single plugin
+        */
+       if ($a->argc == 3){
+               $plugin = $a->argv[2];
+               if (!is_file("addon/$plugin/$plugin.php")){
+                       notice( t("Item not found.") );
+                       return;
+               }
+               
+               if (x($_GET,"a") && $_GET['a']=="t"){
+                       // Toggle plugin status
+                       $idx = array_search($plugin, $a->plugins);
+                       if ($idx){
+                               unset($a->plugins[$idx]);
+                               uninstall_plugin($plugin);
+                       } else {
+                               $a->plugins[] = $plugin;
+                               install_plugin($plugin);
+                       }
+                       set_config("system","addon", implode(", ",$a->plugins));
+                       goaway($a->get_baseurl() . '/admin/plugins' );
+                       return; // NOTREACHED   
+               }
+               // display plugin details
+               
+
+               if (in_array($plugin, $a->plugins)){
+                       $status="on"; $action= t("Disable");
+               } else {
+                       $status="off"; $action= t("Enable");
+               }
+               
+               $t = get_markup_template("admin_plugins_details.tpl");
+               return replace_macros($t, array(
+                       '$title' => t('Administration'),
+                       '$page' => t('Plugins'),
+                       '$toggle' => t('Toggle'),
+                       '$baseurl' => $a->get_baseurl(),
+               
+                       '$plugin' => $plugin,
+                       '$status' => $status,
+                       '$action' => $action
+               ));
+       } 
+        
+        
+       
+       /**
+        * List plugins
+        */
+       
        $plugins = array();
        $files = glob("addon/*/");
        if($files) {