summaryrefslogtreecommitdiff
path: root/inc/pluginutils.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/pluginutils.php')
-rw-r--r--inc/pluginutils.php11
1 files changed, 8 insertions, 3 deletions
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