Example #1
0
function & XML_serialize($data, $level = 0, $prior_key = NULL){
	if($level == 0){ ob_start(); echo '<?xml version="1.0" ?>',"\n"; }
	while(list($key, $value) = each($data))
		if(!strpos($key, ' attr')) #if it's not an attribute
			#we don't treat attributes by themselves, so for an empty element
			# that has attributes you still need to set the element to NULL

			if(is_array($value) and array_key_exists(0, $value)){
				XML_serialize($value, $level, $key);
			}else{
				$tag = $prior_key ? $prior_key : $key;
				echo str_repeat("\t", $level),'<',$tag;
				if(array_key_exists("$key attr", $data)){ #if there's an attribute for this element
					while(list($attr_name, $attr_value) = each($data["$key attr"]))
						echo ' ',$attr_name,'="',thtmlspecialchars($attr_value),'"';
					reset($data["$key attr"]);
				}

				if(is_null($value)) echo " />\n";
				elseif(!is_array($value)) echo '>',thtmlspecialchars($value),"</$tag>\n";
				else echo ">\n",XML_serialize($value, $level+1),str_repeat("\t", $level),"</$tag>\n";
			}
	reset($data);
	if($level == 0){ $str = &ob_get_contents(); ob_end_clean(); return $str; }
}
function XML_serialize(&$data, $encoding, $level = 0, $prior_key = NULL)
{
    if ($level == 0) {
        ob_start();
        echo '<?xml version="1.0"';
        if (empty($encoding) === false) {
            echo ' encoding="' . $encoding . '"';
        }
        echo '?>', "\n";
    }
    foreach ($data as $key => $value) {
        $is_cdata = false;
        if (!strpos($key, ' attr')) {
            #if it's not an attribute
            #we don't treat attributes by themselves, so for an empty element
            # that has attributes you still need to set the element to NULL
            if (is_array($value) and array_key_exists(0, $value)) {
                XML_serialize($value, $encoding, $level, $key);
            } else {
                $tag = $prior_key ? $prior_key : $key;
                if (($pos = strpos($tag, '-CDATA')) !== false) {
                    $tag = substr($tag, 0, $pos);
                    $is_cdata = true;
                }
                echo str_repeat("  ", $level), '<', $tag;
                if (array_key_exists("{$key} attr", $data)) {
                    #if there's an attribute for this element
                    while (list($attr_name, $attr_value) = each($data["{$key} attr"])) {
                        echo ' ', $attr_name, '="', $attr_value, '"';
                    }
                    reset($data["{$key} attr"]);
                }
                if (is_null($value)) {
                    echo " />\n";
                } elseif (!is_array($value)) {
                    echo '>';
                    if ($is_cdata === true) {
                        echo '<![CDATA[';
                    }
                    echo $value;
                    if ($is_cdata === true) {
                        echo ']]>';
                    }
                    echo "</{$tag}>\n";
                } else {
                    echo ">\n", XML_serialize($value, $encoding, $level + 1), str_repeat("  ", $level), "</{$tag}>\n";
                }
            }
        }
    }
    reset($data);
    if ($level == 0) {
        $str =& ob_get_contents();
        ob_end_clean();
        return $str;
    }
}
Example #3
0
function &XML_serialize(&$data, $level = 0, $prior_key = NULL)
{
    if (!$level) {
        ob_start();
        echo '<?xml version="1.0" ?>', "\n";
    }
    foreach ($data as $key => $value) {
        if (!strpos($key, ' attr')) {
        }
        #if it's not an attribute
        #we don't treat attributes by themselves, so for an empty element
        # that has attributes you still need to set the element to NULL
        if (is_array($value) && array_key_exists(0, $value)) {
            XML_serialize($value, $level, $key);
        } else {
            $tag = $prior_key ? $prior_key : $key;
            echo str_repeat("\t", $level) . '<' . $tag;
            if (array_key_exists("{$key} attr", $data)) {
                foreach ($data[$key . ' attr'] as $attr_name => $attr_value) {
                    echo ' ' . $attr_name . '="' . htmlspecialchars($attr_value) . '"';
                }
                if (is_null($value)) {
                    echo " />\n";
                } else {
                    if (!is_array($value)) {
                        echo '>' . htmlspecialchars($value) . "</{$tag}>\n";
                    } else {
                        echo ">\n" . XML_serialize($value, $level + 1) . str_repeat("\t", $level) . "</{$tag}>\n";
                    }
                }
            }
        }
        if (!$level) {
            $str =& ob_get_contents();
            ob_end_clean();
            return $str;
        }
    }
}
Example #4
0
 /**
  *  Serialize output as XML
  *
  *  Example:
  *
  *  <code>
  *  $fp = fopen('feed.xml', 'w')
  *    or die('Could not open feed.xml for writing');
  *  fputs($fp, $rss->serialize());
  *  fclose($fp);
  *  </code>
  *
  *  With specific encoding to allow german umlauts:
  *
  *  <code>
  *  $rss->serialize('ISO-8859-1');
  *  </code>
  *
  *  @param string $charset		Character set to use
  *  @return string			RSS-Feed as XML 
  */
 function serialize($charset = NULL)
 {
     return XML_serialize($this->data, $charset);
 }
Example #5
0
 function toXML()
 {
     return XML_serialize($this->_xml, $this->_encoding);
 }
 protected function echo_api($code = 1, $res = '')
 {
     header('Content-type: application/json');
     $callback = $this->input->get_post('callback', true);
     //回调函数
     $rt = $this->input->get_post('rt', true);
     //返回类型,支持json/xml
     if (!in_array($rt, array('json', 'xml'))) {
         $rt = 'json';
     }
     $code = intval($code);
     if ($code > 0) {
         $ret['result'] = true;
         $ret['data'] = $res;
     } else {
         $ret['result'] = false;
         $ret['error'] = $res;
     }
     $ret['code'] = $code;
     switch ($rt) {
         case 'xml':
             $this->load->library('xmlparse');
             echo XML_serialize($ret);
             break;
         case 'json':
         default:
             $data = json_encode($ret);
             if (!empty($callback)) {
                 echo $callback . "(" . $data . ")";
             } else {
                 echo $data;
             }
     }
     exit;
 }
Example #7
0
function XMLRPC_error($faultCode, $faultString, $server = NULL)
{
    $array["methodResponse"]["fault"]["value"]["struct"]["member"] = array();
    $temp =& $array["methodResponse"]["fault"]["value"]["struct"]["member"];
    $temp[0]["name"] = "faultCode";
    $temp[0]["value"]["int"] = $faultCode;
    $temp[1]["name"] = "faultString";
    $temp[1]["value"]["string"] = $faultString;
    $return = XML_serialize($array);
    header("Connection: close");
    header("Content-Length: " . strlen($return));
    header("Content-Type: text/xml");
    header("Date: " . date("r"));
    if ($server) {
        header("Server: {$server}");
    }
    if (defined('XMLRPC_DEBUG') and XMLRPC_DEBUG) {
        XMLRPC_debug('XMLRPC_error', "<p>Sent the following error response:</p>\n\n" . XMLRPC_show($return, 'print_r', true));
    }
    echo $return;
}
 function serialize()
 {
     if (!$this->xml) {
         return '';
     }
     return XML_serialize($this->xml, 'theme');
 }
Example #9
0
function XML_serialize(&$data, $root_key = 'data', $level = 0, $prior_key = NULL)
{
    if ($level == 0) {
        ob_start();
        echo '<?xml version="1.0" ?>', "\n<{$root_key}>\n";
    }
    while (list($key, $value) = each($data)) {
        if (strpos($key, '@') === false) {
            # not an attribute
            # we don't treat attributes by themselves, so for an empty element
            # that has attributes you still need to set the element to NULL
            if (is_array($value) and array_key_exists(0, $value)) {
                XML_serialize($value, $root_key, $level + 1, $key);
            } else {
                $tag = $prior_key ? $prior_key : $key;
                if (is_numeric($tag)) {
                    $tag = "key_{$tag}";
                }
                echo str_repeat("\t", $level + 1), '<', $tag;
                if (array_key_exists("@{$key}", $data)) {
                    # if there's an attribute for this element
                    while (list($attr_name, $attr_value) = each($data["@{$key}"])) {
                        echo ' ', $attr_name, '="', htmlspecialchars($attr_value), '"';
                    }
                    reset($data["@{$key}"]);
                }
                if (is_null($value)) {
                    echo " />\n";
                } elseif (!is_array($value)) {
                    echo '>', htmlspecialchars($value), "</{$tag}>\n";
                } else {
                    echo ">\n", XML_serialize($value, $root_key, $level + 1), str_repeat("\t", $level + 1), "</{$tag}>\n";
                }
            }
        }
    }
    reset($data);
    if ($level == 0) {
        $str = ob_get_contents();
        ob_end_clean();
        return "{$str}</{$root_key}>\n";
    }
}
$settings['visualization']['style']['button']['text']['font'] = $vis->buttonfont;
$settings['visualization']['style']['button']['text']['size'] = $vis->buttonfontsize;
$settings['visualization']['style']['button']['line'] = array();
$settings['visualization']['style']['button']['line']['size'] = $vis->buttonlinesize;
$settings['visualization']['style']['button']['line']['color'] = $vis->buttonlinecolor;
$settings['visualization']['style']['button']['line']['alpha'] = $vis->buttonlinealpha;
$settings['visualization']['style']['popup'] = array();
$settings['visualization']['style']['popup']['bgcolor'] = $vis->popupbgcolor;
$settings['visualization']['style']['popup']['alpha'] = $vis->popupbgalpha;
$settings['visualization']['style']['popup']['text'] = array();
$settings['visualization']['style']['popup']['text']['font'] = $vis->popupfont;
$settings['visualization']['style']['popup']['text']['size'] = $vis->popupfontsize;
$settings['visualization']['style']['popup']['line'] = array();
$settings['visualization']['style']['popup']['line']['size'] = $vis->popuplinesize;
$settings['visualization']['style']['popup']['line']['color'] = $vis->popuplinecolor;
$settings['visualization']['style']['popup']['line']['alpha'] = $vis->popuplinealpha;
$settings['visualization']['lang'] = array();
$settings['visualization']['lang']['hide'] = get_string('hide', 'gradereport_visual');
$settings['visualization']['lang']['show'] = get_string('show', 'gradereport_visual');
$settings['visualization']['lang']['xlabels'] = get_string('xlabels', 'gradereport_visual');
$settings['visualization']['lang']['ylabels'] = get_string('ylabels', 'gradereport_visual');
$settings['visualization']['lang']['axes'] = get_string('axes', 'gradereport_visual');
$settings['visualization']['lang']['invertaxes'] = get_string('invertaxes', 'gradereport_visual');
/// Turn array into XML string and output.
$xml = XML_serialize($settings);
echo $xml;
/// Clean up cookie if it was created.
if ($cookiewasset) {
    $_COOKIE['MoodleSession' . $_GET['sessioncookie']] = null;
    $_COOKIE['MoodleSessionTest' . $_GET['sessioncookie']] = null;
}
Example #11
0
 /**
  * Execute an API call
  *
  * In most cases there is no need to call this method directly.  Instead one
  * should use the api1(), api2() or cpanel*() methods (which all call this
  * method, or exec(), internally).
  *
  * @param string $reqtype The type of request used by the cPanel API parser;
  *  valid values are 'exec', 'feature' or 'if'
  * @param int    $version The version of the API; valid values are either
  *  '1' or '2'
  * @param string $module  An API module name
  * @param string $func    An API function name
  * @param mixed  $args    Associate array for API2, ordered array for API1,
  *  string for non exec $reqtypes
  *
  * @see api1()
  * @see api2()
  * @return array Returned response in an array data structure
  * @throws RuntimeException if LiveAPI socket is not available
  */
 public function api($reqtype, $version, $module, $func, $args = array())
 {
     if (!$this->connected) {
         throw new RuntimeException('The LiveAPI PHP socket has closed, unable to continue.');
     }
     $input = array("module" => $module, "reqtype" => $reqtype, "func" => $func, "apiversion" => $version);
     if (count($args)) {
         $input['args'] = $args;
     }
     /**
      *  cPanel engine can process the JSON much much faster than XML
      */
     if (function_exists('json_encode')) {
         $code = "<cpanelaction>\n" . json_encode($input) . "\n</cpanelaction>";
     } else {
         /**
          * This logic flow is provide for BC in the unlikely event that the
          * cPanel engine doesn't not handle JSON.
          * - log this directly to the PHP error log in hopes that it gets
          *   reported
          */
         error_log('cPanel LiveAPI parser returned XML, which is deprecated. ' . 'Please file a bug report at https://tickets.cpanel.net/submit/');
         include_once '/usr/local/cpanel/php/xml.php';
         $temp = array("cpanelaction" => array($input));
         $code = XML_serialize($temp);
     }
     return $this->exec($code);
 }
Example #12
0
 function transformXML($array)
 {
     include_once _SRV_WEBROOT . 'xtFramework/library/phpxml/xml.php';
     return XML_serialize($array);
 }
Example #13
0
File: sys.php Project: jawngee/Thor
/**
 * Serialize php arrays to XML.  
 *
 * @param unknown_type $data
 * @param unknown_type $level
 * @param unknown_type $prior_key
 * @return unknown
 */
function &XML_serialize(&$data, $level = 0, $prior_key = NULL)
{ 
    if ($level == 0)
    { 
    	ob_start(); 
    	echo '<?xml version="1.0" ?>',"\n"; 
    } 
    
    while (list($key, $value) = each($data)) 
        if (!strpos($key, ' attr')) 
        {
        	if (is_array($value) and array_key_exists(0, $value))
                XML_serialize($value, $level, $key); 
            else
            { 
                $tag = $prior_key ? $prior_key : $key; 
                echo str_repeat("\t", $level),'<',$tag; 
                if (array_key_exists("$key attr", $data))
                { 
                	while (list($attr_name, $attr_value) = each($data["$key attr"])) 
                        echo ' ',$attr_name,'="',htmlspecialchars($attr_value),'"'; 
                    
                   reset($data["$key attr"]); 
                }

                if (is_null($value)) 
                	echo " />\n"; 
                else if (!is_array($value)) 
                	echo '>',htmlspecialchars($value),"</$tag>\n"; 
                else 
                	echo ">\n",XML_serialize($value, $level+1),str_repeat("\t", $level),"</$tag>\n"; 
            }
    
            reset($data); 
    		if($level == 0)
    		{ 
    			$str = &ob_get_contents(); 
    			ob_end_clean(); 
    			return $str; 
        	} 
        }
}
 public function api($data, $format = 'json')
 {
     $re_type = $this->CI->input->get('re_type');
     $callback = $this->CI->input->get('callback');
     if (!empty($re_type)) {
         $format = $re_type;
     }
     switch ($format) {
         case 'json':
         case 'jsonp':
             if (is_array($data)) {
                 $data = json_encode($data);
             }
             if (!empty($callback)) {
                 echo $callback . "(" . $data . ")";
             } else {
                 echo $data;
             }
             break;
         case 'xml':
             if (!is_array($data)) {
                 $data = array($data);
             }
             echo XML_serialize($data);
             break;
         default:
             echo json_encode($data);
     }
 }