/** * 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; } }
/** * Generates an XML-RPC param from the value and adds it to the method params * @param mixed The value to be converted to XML-RPC notation */ function create(&$value, $type = '') { $data = ''; if ($type == '') { require_once DOM_XMLRPC_INCLUDE_PATH . 'dom_xmlrpc_utilities.php'; $type = dom_xmlrpc_utilities::getTypeFromValue($value); } switch ($type) { case DOM_XMLRPC_TYPE_STRING: case DOM_XMLRPC_TYPE_INT: case DOM_XMLRPC_TYPE_I4: case DOM_XMLRPC_TYPE_DOUBLE: case DOM_XMLRPC_TYPE_BOOLEAN: case DOM_XMLRPC_TYPE_BASE64: case DOM_XMLRPC_TYPE_DATETIME: $data .= $this->createScalar($value, $type); break; case DOM_XMLRPC_TYPE_STRUCT: $data .= $this->createStruct($value, $type); break; case DOM_XMLRPC_TYPE_ARRAY: $data .= $this->createArray($value, $type); break; } return $data; }
/** * Converts PHP arrays to stdclass objects * @param array The PHP array * @return object A stdclass object */ function &arraysToObjects(&$myArray) { foreach ($myArray as $key => $value) { $currItem =& $myArray[$key]; if (is_array($currItem)) { $currItem =& $this->arraysToObjects($currItem); } } if (dom_xmlrpc_utilities::isAssociativeArray($myArray)) { $obj = new stdclass(); foreach ($myArray as $key => $value) { $obj->{$key} =& $myArray[$value]; } return $obj; } else { return $myArray; } }
/** * Returns the type of the specified param * @param mixed The param to be tested * @return string The type of the specified param */ function getParamType($param) { require_once DOM_XMLRPC_INCLUDE_PATH . 'dom_xmlrpc_utilities.php'; return dom_xmlrpc_utilities::getTypeFromValue($param); }