diff --git a/inc/plugincontroller.class.php b/inc/plugincontroller.class.php index 61f460414eab05949a795ef8f32228be87ec7881..ad394e11fb0ef4fb315d59c3f5a9084294febef2 100644 --- a/inc/plugincontroller.class.php +++ b/inc/plugincontroller.class.php @@ -55,15 +55,23 @@ class Doku_Plugin_Controller { * * @author Andreas Gohr <andi@splitbrain.org> * - * @param $type string type of plugin to load - * @param $name string name of the plugin to load - * @param $new bool true to return a new instance of the plugin, false to use an already loaded instance + * @param $type string type of plugin to load + * @param $name string name of the plugin to load + * @param $new bool true to return a new instance of the plugin, false to use an already loaded instance + * @param $disabled bool true to load even disabled plugins * @return objectreference the plugin object or null on failure */ - function &load($type,$name,$new=false){ + function &load($type,$name,$new=false,$disabled=false){ //we keep all loaded plugins available in global scope for reuse global $DOKU_PLUGINS; + list($plugin,$component) = $this->_splitName($name); + + // check if disabled + if(!$disabled && $this->isdisabled($plugin)){ + return null; + } + //plugin already loaded? if(!empty($DOKU_PLUGINS[$type][$name])){ if ($new || !$DOKU_PLUGINS[$type][$name]->isSingleton()) { @@ -75,7 +83,6 @@ class Doku_Plugin_Controller { } //try to load the wanted plugin file - list($plugin,$component) = $this->_splitName($name); $dir = $this->get_directory($plugin); $file = $component ? "$type/$component.php" : "$type.php"; diff --git a/inc/pluginutils.php b/inc/pluginutils.php index da0704bec8bc62c5c1ea3a5c47c5c9804aa7ce3c..85bcaee1e80b09dcfb234b718a65d1503e7a2a95 100644 --- a/inc/pluginutils.php +++ b/inc/pluginutils.php @@ -16,9 +16,9 @@ function plugin_list($type='',$all=false) { global $plugin_controller; return $plugin_controller->getList($type,$all); } -function &plugin_load($type,$name,$new=false) { +function &plugin_load($type,$name,$new=false,$disabled=false) { global $plugin_controller; - return $plugin_controller->load($type,$name,$new); + return $plugin_controller->load($type,$name,$new,$disabled); } function plugin_isdisabled($plugin) { global $plugin_controller; diff --git a/lib/plugins/plugin/classes/ap_info.class.php b/lib/plugins/plugin/classes/ap_info.class.php index fcadb459964c60a65094f8917051f169487b7011..cebbf090a2d916e43830ef85bf5d0f587b0f61e9 100644 --- a/lib/plugins/plugin/classes/ap_info.class.php +++ b/lib/plugins/plugin/classes/ap_info.class.php @@ -15,7 +15,7 @@ class ap_info extends ap_manage { foreach ($component_list as $component) { - if ($obj = & plugin_load($component['type'],$component['name']) === NULL) continue; + if ($obj = & plugin_load($component['type'],$component['name'],false,true) === NULL) continue; $compname = explode('_',$component['name']); if($compname[1]){