diff -r 902822492a68 -r fe660c52c48f includes/wikiengine/Render.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/includes/wikiengine/Render.php Wed Jun 13 16:07:17 2007 -0400 @@ -0,0 +1,217 @@ + + * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 + * @version CVS: $Id: Render.php,v 1.9 2006/02/17 05:42:55 toggg Exp $ + * @link http://pear.php.net/package/Text_Wiki + */ + +/** + * Base rendering class for parsed and tokenized text. + * + * @category Text + * @package Text_Wiki + * @author Paul M. Jones + * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Wiki + */ +class Text_Wiki_Render { + + + /** + * + * Configuration options for this render rule. + * + * @access public + * + * @var string + * + */ + + var $conf = array(); + + + /** + * + * The name of this rule's format. + * + * @access public + * + * @var string + * + */ + + var $format = null; + + + /** + * + * The name of this rule's token array elements. + * + * @access public + * + * @var string + * + */ + + var $rule = null; + + + /** + * + * A reference to the calling Text_Wiki object. + * + * This is needed so that each rule has access to the same source + * text, token set, URLs, interwiki maps, page names, etc. + * + * @access public + * + * @var object + */ + + var $wiki = null; + + + /** + * + * Constructor for this render format or rule. + * + * @access public + * + * @param object &$obj The calling "parent" Text_Wiki object. + * + */ + + function Text_Wiki_Render(&$obj) + { + // keep a reference to the calling Text_Wiki object + $this->wiki =& $obj; + + // get the config-key-name for this object, + // strip the Text_Wiki_Render_ part + // 01234567890123456 + $tmp = get_class($this); + $tmp = substr($tmp, 17); + + // split into pieces at the _ mark. + // first part is format, second part is rule. + $part = explode('_', $tmp); + $this->format = isset($part[0]) ? ucwords(strtolower($part[0])) : null; + $this->rule = isset($part[1]) ? ucwords(strtolower($part[1])) : null; + + // is there a format but no rule? + // then this is the "main" render object, with + // pre() and post() methods. + if ($this->format && ! $this->rule && + isset($this->wiki->formatConf[$this->format]) && + is_array($this->wiki->formatConf[$this->format])) { + + // this is a format render object + $this->conf = array_merge( + $this->conf, + $this->wiki->formatConf[$this->format] + ); + + } + + // is there a format and a rule? + if ($this->format && $this->rule && + isset($this->wiki->renderConf[$this->format][$this->rule]) && + is_array($this->wiki->renderConf[$this->format][$this->rule])) { + + // this is a rule render object + $this->conf = array_merge( + $this->conf, + $this->wiki->renderConf[$this->format][$this->rule] + ); + } + } + + + /** + * + * Simple method to safely get configuration key values. + * + * @access public + * + * @param string $key The configuration key. + * + * @param mixed $default If the key does not exist, return this value + * instead. + * + * @return mixed The configuration key value (if it exists) or the + * default value (if not). + * + */ + + function getConf($key, $default = null) + { + if (isset($this->conf[$key])) { + return $this->conf[$key]; + } else { + return $default; + } + } + + + /** + * + * Simple method to wrap a configuration in an sprintf() format. + * + * @access public + * + * @param string $key The configuration key. + * + * @param string $format The sprintf() format string. + * + * @return mixed The formatted configuration key value (if it exists) + * or null (if it does not). + * + */ + + function formatConf($format, $key) + { + if (isset($this->conf[$key])) { + return sprintf($format, $this->conf[$key]); + } else { + return null; + } + } + + /** + * Default method to render url + * + * @access public + * @param string $urlChunk a part of an url to render + * @return rendered url + * + */ + + function urlEncode($urlChunk) + { + return rawurlencode($urlChunk); + } + + /** + * Default method to render text (htmlspecialchars) + * + * @access public + * @param string $text the text to render + * @return rendered text + * + */ + + function textEncode($text) + { + return htmlspecialchars($text); + } +} +?>