diff --git a/lib/statusnet.php b/lib/statusnet.php index eba9ab9b8e..2aa73486eb 100644 --- a/lib/statusnet.php +++ b/lib/statusnet.php @@ -31,6 +31,7 @@ class StatusNet { protected static $have_config; protected static $is_api; + protected static $plugins = array(); /** * Configure and instantiate a plugin into the current configuration. @@ -74,9 +75,22 @@ class StatusNet $inst->$aname = $avalue; } } + + // Record activated plugins for later display/config dump + self::$plugins[] = array($name, $attrs); + return true; } + /** + * Get a list of activated plugins in this process. + * @return array of (string $name, array $args) pairs + */ + public static function getActivePlugins() + { + return self::$plugins; + } + /** * Initialize, or re-initialize, StatusNet global configuration * and plugins. @@ -232,6 +246,7 @@ class StatusNet global $_server, $_path, $config; Event::clearHandlers(); + self::$plugins = array(); // try to figure out where we are. $server and $path // can be set by including module, else we guess based diff --git a/scripts/showplugins.php b/scripts/showplugins.php new file mode 100755 index 0000000000..058393b0ee --- /dev/null +++ b/scripts/showplugins.php @@ -0,0 +1,38 @@ +#!/usr/bin/env php +. + */ + +define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); + +require_once INSTALLDIR.'/scripts/commandline.inc'; + +foreach (StatusNet::getActivePlugins() as $data) { + list($plugin, $args) = $data; + echo "$plugin: "; + if ($args === null) { + echo "(no args)\n"; + } else { + foreach ($args as $arg => $val) { + echo "\n $arg: "; + var_export($val); + } + echo "\n"; + } + echo "\n"; +}