chregu          Fri Mar 30 02:36:42 2001 EDT

  Modified files:              
    /php4/pear/Experimental/XML sql2xml.php 
  Log:
  - new user_tableInfo option for user-contributed xml-structure
  - Error checking in doSql2Xml
  - xml_encode function for correctly parsing of &s.
  
  
Index: php4/pear/Experimental/XML/sql2xml.php
diff -u php4/pear/Experimental/XML/sql2xml.php:1.2 
php4/pear/Experimental/XML/sql2xml.php:1.3
--- php4/pear/Experimental/XML/sql2xml.php:1.2  Thu Mar 29 13:26:53 2001
+++ php4/pear/Experimental/XML/sql2xml.php      Fri Mar 30 02:36:42 2001
@@ -15,7 +15,7 @@
 // | Authors: Christian Stocker <[EMAIL PROTECTED]>                         |
 // +----------------------------------------------------------------------+
 //
-// $Id: sql2xml.php,v 1.2 2001/03/29 21:26:53 uw Exp $
+// $Id: sql2xml.php,v 1.3 2001/03/30 10:36:42 chregu Exp $
 
 /**
 * This class takes a PEAR::DB-Result Object (or more than one)
@@ -37,7 +37,7 @@
 *   for the time being
 *
 * @author   Christian Stocker <[EMAIL PROTECTED]>
-* @version  $Id: sql2xml.php,v 1.2 2001/03/29 21:26:53 uw Exp $
+* @version  $Id: sql2xml.php,v 1.3 2001/03/30 10:36:42 chregu Exp $
 */
 class XML_sql2xml {
 
@@ -71,7 +71,14 @@
 
     /**
     *
+    * @var  boolean
+    */
+    var $user_tableInfo = False;
+
+
+    /**
     *
+    *
     * @param  string
     */
     function XML_sql2xml ($root = "root") {
@@ -139,6 +146,11 @@
     function doSql2Xml($result, $options = False)
     {
 
+        if (DB::IsError($result)) {
+            print "Error in file ".__FILE__." at line ".__LINE__."<br>\n";
+            new DB_Error($result->code,PEAR_ERROR_DIE);
+        }
+
         //set options
         if (is_array($options))
         {
@@ -191,6 +203,12 @@
         }
 
         // end initialize
+        
+        // if user made some own tableInfo data, merge them here.
+        if ($this->user_tableInfo) 
+        {
+            $tableInfo = $this->array_merge_clobber($tableInfo,$this->user_tableInfo);
+        }        
         $parent[root] = $this->insertNewResult(&$tableInfo);
 
         while ($FirstFetchDone || $res = $result->FetchRow($fetchmode))
@@ -299,7 +317,7 @@
     */
     function insertNewElement($parent, $res, $key, &$metadata, &$subrow)
     {
-        return  $parent->new_child($metadata[$key]["name"], utf8_encode($res[$key]));
+        return  $parent->new_child($metadata[$key]["name"], 
+$this->xml_encode($res[$key]));
     }
 
     
@@ -313,5 +331,50 @@
     function addTableInfo($key, $value, &$metadata) {
 
     }
+    
+    /**
+    *
+    * @param    
+    * @abstract
+    */
+    function xml_encode ($text) {
+        $text = utf8_encode(ereg_replace("&","&amp;",$text));
+        return $text;
+    }
+    //taken from [EMAIL PROTECTED] at 
+http://www.php.net/manual/en/function.array-merge-recursive.php
+    /**
+    * There seemed to be no built in function that would merge two arrays recursively 
+and clobber
+    *   any existing key/value pairs. Array_Merge() is not recursive, and 
+array_merge_recursive
+    *   seemed to give unsatisfactory results... it would append duplicate key/values.
+    *
+    *   So here's a cross between array_merge and array_merge_recursive
+    **/
+
+    /**
+    *
+    * @param  
+    * @param      
+    * @abstract
+    */
+    function array_merge_clobber($a1,$a2)
+    {
+        if(!is_array($a1) || !is_array($a2)) return false;
+        $newarray = $a1;
+        while (list($key, $val) = each($a2))
+        {
+            if (is_array($val) && is_array($newarray[$key]))
+            {
+                $newarray[$key] = $this->array_merge_clobber($newarray[$key], $val);
+            }
+            else
+            {
+                $newarray[$key] = $val;
+            }
+        }
+        return $newarray;
+    }
+    
 }
 ?>
+
+        



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to