Mercurial > hg > rr-repo
annotate sites/all/libraries/ARC2/arc/serializers/ARC2_LegacyXMLSerializer.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 XML 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_LegacyXMLSerializer 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 = 'text/xml'; |
danielebarchiesi@4 | 22 } |
danielebarchiesi@4 | 23 |
danielebarchiesi@4 | 24 /* */ |
danielebarchiesi@4 | 25 |
danielebarchiesi@4 | 26 function getSerializedArray($struct, $root = 1, $ind = ' ') { |
danielebarchiesi@4 | 27 $n = "\n"; |
danielebarchiesi@4 | 28 $r = ''; |
danielebarchiesi@4 | 29 $is_flat = $this->isAssociativeArray($struct) ? 0 : 1; |
danielebarchiesi@4 | 30 foreach ($struct as $k => $v) { |
danielebarchiesi@4 | 31 $tag = $is_flat ? 'item' : preg_replace('/[\s]/s', '_', $k); |
danielebarchiesi@4 | 32 $tag = preg_replace('/^.*([a-z0-9\-\_]+)$/Uis', '\\1', $tag); |
danielebarchiesi@4 | 33 $r .= $n . $ind . '<' . $tag . '>' . (is_array($v) ? $this->getSerializedArray($v, 0, $ind . ' ') . $n . $ind : htmlspecialchars($v)) . '</' . $tag . '>'; |
danielebarchiesi@4 | 34 } |
danielebarchiesi@4 | 35 if ($root) $r = $this->getHead() . $r . $this->getFooter(); |
danielebarchiesi@4 | 36 return $r; |
danielebarchiesi@4 | 37 } |
danielebarchiesi@4 | 38 |
danielebarchiesi@4 | 39 /* */ |
danielebarchiesi@4 | 40 |
danielebarchiesi@4 | 41 function getHead() { |
danielebarchiesi@4 | 42 $n = "\n"; |
danielebarchiesi@4 | 43 $r = '<?xml version="1.0"?>'; |
danielebarchiesi@4 | 44 $r .= $n . '<items>'; |
danielebarchiesi@4 | 45 return $r; |
danielebarchiesi@4 | 46 } |
danielebarchiesi@4 | 47 |
danielebarchiesi@4 | 48 function getFooter() { |
danielebarchiesi@4 | 49 $n = "\n"; |
danielebarchiesi@4 | 50 $r = $n . '</items>'; |
danielebarchiesi@4 | 51 return $r; |
danielebarchiesi@4 | 52 } |
danielebarchiesi@4 | 53 |
danielebarchiesi@4 | 54 /* */ |
danielebarchiesi@4 | 55 |
danielebarchiesi@4 | 56 function isAssociativeArray($v) { |
danielebarchiesi@4 | 57 foreach (array_keys($v) as $k => $val) { |
danielebarchiesi@4 | 58 if ($k !== $val) return 1; |
danielebarchiesi@4 | 59 } |
danielebarchiesi@4 | 60 return 0; |
danielebarchiesi@4 | 61 } |
danielebarchiesi@4 | 62 |
danielebarchiesi@4 | 63 /* */ |
danielebarchiesi@4 | 64 |
danielebarchiesi@4 | 65 } |
danielebarchiesi@4 | 66 |