--- /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 @@
+<?php
+// vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4:
+/**
+ * Base rendering class for parsed and tokenized text.
+ *
+ * PHP versions 4 and 5
+ *
+ * @category Text
+ * @package Text_Wiki
+ * @author Paul M. Jones <pmjones@php.net>
+ * @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 <pmjones@php.net>
+ * @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);
+ }
+}
+?>