--- phpgwapi/inc/soap_functions.inc.php.orig 2007-02-27 11:38:52.000000000 +0100 +++ phpgwapi/inc/soap_functions.inc.php 2007-02-27 11:39:36.000000000 +0100 @@ -30,7 +30,8 @@ while(list($key,$val) = each($GLOBALS['soapTypes'])) { - $GLOBALS['soapKeys'][] = $val; + // $GLOBALS['soapKeys'][] = $val; + $GLOBALS['soapKeys'][$key] = $val; } $GLOBALS['typemap'] = array( --- class.soapval.inc.php.orig 2007-02-27 11:35:18.000000000 +0100 +++ class.soapval.inc.php 2007-02-28 14:37:05.000000000 +0100 @@ -345,7 +345,8 @@ } elseif(count($array_types) >= 1) { - $array_type = $array_val->type_prefix.":".$array_val->type; + // $array_type = $array_val->type_prefix.":".$array_val->type; + $array_type = $soapval->type_prefix.":".$soapval->type; } $xml = "<$soapval->name xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"".$array_type."[".sizeof($soapval->value)."]\">\n".$xml."name>\n"; @@ -426,7 +427,10 @@ while(list($namespace,$types) = @each($GLOBALS['typemap'])) /* foreach($GLOBALS['typemap'] as $namespace => $types) */ { - if(in_array($type,$types)) + // original : if(in_array($type,$types)) + // short and dirty correction : if($types[$type]) + // much better one : + if(array_key_exists($type,$types) && ! empty($types[$type])) { return $GLOBALS['namespaces'][$namespace]; } --- phpgwapi/inc/class.soapclient.inc.php.orig 2007-02-27 14:15:05.000000000 +0100 +++ phpgwapi/inc/class.soapclient.inc.php 2007-02-27 14:17:02.000000000 +0100 @@ -61,7 +61,10 @@ if($this->endpointType == 'wsdl') { // instantiate wsdl class + // _debug_array($this->wsdl); + if (!$this->wsdl) { $this->wsdl = CreateObject('phpgwapi.wsdl',$this->endpoint); + } // get portName if(!$this->portName) {