From ea9488f7f50515956fc62c4f066010b04c4c5502 Mon Sep 17 00:00:00 2001 From: cash Date: Tue, 3 Nov 2009 00:19:09 +0000 Subject: standardized xml.php and fixed output of booleans in xml view git-svn-id: http://code.elgg.org/elgg/trunk@3616 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/opendd.php | 2 +- engine/lib/plugins.php | 2 +- engine/lib/xml-rpc.php | 2 +- engine/lib/xml.php | 107 ++++++++++++++++++++++++++----------------------- 4 files changed, 59 insertions(+), 54 deletions(-) diff --git a/engine/lib/opendd.php b/engine/lib/opendd.php index 16d5b4671..c582e6f77 100644 --- a/engine/lib/opendd.php +++ b/engine/lib/opendd.php @@ -344,7 +344,7 @@ function ODD_factory(XmlElement $element) { */ function ODD_Import($xml) { // Parse XML to an array - $elements = xml_2_object($xml); + $elements = xml_to_object($xml); // Sanity check 1, was this actually XML? if ((!$elements) || (!$elements->children)) { diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php index daa543365..be604606e 100644 --- a/engine/lib/plugins.php +++ b/engine/lib/plugins.php @@ -312,7 +312,7 @@ function get_plugin_name($mainfilename = false) { function load_plugin_manifest($plugin) { global $CONFIG; - $xml = xml_2_object(file_get_contents($CONFIG->pluginspath . $plugin. "/manifest.xml")); + $xml = xml_to_object(file_get_contents($CONFIG->pluginspath . $plugin. "/manifest.xml")); if ($xml) { $elements = array(); diff --git a/engine/lib/xml-rpc.php b/engine/lib/xml-rpc.php index 1e2167507..9c59b1deb 100644 --- a/engine/lib/xml-rpc.php +++ b/engine/lib/xml-rpc.php @@ -57,7 +57,7 @@ */ private function parse($xml) { - $xml = xml_2_object($xml); + $xml = xml_to_object($xml); // sanity check if ((isset($xml->name)) && (strcasecmp($xml->name, "methodCall")!=0)) diff --git a/engine/lib/xml.php b/engine/lib/xml.php index e0bb0b17a..cbc936555 100644 --- a/engine/lib/xml.php +++ b/engine/lib/xml.php @@ -44,23 +44,29 @@ $output = ""; - if (($n==0) || ( is_object($data) && !($data instanceof stdClass))) $output = "<$classname>"; - - foreach ($vars as $key => $value) - { + if (($n==0) || ( is_object($data) && !($data instanceof stdClass))) { + $output = "<$classname>"; + } + + foreach ($vars as $key => $value) { $output .= "<$key type=\"".gettype($value)."\">"; - if (is_object($value)) + if (is_object($value)) { $output .= serialise_object_to_xml($value, $key, $n+1); - else if (is_array($value)) + } else if (is_array($value)) { $output .= serialise_array_to_xml($value, $n+1); - else + } else if (gettype($value) == "boolean") { + $output .= $value ? "true" : "false"; + } else { $output .= htmlentities($value); + } $output .= "\n"; } - if (($n==0) || ( is_object($data) && !($data instanceof stdClass))) $output .= "\n"; + if (($n==0) || ( is_object($data) && !($data instanceof stdClass))) { + $output .= "\n"; + } return $output; } @@ -76,31 +82,36 @@ { $output = ""; - if ($n==0) $output = "\n"; + if ($n==0) { + $output = "\n"; + } - foreach ($data as $key => $value) - { + foreach ($data as $key => $value) { $item = "array_item"; - if (is_numeric($key)) + if (is_numeric($key)) { $output .= "<$item name=\"$key\" type=\"".gettype($value)."\">"; - else - { + } else { $item = $key; $output .= "<$item type=\"".gettype($value)."\">"; } - if (is_object($value)) + if (is_object($value)) { $output .= serialise_object_to_xml($value, "", $n+1); - else if (is_array($value)) + } else if (is_array($value)) { $output .= serialise_array_to_xml($value, $n+1); - else + } else if (gettype($value) == "boolean") { + $output .= $value ? "true" : "false"; + } else { $output .= htmlentities($value); + } $output .= "\n"; } - if ($n==0) $output = "\n"; + if ($n==0) { + $output = "\n"; + } return $output; } @@ -112,7 +123,7 @@ * * @param string $xml The XML. */ - function xml_2_object($xml) + function xml_to_object($xml) { $parser = xml_parser_create(); @@ -121,38 +132,32 @@ xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parse_into_struct($parser, $xml, $tags); - xml_parser_free($parser); - - $elements = array(); - $stack = array(); - - foreach ($tags as $tag) - { + xml_parser_free($parser); + + $elements = array(); + $stack = array(); + + foreach ($tags as $tag) { $index = count($elements); - if ($tag['type'] == "complete" || $tag['type'] == "open") - { - $elements[$index] = new XmlElement; - $elements[$index]->name = $tag['tag']; - $elements[$index]->attributes = $tag['attributes']; - $elements[$index]->content = $tag['value']; - - if ($tag['type'] == "open") - { - $elements[$index]->children = array(); - $stack[count($stack)] = &$elements; - $elements = &$elements[$index]->children; - } - } - - if ($tag['type'] == "close") - { - $elements = &$stack[count($stack) - 1]; - unset($stack[count($stack) - 1]); - } - } - - return $elements[0]; + if ($tag['type'] == "complete" || $tag['type'] == "open") { + $elements[$index] = new XmlElement; + $elements[$index]->name = $tag['tag']; + $elements[$index]->attributes = $tag['attributes']; + $elements[$index]->content = $tag['value']; + + if ($tag['type'] == "open") { + $elements[$index]->children = array(); + $stack[count($stack)] = &$elements; + $elements = &$elements[$index]->children; + } + } + + if ($tag['type'] == "close") { + $elements = &$stack[count($stack) - 1]; + unset($stack[count($stack) - 1]); + } + } + + return $elements[0]; } - -?> \ No newline at end of file -- cgit v1.2.3