Example #1
0
 /**
  * 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);
 }
Example #2
0
/**
 * 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);
}