git-svn-id: https://192.168.0.254/svn/Proyectos.MatritumCantat_Web/trunk@2 8e3496fd-7892-4c45-be36-0ff06e9dacc6
184 lines
4.7 KiB
PHP
184 lines
4.7 KiB
PHP
<?php
|
|
/**
|
|
* dom_xmlrpc_utilities are a set of static utilities for handling XML-RPC
|
|
* @package dom-xmlrpc
|
|
* @copyright (C) 2004 John Heinstein. All rights reserved
|
|
* @license http://www.gnu.org/copyleft/lesser.html LGPL License
|
|
* @author John Heinstein <johnkarl@nbnet.nb.ca>
|
|
* @link http://www.engageinteractive.com/dom_xmlrpc/ DOM XML-RPC Home Page
|
|
* DOM XML-RPC is Free Software
|
|
**/
|
|
|
|
if (!defined('DOM_XMLRPC_INCLUDE_PATH')) {
|
|
define('DOM_XMLRPC_INCLUDE_PATH', (dirname(__FILE__) . "/"));
|
|
}
|
|
|
|
/**
|
|
* A set of static utilities for handling XML-RPC
|
|
*
|
|
* @package dom-xmlrpc
|
|
* @author John Heinstein <johnkarl@nbnet.nb.ca>
|
|
*/
|
|
class dom_xmlrpc_utilities {
|
|
|
|
/**
|
|
* Strips the HTTP headers from the method response
|
|
* @param string The method response, including headers
|
|
* @return string The method response with headers stripped
|
|
*/
|
|
function stripHeader($myResponse) {
|
|
$body = '';
|
|
$total = strlen($myResponse);
|
|
|
|
for ($i = 0; $i < $total; $i++) {
|
|
if ($myResponse{$i} == '<') {
|
|
$body = substr($myResponse, $i);
|
|
break;
|
|
}
|
|
}
|
|
|
|
return $body;
|
|
} //stripHeader
|
|
|
|
/**
|
|
* Determines the type of a scalar value
|
|
* @param mixed The scalar value
|
|
* @return string The type of the scalar value
|
|
*/
|
|
function getScalarTypeFromValue(&$value) {
|
|
require_once(DOM_XMLRPC_INCLUDE_PATH . 'dom_xmlrpc_constants.php');
|
|
|
|
if (is_string($value)) {
|
|
return DOM_XMLRPC_TYPE_STRING;
|
|
}
|
|
else if (is_int($value)) {
|
|
return DOM_XMLRPC_TYPE_INT;
|
|
}
|
|
else if (is_float($value)) {
|
|
return DOM_XMLRPC_TYPE_DOUBLE;
|
|
}
|
|
else if (is_bool($value)) {
|
|
return DOM_XMLRPC_TYPE_BOOLEAN;
|
|
}
|
|
else if (is_object($value)) {
|
|
require_once(DOM_XMLRPC_INCLUDE_PATH . 'dom_xmlrpc_datetime_iso8601.php');
|
|
require_once(DOM_XMLRPC_INCLUDE_PATH . 'dom_xmlrpc_base64.php');
|
|
|
|
if (get_class($value) == 'dom_xmlrpc_datetime_iso8601') {
|
|
return DOM_XMLRPC_TYPE_DATETIME;
|
|
}
|
|
else if (get_class($value) == 'dom_xmlrpc_base64') {
|
|
return DOM_XMLRPC_TYPE_BASE64;
|
|
}
|
|
}
|
|
|
|
return '';
|
|
} //getScalarTypeFromValue
|
|
|
|
/**
|
|
* Determines the type of any XML-RPC value
|
|
* @param mixed The XML-RPC value
|
|
* @return string The type of the XML-RPC value
|
|
*/
|
|
function getTypeFromValue(&$value) {
|
|
require_once(DOM_XMLRPC_INCLUDE_PATH . 'dom_xmlrpc_constants.php');
|
|
$scalarType = dom_xmlrpc_utilities::getScalarTypeFromValue($value);
|
|
|
|
if ($scalarType == '') {
|
|
require_once(DOM_XMLRPC_INCLUDE_PATH . 'dom_xmlrpc_struct.php');
|
|
|
|
if (is_array($value)) {
|
|
if (dom_xmlrpc_utilities::isAssociativeArray($value)) {
|
|
return DOM_XMLRPC_TYPE_STRUCT;
|
|
}
|
|
else {
|
|
return DOM_XMLRPC_TYPE_ARRAY;
|
|
}
|
|
}
|
|
else if (get_class($value) == 'dom_xmlrpc_struct') {
|
|
return DOM_XMLRPC_TYPE_STRUCT;
|
|
}
|
|
else if(is_object($value)) {
|
|
return DOM_XMLRPC_TYPE_STRUCT;
|
|
}
|
|
}
|
|
else {
|
|
return $scalarType;
|
|
}
|
|
} //getTypeFromValue
|
|
|
|
/**
|
|
* Converts the given scalar value to its XML-RPC equivalent
|
|
* @param mixed The scalar value
|
|
* @param string The type of the scalar value
|
|
* @return string The XML-RPC equivalent of the scalar value
|
|
*/
|
|
function getScalarValue(&$value, $type) {
|
|
require_once(DOM_XMLRPC_INCLUDE_PATH . 'dom_xmlrpc_constants.php');
|
|
|
|
switch($type) {
|
|
case DOM_XMLRPC_TYPE_BOOLEAN:
|
|
return (($value == true) ? '1' : '0');
|
|
break;
|
|
|
|
case DOM_XMLRPC_TYPE_DATETIME:
|
|
require_once(DOM_XMLRPC_INCLUDE_PATH . 'dom_xmlrpc_datetime_iso8601.php');
|
|
|
|
if (is_object($value) && (get_class($value) == 'dom_xmlrpc_datetime_iso8601')) {
|
|
return ($value->getDateTime_iso());
|
|
}
|
|
break;
|
|
|
|
case DOM_XMLRPC_TYPE_BASE64:
|
|
require_once(DOM_XMLRPC_INCLUDE_PATH . 'dom_xmlrpc_base64.php');
|
|
|
|
if (is_object($value) && (get_class($value) == 'dom_xmlrpc_base64')) {
|
|
return ($value->getEncoded());
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return ('' . $value);
|
|
}
|
|
|
|
return ('' . $value);
|
|
} //getScalarValue
|
|
|
|
/**
|
|
* Determines whether an array is associative or not
|
|
*
|
|
* Note: PHP converts string keys that look like integers
|
|
* to actual integer keys. This function will thus NOT trap
|
|
* $myArray = array('1'=>'blah');
|
|
* DON'T use integer string keys,
|
|
* UNLESS you wrap them in a dom_xmlrpc_struct object
|
|
* The following IS considered associative, however:
|
|
* $myArray = array('1.2'=>'blah');
|
|
* @param array The array to be tested
|
|
* @return boolean True if the array is associative
|
|
*/
|
|
function isAssociativeArray(&$myArray) {
|
|
reset($myArray);
|
|
$myKey = key($myArray);
|
|
|
|
if (is_string($myKey)) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
} //isAssociativeArray
|
|
|
|
/**
|
|
* Flips the html translation table
|
|
*
|
|
* @return array The flipped html translation table
|
|
*/
|
|
function getInverseTranslationTable() {
|
|
$trans = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);
|
|
$trans = array_flip($trans);
|
|
$trans['&'] = "'";
|
|
return $trans;
|
|
} //getInverseTranslationTable
|
|
} //dom_xmlrpc_utilities
|
|
|
|
?>
|