Author: chabotc
Date: Mon May 19 06:06:08 2008
New Revision: 657816

URL: http://svn.apache.org/viewvc?rev=657816&view=rev
Log:
Trim NULL values from social data json responses

Modified:
    incubator/shindig/trunk/php/src/socialdata/DataResponse.php
    incubator/shindig/trunk/php/src/socialdata/ResponseItem.php

Modified: incubator/shindig/trunk/php/src/socialdata/DataResponse.php
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/socialdata/DataResponse.php?rev=657816&r1=657815&r2=657816&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/socialdata/DataResponse.php (original)
+++ incubator/shindig/trunk/php/src/socialdata/DataResponse.php Mon May 19 
06:06:08 2008
@@ -26,6 +26,10 @@
        {
                $this->error = $error;
                $this->responses = $responses;
+               if ($this->error === null) {
+                       // trim NULL values here too
+                       unset($this->error);
+               }
        }
 
        public function getResponses()

Modified: incubator/shindig/trunk/php/src/socialdata/ResponseItem.php
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/socialdata/ResponseItem.php?rev=657816&r1=657815&r2=657816&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/socialdata/ResponseItem.php (original)
+++ incubator/shindig/trunk/php/src/socialdata/ResponseItem.php Mon May 19 
06:06:08 2008
@@ -30,7 +30,42 @@
        {
                $this->error = $error;
                $this->errorMessage = $errorMessage;
-               $this->response = $response;
+               $this->response = $this->trimResponse($response);
+               if ($this->error === null && $this->errorMessage === null) {
+                       // trim null values of self too
+                       unset($this->error);
+                       unset($this->errorMessage);
+               }
+       }
+       
+       /**
+        * the json_encode function does not trim null values,
+        * so we do this manually
+        *
+        * @param mixed $object
+        */
+       private function trimResponse(&$object)
+       {
+               if (is_array($object)) {
+                       foreach ($object as $key => $val) {
+                               // binary compare, otherwise false == 0 == null 
too
+                               if ($val === null) {
+                                       unset($object[$key]);
+                               } elseif (is_array($val) || is_object($val)) {
+                                       $object[$key] = 
$this->trimResponse($val);
+                               }
+                       }
+               } elseif (is_object($object)) {
+                       $vars = get_object_vars($object);
+                       foreach ($vars as $key => $val) {
+                               if ($val === null) {
+                                       unset($object->$key);
+                               } elseif (is_array($val) || is_object($val)) {
+                                       $object->$key = 
$this->trimResponse($val);
+                               }
+                       }
+               }
+               return $object;
        }
        
        public function getError()


Reply via email to