From 3e7dffb6765f1d3120fd8fb58bb38c70c9dddcd6 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Sat, 3 Feb 2018 12:50:07 -0800 Subject: decomplicate cont. --- boot.php | 50 +-------------------------------------------- include/plugin.php | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 49 deletions(-) diff --git a/boot.php b/boot.php index 57d1d18f9..15487d3f0 100755 --- a/boot.php +++ b/boot.php @@ -1450,58 +1450,10 @@ function check_config() { $x = new \Zotlabs\Lib\DB_Upgrade(DB_UPDATE_VERSION); - /** - * - * Synchronise plugins: - * - * App::$config['system']['addon'] contains a comma-separated list of names - * of plugins/addons which are used on this system. - * Go through the database list of already installed addons, and if we have - * an entry, but it isn't in the config list, call the unload procedure - * and mark it uninstalled in the database (for now we'll remove it). - * Then go through the config list and if we have a plugin that isn't installed, - * call the install procedure and add it to the database. - * - */ - - $r = q("SELECT * FROM addon WHERE installed = 1"); - if($r) - $installed = $r; - else - $installed = array(); - - $plugins = get_config('system', 'addon'); - $plugins_arr = array(); - - if($plugins) - $plugins_arr = explode(',', str_replace(' ', '', $plugins)); - - App::$plugins = $plugins_arr; - - $installed_arr = array(); - - if(count($installed)) { - foreach($installed as $i) { - if(! in_array($i['aname'], $plugins_arr)) { - unload_plugin($i['aname']); - } - else { - $installed_arr[] = $i['aname']; - } - } - } - - if(count($plugins_arr)) { - foreach($plugins_arr as $p) { - if(! in_array($p, $installed_arr)) { - load_plugin($p); - } - } - } + plugins_sync(); load_hooks(); - check_for_new_perms(); check_cron_broken(); diff --git a/include/plugin.php b/include/plugin.php index 67157dee7..f452d8342 100755 --- a/include/plugin.php +++ b/include/plugin.php @@ -179,6 +179,66 @@ function reload_plugins() { } +function plugins_installed_list() { + + $r = q("select * from addon where installed = 1 order by aname asc"); + return(($r) ? ids_to_array($r,'aname') : []); +} + + +function plugins_sync() { + + /** + * + * Synchronise plugins: + * + * App::$config['system']['addon'] contains a comma-separated list of names + * of plugins/addons which are used on this system. + * Go through the database list of already installed addons, and if we have + * an entry, but it isn't in the config list, call the unload procedure + * and mark it uninstalled in the database (for now we'll remove it). + * Then go through the config list and if we have a plugin that isn't installed, + * call the install procedure and add it to the database. + * + */ + + $installed = plugins_installed_list(); + + $plugins = get_config('system', 'addon', ''); + + $plugins_arr = explode(',', $plugins); + + // array_trim is in include/text.php + + if(! array_walk($plugins_arr,'array_trim')) + return; + + App::$plugins = $plugins_arr; + + $installed_arr = []; + + if(count($installed)) { + foreach($installed as $i) { + if(! in_array($i, $plugins_arr)) { + unload_plugin($i); + } + else { + $installed_arr[] = $i; + } + } + } + + if(count($plugins_arr)) { + foreach($plugins_arr as $p) { + if(! in_array($p, $installed_arr)) { + load_plugin($p); + } + } + } + +} + + /** * @brief Get a list of non hidden addons. * -- cgit v1.2.3