phpgroupware-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpgroupware-cvs] api/interface/class.interface_xmlrpc.php, 1.1.2.17


From: nomail
Subject: [Phpgroupware-cvs] api/interface/class.interface_xmlrpc.php, 1.1.2.17
Date: Wed, 16 Jun 2004 18:42:28 +0200

Update of /api/interface
Modified Files:
        Branch: proposal-branch
          class.interface_xmlrpc.php

date: 2004/06/16 16:42:28;  author: dcech;  state: Exp;  lines: +38 -47

Log Message:
* improved robustness of add_vars and added support for objects
* added htmlentities encoding to all strings to allow embedding of markup in 
returned values
=====================================================================
Index: api/interface/class.interface_xmlrpc.php
diff -u api/interface/class.interface_xmlrpc.php:1.1.2.16 
api/interface/class.interface_xmlrpc.php:1.1.2.17
--- api/interface/class.interface_xmlrpc.php:1.1.2.16   Wed Jun 16 16:15:36 2004
+++ api/interface/class.interface_xmlrpc.php    Wed Jun 16 16:42:28 2004
@@ -422,62 +422,53 @@
 
                function add_vars($params,$level = 0)
                {
-                       if(!is_array($params))
-                       {
-                               $result  = 
str_repeat($this->indent,$level)."<value>\n";
-                               $result .= 
str_repeat($this->indent,$level+1).$this->add_params_type_handler($params)."\n";
-                               $result .= 
str_repeat($this->indent,$level)."</value>\n";
-                       }
-                       elseif(empty($params) || reset(array_keys($params)) === 
0)
-                       {
-                               $result  = 
str_repeat($this->indent,$level)."<value>\n";
-                               $result .= 
str_repeat($this->indent,$level+1)."<array>\n";
-                               $result .= 
str_repeat($this->indent,$level+2)."<data>\n";
-                               foreach ($params as $val)
-                               {
-                                       $result .= 
$this->add_vars($val,$level+3);
-                               }
-                               
-                               $result .= 
str_repeat($this->indent,$level+2)."</data>\n";
-                               $result .= 
str_repeat($this->indent,$level+1)."</array>\n";
-                               $result .= 
str_repeat($this->indent,$level)."</value>\n";
-                       }
-                       else
-                       {
-                               $result  = 
str_repeat($this->indent,$level)."<value>\n";
-                               $result .= 
str_repeat($this->indent,$level+1)."<struct>\n";
-                               foreach ($params as $key => $val)
-                               {
-                                       $result .= 
str_repeat($this->indent,$level+2)."<member>\n";
-                                       $result .= 
str_repeat($this->indent,$level+3)."<name>".$key."</name>\n";
-                                       $result .= 
$this->add_vars($val,$level+3);
-                                       $result .= 
str_repeat($this->indent,$level+2)."</member>\n";
-                               }
-                               $result .= 
str_repeat($this->indent,$level+1)."</struct>\n";
-                               $result .= 
str_repeat($this->indent,$level)."</value>\n";
-                       }
-                       return $result;
-               }
-
-               function add_params_type_handler($param)
-               {
-                       switch(gettype($param))
+                       $result  = str_repeat($this->indent,$level)."<value>\n";
+                       
+                       switch(gettype($params))
                        {
                                case 'boolean':
-                                       return '<boolean>'.$param.'</boolean>';
+                                       $result .= 
str_repeat($this->indent,$level+1).'<boolean>'.$params."</boolean>\n";
                                        break;
                                case 'double':
-                                       return '<double>'.$param.'</double>';
+                                       $result .= 
str_repeat($this->indent,$level+1).'<double>'.$params."</double>\n";
                                        break;
                                case 'integer':
-                                       return '<i4>'.$param.'</i4>';
+                                       $result .= 
str_repeat($this->indent,$level+1).'<i4>'.$params."</i4>\n";
+                                       break;
+                               case 'string':
+                                       $result .= 
str_repeat($this->indent,$level+1).'<string>'.htmlentities($params)."</string>\n";
                                        break;
                                case 'array':
-                                       //need to handle this
+                                       if(empty($params) || 
reset(array_keys($params)) === 0)
+                                       {
+                                               $result .= 
str_repeat($this->indent,$level+1)."<array>\n";
+                                               $result .= 
str_repeat($this->indent,$level+2)."<data>\n";
+                                               foreach ($params as $val)
+                                               {
+                                                       $result .= 
$this->add_vars($val,$level+3);
+                                               }
+                                               
+                                               $result .= 
str_repeat($this->indent,$level+2)."</data>\n";
+                                               $result .= 
str_repeat($this->indent,$level+1)."</array>\n";
+                                               break;
+                                       }
+                               case 'object':
+                                       $result .= 
str_repeat($this->indent,$level+1)."<struct>\n";
+                                       foreach ($params as $key => $val)
+                                       {
+                                               $result .= 
str_repeat($this->indent,$level+2)."<member>\n";
+                                               $result .= 
str_repeat($this->indent,$level+3)."<name>".$key."</name>\n";
+                                               $result .= 
$this->add_vars($val,$level+3);
+                                               $result .= 
str_repeat($this->indent,$level+2)."</member>\n";
+                                       }
+                                       $result .= 
str_repeat($this->indent,$level+1)."</struct>\n";
                                        break;
-                               default:
-                                       return '<string>'.$param.'</string>';
+                               default: // ignore resources, NULL, functions 
or unknown types
+                                       return '';
                        }
+                       
+                       $result .= 
str_repeat($this->indent,$level)."</value>\n";
+                       return $result;
                }
 
                function system_listMethods()




reply via email to

[Prev in Thread] Current Thread [Next in Thread]