/** * * @param * @return * @access private */ function _encodeValue($value) { $response = '<value>'; if (is_array($value)) { $isArray = true; $datas = array(); $structkeys = array(); foreach ($value as $key => $val) { if (!is_numeric($key)) { $isArray = false; } $structkeys[] = '<name>' . $key . '</name>'; $datas[] = CopixXmlRpc::_encodeValue($val); } if ($isArray) { $response .= '<array><data>' . implode(' ', $datas) . '</data></array>'; } else { $response .= '<struct>'; foreach ($datas as $k => $v) { $response .= '<member>' . $structkeys[$k] . $v . '</member>'; } $response .= '</struct>'; } } else { if (is_bool($value)) { $response .= '<boolean>' . ($value ? 1 : 0) . '</boolean>'; } else { if (is_int($value)) { $response .= '<int>' . intval($value) . '</int>'; } else { if (is_string($value)) { $response .= '<string>' . htmlspecialchars($value) . '</string>'; } else { if (is_float($value)) { $response .= '<double>' . doubleval($value) . '</double>'; } else { if (is_object($value)) { switch (get_class($value)) { case 'copixdatetime': $response .= '<dateTime.iso8601>' . $value->toString($value->ISO8601_FORMAT) . '</dateTime.iso8601>'; break; case 'copixbinary': $response .= '<base64>' . $value->toBase64String() . '</base64>'; break; } } } } } } } return $response . '</value>'; }