steffen: server/kolab-horde-framework/kolab-horde-framework/XML_RAX RAX.php, NONE, 1.1 package.xml, NONE, 1.1

cvs at intevation.de cvs at intevation.de
Fri Oct 14 16:33:17 CEST 2005


Author: steffen

Update of /kolabrepository/server/kolab-horde-framework/kolab-horde-framework/XML_RAX
In directory doto:/tmp/cvs-serv28903/kolab-horde-framework/kolab-horde-framework/XML_RAX

Added Files:
	RAX.php package.xml 
Log Message:
Separated Horde Framework from kolab-resource-handlers

--- NEW FILE: RAX.php ---
<?php
/**
 * Record-oriented API for XML.
 *
 * $Horde: framework/XML_RAX/RAX.php,v 1.2 2004/01/20 02:19:51 chuck Exp $
 *
 * @package XML_RAX
 */
class XML_RAX {

    var $_record = '';
    var $_fields = array();
    var $_records = array();
    var $_parser;
    var $_inRecord = false;
    var $_inField = false;
    var $_fieldData = '';
    var $_tags = array();
    var $_xml = '';
    var $_xmlFp;
    var $_opened = false;
    var $_initialized = false;
    var $_finished = false;

    function XML_RAX()
    {
    }

    function open($xml)
    {
        if ($this->_opened) {
            return false;
        }

        $this->_xml = $xml;
        $this->_opened = true;
    }

    function openfile($filename)
    {
        if ($this->_opened) {
            return false;
        }

        $fp = fopen($filename, 'r');
        if ($fp) {
            $this->_xmlFp = $fp;
            $this->_opened = true;
            return true;
        }

        return false;
    }

    function parse()
    {
        if (!$this->_opened) {
            return false;
        }

        if ($this->_finished) {
            return false;
        }

        if (!$this->_initialized) {
            if (!$this->_init()) {
                return false;
            }
        }

        if ($this->_xmlFp) {
            $buffer = fread($this->_xmlFp, 4096);
            if ($buffer) {
                xml_parse($this->_parser, $buffer, feof($this->_xmlFp));
            } else {
                $this->_finished = true;
            }
        } else {
            xml_parse($this->_parser, $this->_xml, 1);
            $this->_finished = true;
        }
        return true;
    }

    function setRecord($record)
    {
        if ($this->_initialized) {
            return false;
        }
        $this->_record = $record;
        return true;
    }

    function readRecord()
    {
        while (!count($this->_records) && !$this->_finished) {
            $this->parse();
        }
        return array_shift($this->_records);
    }

    function _init()
    {
        $this->_parser = xml_parser_create();
        xml_set_object($this->_parser, $this);
        xml_set_element_handler($this->_parser, '_start', '_end');
        xml_set_character_data_handler($this->_parser, '_data');
        xml_parser_set_option($this->_parser, XML_OPTION_CASE_FOLDING, 0);
        if (xml_parse($this->_parser, '')) {
            $this->_initialized = true;
            return true;
        }

        return false;
    }

    function _start($parser, $name, $attrs)
    {
        array_push($this->_tags, $name);
        if (!$this->_inRecord && !strcmp($name, $this->_record)) {
            $this->_inRecord = 1;
            $this->_rec_lvl = count($this->_tags);
            $this->_field_lvl = $this->_rec_lvl + 1;
        } elseif ($this->_inRecord && count($this->_tags) == $this->_field_lvl) {
            $this->_inField = 1;
        }
    }

    function _end($parser, $name)
    {
        array_pop($this->_tags);
        if ($this->_inRecord) {
            if (count($this->_tags) < $this->_rec_lvl) {
                $this->_inRecord = 0;
                array_push($this->_records, new XML_RAX_Record($this->_fields));
                $this->_fields = array();
            } elseif (count($this->_tags) < $this->_field_lvl) {
                $this->_inField = 0;
                $this->_fields[$name] = $this->_fieldData;
                $this->_fieldData = '';
            }
        }
    }

    function _data($parser, $data)
    {
        if ($this->_inField) {
            $this->_fieldData .= $data;
        }
    }

}

class XML_RAX_Record {

    var $_fields;

    function XML_RAX_Record($fields)
    {
        $this->_fields = $fields;
    }

    function getFieldnames()
    {
        return array_keys($this->_fields);
    }

    function getField($field)
    {
        return isset($this->_fields[$field]) ?
            trim($this->_fields[$field]) :
            null;
    }

    function getFields()
    {
        return array_values($this->_fields);
    }

    function getRow()
    {
        return $this->_fields;
    }

}

--- NEW FILE: package.xml ---
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- $Horde: framework/XML_RAX/package.xml,v 1.1 2004/01/20 02:18:51 chuck Exp $ -->
<!DOCTYPE package SYSTEM "http://pear.php.net/dtd/package-1.1">
<package version="1.0">
  <name>XML_RAX</name>
  <summary>Record-oriented API for XML</summary>
  <description>
    Record-oriented API for XMLRecord-oriented API for XML
  </description>
  <license>LGPL</license>

  <maintainers>
    <maintainer>
      <user>chuck</user>
      <role>lead</role>
      <name>Chuck Hagenbuch</name>
      <email>chuck at horde.org</email>
    </maintainer>
  </maintainers>

  <release>
    <version>0.0.1</version>
    <state>alpha</state>
    <date>2004-01-19</date>
    <notes>Initial Release.</notes>

    <filelist>
      <file baseinstalldir="/XML" role="php" name="RAX.php" />
    </filelist>

    <provides type="class" name="XML_RAX" />
  </release>

  <changelog>
    <release>
      <version>0.0.1</version>
      <state>alpha</state>
      <date>2004-01-19</date>
      <notes>Initial release as a PEAR package</notes>
    </release>
  </changelog>
</package>





More information about the commits mailing list