ftimme
2012-05-10 4c28d9c34f5f3e5ccbbed6dbb0ba08bc5235b53b
interface/lib/classes/functions.inc.php
@@ -109,6 +109,46 @@
      return $url;
   }
   
    function json_encode($data) {
      if(!function_exists('json_encode')){
         switch ($type = gettype($data)){
            case 'NULL':
               return 'null';
            case 'boolean':
               return ($data ? 'true' : 'false');
            case 'integer':
            case 'double':
            case 'float':
               return $data;
            case 'string':
               return '"' . addslashes($data) . '"';
            case 'object':
               $data = get_object_vars($data);
            case 'array':
               $output_index_count = 0;
               $output_indexed = array();
               $output_associative = array();
               foreach($data as $key => $value){
                  $output_indexed[] = $this->json_encode($value);
                  $output_associative[] = $this->json_encode($key) . ':' . $this->json_encode($value);
                  if($output_index_count !== NULL && $output_index_count++ !== $key){
                     $output_index_count = NULL;
                  }
               }
               if($output_index_count !== NULL){
                  return '[' . implode(',', $output_indexed) . ']';
               } else {
                  return '{' . implode(',', $output_associative) . '}';
               }
            default:
               return ''; // Not supported
         }
      } else {
         return json_encode($data);
      }
    }
      
}