/** * Formats return data into XML output */ function CreateOutput($output) { if (!is_array($output)) { return sprintf('%s', isc_html_escape($output)) . "\n"; } $xml_output = ''; foreach ($output as $name => $data) { if (is_numeric($name)) { $name = 'item'; } $quoted_name = isc_html_escape($name); if (!is_array($data)) { $xml_output .= sprintf('<%s>%s</%s>', $quoted_name, isc_html_escape($data), $quoted_name); continue; } $xml_output .= sprintf('<%s>', $quoted_name); if (is_array($data)) { foreach ($data as $k => $v) { if (is_array($v)) { $xml_output .= '<item>' . CreateOutput($v) . '</item>'; continue; } if (is_numeric($k)) { $k = 'item'; } $k_quoted = isc_html_escape($k); $xml_output .= sprintf('<%s>%s</%s>', $k_quoted, isc_html_escape($v), $k_quoted); } } $xml_output .= sprintf('</%s>', $quoted_name); } return $this->FormatXML($xml_output); }
/** * CreateOutput * This is a recursive function that creates a valid xml response and handles whether the output passed in is * - just a string (return an escaped version of the output) * - an array (return an xml based tree) * - an array with numeric id's (eg '<0>xyz</0>') * - a multidimensional array (eg '<0><listname>xyz</listname></0>') * * @param Mixed $output The output to display can be a string, a single-element array or multi-dimensional array. * * @see FormatXML * * @return Void Returns a formatted xml document. */ function CreateOutput($output='') { if (!is_array($output)) { return sprintf('%s', htmlspecialchars($output, ENT_QUOTES, SENDSTUDIO_CHARSET)) . "\n"; } $xml_output = ''; foreach ($output as $name => $data) { if (is_numeric($name)) { $name = 'item'; } $quoted_name = htmlspecialchars($name, ENT_QUOTES, SENDSTUDIO_CHARSET); if (!is_array($data)) { $xml_output .= sprintf('<%s>%s</%s>', $quoted_name, htmlspecialchars($data, ENT_QUOTES, SENDSTUDIO_CHARSET), $quoted_name); continue; } $xml_output .= sprintf('<%s>', $quoted_name); if (is_array($data)) { foreach ($data as $k => $v) { if (is_array($v)) { $xml_output .= '<item>' . CreateOutput($v) . '</item>'; continue; } if (is_numeric($k)) { $k = 'item'; } $k_quoted = htmlspecialchars($k, ENT_QUOTES, SENDSTUDIO_CHARSET); $xml_output .= sprintf('<%s>%s</%s>', $k_quoted, htmlspecialchars($v, ENT_QUOTES, SENDSTUDIO_CHARSET), $k_quoted); } } $xml_output .= sprintf('</%s>', $quoted_name); } return FormatXML($xml_output); }