-<?php\r
-\r
-/**\r
- * @file CAS/PGTStorage/pgt-db.php\r
- * Basic class for PGT database storage\r
- */\r
-\r
-// include phpDB library (the test was introduced in release 0.4.8 for \r
-// the integration into Tikiwiki).\r
-if (!class_exists('DB')) {\r
- @include_once('DB.php');\r
-}\r
-\r
-/**\r
- * @class PGTStorageDB\r
- * The PGTStorageDB class is a class for PGT database storage. An instance of \r
- * this class is returned by CASClient::SetPGTStorageDB().\r
- *\r
- * @author Pascal Aubry <pascal.aubry at univ-rennes1.fr>\r
- *\r
- * @ingroup internalPGTStorageDB\r
- */\r
-\r
-class PGTStorageDB extends PGTStorage\r
-{\r
- /** \r
- * @addtogroup internalPGTStorageDB\r
- * @{ \r
- */\r
-\r
- /**\r
- * a string representing a PEAR DB URL to connect to the database. Written by\r
- * PGTStorageDB::PGTStorageDB(), read by getURL().\r
- *\r
- * @hideinitializer\r
- * @private\r
- */\r
- var $_url='';\r
-\r
- /**\r
- * This method returns the PEAR DB URL to use to connect to the database.\r
- *\r
- * @return a PEAR DB URL\r
- *\r
- * @private\r
- */\r
- function getURL()\r
- {\r
- return $this->_url;\r
- }\r
-\r
- /**\r
- * The handle of the connection to the database where PGT's are stored. Written by\r
- * PGTStorageDB::init(), read by getLink().\r
- *\r
- * @hideinitializer\r
- * @private\r
- */\r
- var $_link = null;\r
-\r
- /**\r
- * This method returns the handle of the connection to the database where PGT's are \r
- * stored.\r
- *\r
- * @return a handle of connection.\r
- *\r
- * @private\r
- */\r
- function getLink()\r
- {\r
- return $this->_link;\r
- }\r
-\r
- /**\r
- * The name of the table where PGT's are stored. Written by \r
- * PGTStorageDB::PGTStorageDB(), read by getTable().\r
- *\r
- * @hideinitializer\r
- * @private\r
- */\r
- var $_table = '';\r
-\r
- /**\r
- * This method returns the name of the table where PGT's are stored.\r
- *\r
- * @return the name of a table.\r
- *\r
- * @private\r
- */\r
- function getTable()\r
- {\r
- return $this->_table;\r
- }\r
-\r
- // ########################################################################\r
- // DEBUGGING\r
- // ########################################################################\r
- \r
- /**\r
- * This method returns an informational string giving the type of storage\r
- * used by the object (used for debugging purposes).\r
- *\r
- * @return an informational string.\r
- * @public\r
- */\r
- function getStorageType()\r
- {\r
- return "database";\r
- }\r
-\r
- /**\r
- * This method returns an informational string giving informations on the\r
- * parameters of the storage.(used for debugging purposes).\r
- *\r
- * @public\r
- */\r
- function getStorageInfo()\r
- {\r
- return 'url=`'.$this->getURL().'\', table=`'.$this->getTable().'\'';\r
- }\r
-\r
- // ########################################################################\r
- // CONSTRUCTOR\r
- // ########################################################################\r
- \r
- /**\r
- * The class constructor, called by CASClient::SetPGTStorageDB().\r
- *\r
- * @param $cas_parent the CASClient instance that creates the object.\r
- * @param $user the user to access the data with\r
- * @param $password the user's password\r
- * @param $database_type the type of the database hosting the data\r
- * @param $hostname the server hosting the database\r
- * @param $port the port the server is listening on\r
- * @param $database the name of the database\r
- * @param $table the name of the table storing the data\r
- *\r
- * @public\r
- */\r
- function PGTStorageDB($cas_parent,$user,$password,$database_type,$hostname,$port,$database,$table)\r
- {\r
- phpCAS::traceBegin();\r
-\r
- // call the ancestor's constructor\r
- $this->PGTStorage($cas_parent);\r
-\r
- if ( empty($database_type) ) $database_type = CAS_PGT_STORAGE_DB_DEFAULT_DATABASE_TYPE;\r
- if ( empty($hostname) ) $hostname = CAS_PGT_STORAGE_DB_DEFAULT_HOSTNAME;\r
- if ( $port==0 ) $port = CAS_PGT_STORAGE_DB_DEFAULT_PORT;\r
- if ( empty($database) ) $database = CAS_PGT_STORAGE_DB_DEFAULT_DATABASE;\r
- if ( empty($table) ) $table = CAS_PGT_STORAGE_DB_DEFAULT_TABLE;\r
-\r
- // build and store the PEAR DB URL\r
- $this->_url = $database_type.':'.'//'.$user.':'.$password.'@'.$hostname.':'.$port.'/'.$database;\r
-\r
- // XXX should use setURL and setTable\r
- phpCAS::traceEnd();\r
- }\r
- \r
- // ########################################################################\r
- // INITIALIZATION\r
- // ########################################################################\r
- \r
- /**\r
- * This method is used to initialize the storage. Halts on error.\r
- *\r
- * @public\r
- */\r
- function init()\r
- {\r
- phpCAS::traceBegin();\r
- // if the storage has already been initialized, return immediatly\r
- if ( $this->isInitialized() )\r
- return;\r
- // call the ancestor's method (mark as initialized)\r
- parent::init();\r
- \r
- // try to connect to the database\r
- $this->_link = DB::connect($this->getURL());\r
- if ( DB::isError($this->_link) ) {\r
- phpCAS::error('could not connect to database ('.DB::errorMessage($this->_link).')');\r
- }\r
- var_dump($this->_link);\r
- phpCAS::traceBEnd();\r
- }\r
-\r
- /** @} */\r
-}\r
-\r
+<?php
+
+
+
+
+
+/**
+
+
+ * @file CAS/PGTStorage/pgt-db.php
+
+
+ * Basic class for PGT database storage
+
+
+ */
+
+
+
+
+
+// include phpDB library (the test was introduced in release 0.4.8 for
+
+
+// the integration into Tikiwiki).
+
+
+if (!class_exists('DB')) {
+
+
+ @include_once('DB.php');
+
+
+}
+
+
+
+
+
+/**
+
+
+ * @class PGTStorageDB
+
+
+ * The PGTStorageDB class is a class for PGT database storage. An instance of
+
+
+ * this class is returned by CASClient::SetPGTStorageDB().
+
+
+ *
+
+
+ * @author Pascal Aubry <pascal.aubry at univ-rennes1.fr>
+
+
+ *
+
+
+ * @ingroup internalPGTStorageDB
+
+
+ */
+
+
+
+
+
+class PGTStorageDB extends PGTStorage
+
+
+{
+
+
+ /**
+
+
+ * @addtogroup internalPGTStorageDB
+
+
+ * @{
+
+
+ */
+
+
+
+
+
+ /**
+
+
+ * a string representing a PEAR DB URL to connect to the database. Written by
+
+
+ * PGTStorageDB::PGTStorageDB(), read by getURL().
+
+
+ *
+
+
+ * @hideinitializer
+
+
+ * @private
+
+
+ */
+
+
+ var $_url='';
+
+
+
+
+
+ /**
+
+
+ * This method returns the PEAR DB URL to use to connect to the database.
+
+
+ *
+
+
+ * @return a PEAR DB URL
+
+
+ *
+
+
+ * @private
+
+
+ */
+
+
+ function getURL()
+
+
+ {
+
+
+ return $this->_url;
+
+
+ }
+
+
+
+
+
+ /**
+
+
+ * The handle of the connection to the database where PGT's are stored. Written by
+
+
+ * PGTStorageDB::init(), read by getLink().
+
+
+ *
+
+
+ * @hideinitializer
+
+
+ * @private
+
+
+ */
+
+
+ var $_link = null;
+
+
+
+
+
+ /**
+
+
+ * This method returns the handle of the connection to the database where PGT's are
+
+
+ * stored.
+
+
+ *
+
+
+ * @return a handle of connection.
+
+
+ *
+
+
+ * @private
+
+
+ */
+
+
+ function getLink()
+
+
+ {
+
+
+ return $this->_link;
+
+
+ }
+
+
+
+
+
+ /**
+
+
+ * The name of the table where PGT's are stored. Written by
+
+
+ * PGTStorageDB::PGTStorageDB(), read by getTable().
+
+
+ *
+
+
+ * @hideinitializer
+
+
+ * @private
+
+
+ */
+
+
+ var $_table = '';
+
+
+
+
+
+ /**
+
+
+ * This method returns the name of the table where PGT's are stored.
+
+
+ *
+
+
+ * @return the name of a table.
+
+
+ *
+
+
+ * @private
+
+
+ */
+
+
+ function getTable()
+
+
+ {
+
+
+ return $this->_table;
+
+
+ }
+
+
+
+
+
+ // ########################################################################
+
+
+ // DEBUGGING
+
+
+ // ########################################################################
+
+
+
+
+
+ /**
+
+
+ * This method returns an informational string giving the type of storage
+
+
+ * used by the object (used for debugging purposes).
+
+
+ *
+
+
+ * @return an informational string.
+
+
+ * @public
+
+
+ */
+
+
+ function getStorageType()
+
+
+ {
+
+
+ return "database";
+
+
+ }
+
+
+
+
+
+ /**
+
+
+ * This method returns an informational string giving informations on the
+
+
+ * parameters of the storage.(used for debugging purposes).
+
+
+ *
+
+
+ * @public
+
+
+ */
+
+
+ function getStorageInfo()
+
+
+ {
+
+
+ return 'url=`'.$this->getURL().'\', table=`'.$this->getTable().'\'';
+
+
+ }
+
+
+
+
+
+ // ########################################################################
+
+
+ // CONSTRUCTOR
+
+
+ // ########################################################################
+
+
+
+
+
+ /**
+
+
+ * The class constructor, called by CASClient::SetPGTStorageDB().
+
+
+ *
+
+
+ * @param $cas_parent the CASClient instance that creates the object.
+
+
+ * @param $user the user to access the data with
+
+
+ * @param $password the user's password
+
+
+ * @param $database_type the type of the database hosting the data
+
+
+ * @param $hostname the server hosting the database
+
+
+ * @param $port the port the server is listening on
+
+
+ * @param $database the name of the database
+
+
+ * @param $table the name of the table storing the data
+
+
+ *
+
+
+ * @public
+
+
+ */
+
+
+ function PGTStorageDB($cas_parent,$user,$password,$database_type,$hostname,$port,$database,$table)
+
+
+ {
+
+
+ phpCAS::traceBegin();
+
+
+
+
+
+ // call the ancestor's constructor
+
+
+ $this->PGTStorage($cas_parent);
+
+
+
+
+
+ if ( empty($database_type) ) $database_type = CAS_PGT_STORAGE_DB_DEFAULT_DATABASE_TYPE;
+
+
+ if ( empty($hostname) ) $hostname = CAS_PGT_STORAGE_DB_DEFAULT_HOSTNAME;
+
+
+ if ( $port==0 ) $port = CAS_PGT_STORAGE_DB_DEFAULT_PORT;
+
+
+ if ( empty($database) ) $database = CAS_PGT_STORAGE_DB_DEFAULT_DATABASE;
+
+
+ if ( empty($table) ) $table = CAS_PGT_STORAGE_DB_DEFAULT_TABLE;
+
+
+
+
+
+ // build and store the PEAR DB URL
+
+
+ $this->_url = $database_type.':'.'//'.$user.':'.$password.'@'.$hostname.':'.$port.'/'.$database;
+
+
+
+
+
+ // XXX should use setURL and setTable
+
+
+ phpCAS::traceEnd();
+
+
+ }
+
+
+
+
+
+ // ########################################################################
+
+
+ // INITIALIZATION
+
+
+ // ########################################################################
+
+
+
+
+
+ /**
+
+
+ * This method is used to initialize the storage. Halts on error.
+
+
+ *
+
+
+ * @public
+
+
+ */
+
+
+ function init()
+
+
+ {
+
+
+ phpCAS::traceBegin();
+
+
+ // if the storage has already been initialized, return immediatly
+
+
+ if ( $this->isInitialized() )
+
+
+ return;
+
+
+ // call the ancestor's method (mark as initialized)
+
+
+ parent::init();
+
+
+
+
+
+ // try to connect to the database
+
+
+ $this->_link = DB::connect($this->getURL());
+
+
+ if ( DB::isError($this->_link) ) {
+
+
+ phpCAS::error('could not connect to database ('.DB::errorMessage($this->_link).')');
+
+
+ }
+
+
+ var_dump($this->_link);
+
+
+ phpCAS::traceBEnd();
+
+
+ }
+
+
+
+
+
+ /** @} */
+
+
+}
+
+
+
+
+
?>
\ No newline at end of file
-<?php\r
-/**\r
- * @file domxml-php4-php5.php\r
- * Require PHP5, uses built-in DOM extension.\r
- * To be used in PHP4 scripts using DOMXML extension.\r
- * Allows PHP4/DOMXML scripts to run on PHP5/DOM.\r
- * (Requires PHP5/XSL extension for domxml_xslt functions)\r
- *\r
- * Typical use:\r
- * <pre>\r
- * {\r
- * if (version_compare(PHP_VERSION,'5','>='))\r
- * require_once('domxml-php4-to-php5.php');\r
- * }\r
- * </pre>\r
- *\r
- * Version 1.5.5, 2005-01-18, http://alexandre.alapetite.net/doc-alex/domxml-php4-php5/\r
- *\r
- * ------------------------------------------------------------------<br>\r
- * Written by Alexandre Alapetite, http://alexandre.alapetite.net/cv/\r
- *\r
- * Copyright 2004, Licence: Creative Commons "Attribution-ShareAlike 2.0 France" BY-SA (FR),\r
- * http://creativecommons.org/licenses/by-sa/2.0/fr/\r
- * http://alexandre.alapetite.net/divers/apropos/#by-sa\r
- * - Attribution. You must give the original author credit\r
- * - Share Alike. If you alter, transform, or build upon this work,\r
- * you may distribute the resulting work only under a license identical to this one\r
- * - The French law is authoritative\r
- * - Any of these conditions can be waived if you get permission from Alexandre Alapetite\r
- * - Please send to Alexandre Alapetite the modifications you make,\r
- * in order to improve this file for the benefit of everybody\r
- *\r
- * If you want to distribute this code, please do it as a link to:\r
- * http://alexandre.alapetite.net/doc-alex/domxml-php4-php5/\r
- */\r
-\r
-function domxml_new_doc($version) {return new php4DOMDocument('');}\r
-function domxml_open_file($filename) {return new php4DOMDocument($filename);}\r
-function domxml_open_mem($str)\r
-{\r
- $dom=new php4DOMDocument('');\r
- $dom->myDOMNode->loadXML($str);\r
- return $dom;\r
-}\r
-function xpath_eval($xpath_context,$eval_str,$contextnode=null) {return $xpath_context->query($eval_str,$contextnode);}\r
-function xpath_new_context($dom_document) {return new php4DOMXPath($dom_document);}\r
-\r
-class php4DOMAttr extends php4DOMNode\r
-{\r
- function php4DOMAttr($aDOMAttr) {$this->myDOMNode=$aDOMAttr;}\r
- function Name() {return $this->myDOMNode->name;}\r
- function Specified() {return $this->myDOMNode->specified;}\r
- function Value() {return $this->myDOMNode->value;}\r
-}\r
-\r
-class php4DOMDocument extends php4DOMNode\r
-{\r
- function php4DOMDocument($filename='')\r
- {\r
- $this->myDOMNode=new DOMDocument();\r
- if ($filename!='') $this->myDOMNode->load($filename);\r
- }\r
- function create_attribute($name,$value)\r
- {\r
- $myAttr=$this->myDOMNode->createAttribute($name);\r
- $myAttr->value=$value;\r
- return new php4DOMAttr($myAttr,$this);\r
- }\r
- function create_cdata_section($content) {return new php4DOMNode($this->myDOMNode->createCDATASection($content),$this);}\r
- function create_comment($data) {return new php4DOMNode($this->myDOMNode->createComment($data),$this);}\r
- function create_element($name) {return new php4DOMElement($this->myDOMNode->createElement($name),$this);}\r
- function create_text_node($content) {return new php4DOMNode($this->myDOMNode->createTextNode($content),$this);}\r
- function document_element() {return new php4DOMElement($this->myDOMNode->documentElement,$this);}\r
- function dump_file($filename,$compressionmode=false,$format=false) {return $this->myDOMNode->save($filename);}\r
- function dump_mem($format=false,$encoding=false) {return $this->myDOMNode->saveXML();}\r
- function get_element_by_id($id) {return new php4DOMElement($this->myDOMNode->getElementById($id),$this);}\r
- function get_elements_by_tagname($name)\r
- {\r
- $myDOMNodeList=$this->myDOMNode->getElementsByTagName($name);\r
- $nodeSet=array();\r
- $i=0;\r
- if (isset($myDOMNodeList))\r
- while ($node=$myDOMNodeList->item($i))\r
- {\r
- $nodeSet[]=new php4DOMElement($node,$this);\r
- $i++;\r
- }\r
- return $nodeSet;\r
- }\r
- function html_dump_mem() {return $this->myDOMNode->saveHTML();}\r
- function root() {return new php4DOMElement($this->myDOMNode->documentElement,$this);}\r
-}\r
-\r
-class php4DOMElement extends php4DOMNode\r
-{\r
- function get_attribute($name) {return $this->myDOMNode->getAttribute($name);}\r
- function get_elements_by_tagname($name)\r
- {\r
- $myDOMNodeList=$this->myDOMNode->getElementsByTagName($name);\r
- $nodeSet=array();\r
- $i=0;\r
- if (isset($myDOMNodeList))\r
- while ($node=$myDOMNodeList->item($i))\r
- {\r
- $nodeSet[]=new php4DOMElement($node,$this->myOwnerDocument);\r
- $i++;\r
- }\r
- return $nodeSet;\r
- }\r
- function has_attribute($name) {return $this->myDOMNode->hasAttribute($name);}\r
- function remove_attribute($name) {return $this->myDOMNode->removeAttribute($name);}\r
- function set_attribute($name,$value) {return $this->myDOMNode->setAttribute($name,$value);}\r
- function tagname() {return $this->myDOMNode->tagName;}\r
-}\r
-\r
-class php4DOMNode\r
-{\r
- var $myDOMNode;\r
- var $myOwnerDocument;\r
- function php4DOMNode($aDomNode,$aOwnerDocument)\r
- {\r
- $this->myDOMNode=$aDomNode;\r
- $this->myOwnerDocument=$aOwnerDocument;\r
- }\r
- function __get($name)\r
- {\r
- if ($name=='type') return $this->myDOMNode->nodeType;\r
- elseif ($name=='tagname') return $this->myDOMNode->tagName;\r
- elseif ($name=='content') return $this->myDOMNode->textContent;\r
- else\r
- {\r
- $myErrors=debug_backtrace();\r
- trigger_error('Undefined property: '.get_class($this).'::$'.$name.' ['.$myErrors[0]['file'].':'.$myErrors[0]['line'].']',E_USER_NOTICE);\r
- return false;\r
- }\r
- }\r
- function append_child($newnode) {return new php4DOMElement($this->myDOMNode->appendChild($newnode->myDOMNode),$this->myOwnerDocument);}\r
- function append_sibling($newnode) {return new php4DOMElement($this->myDOMNode->parentNode->appendChild($newnode->myDOMNode),$this->myOwnerDocument);}\r
- function attributes()\r
- {\r
- $myDOMNodeList=$this->myDOMNode->attributes;\r
- $nodeSet=array();\r
- $i=0;\r
- if (isset($myDOMNodeList))\r
- while ($node=$myDOMNodeList->item($i))\r
- {\r
- $nodeSet[]=new php4DOMAttr($node,$this->myOwnerDocument);\r
- $i++;\r
- }\r
- return $nodeSet;\r
- }\r
- function child_nodes()\r
- {\r
- $myDOMNodeList=$this->myDOMNode->childNodes;\r
- $nodeSet=array();\r
- $i=0;\r
- if (isset($myDOMNodeList))\r
- while ($node=$myDOMNodeList->item($i))\r
- {\r
- $nodeSet[]=new php4DOMElement($node,$this->myOwnerDocument);\r
- $i++;\r
- }\r
- return $nodeSet;\r
- }\r
- function children() {return $this->child_nodes();}\r
- function clone_node($deep=false) {return new php4DOMElement($this->myDOMNode->cloneNode($deep),$this->myOwnerDocument);}\r
- function first_child() {return new php4DOMElement($this->myDOMNode->firstChild,$this->myOwnerDocument);}\r
- function get_content() {return $this->myDOMNode->textContent;}\r
- function has_attributes() {return $this->myDOMNode->hasAttributes();}\r
- function has_child_nodes() {return $this->myDOMNode->hasChildNodes();}\r
- function insert_before($newnode,$refnode) {return new php4DOMElement($this->myDOMNode->insertBefore($newnode->myDOMNode,$refnode->myDOMNode),$this->myOwnerDocument);}\r
- function is_blank_node()\r
- {\r
- $myDOMNodeList=$this->myDOMNode->childNodes;\r
- $i=0;\r
- if (isset($myDOMNodeList))\r
- while ($node=$myDOMNodeList->item($i))\r
- {\r
- if (($node->nodeType==XML_ELEMENT_NODE)||\r
- (($node->nodeType==XML_TEXT_NODE)&&!ereg('^([[:cntrl:]]|[[:space:]])*$',$node->nodeValue)))\r
- return false;\r
- $i++;\r
- }\r
- return true;\r
- }\r
- function last_child() {return new php4DOMElement($this->myDOMNode->lastChild,$this->myOwnerDocument);}\r
- function new_child($name,$content)\r
- {\r
- $mySubNode=$this->myDOMNode->ownerDocument->createElement($name);\r
- $mySubNode->appendChild($this->myDOMNode->ownerDocument->createTextNode($content));\r
- $this->myDOMNode->appendChild($mySubNode);\r
- return new php4DOMElement($mySubNode,$this->myOwnerDocument);\r
- }\r
- function next_sibling() {return new php4DOMElement($this->myDOMNode->nextSibling,$this->myOwnerDocument);}\r
- function node_name() {return $this->myDOMNode->localName;}\r
- function node_type() {return $this->myDOMNode->nodeType;}\r
- function node_value() {return $this->myDOMNode->nodeValue;}\r
- function owner_document() {return $this->myOwnerDocument;}\r
- function parent_node() {return new php4DOMElement($this->myDOMNode->parentNode,$this->myOwnerDocument);}\r
- function prefix() {return $this->myDOMNode->prefix;}\r
- function previous_sibling() {return new php4DOMElement($this->myDOMNode->previousSibling,$this->myOwnerDocument);}\r
- function remove_child($oldchild) {return new php4DOMElement($this->myDOMNode->removeChild($oldchild->myDOMNode),$this->myOwnerDocument);}\r
- function replace_child($oldnode,$newnode) {return new php4DOMElement($this->myDOMNode->replaceChild($oldnode->myDOMNode,$newnode->myDOMNode),$this->myOwnerDocument);}\r
- function set_content($text)\r
- {\r
- if (($this->myDOMNode->hasChildNodes())&&($this->myDOMNode->firstChild->nodeType==XML_TEXT_NODE))\r
- $this->myDOMNode->removeChild($this->myDOMNode->firstChild);\r
- return $this->myDOMNode->appendChild($this->myDOMNode->ownerDocument->createTextNode($text));\r
- }\r
-}\r
-\r
-class php4DOMNodelist\r
-{\r
- var $myDOMNodelist;\r
- var $nodeset;\r
- function php4DOMNodelist($aDOMNodelist,$aOwnerDocument)\r
- {\r
- $this->myDOMNodelist=$aDOMNodelist;\r
- $this->nodeset=array();\r
- $i=0;\r
- if (isset($this->myDOMNodelist))\r
- while ($node=$this->myDOMNodelist->item($i))\r
- {\r
- $this->nodeset[]=new php4DOMElement($node,$aOwnerDocument);\r
- $i++;\r
- }\r
- }\r
-}\r
-\r
-class php4DOMXPath\r
-{\r
- var $myDOMXPath;\r
- var $myOwnerDocument;\r
- function php4DOMXPath($dom_document)\r
- {\r
- $this->myOwnerDocument=$dom_document;\r
- $this->myDOMXPath=new DOMXPath($dom_document->myDOMNode);\r
- }\r
- function query($eval_str,$contextnode)\r
- {\r
- if (isset($contextnode)) return new php4DOMNodelist($this->myDOMXPath->query($eval_str,$contextnode->myDOMNode),$this->myOwnerDocument);\r
- else return new php4DOMNodelist($this->myDOMXPath->query($eval_str),$this->myOwnerDocument);\r
- }\r
- function xpath_register_ns($prefix,$namespaceURI) {return $this->myDOMXPath->registerNamespace($prefix,$namespaceURI);}\r
-}\r
-\r
-if (extension_loaded('xsl'))\r
-{//See also: http://alexandre.alapetite.net/doc-alex/xslt-php4-php5/\r
- function domxml_xslt_stylesheet($xslstring) {return new php4DomXsltStylesheet(DOMDocument::loadXML($xslstring));}\r
- function domxml_xslt_stylesheet_doc($dom_document) {return new php4DomXsltStylesheet($dom_document);}\r
- function domxml_xslt_stylesheet_file($xslfile) {return new php4DomXsltStylesheet(DOMDocument::load($xslfile));}\r
- class php4DomXsltStylesheet\r
- {\r
- var $myxsltProcessor;\r
- function php4DomXsltStylesheet($dom_document)\r
- {\r
- $this->myxsltProcessor=new xsltProcessor();\r
- $this->myxsltProcessor->importStyleSheet($dom_document);\r
- }\r
- function process($dom_document,$xslt_parameters=array(),$param_is_xpath=false)\r
- {\r
- foreach ($xslt_parameters as $param=>$value)\r
- $this->myxsltProcessor->setParameter('',$param,$value);\r
- $myphp4DOMDocument=new php4DOMDocument();\r
- $myphp4DOMDocument->myDOMNode=$this->myxsltProcessor->transformToDoc($dom_document->myDOMNode);\r
- return $myphp4DOMDocument;\r
- }\r
- function result_dump_file($dom_document,$filename)\r
- {\r
- $html=$dom_document->myDOMNode->saveHTML();\r
- file_put_contents($filename,$html);\r
- return $html;\r
- }\r
- function result_dump_mem($dom_document) {return $dom_document->myDOMNode->saveHTML();}\r
- }\r
-}\r
+<?php
+
+
+/**
+
+
+ * @file domxml-php4-php5.php
+
+
+ * Require PHP5, uses built-in DOM extension.
+
+
+ * To be used in PHP4 scripts using DOMXML extension.
+
+
+ * Allows PHP4/DOMXML scripts to run on PHP5/DOM.
+
+
+ * (Requires PHP5/XSL extension for domxml_xslt functions)
+
+
+ *
+
+
+ * Typical use:
+
+
+ * <pre>
+
+
+ * {
+
+
+ * if (version_compare(PHP_VERSION,'5','>='))
+
+
+ * require_once('domxml-php4-to-php5.php');
+
+
+ * }
+
+
+ * </pre>
+
+
+ *
+
+
+ * Version 1.5.5, 2005-01-18, http://alexandre.alapetite.net/doc-alex/domxml-php4-php5/
+
+
+ *
+
+
+ * ------------------------------------------------------------------<br>
+
+
+ * Written by Alexandre Alapetite, http://alexandre.alapetite.net/cv/
+
+
+ *
+
+
+ * Copyright 2004, Licence: Creative Commons "Attribution-ShareAlike 2.0 France" BY-SA (FR),
+
+
+ * http://creativecommons.org/licenses/by-sa/2.0/fr/
+
+
+ * http://alexandre.alapetite.net/divers/apropos/#by-sa
+
+
+ * - Attribution. You must give the original author credit
+
+
+ * - Share Alike. If you alter, transform, or build upon this work,
+
+
+ * you may distribute the resulting work only under a license identical to this one
+
+
+ * - The French law is authoritative
+
+
+ * - Any of these conditions can be waived if you get permission from Alexandre Alapetite
+
+
+ * - Please send to Alexandre Alapetite the modifications you make,
+
+
+ * in order to improve this file for the benefit of everybody
+
+
+ *
+
+
+ * If you want to distribute this code, please do it as a link to:
+
+
+ * http://alexandre.alapetite.net/doc-alex/domxml-php4-php5/
+
+
+ */
+
+
+
+
+
+function domxml_new_doc($version) {return new php4DOMDocument('');}
+
+
+function domxml_open_file($filename) {return new php4DOMDocument($filename);}
+
+
+function domxml_open_mem($str)
+
+
+{
+
+
+ $dom=new php4DOMDocument('');
+
+
+ $dom->myDOMNode->loadXML($str);
+
+
+ return $dom;
+
+
+}
+
+
+function xpath_eval($xpath_context,$eval_str,$contextnode=null) {return $xpath_context->query($eval_str,$contextnode);}
+
+
+function xpath_new_context($dom_document) {return new php4DOMXPath($dom_document);}
+
+
+
+
+
+class php4DOMAttr extends php4DOMNode
+
+
+{
+
+
+ function php4DOMAttr($aDOMAttr) {$this->myDOMNode=$aDOMAttr;}
+
+
+ function Name() {return $this->myDOMNode->name;}
+
+
+ function Specified() {return $this->myDOMNode->specified;}
+
+
+ function Value() {return $this->myDOMNode->value;}
+
+
+}
+
+
+
+
+
+class php4DOMDocument extends php4DOMNode
+
+
+{
+
+
+ function php4DOMDocument($filename='')
+
+
+ {
+
+
+ $this->myDOMNode=new DOMDocument();
+
+
+ if ($filename!='') $this->myDOMNode->load($filename);
+
+
+ }
+
+
+ function create_attribute($name,$value)
+
+
+ {
+
+
+ $myAttr=$this->myDOMNode->createAttribute($name);
+
+
+ $myAttr->value=$value;
+
+
+ return new php4DOMAttr($myAttr,$this);
+
+
+ }
+
+
+ function create_cdata_section($content) {return new php4DOMNode($this->myDOMNode->createCDATASection($content),$this);}
+
+
+ function create_comment($data) {return new php4DOMNode($this->myDOMNode->createComment($data),$this);}
+
+
+ function create_element($name) {return new php4DOMElement($this->myDOMNode->createElement($name),$this);}
+
+
+ function create_text_node($content) {return new php4DOMNode($this->myDOMNode->createTextNode($content),$this);}
+
+
+ function document_element() {return new php4DOMElement($this->myDOMNode->documentElement,$this);}
+
+
+ function dump_file($filename,$compressionmode=false,$format=false) {return $this->myDOMNode->save($filename);}
+
+
+ function dump_mem($format=false,$encoding=false) {return $this->myDOMNode->saveXML();}
+
+
+ function get_element_by_id($id) {return new php4DOMElement($this->myDOMNode->getElementById($id),$this);}
+
+
+ function get_elements_by_tagname($name)
+
+
+ {
+
+
+ $myDOMNodeList=$this->myDOMNode->getElementsByTagName($name);
+
+
+ $nodeSet=array();
+
+
+ $i=0;
+
+
+ if (isset($myDOMNodeList))
+
+
+ while ($node=$myDOMNodeList->item($i))
+
+
+ {
+
+
+ $nodeSet[]=new php4DOMElement($node,$this);
+
+
+ $i++;
+
+
+ }
+
+
+ return $nodeSet;
+
+
+ }
+
+
+ function html_dump_mem() {return $this->myDOMNode->saveHTML();}
+
+
+ function root() {return new php4DOMElement($this->myDOMNode->documentElement,$this);}
+
+
+}
+
+
+
+
+
+class php4DOMElement extends php4DOMNode
+
+
+{
+
+
+ function get_attribute($name) {return $this->myDOMNode->getAttribute($name);}
+
+
+ function get_elements_by_tagname($name)
+
+
+ {
+
+
+ $myDOMNodeList=$this->myDOMNode->getElementsByTagName($name);
+
+
+ $nodeSet=array();
+
+
+ $i=0;
+
+
+ if (isset($myDOMNodeList))
+
+
+ while ($node=$myDOMNodeList->item($i))
+
+
+ {
+
+
+ $nodeSet[]=new php4DOMElement($node,$this->myOwnerDocument);
+
+
+ $i++;
+
+
+ }
+
+
+ return $nodeSet;
+
+
+ }
+
+
+ function has_attribute($name) {return $this->myDOMNode->hasAttribute($name);}
+
+
+ function remove_attribute($name) {return $this->myDOMNode->removeAttribute($name);}
+
+
+ function set_attribute($name,$value) {return $this->myDOMNode->setAttribute($name,$value);}
+
+
+ function tagname() {return $this->myDOMNode->tagName;}
+
+
+}
+
+
+
+
+
+class php4DOMNode
+
+
+{
+
+
+ var $myDOMNode;
+
+
+ var $myOwnerDocument;
+
+
+ function php4DOMNode($aDomNode,$aOwnerDocument)
+
+
+ {
+
+
+ $this->myDOMNode=$aDomNode;
+
+
+ $this->myOwnerDocument=$aOwnerDocument;
+
+
+ }
+
+
+ function __get($name)
+
+
+ {
+
+
+ if ($name=='type') return $this->myDOMNode->nodeType;
+
+
+ elseif ($name=='tagname') return $this->myDOMNode->tagName;
+
+
+ elseif ($name=='content') return $this->myDOMNode->textContent;
+
+
+ else
+
+
+ {
+
+
+ $myErrors=debug_backtrace();
+
+
+ trigger_error('Undefined property: '.get_class($this).'::$'.$name.' ['.$myErrors[0]['file'].':'.$myErrors[0]['line'].']',E_USER_NOTICE);
+
+
+ return false;
+
+
+ }
+
+
+ }
+
+
+ function append_child($newnode) {return new php4DOMElement($this->myDOMNode->appendChild($newnode->myDOMNode),$this->myOwnerDocument);}
+
+
+ function append_sibling($newnode) {return new php4DOMElement($this->myDOMNode->parentNode->appendChild($newnode->myDOMNode),$this->myOwnerDocument);}
+
+
+ function attributes()
+
+
+ {
+
+
+ $myDOMNodeList=$this->myDOMNode->attributes;
+
+
+ $nodeSet=array();
+
+
+ $i=0;
+
+
+ if (isset($myDOMNodeList))
+
+
+ while ($node=$myDOMNodeList->item($i))
+
+
+ {
+
+
+ $nodeSet[]=new php4DOMAttr($node,$this->myOwnerDocument);
+
+
+ $i++;
+
+
+ }
+
+
+ return $nodeSet;
+
+
+ }
+
+
+ function child_nodes()
+
+
+ {
+
+
+ $myDOMNodeList=$this->myDOMNode->childNodes;
+
+
+ $nodeSet=array();
+
+
+ $i=0;
+
+
+ if (isset($myDOMNodeList))
+
+
+ while ($node=$myDOMNodeList->item($i))
+
+
+ {
+
+
+ $nodeSet[]=new php4DOMElement($node,$this->myOwnerDocument);
+
+
+ $i++;
+
+
+ }
+
+
+ return $nodeSet;
+
+
+ }
+
+
+ function children() {return $this->child_nodes();}
+
+
+ function clone_node($deep=false) {return new php4DOMElement($this->myDOMNode->cloneNode($deep),$this->myOwnerDocument);}
+
+
+ function first_child() {return new php4DOMElement($this->myDOMNode->firstChild,$this->myOwnerDocument);}
+
+
+ function get_content() {return $this->myDOMNode->textContent;}
+
+
+ function has_attributes() {return $this->myDOMNode->hasAttributes();}
+
+
+ function has_child_nodes() {return $this->myDOMNode->hasChildNodes();}
+
+
+ function insert_before($newnode,$refnode) {return new php4DOMElement($this->myDOMNode->insertBefore($newnode->myDOMNode,$refnode->myDOMNode),$this->myOwnerDocument);}
+
+
+ function is_blank_node()
+
+
+ {
+
+
+ $myDOMNodeList=$this->myDOMNode->childNodes;
+
+
+ $i=0;
+
+
+ if (isset($myDOMNodeList))
+
+
+ while ($node=$myDOMNodeList->item($i))
+
+
+ {
+
+
+ if (($node->nodeType==XML_ELEMENT_NODE)||
+
+
+ (($node->nodeType==XML_TEXT_NODE)&&!ereg('^([[:cntrl:]]|[[:space:]])*$',$node->nodeValue)))
+
+
+ return false;
+
+
+ $i++;
+
+
+ }
+
+
+ return true;
+
+
+ }
+
+
+ function last_child() {return new php4DOMElement($this->myDOMNode->lastChild,$this->myOwnerDocument);}
+
+
+ function new_child($name,$content)
+
+
+ {
+
+
+ $mySubNode=$this->myDOMNode->ownerDocument->createElement($name);
+
+
+ $mySubNode->appendChild($this->myDOMNode->ownerDocument->createTextNode($content));
+
+
+ $this->myDOMNode->appendChild($mySubNode);
+
+
+ return new php4DOMElement($mySubNode,$this->myOwnerDocument);
+
+
+ }
+
+
+ function next_sibling() {return new php4DOMElement($this->myDOMNode->nextSibling,$this->myOwnerDocument);}
+
+
+ function node_name() {return $this->myDOMNode->localName;}
+
+
+ function node_type() {return $this->myDOMNode->nodeType;}
+
+
+ function node_value() {return $this->myDOMNode->nodeValue;}
+
+
+ function owner_document() {return $this->myOwnerDocument;}
+
+
+ function parent_node() {return new php4DOMElement($this->myDOMNode->parentNode,$this->myOwnerDocument);}
+
+
+ function prefix() {return $this->myDOMNode->prefix;}
+
+
+ function previous_sibling() {return new php4DOMElement($this->myDOMNode->previousSibling,$this->myOwnerDocument);}
+
+
+ function remove_child($oldchild) {return new php4DOMElement($this->myDOMNode->removeChild($oldchild->myDOMNode),$this->myOwnerDocument);}
+
+
+ function replace_child($oldnode,$newnode) {return new php4DOMElement($this->myDOMNode->replaceChild($oldnode->myDOMNode,$newnode->myDOMNode),$this->myOwnerDocument);}
+
+
+ function set_content($text)
+
+
+ {
+
+
+ if (($this->myDOMNode->hasChildNodes())&&($this->myDOMNode->firstChild->nodeType==XML_TEXT_NODE))
+
+
+ $this->myDOMNode->removeChild($this->myDOMNode->firstChild);
+
+
+ return $this->myDOMNode->appendChild($this->myDOMNode->ownerDocument->createTextNode($text));
+
+
+ }
+
+
+}
+
+
+
+
+
+class php4DOMNodelist
+
+
+{
+
+
+ var $myDOMNodelist;
+
+
+ var $nodeset;
+
+
+ function php4DOMNodelist($aDOMNodelist,$aOwnerDocument)
+
+
+ {
+
+
+ $this->myDOMNodelist=$aDOMNodelist;
+
+
+ $this->nodeset=array();
+
+
+ $i=0;
+
+
+ if (isset($this->myDOMNodelist))
+
+
+ while ($node=$this->myDOMNodelist->item($i))
+
+
+ {
+
+
+ $this->nodeset[]=new php4DOMElement($node,$aOwnerDocument);
+
+
+ $i++;
+
+
+ }
+
+
+ }
+
+
+}
+
+
+
+
+
+class php4DOMXPath
+
+
+{
+
+
+ var $myDOMXPath;
+
+
+ var $myOwnerDocument;
+
+
+ function php4DOMXPath($dom_document)
+
+
+ {
+
+
+ $this->myOwnerDocument=$dom_document;
+
+
+ $this->myDOMXPath=new DOMXPath($dom_document->myDOMNode);
+
+
+ }
+
+
+ function query($eval_str,$contextnode)
+
+
+ {
+
+
+ if (isset($contextnode)) return new php4DOMNodelist($this->myDOMXPath->query($eval_str,$contextnode->myDOMNode),$this->myOwnerDocument);
+
+
+ else return new php4DOMNodelist($this->myDOMXPath->query($eval_str),$this->myOwnerDocument);
+
+
+ }
+
+
+ function xpath_register_ns($prefix,$namespaceURI) {return $this->myDOMXPath->registerNamespace($prefix,$namespaceURI);}
+
+
+}
+
+
+
+
+
+if (extension_loaded('xsl'))
+
+
+{//See also: http://alexandre.alapetite.net/doc-alex/xslt-php4-php5/
+
+
+ function domxml_xslt_stylesheet($xslstring) {return new php4DomXsltStylesheet(DOMDocument::loadXML($xslstring));}
+
+
+ function domxml_xslt_stylesheet_doc($dom_document) {return new php4DomXsltStylesheet($dom_document);}
+
+
+ function domxml_xslt_stylesheet_file($xslfile) {return new php4DomXsltStylesheet(DOMDocument::load($xslfile));}
+
+
+ class php4DomXsltStylesheet
+
+
+ {
+
+
+ var $myxsltProcessor;
+
+
+ function php4DomXsltStylesheet($dom_document)
+
+
+ {
+
+
+ $this->myxsltProcessor=new xsltProcessor();
+
+
+ $this->myxsltProcessor->importStyleSheet($dom_document);
+
+
+ }
+
+
+ function process($dom_document,$xslt_parameters=array(),$param_is_xpath=false)
+
+
+ {
+
+
+ foreach ($xslt_parameters as $param=>$value)
+
+
+ $this->myxsltProcessor->setParameter('',$param,$value);
+
+
+ $myphp4DOMDocument=new php4DOMDocument();
+
+
+ $myphp4DOMDocument->myDOMNode=$this->myxsltProcessor->transformToDoc($dom_document->myDOMNode);
+
+
+ return $myphp4DOMDocument;
+
+
+ }
+
+
+ function result_dump_file($dom_document,$filename)
+
+
+ {
+
+
+ $html=$dom_document->myDOMNode->saveHTML();
+
+
+ file_put_contents($filename,$html);
+
+
+ return $html;
+
+
+ }
+
+
+ function result_dump_mem($dom_document) {return $dom_document->myDOMNode->saveHTML();}
+
+
+ }
+
+
+}
+
+
?>
\ No newline at end of file