From e66e6c7ed1b39ab15b49c3601890ff63beb6a2f4 Mon Sep 17 00:00:00 2001 From: chris <chris@jalakai.co.uk> Date: Sun, 30 Apr 2006 17:23:08 +0200 Subject: [PATCH] improvements to common plugin i/f update comments to work with DokuWiki's auto generated API docs. slight restructure of configuration functions and comments - loadConfig now loads plugin config settings into $conf['plugin'][<plugin_name>] & $this->conf. These are aliases ensuring only one copy is stored. - readDefaultSettings() reads the plugin's conf/default.php darcs-hash:20060430152308-9b6ab-9ec53e79ce5b07405acb84d19d81df9dd609612e.gz --- lib/plugins/base.php | 89 ++++++++++++++++++++++++++---------------- lib/plugins/syntax.php | 85 ++++++++++++++++++++++------------------ 2 files changed, 103 insertions(+), 71 deletions(-) diff --git a/lib/plugins/base.php b/lib/plugins/base.php index 7f27942aa..f53c75444 100644 --- a/lib/plugins/base.php +++ b/lib/plugins/base.php @@ -19,6 +19,7 @@ class DokuWiki_Plugin { var $localised = false; // set to true by setupLocale() after loading language dependent strings var $lang = array(); // array to hold language dependent strings, best accessed via ->getLang() var $configloaded = false; // set to true by loadConfig() after loading plugin configuration variables + var $conf = array(); // array to hold plugin settings, best accessed via ->getConf() /** * General Info @@ -110,48 +111,62 @@ class DokuWiki_Plugin { // configuration methods /** - * getConf($id) + * getConf($setting) * * use this function to access plugin configuration variables */ - function getConf($id){ - global $conf; - - $plugin = $this->getPluginName(); - - if (!$this->configloaded){ - if ($pconf = $this->loadConfig() !== false){ - foreach ($pconf as $key => $value){ - if (isset($conf['plugin'][$plugin][$key])) continue; - $conf['plugin'][$plugin][$key] = $value; - } - $this->configloaded = true; - } - } + function getConf($setting){ + + if (!$this->configloaded){ $this->loadConfig(); } - return $conf['plugin'][$plugin][$id]; + return $this->conf[$setting]; } /** * loadConfig() - * reads all plugin configuration variables into $this->conf - * this function is automatically called by getConf() + * merges the plugin's default settings with any local settings + * this function is automatically called through getConf() */ function loadConfig(){ - + global $conf; + + $defaults = $this->readDefaultSettings(); + $plugin = $this->getPluginName(); + + foreach ($defaults as $key => $value) { + if (isset($conf['plugin'][$plugin][$key])) continue; + $conf['plugin'][$plugin][$key] = $value; + } + + $this->configloaded = true; + $this->conf =& $conf['plugin'][$plugin]; + } + + /** + * read the plugin's default configuration settings from conf/default.php + * this function is automatically called through getConf() + * + * @return array setting => value + */ + function readDefaultSettings() { + $path = DOKU_PLUGIN.$this->getPluginName().'/conf/'; $conf = array(); - - if (!@file_exists($path.'default.php')) return false; - - // load default config file - include($path.'default.php'); - + + if (@file_exists($path.'default.php')) { + include($path.'default.php'); + } + return $conf; } - + // standard functions for outputing email addresses and links // use these to avoid having to duplicate code to produce links in line with the installation configuration + + /** + * email + * standardised function to generate an email link according to obfuscation settings + */ function email($email, $name='', $class='', $more='') { if (!$email) return $name; $email = obfuscate($email); @@ -159,28 +174,34 @@ class DokuWiki_Plugin { $class = "class='".($class ? $class : 'mail')."'"; return "<a href='mailto:$email' $class title='$email' $more>$name</a>"; } - + + /** + * external_link + * standardised function to generate an external link according to conf settings + */ function external_link($link, $title='', $class='', $target='', $more='') { global $conf; - + $link = htmlentities($link); if (!$title) $title = $link; if (!$target) $target = $conf['target']['extern']; if ($conf['relnofollow']) $more .= ' rel="nofollow"'; - + if ($class) $class = " class='$class'"; if ($target) $target = " target='$target'"; if ($more) $more = " ".trim($more); - + return "<a href='$link'$class$target$more>$title</a>"; } - - // output text string through the parser, allows dokuwiki markup to be used - // very ineffecient for small pieces of data - try not to use + + /** + * output text string through the parser, allows dokuwiki markup to be used + * very ineffecient for small pieces of data - try not to use + */ function render($text, $format='xhtml') { return p_render($format, p_get_instructions($text),$info); } - + // deprecated functions function plugin_localFN($id) { return $this->localFN($id); } function plugin_locale_xhtml($id) { return $this->locale_xhtml($id); } diff --git a/lib/plugins/syntax.php b/lib/plugins/syntax.php index e5e6204c4..256bf7519 100644 --- a/lib/plugins/syntax.php +++ b/lib/plugins/syntax.php @@ -21,6 +21,7 @@ class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode { var $localised = false; // set to true by setupLocale() after loading language dependent strings var $lang = array(); // array to hold language dependent strings, best accessed via ->getLang() var $configloaded = false; // set to true by loadConfig() after loading plugin configuration variables + var $conf = array(); // array to hold plugin settings, best accessed via ->getConf() /** * General Info @@ -211,46 +212,56 @@ class DokuWiki_Syntax_Plugin extends Doku_Parser_Mode { $this->localised = true; } - // configuration methods - /** - * getConf($id) - * - * use this function to access plugin configuration variables - */ - function getConf($id){ - global $conf; - - $plugin = $this->getPluginName(); - - if (!$this->configloaded){ - if ($pconf = $this->loadConfig() !== false){ - foreach ($pconf as $key => $value){ - if (isset($conf['plugin'][$plugin][$key])) continue; - $conf['plugin'][$plugin][$key] = $value; - } - $this->configloaded = true; - } - } + // configuration methods + /** + * getConf($setting) + * + * use this function to access plugin configuration variables + */ + function getConf($setting){ + + if (!$this->configloaded){ $this->loadConfig(); } + + return $this->conf[$setting]; + } - return $conf['plugin'][$plugin][$id]; + /** + * loadConfig() + * merges the plugin's default settings with any local settings + * this function is automatically called through getConf() + */ + function loadConfig(){ + global $conf; + + $defaults = $this->readDefaultSettings(); + $plugin = $this->getPluginName(); + + foreach ($defaults as $key => $value) { + if (isset($conf['plugin'][$plugin][$key])) continue; + $conf['plugin'][$plugin][$key] = $value; } - - /** - * loadConfig() - * reads all plugin configuration variables into $this->conf - * this function is automatically called by getConf() - */ - function loadConfig(){ - $path = DOKU_PLUGIN.$this->getPluginName().'/conf/'; - $conf = array(); - - if (!@file_exists($path.'default.php')) return false; - - // load default config file + + $this->configloaded = true; + $this->conf =& $conf['plugin'][$plugin]; + } + + /** + * read the plugin's default configuration settings from conf/default.php + * this function is automatically called through getConf() + * + * @return array setting => value + */ + function readDefaultSettings() { + + $path = DOKU_PLUGIN.$this->getPluginName().'/conf/'; + $conf = array(); + + if (@file_exists($path.'default.php')) { include($path.'default.php'); - - return $conf; } - + + return $conf; + } + } //Setup VIM: ex: et ts=4 enc=utf-8 : -- GitLab