home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Servidores / xampp-win32-1.6.7-installer.exe / php / PEAR / Text / Wiki / Render.php < prev   
Encoding:
PHP Script  |  2008-07-02  |  4.9 KB  |  219 lines

  1. <?php
  2. // vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4:
  3. /**
  4.  * Base rendering class for parsed and tokenized text.
  5.  *
  6.  * PHP versions 4 and 5
  7.  *
  8.  * @category   Text
  9.  * @package    Text_Wiki
  10.  * @author     Paul M. Jones <pmjones@php.net>
  11.  * @license    http://www.gnu.org/copyleft/lesser.html  LGPL License 2.1
  12.  * @version    CVS: $Id: Render.php,v 1.10 2006/03/11 07:12:13 justinpatrin Exp $
  13.  * @link       http://pear.php.net/package/Text_Wiki
  14.  */
  15.  
  16. /**
  17.  * Base rendering class for parsed and tokenized text.
  18.  *
  19.  * @category   Text
  20.  * @package    Text_Wiki
  21.  * @author     Paul M. Jones <pmjones@php.net>
  22.  * @license    http://www.gnu.org/copyleft/lesser.html  LGPL License 2.1
  23.  * @version    Release: @package_version@
  24.  * @link       http://pear.php.net/package/Text_Wiki
  25.  */
  26. class Text_Wiki_Render {
  27.  
  28.  
  29.     /**
  30.     *
  31.     * Configuration options for this render rule.
  32.     *
  33.     * @access public
  34.     *
  35.     * @var string
  36.     *
  37.     */
  38.  
  39.     var $conf = array();
  40.  
  41.  
  42.     /**
  43.     *
  44.     * The name of this rule's format.
  45.     *
  46.     * @access public
  47.     *
  48.     * @var string
  49.     *
  50.     */
  51.  
  52.     var $format = null;
  53.  
  54.  
  55.     /**
  56.     *
  57.     * The name of this rule's token array elements.
  58.     *
  59.     * @access public
  60.     *
  61.     * @var string
  62.     *
  63.     */
  64.  
  65.     var $rule = null;
  66.  
  67.  
  68.     /**
  69.     *
  70.     * A reference to the calling Text_Wiki object.
  71.     *
  72.     * This is needed so that each rule has access to the same source
  73.     * text, token set, URLs, interwiki maps, page names, etc.
  74.     *
  75.     * @access public
  76.     *
  77.     * @var object
  78.     */
  79.  
  80.     var $wiki = null;
  81.  
  82.  
  83.     /**
  84.     *
  85.     * Constructor for this render format or rule.
  86.     *
  87.     * @access public
  88.     *
  89.     * @param object &$obj The calling "parent" Text_Wiki object.
  90.     *
  91.     */
  92.  
  93.     function Text_Wiki_Render(&$obj)
  94.     {
  95.         // keep a reference to the calling Text_Wiki object
  96.         $this->wiki =& $obj;
  97.  
  98.         // get the config-key-name for this object,
  99.         // strip the Text_Wiki_Render_ part
  100.         //           01234567890123456
  101.         $tmp = get_class($this);
  102.         $tmp = substr($tmp, 17);
  103.  
  104.         // split into pieces at the _ mark.
  105.         // first part is format, second part is rule.
  106.         $part   = explode('_', $tmp);
  107.         $this->format = isset($part[0]) ? ucwords(strtolower($part[0])) : null;
  108.         $this->rule   = isset($part[1]) ? ucwords(strtolower($part[1])) : null;
  109.  
  110.         // is there a format but no rule?
  111.         // then this is the "main" render object, with
  112.         // pre() and post() methods.
  113.         if ($this->format && ! $this->rule &&
  114.             isset($this->wiki->formatConf[$this->format]) &&
  115.             is_array($this->wiki->formatConf[$this->format])) {
  116.  
  117.             // this is a format render object
  118.             $this->conf = array_merge(
  119.                 $this->conf,
  120.                 $this->wiki->formatConf[$this->format]
  121.             );
  122.  
  123.         }
  124.  
  125.         // is there a format and a rule?
  126.         if ($this->format && $this->rule &&
  127.             isset($this->wiki->renderConf[$this->format][$this->rule]) &&
  128.             is_array($this->wiki->renderConf[$this->format][$this->rule])) {
  129.  
  130.             // this is a rule render object
  131.             $this->conf = array_merge(
  132.                 $this->conf,
  133.                 $this->wiki->renderConf[$this->format][$this->rule]
  134.             );
  135.         }
  136.     }
  137.  
  138.  
  139.     /**
  140.     *
  141.     * Simple method to safely get configuration key values.
  142.     *
  143.     * @access public
  144.     *
  145.     * @param string $key The configuration key.
  146.     *
  147.     * @param mixed $default If the key does not exist, return this value
  148.     * instead.
  149.     *
  150.     * @return mixed The configuration key value (if it exists) or the
  151.     * default value (if not).
  152.     *
  153.     */
  154.  
  155.     function getConf($key, $default = null)
  156.     {
  157.         if (isset($this->conf[$key])) {
  158.             return $this->conf[$key];
  159.         } else {
  160.             return $default;
  161.         }
  162.     }
  163.  
  164.  
  165.     /**
  166.     *
  167.     * Simple method to wrap a configuration in an sprintf() format.
  168.     *
  169.     * @access public
  170.     *
  171.     * @param string $key The configuration key.
  172.     *
  173.     * @param string $format The sprintf() format string.
  174.     *
  175.     * @return mixed The formatted configuration key value (if it exists)
  176.     * or null (if it does not).
  177.     *
  178.     */
  179.  
  180.     function formatConf($format, $key)
  181.     {
  182.         if (isset($this->conf[$key])) {
  183.             //$this->conf[$key] needs a textEncode....at least for Xhtml output...
  184.             return sprintf($format, $this->conf[$key]);
  185.         } else {
  186.             return null;
  187.         }
  188.     }
  189.  
  190.     /**
  191.     * Default method to render url
  192.     *
  193.     * @access public
  194.     * @param string $urlChunk a part of an url to render
  195.     * @return rendered url
  196.     *
  197.     */
  198.  
  199.     function urlEncode($urlChunk)
  200.     {
  201.         return rawurlencode($urlChunk);
  202.     }
  203.  
  204.     /**
  205.     * Default method to render text (htmlspecialchars)
  206.     *
  207.     * @access public
  208.     * @param string $text the text to render
  209.     * @return rendered text
  210.     *
  211.     */
  212.  
  213.     function textEncode($text)
  214.     {
  215.         return htmlspecialchars($text);
  216.     }
  217. }
  218. ?>
  219.