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