Mercurial > hg > rr-repo
annotate sites/all/libraries/ARC2/arc/serializers/ARC2_LegacyJSONSerializer.php @ 4:ce11bbd8f642
added modules
author | danieleb <danielebarchiesi@me.com> |
---|---|
date | Thu, 19 Sep 2013 10:38:44 +0100 |
parents | |
children |
rev | line source |
---|---|
danielebarchiesi@4 | 1 <?php |
danielebarchiesi@4 | 2 /* |
danielebarchiesi@4 | 3 homepage: http://arc.semsol.org/ |
danielebarchiesi@4 | 4 license: http://arc.semsol.org/license |
danielebarchiesi@4 | 5 |
danielebarchiesi@4 | 6 class: ARC2 Legacy JSON Serializer |
danielebarchiesi@4 | 7 author: Benjamin Nowack |
danielebarchiesi@4 | 8 version: 2010-11-16 |
danielebarchiesi@4 | 9 */ |
danielebarchiesi@4 | 10 |
danielebarchiesi@4 | 11 ARC2::inc('Class'); |
danielebarchiesi@4 | 12 |
danielebarchiesi@4 | 13 class ARC2_LegacyJSONSerializer extends ARC2_Class { |
danielebarchiesi@4 | 14 |
danielebarchiesi@4 | 15 function __construct($a, &$caller) { |
danielebarchiesi@4 | 16 parent::__construct($a, $caller); |
danielebarchiesi@4 | 17 } |
danielebarchiesi@4 | 18 |
danielebarchiesi@4 | 19 function __init() { |
danielebarchiesi@4 | 20 parent::__init(); |
danielebarchiesi@4 | 21 $this->content_header = 'application/json'; |
danielebarchiesi@4 | 22 } |
danielebarchiesi@4 | 23 |
danielebarchiesi@4 | 24 /* */ |
danielebarchiesi@4 | 25 |
danielebarchiesi@4 | 26 function getSerializedArray($struct, $ind = '') { |
danielebarchiesi@4 | 27 $n = "\n"; |
danielebarchiesi@4 | 28 if (function_exists('json_encode')) return str_replace('","', '",' . $n . '"', str_replace("\/","/",json_encode($struct))); |
danielebarchiesi@4 | 29 $r = ''; |
danielebarchiesi@4 | 30 $from = array("\\", "\r", "\t", "\n", '"', "\b", "\f"); |
danielebarchiesi@4 | 31 $to = array('\\\\', '\r', '\t', '\n', '\"', '\b', '\f'); |
danielebarchiesi@4 | 32 $is_flat = $this->isAssociativeArray($struct) ? 0 : 1; |
danielebarchiesi@4 | 33 foreach ($struct as $k => $v) { |
danielebarchiesi@4 | 34 $r .= $r ? ',' . $n . $ind . $ind : $ind . $ind; |
danielebarchiesi@4 | 35 $r .= $is_flat ? '' : '"' . $k . '": '; |
danielebarchiesi@4 | 36 $r .= is_array($v) ? $this->getSerializedArray($v, $ind . ' ') : '"' . str_replace($from, $to, $v) . '"'; |
danielebarchiesi@4 | 37 } |
danielebarchiesi@4 | 38 return $is_flat ? $ind . '[' . $n . $r . $n . $ind . ']' : $ind . '{' . $n . $r . $n . $ind . '}'; |
danielebarchiesi@4 | 39 } |
danielebarchiesi@4 | 40 |
danielebarchiesi@4 | 41 /* */ |
danielebarchiesi@4 | 42 |
danielebarchiesi@4 | 43 function isAssociativeArray($v) { |
danielebarchiesi@4 | 44 foreach (array_keys($v) as $k => $val) { |
danielebarchiesi@4 | 45 if ($k !== $val) return 1; |
danielebarchiesi@4 | 46 } |
danielebarchiesi@4 | 47 return 0; |
danielebarchiesi@4 | 48 } |
danielebarchiesi@4 | 49 |
danielebarchiesi@4 | 50 /* */ |
danielebarchiesi@4 | 51 |
danielebarchiesi@4 | 52 } |
danielebarchiesi@4 | 53 |