diff options
Diffstat (limited to 'src/controllers/Plugins.class.php')
-rw-r--r-- | src/controllers/Plugins.class.php | 57 |
1 files changed, 56 insertions, 1 deletions
diff --git a/src/controllers/Plugins.class.php b/src/controllers/Plugins.class.php index 40d3fc0..e2b500c 100644 --- a/src/controllers/Plugins.class.php +++ b/src/controllers/Plugins.class.php @@ -1,5 +1,7 @@ <?php require_once('Login.class.php'); +require_once('Plugin.class.php'); +require_once('PluginManager.class.php'); Router::register('plugins', 'Plugins'); @@ -10,7 +12,60 @@ class Plugins extends Controller { $this->http401($routed, $remainder); return; } - // TODO + + $method = $_SERVER['REQUEST_METHOD']; + switch ($method) { + case 'PUT': $_POST = $_PUT; + case 'POST': + // We're PUTing an updated user index. + $this->update(); + break; + } + $this->show_index(); + } + + private function update() { + global $mm; + $db = $mm->database(); + + if (isset($_POST['plugins'])) { + $string = $db->arrayToValue($_POST['plugins']); + $db->setSysConf('plugins', $string); + } + + if (isset($_POST['config'])) { + foreach ($_POST['config'] as $plugin_name => $plugin) { + foreach ($plugin as $param => $value) { + $db->setPluginConf($plugin_name, + $param, + $value); + } + } + } + } + + private function show_index() { + global $mm; $pm = $mm->pluginManager(); + $all_plugins = $pm->listPlugins(); + $enabled_plugins = $pm->getActivePlugins(); + + $plugin_data = array(); + foreach ($all_plugins as $plugin_name) { + $plugin = array(); + $plugin['name'] = $plugin_name; + $plugin['key'] = 'config['.$plugin_name.']'; + $plugin['active'] = + in_array($plugin_name, $enabled_plugins); + $plugin['description'] = + $pm->staticHook($plugin_name, 'description'); + $plugin['config'] = + $pm->staticHook($plugin_name, 'configList'); + $plugin_data[] = $plugin; + } + + $vars = array(); + $vars['plugins'] = $plugin_data; + $this->showView('plugins/index', $vars); } public function http401($routed, $remainder) { |