dmitry Tue Feb 17 03:18:57 2004 EDT
Modified files:
/php-src/ext/soap php_encoding.c soap.c
Log:
Encoding of ommited tail parameters as NULLs
http://cvs.php.net/diff.php/php-src/ext/soap/php_encoding.c?r1=1.58&r2=1.59&ty=u
Index: php-src/ext/soap/php_encoding.c
diff -u php-src/ext/soap/php_encoding.c:1.58 php-src/ext/soap/php_encoding.c:1.59
--- php-src/ext/soap/php_encoding.c:1.58 Mon Feb 16 11:35:59 2004
+++ php-src/ext/soap/php_encoding.c Tue Feb 17 03:18:53 2004
@@ -17,7 +17,7 @@
| Dmitry Stogov <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_encoding.c,v 1.58 2004/02/16 16:35:59 dmitry Exp $ */
+/* $Id: php_encoding.c,v 1.59 2004/02/17 08:18:53 dmitry Exp $ */
#include <time.h>
@@ -1071,6 +1071,15 @@
sdlTypePtr sdlType = type->sdl_type;
TSRMLS_FETCH();
+ if (!data || Z_TYPE_P(data) == IS_NULL) {
+ xmlParam = xmlNewNode(NULL,"BOGUS");
+ xmlAddChild(parent, xmlParam);
+ if (style == SOAP_ENCODED) {
+ xmlSetProp(xmlParam, "xsi:nil", "1");
+ }
+ return xmlParam;
+ }
+
if (sdlType) {
prop = NULL;
if (Z_TYPE_P(data) == IS_OBJECT) {
http://cvs.php.net/diff.php/php-src/ext/soap/soap.c?r1=1.85&r2=1.86&ty=u
Index: php-src/ext/soap/soap.c
diff -u php-src/ext/soap/soap.c:1.85 php-src/ext/soap/soap.c:1.86
--- php-src/ext/soap/soap.c:1.85 Mon Feb 16 07:04:48 2004
+++ php-src/ext/soap/soap.c Tue Feb 17 03:18:53 2004
@@ -17,7 +17,7 @@
| Dmitry Stogov <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: soap.c,v 1.85 2004/02/16 12:04:48 dmitry Exp $ */
+/* $Id: soap.c,v 1.86 2004/02/17 08:18:53 dmitry Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -2587,11 +2587,9 @@
} else {
param = serialize_parameter(parameter, ret, 0, "return", use,
body TSRMLS_CC);
if (function && function->binding->bindingType ==
BINDING_SOAP) {
- sdlParamPtr *sparam;
-
- if (zend_hash_index_find(function->responseParameters,
0, (void **)&sparam) == SUCCESS && (*sparam)->element) {
- ns = encode_add_ns(param,
(*sparam)->element->namens);
- xmlNodeSetName(param,
(*sparam)->element->name);
+ if (parameter && parameter->element) {
+ ns = encode_add_ns(param,
parameter->element->namens);
+ xmlNodeSetName(param,
parameter->element->name);
xmlSetNs(param, ns);
}
} else if (strcmp(param->name,"return") == 0) {
@@ -2619,11 +2617,9 @@
} else {
param = serialize_parameter(parameter, *data, i,
param_name, use, body TSRMLS_CC);
if (function && function->binding->bindingType ==
BINDING_SOAP) {
- sdlParamPtr *sparam;
-
- if
(zend_hash_index_find(function->responseParameters, i, (void **)&sparam) == SUCCESS) {
- ns = encode_add_ns(param,
(*sparam)->encode->details.ns);
- xmlNodeSetName(param,
(*sparam)->encode->details.type_str);
+ if (parameter && parameter->element) {
+ ns = encode_add_ns(param,
parameter->element->namens);
+ xmlNodeSetName(param,
parameter->element->name);
xmlSetNs(param, ns);
}
}
@@ -2911,16 +2907,38 @@
} else if (style == SOAP_DOCUMENT) {
param = serialize_parameter(parameter, arguments[i], i, NULL,
use, body TSRMLS_CC);
if (function && function->binding->bindingType ==
BINDING_SOAP) {
- sdlParamPtr *sparam;
-
- if (zend_hash_index_find(function->requestParameters,
i, (void **)&sparam) == SUCCESS && (*sparam)->element) {
- ns = encode_add_ns(param,
(*sparam)->element->namens);
- xmlNodeSetName(param,
(*sparam)->element->name);
+ if (parameter && parameter->element) {
+ ns = encode_add_ns(param,
parameter->element->namens);
+ xmlNodeSetName(param,
parameter->element->name);
xmlSetNs(param, ns);
}
}
}
}
+
+ if (function && function->requestParameters) {
+ int n = zend_hash_num_elements(function->requestParameters);
+
+ if (n > arg_count) {
+ for (i = arg_count; i < n; i++) {
+ xmlNodePtr param;
+ sdlParamPtr parameter = get_param(function, NULL, i,
FALSE);
+
+ if (style == SOAP_RPC) {
+ param = serialize_parameter(parameter, NULL,
i, NULL, use, method TSRMLS_CC);
+ } else if (style == SOAP_DOCUMENT) {
+ param = serialize_parameter(parameter, NULL,
i, NULL, use, body TSRMLS_CC);
+ if (function && function->binding->bindingType
== BINDING_SOAP) {
+ if (parameter && parameter->element) {
+ ns = encode_add_ns(param,
parameter->element->namens);
+ xmlNodeSetName(param,
parameter->element->name);
+ xmlSetNs(param, ns);
+ }
+ }
+ }
+ }
+ }
+ }
if (head) {
zval** header;
@@ -3026,8 +3044,9 @@
xmlNodePtr xmlParam;
char paramNameBuf[10];
- if (Z_TYPE_P(param_val) == IS_OBJECT &&
- Z_OBJCE_P(param_val) == soap_param_class_entry) {
+ if (param_val &&
+ Z_TYPE_P(param_val) == IS_OBJECT &&
+ Z_OBJCE_P(param_val) == soap_param_class_entry) {
zval **param_name;
zval **param_data;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php