diff options
-rw-r--r-- | inc/parserutils.php | 2 | ||||
-rw-r--r-- | inc/pluginutils.php | 11 |
2 files changed, 9 insertions, 4 deletions
diff --git a/inc/parserutils.php b/inc/parserutils.php index 414e2e3d6..9f8b88cb6 100644 --- a/inc/parserutils.php +++ b/inc/parserutils.php @@ -594,7 +594,7 @@ function & p_get_renderer($mode) { $Renderer = & new $rclass(); }else{ // Maybe a plugin is available? - $Renderer =& plugin_load('renderer',$rname); + $Renderer =& plugin_load('renderer',$rname, true); if(is_null($Renderer)){ msg("No renderer '$rname' found for mode '$mode'",-1); return null; diff --git a/inc/pluginutils.php b/inc/pluginutils.php index 55c03f4a5..100f781f2 100644 --- a/inc/pluginutils.php +++ b/inc/pluginutils.php @@ -60,16 +60,21 @@ function plugin_list($type='',$all=false){ * * @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 * @return objectreference the plugin object or null on failure */ -function &plugin_load($type,$name){ +function &plugin_load($type,$name,$new=false){ //we keep all loaded plugins available in global scope for reuse global $DOKU_PLUGINS; - //plugin already loaded? if(!empty($DOKU_PLUGINS[$type][$name])){ - return $DOKU_PLUGINS[$type][$name]; + if ($new) { + $class = $type.'_plugin_'.$name; + return class_exists($class) ? new $class : null; + } else { + return $DOKU_PLUGINS[$type][$name]; + } } //try to load the wanted plugin file |