Mercurial > hg > rr-repo
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sites/all/libraries/ARC2/arc/serializers/ARC2_LegacyJSONSerializer.php Thu Sep 19 10:38:44 2013 +0100 @@ -0,0 +1,53 @@ +<?php +/* +homepage: http://arc.semsol.org/ +license: http://arc.semsol.org/license + +class: ARC2 Legacy JSON Serializer +author: Benjamin Nowack +version: 2010-11-16 +*/ + +ARC2::inc('Class'); + +class ARC2_LegacyJSONSerializer extends ARC2_Class { + + function __construct($a, &$caller) { + parent::__construct($a, $caller); + } + + function __init() { + parent::__init(); + $this->content_header = 'application/json'; + } + + /* */ + + function getSerializedArray($struct, $ind = '') { + $n = "\n"; + if (function_exists('json_encode')) return str_replace('","', '",' . $n . '"', str_replace("\/","/",json_encode($struct))); + $r = ''; + $from = array("\\", "\r", "\t", "\n", '"', "\b", "\f"); + $to = array('\\\\', '\r', '\t', '\n', '\"', '\b', '\f'); + $is_flat = $this->isAssociativeArray($struct) ? 0 : 1; + foreach ($struct as $k => $v) { + $r .= $r ? ',' . $n . $ind . $ind : $ind . $ind; + $r .= $is_flat ? '' : '"' . $k . '": '; + $r .= is_array($v) ? $this->getSerializedArray($v, $ind . ' ') : '"' . str_replace($from, $to, $v) . '"'; + } + return $is_flat ? $ind . '[' . $n . $r . $n . $ind . ']' : $ind . '{' . $n . $r . $n . $ind . '}'; + } + + /* */ + + function isAssociativeArray($v) { + foreach (array_keys($v) as $k => $val) { + if ($k !== $val) return 1; + } + return 0; + } + + /* */ + +} +