diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pluginlist.php | 13 | ||||
-rw-r--r-- | lib/statusnet.php | 26 |
2 files changed, 27 insertions, 12 deletions
diff --git a/lib/pluginlist.php b/lib/pluginlist.php index 07a17ba39..0e1a81249 100644 --- a/lib/pluginlist.php +++ b/lib/pluginlist.php @@ -154,11 +154,13 @@ class PluginListItem extends Widget */ protected function getControlForm() { - $key = 'disable-' . $this->plugin; - if (common_config('plugins', $key)) { - return new PluginEnableForm($this->out, $this->plugin); - } else { + $enabled = array_key_exists($this->plugin, StatusNet::getPlugins()); + $disabled = common_config('plugins', 'disable-'.$this->plugin); + + if ( $enabled && (!$disabled) ) { // then return new PluginDisableForm($this->out, $this->plugin); + } else { + return new PluginEnableForm($this->out, $this->plugin); } } @@ -204,8 +206,7 @@ class PluginListItem extends Widget protected static function getPluginVersions() { if (!is_array(self::$versions)) { - $versions = array(); - Event::handle('PluginVersion', array(&$versions)); + $versions = common_plugindata(); self::$versions = $versions; } return self::$versions; diff --git a/lib/statusnet.php b/lib/statusnet.php index f8bf87960..63d8cb3da 100644 --- a/lib/statusnet.php +++ b/lib/statusnet.php @@ -34,6 +34,25 @@ class StatusNet protected static $plugins = array(); /** + * Return a list of possible filenames that plugin $name can be in. + * + * @param string $name class name & plugin file/subdir name + */ + public static function pluginFiles($name) { + $name = ucfirst($name); + $pluginclass = "{$name}Plugin"; + + $files = array("local/plugins/{$pluginclass}.php", + "local/plugins/{$name}/{$pluginclass}.php", + "local/{$pluginclass}.php", + "local/{$name}/{$pluginclass}.php", + "plugins/{$pluginclass}.php", + "plugins/{$name}/{$pluginclass}.php"); + + return $files; + } + + /** * Configure and instantiate a plugin into the current configuration. * Class definitions will be loaded from standard paths if necessary. * Note that initialization events won't be fired until later. @@ -50,12 +69,7 @@ class StatusNet if (!class_exists($pluginclass)) { - $files = array("local/plugins/{$pluginclass}.php", - "local/plugins/{$name}/{$pluginclass}.php", - "local/{$pluginclass}.php", - "local/{$name}/{$pluginclass}.php", - "plugins/{$pluginclass}.php", - "plugins/{$name}/{$pluginclass}.php"); + $files = self::pluginFiles($name); foreach ($files as $file) { $fullpath = INSTALLDIR.'/'.$file; |