home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 August / PCWorld_2001-08_cd.bin / Komunikace / phptriad / phptriadsetup2-11.exe / php / pear / XML / Render.php < prev    next >
PHP Script  |  2001-01-16  |  4KB  |  128 lines

  1. <?php
  2.  
  3. /* vim: set expandtab tabstop=4 shiftwidth=4; */
  4. // +---------------------------------------------------------------------+
  5. // |  PHP version 4.0                                                    |
  6. // +---------------------------------------------------------------------+
  7. // |  Copyright (c) 1997-2001 The PHP Group                              |
  8. // +---------------------------------------------------------------------+
  9. // |  This source file is subject to version 2.0 of the PHP license,     |
  10. // |  that is bundled with this package in the file LICENSE, and is      |
  11. // |  available through the world-wide-web at                            |
  12. // |  http://www.php.net/license/2_02.txt.                               |
  13. // |  If you did not receive a copy of the PHP license and are unable to |
  14. // |  obtain it through the world-wide-web, please send a note to        |
  15. // |  license@php.net so we can mail you a copy immediately.             |
  16. // +---------------------------------------------------------------------+
  17. // |  Authors:  Sean Grimes <metallic@noworlater.net>                    |
  18. // +---------------------------------------------------------------------+
  19. // 
  20. // $Id: Render.php,v 1.2 2001/01/16 00:27:34 metallic Exp $
  21.  
  22. /**
  23. * Render class for rendering from XML. 
  24. *
  25. * This class should render documents from xml.
  26. * The intended rendering modes will be HTML and
  27. * the Adobe PDF format. Maybe at some point I 
  28. * will make it possible to take a document from
  29. * HTML to PDF, but this is unlikely. 
  30. * @author Sean Grimes <metallic@noworlater.net>
  31. */ 
  32.  
  33. /*** Todo ***
  34.  ** - Implement the HTML and PDF rendering modes
  35.  ** - Extend the parse() function to what is needed
  36.  ** - Implement filesystem commands
  37.  ** - Come up with the XML language syntax
  38.  ** - Provide a better class interface 
  39.  ** - Do some debugging
  40. ***/
  41.  
  42. require_once "Parser.php";
  43.  
  44. class XML_Render extends XML_Parser {
  45.  
  46.     var $data; // holds the file contents
  47.  
  48.     function XML_Render($charset = 'UTF-8', $mode = "event") {
  49.         $this->XML_Parser($charset, $mode);
  50.  
  51.     }
  52.  
  53.     /**
  54.     * Set the input file.
  55.     *
  56.     * This overrides XML_Parser::setInputFile(),
  57.     * and creates a wrapper around XML_Parser::setInputFile()
  58.     * and XML_Parser::inputFile(). The functions are so similar
  59.     * that its confusing me(hint: document XML_Parser).
  60.     *
  61.     * @access public
  62.     * @param $file file to be input
  63.     */
  64.     function setInputFile($file) {
  65.         $fp = @fopen($file, "r");
  66.         if (is_resource($fp)) {
  67.             $this->fp = $fp;
  68.             return $this->setInput($file);
  69.         } else {
  70.             return new XML_Parser_Error($php_errormsg); // ??
  71.         }
  72.     }
  73.  
  74.     /** 
  75.     * Parses the document
  76.     *
  77.     * This function extends the capabilities of the 
  78.     * parse function in XML/Parser.php. The only real
  79.     * notable change is the addition of a command to 
  80.     * store the contents of the file to a variable to
  81.     * make it available to the entire class
  82.     */
  83.     function parse() {
  84.         if(!is_resource($this->fp)) {
  85.             return new XML_Parser_Error("no input");
  86.         }
  87.         if (!is_resource($this->parser)) {
  88.             return new XML_Parser_Error("no parser");
  89.         }
  90.         while ($data = fread($this->fp, 2048)) {
  91.             $err = $this->parseString($data, $feof($this->fp));
  92.             if (PEAR::isError($err)) {
  93.                 return $err;
  94.             }
  95.         }
  96.         $this->data = $data;
  97.         return $true;
  98.     }
  99.         
  100.  
  101.     /**
  102.     * Renders the XML document.
  103.     *
  104.     * This function really isnt implemented yet. 
  105.     * Basically, I just added the calls for the HTML
  106.     * and PDF subclass rendering modes. I'm hoping this
  107.     * class will be easily built onto over PEAR's lifetime.
  108.     *
  109.     * @param $mode Rendering mode. Defaults to HTML.
  110.     * @author Sean Grimes <metallic@noworlater.net>
  111.     */
  112.  
  113.     function render($mode = 'HTML') {
  114.         if($mode == 'HTML') {
  115.             $html = new XML_Render_HTML();
  116.             $html->render();
  117.         }
  118.         if($mode == 'PDF') {
  119.             $pdf = new XML_Render_PDF();
  120.             $pdf->render();
  121.         } else {
  122.             $message = "Error. Unsupported rendering mode.";
  123.             new PEAR_Error($message, 0, PEAR_ERROR_RETURN, E_USER_NOTIFY);
  124.         }
  125.     }
  126. }
  127.