--- /dev/null
+--TEST--
+Bug #28985 (__getTypes() returning nothing on complex WSDL)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$client = new SOAPClient(dirname(__FILE__).'/bug28985.wsdl', array('trace'=>1));
+var_dump($client->__getTypes());
+?>
+--EXPECT--
+array(42) {
+ [0]=>
+ string(100) "struct LoginMGDIS {
+ string iUserLogin;
+ string iUserId;
+ string iUserPassword;
+ string iProfilId;
+}"
+ [1]=>
+ string(29) "struct LoginMGDISResponse {
+}"
+ [2]=>
+ string(28) "struct GetIdentification {
+}"
+ [3]=>
+ string(77) "struct GetIdentificationResponse {
+ ArrayOfAnyType GetIdentificationResult;
+}"
+ [4]=>
+ string(43) "struct ArrayOfAnyType {
+ anyType anyType;
+}"
+ [5]=>
+ string(37) "struct RollbackCurrentTransaction {
+}"
+ [6]=>
+ string(45) "struct RollbackCurrentTransactionResponse {
+}"
+ [7]=>
+ string(68) "struct GetListeProfil {
+ string iUserLogin;
+ string iUserPassword;
+}"
+ [8]=>
+ string(86) "struct MGCodeLibelle {
+ string Code;
+ string Libelle;
+ boolean Defaut;
+ anyType Tag;
+}"
+ [9]=>
+ string(61) "struct ArrayOfMGCodeLibelle {
+ MGCodeLibelle MGCodeLibelle;
+}"
+ [10]=>
+ string(77) "struct GetListeProfilResponse {
+ ArrayOfMGCodeLibelle GetListeProfilResult;
+}"
+ [11]=>
+ string(41) "struct GetListeValCodif {
+ string Code;
+}"
+ [12]=>
+ string(43) "struct ArrayOfMGCodif {
+ MGCodif MGCodif;
+}"
+ [13]=>
+ string(18) "struct MGCodif {
+}"
+ [14]=>
+ string(75) "struct GetListeValCodifResponse {
+ ArrayOfMGCodif GetListeValCodifResult;
+}"
+ [15]=>
+ string(39) "struct TestPhpSoap {
+ MGCodif entree;
+}"
+ [16]=>
+ string(57) "struct TestPhpSoapResponse {
+ string TestPhpSoapResult;
+}"
+ [17]=>
+ string(50) "struct GetListeCodif {
+ boolean iGetListeValeur;
+}"
+ [18]=>
+ string(87) "struct MGCodifGrp {
+ string TypeCodif;
+ string LibCodif;
+ ArrayOfMGCodif ListeCodifs;
+}"
+ [19]=>
+ string(52) "struct ArrayOfMGCodifGrp {
+ MGCodifGrp MGCodifGrp;
+}"
+ [20]=>
+ string(72) "struct GetListeCodifResponse {
+ ArrayOfMGCodifGrp GetListeCodifResult;
+}"
+ [21]=>
+ string(57) "struct DroitCreation {
+ string iObjet;
+ string iProfil;
+}"
+ [22]=>
+ string(62) "struct DroitCreationResponse {
+ boolean DroitCreationResult;
+}"
+ [23]=>
+ string(74) "struct ListeDroitCreation {
+ ArrayOfString iListeObjet;
+ string iProfil;
+}"
+ [24]=>
+ string(40) "struct ArrayOfString {
+ string string;
+}"
+ [25]=>
+ string(79) "struct ListeDroitCreationResponse {
+ ArrayOfAnyType ListeDroitCreationResult;
+}"
+ [26]=>
+ string(87) "struct GetDroitsObjetProtege {
+ string iObjet;
+ string iProfil;
+ string iUtilisateur;
+}"
+ [27]=>
+ string(154) "struct MGDroitsObjetProtege {
+ string LbUti;
+ string LbProf;
+ string LbServ;
+ string LbDir;
+ boolean isProtected;
+ ArrayOfMGDroitAcces ListeDroitsAcces;
+}"
+ [28]=>
+ string(58) "struct ArrayOfMGDroitAcces {
+ MGDroitAcces MGDroitAcces;
+}"
+ [29]=>
+ string(104) "struct MGDroitAcces {
+ string IdProfil;
+ boolean Lecture;
+ boolean Modification;
+ boolean Suppression;
+}"
+ [30]=>
+ string(91) "struct GetDroitsObjetProtegeResponse {
+ MGDroitsObjetProtege GetDroitsObjetProtegeResult;
+}"
+ [31]=>
+ string(76) "struct GetPrivileges {
+ string iIdSupport;
+ int iIdForme;
+ string iProfil;
+}"
+ [32]=>
+ string(68) "struct GetPrivilegesResponse {
+ ArrayOfString GetPrivilegesResult;
+}"
+ [33]=>
+ string(46) "struct GetLibelleProfil {
+ string iIdProfil;
+}"
+ [34]=>
+ string(67) "struct GetLibelleProfilResponse {
+ string GetLibelleProfilResult;
+}"
+ [35]=>
+ string(91) "struct GetValeurRecherche {
+ string iChampSource;
+ string iTable;
+ string iOrderByClause;
+}"
+ [36]=>
+ string(78) "struct GetValeurRechercheResponse {
+ ArrayOfString GetValeurRechercheResult;
+}"
+ [37]=>
+ string(128) "struct GetValeurRechercheWithClauseWhere {
+ string iChampSource;
+ string iTable;
+ string iClauseWhere;
+ string iOrderByClause;
+}"
+ [38]=>
+ string(108) "struct GetValeurRechercheWithClauseWhereResponse {
+ ArrayOfString GetValeurRechercheWithClauseWhereResult;
+}"
+ [39]=>
+ string(27) "struct GetEnvironnement {
+}"
+ [40]=>
+ string(106) "struct MGEnvironnement {
+ string RepBureautique;
+ string RepBureautiqueImage;
+ string RepBureautiqueDoc;
+}"
+ [41]=>
+ string(76) "struct GetEnvironnementResponse {
+ MGEnvironnement GetEnvironnementResult;
+}"
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"\r
+xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"\r
+xmlns:s="http://www.w3.org/2001/XMLSchema"\r
+xmlns:s0="http://tempuri.org/"\r
+xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"\r
+xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"\r
+xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"\r
+targetNamespace="http://tempuri.org/"\r
+xmlns="http://schemas.xmlsoap.org/wsdl/">\r
+ <types>\r
+ <s:schema elementFormDefault="qualified"\r
+targetNamespace="http://tempuri.org/">\r
+ <s:element name="LoginMGDIS">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="iUserLogin"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="iUserId"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="iUserPassword"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="iProfilId"\r
+type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="LoginMGDISResponse">\r
+ <s:complexType />\r
+ </s:element>\r
+ <s:element name="GetIdentification">\r
+ <s:complexType />\r
+ </s:element>\r
+ <s:element name="GetIdentificationResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1"\r
+name="GetIdentificationResult" type="s0:ArrayOfAnyType" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:complexType name="ArrayOfAnyType">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="unbounded" name="anyType"\r
+nillable="true" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:element name="RollbackCurrentTransaction">\r
+ <s:complexType />\r
+ </s:element>\r
+ <s:element name="RollbackCurrentTransactionResponse">\r
+ <s:complexType />\r
+ </s:element>\r
+ <s:element name="GetListeProfil">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="iUserLogin"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="iUserPassword"\r
+type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:complexType name="MGCodeLibelle">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="Code"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="Libelle"\r
+type="s:string" />\r
+ <s:element minOccurs="1" maxOccurs="1" name="Defaut"\r
+type="s:boolean" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="Tag" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:complexType name="ArrayOfMGCodeLibelle">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="unbounded"\r
+name="MGCodeLibelle" nillable="true" type="s0:MGCodeLibelle" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:element name="GetListeProfilResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1"\r
+name="GetListeProfilResult" type="s0:ArrayOfMGCodeLibelle" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="GetListeValCodif">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="Code"\r
+type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:complexType name="ArrayOfMGCodif">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="unbounded" name="MGCodif"\r
+nillable="true" type="s0:MGCodif" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:complexType name="MGCodif">\r
+ <s:complexContent mixed="false">\r
+ <s:extension base="s0:MGCodeLibelle" />\r
+ </s:complexContent>\r
+ </s:complexType>\r
+ <s:element name="GetListeValCodifResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1"\r
+name="GetListeValCodifResult" type="s0:ArrayOfMGCodif" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="TestPhpSoap">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="entree"\r
+type="s0:MGCodif" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="TestPhpSoapResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1"\r
+name="TestPhpSoapResult" type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="GetListeCodif">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="1" maxOccurs="1"\r
+name="iGetListeValeur" type="s:boolean" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:complexType name="MGCodifGrp">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="TypeCodif"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="LibCodif"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="ListeCodifs"\r
+type="s0:ArrayOfMGCodif" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:complexType name="ArrayOfMGCodifGrp">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="unbounded"\r
+name="MGCodifGrp" nillable="true" type="s0:MGCodifGrp" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:element name="GetListeCodifResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1"\r
+name="GetListeCodifResult" type="s0:ArrayOfMGCodifGrp" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="DroitCreation">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="iObjet"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="iProfil"\r
+type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="DroitCreationResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="1" maxOccurs="1"\r
+name="DroitCreationResult" type="s:boolean" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="ListeDroitCreation">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="iListeObjet"\r
+type="s0:ArrayOfString" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="iProfil"\r
+type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:complexType name="ArrayOfString">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="unbounded" name="string"\r
+nillable="true" type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:element name="ListeDroitCreationResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1"\r
+name="ListeDroitCreationResult" type="s0:ArrayOfAnyType" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="GetDroitsObjetProtege">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="iObjet"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="iProfil"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="iUtilisateur"\r
+type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:complexType name="MGDroitsObjetProtege">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="LbUti"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="LbProf"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="LbServ"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="LbDir"\r
+type="s:string" />\r
+ <s:element minOccurs="1" maxOccurs="1" name="isProtected"\r
+type="s:boolean" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="ListeDroitsAcces"\r
+type="s0:ArrayOfMGDroitAcces" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:complexType name="ArrayOfMGDroitAcces">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="unbounded"\r
+name="MGDroitAcces" nillable="true" type="s0:MGDroitAcces" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:complexType name="MGDroitAcces">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="IdProfil"\r
+type="s:string" />\r
+ <s:element minOccurs="1" maxOccurs="1" name="Lecture"\r
+type="s:boolean" />\r
+ <s:element minOccurs="1" maxOccurs="1" name="Modification"\r
+type="s:boolean" />\r
+ <s:element minOccurs="1" maxOccurs="1" name="Suppression"\r
+type="s:boolean" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:element name="GetDroitsObjetProtegeResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1"\r
+name="GetDroitsObjetProtegeResult" type="s0:MGDroitsObjetProtege" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="GetPrivileges">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="iIdSupport"\r
+type="s:string" />\r
+ <s:element minOccurs="1" maxOccurs="1" name="iIdForme"\r
+type="s:int" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="iProfil"\r
+type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="GetPrivilegesResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1"\r
+name="GetPrivilegesResult" type="s0:ArrayOfString" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="GetLibelleProfil">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="iIdProfil"\r
+type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="GetLibelleProfilResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1"\r
+name="GetLibelleProfilResult" type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="GetValeurRecherche">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="iChampSource"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="iTable"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="iOrderByClause"\r
+type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="GetValeurRechercheResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1"\r
+name="GetValeurRechercheResult" type="s0:ArrayOfString" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="GetValeurRechercheWithClauseWhere">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="iChampSource"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="iTable"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="iClauseWhere"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="iOrderByClause"\r
+type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="GetValeurRechercheWithClauseWhereResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1"\r
+name="GetValeurRechercheWithClauseWhereResult" type="s0:ArrayOfString"\r
+/>\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="GetEnvironnement">\r
+ <s:complexType />\r
+ </s:element>\r
+ <s:complexType name="MGEnvironnement">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="RepBureautique"\r
+type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1"\r
+name="RepBureautiqueImage" type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1"\r
+name="RepBureautiqueDoc" type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:element name="GetEnvironnementResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1"\r
+name="GetEnvironnementResult" type="s0:MGEnvironnement" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ </s:schema>\r
+ </types>\r
+ <message name="LoginMGDISSoapIn">\r
+ <part name="parameters" element="s0:LoginMGDIS" />\r
+ </message>\r
+ <message name="LoginMGDISSoapOut">\r
+ <part name="parameters" element="s0:LoginMGDISResponse" />\r
+ </message>\r
+ <message name="GetIdentificationSoapIn">\r
+ <part name="parameters" element="s0:GetIdentification" />\r
+ </message>\r
+ <message name="GetIdentificationSoapOut">\r
+ <part name="parameters" element="s0:GetIdentificationResponse" />\r
+ </message>\r
+ <message name="RollbackCurrentTransactionSoapIn">\r
+ <part name="parameters" element="s0:RollbackCurrentTransaction" />\r
+ </message>\r
+ <message name="RollbackCurrentTransactionSoapOut">\r
+ <part name="parameters"\r
+element="s0:RollbackCurrentTransactionResponse" />\r
+ </message>\r
+ <message name="GetListeProfilSoapIn">\r
+ <part name="parameters" element="s0:GetListeProfil" />\r
+ </message>\r
+ <message name="GetListeProfilSoapOut">\r
+ <part name="parameters" element="s0:GetListeProfilResponse" />\r
+ </message>\r
+ <message name="GetListeValCodifSoapIn">\r
+ <part name="parameters" element="s0:GetListeValCodif" />\r
+ </message>\r
+ <message name="GetListeValCodifSoapOut">\r
+ <part name="parameters" element="s0:GetListeValCodifResponse" />\r
+ </message>\r
+ <message name="TestPhpSoapSoapIn">\r
+ <part name="parameters" element="s0:TestPhpSoap" />\r
+ </message>\r
+ <message name="TestPhpSoapSoapOut">\r
+ <part name="parameters" element="s0:TestPhpSoapResponse" />\r
+ </message>\r
+ <message name="GetListeCodifSoapIn">\r
+ <part name="parameters" element="s0:GetListeCodif" />\r
+ </message>\r
+ <message name="GetListeCodifSoapOut">\r
+ <part name="parameters" element="s0:GetListeCodifResponse" />\r
+ </message>\r
+ <message name="DroitCreationSoapIn">\r
+ <part name="parameters" element="s0:DroitCreation" />\r
+ </message>\r
+ <message name="DroitCreationSoapOut">\r
+ <part name="parameters" element="s0:DroitCreationResponse" />\r
+ </message>\r
+ <message name="ListeDroitCreationSoapIn">\r
+ <part name="parameters" element="s0:ListeDroitCreation" />\r
+ </message>\r
+ <message name="ListeDroitCreationSoapOut">\r
+ <part name="parameters" element="s0:ListeDroitCreationResponse" />\r
+ </message>\r
+ <message name="GetDroitsObjetProtegeSoapIn">\r
+ <part name="parameters" element="s0:GetDroitsObjetProtege" />\r
+ </message>\r
+ <message name="GetDroitsObjetProtegeSoapOut">\r
+ <part name="parameters" element="s0:GetDroitsObjetProtegeResponse"\r
+/>\r
+ </message>\r
+ <message name="GetPrivilegesSoapIn">\r
+ <part name="parameters" element="s0:GetPrivileges" />\r
+ </message>\r
+ <message name="GetPrivilegesSoapOut">\r
+ <part name="parameters" element="s0:GetPrivilegesResponse" />\r
+ </message>\r
+ <message name="GetLibelleProfilSoapIn">\r
+ <part name="parameters" element="s0:GetLibelleProfil" />\r
+ </message>\r
+ <message name="GetLibelleProfilSoapOut">\r
+ <part name="parameters" element="s0:GetLibelleProfilResponse" />\r
+ </message>\r
+ <message name="GetValeurRechercheSoapIn">\r
+ <part name="parameters" element="s0:GetValeurRecherche" />\r
+ </message>\r
+ <message name="GetValeurRechercheSoapOut">\r
+ <part name="parameters" element="s0:GetValeurRechercheResponse" />\r
+ </message>\r
+ <message name="GetValeurRechercheWithClauseWhereSoapIn">\r
+ <part name="parameters"\r
+element="s0:GetValeurRechercheWithClauseWhere" />\r
+ </message>\r
+ <message name="GetValeurRechercheWithClauseWhereSoapOut">\r
+ <part name="parameters"\r
+element="s0:GetValeurRechercheWithClauseWhereResponse" />\r
+ </message>\r
+ <message name="GetEnvironnementSoapIn">\r
+ <part name="parameters" element="s0:GetEnvironnement" />\r
+ </message>\r
+ <message name="GetEnvironnementSoapOut">\r
+ <part name="parameters" element="s0:GetEnvironnementResponse" />\r
+ </message>\r
+ <portType name="MGServiceNoyauNETSoap">\r
+ <operation name="LoginMGDIS">\r
+ <input message="s0:LoginMGDISSoapIn" />\r
+ <output message="s0:LoginMGDISSoapOut" />\r
+ </operation>\r
+ <operation name="GetIdentification">\r
+ <input message="s0:GetIdentificationSoapIn" />\r
+ <output message="s0:GetIdentificationSoapOut" />\r
+ </operation>\r
+ <operation name="RollbackCurrentTransaction">\r
+ <input message="s0:RollbackCurrentTransactionSoapIn" />\r
+ <output message="s0:RollbackCurrentTransactionSoapOut" />\r
+ </operation>\r
+ <operation name="GetListeProfil">\r
+ <input message="s0:GetListeProfilSoapIn" />\r
+ <output message="s0:GetListeProfilSoapOut" />\r
+ </operation>\r
+ <operation name="GetListeValCodif">\r
+ <input message="s0:GetListeValCodifSoapIn" />\r
+ <output message="s0:GetListeValCodifSoapOut" />\r
+ </operation>\r
+ <operation name="TestPhpSoap">\r
+ <input message="s0:TestPhpSoapSoapIn" />\r
+ <output message="s0:TestPhpSoapSoapOut" />\r
+ </operation>\r
+ <operation name="GetListeCodif">\r
+ <input message="s0:GetListeCodifSoapIn" />\r
+ <output message="s0:GetListeCodifSoapOut" />\r
+ </operation>\r
+ <operation name="DroitCreation">\r
+ <input message="s0:DroitCreationSoapIn" />\r
+ <output message="s0:DroitCreationSoapOut" />\r
+ </operation>\r
+ <operation name="ListeDroitCreation">\r
+ <input message="s0:ListeDroitCreationSoapIn" />\r
+ <output message="s0:ListeDroitCreationSoapOut" />\r
+ </operation>\r
+ <operation name="GetDroitsObjetProtege">\r
+ <input message="s0:GetDroitsObjetProtegeSoapIn" />\r
+ <output message="s0:GetDroitsObjetProtegeSoapOut" />\r
+ </operation>\r
+ <operation name="GetPrivileges">\r
+ <input message="s0:GetPrivilegesSoapIn" />\r
+ <output message="s0:GetPrivilegesSoapOut" />\r
+ </operation>\r
+ <operation name="GetLibelleProfil">\r
+ <input message="s0:GetLibelleProfilSoapIn" />\r
+ <output message="s0:GetLibelleProfilSoapOut" />\r
+ </operation>\r
+ <operation name="GetValeurRecherche">\r
+ <input message="s0:GetValeurRechercheSoapIn" />\r
+ <output message="s0:GetValeurRechercheSoapOut" />\r
+ </operation>\r
+ <operation name="GetValeurRechercheWithClauseWhere">\r
+ <input message="s0:GetValeurRechercheWithClauseWhereSoapIn" />\r
+ <output message="s0:GetValeurRechercheWithClauseWhereSoapOut" />\r
+ </operation>\r
+ <operation name="GetEnvironnement">\r
+ <input message="s0:GetEnvironnementSoapIn" />\r
+ <output message="s0:GetEnvironnementSoapOut" />\r
+ </operation>\r
+ </portType>\r
+ <binding name="MGServiceNoyauNETSoap"\r
+type="s0:MGServiceNoyauNETSoap">\r
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http"\r
+style="document" />\r
+ <operation name="LoginMGDIS">\r
+ <soap:operation soapAction="http://tempuri.org/LoginMGDIS"\r
+style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="GetIdentification">\r
+ <soap:operation soapAction="http://tempuri.org/GetIdentification"\r
+style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="RollbackCurrentTransaction">\r
+ <soap:operation\r
+soapAction="http://tempuri.org/RollbackCurrentTransaction"\r
+style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="GetListeProfil">\r
+ <soap:operation soapAction="http://tempuri.org/GetListeProfil"\r
+style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="GetListeValCodif">\r
+ <soap:operation soapAction="http://tempuri.org/GetListeValCodif"\r
+style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="TestPhpSoap">\r
+ <soap:operation soapAction="http://tempuri.org/TestPhpSoap"\r
+style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="GetListeCodif">\r
+ <soap:operation soapAction="http://tempuri.org/GetListeCodif"\r
+style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="DroitCreation">\r
+ <soap:operation soapAction="http://tempuri.org/DroitCreation"\r
+style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="ListeDroitCreation">\r
+ <soap:operation soapAction="http://tempuri.org/ListeDroitCreation"\r
+style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="GetDroitsObjetProtege">\r
+ <soap:operation\r
+soapAction="http://tempuri.org/GetDroitsObjetProtege" style="document"\r
+/>\r
+ <input>\r
+ <soap:body use="literal" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="GetPrivileges">\r
+ <soap:operation soapAction="http://tempuri.org/GetPrivileges"\r
+style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="GetLibelleProfil">\r
+ <soap:operation soapAction="http://tempuri.org/GetLibelleProfil"\r
+style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="GetValeurRecherche">\r
+ <soap:operation soapAction="http://tempuri.org/GetValeurRecherche"\r
+style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="GetValeurRechercheWithClauseWhere">\r
+ <soap:operation\r
+soapAction="http://tempuri.org/GetValeurRechercheWithClauseWhere"\r
+style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="GetEnvironnement">\r
+ <soap:operation soapAction="http://tempuri.org/GetEnvironnement"\r
+style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ </binding>\r
+ <service name="MGServiceNoyauNET">\r
+ <port name="MGServiceNoyauNETSoap"\r
+binding="s0:MGServiceNoyauNETSoap">\r
+ <soap:address\r
+location="http://localhost/SoapSrvSOFI/MGServiceNoyauNET.asmx" />\r
+ </port>\r
+ </service>\r
+</definitions>\r
--- /dev/null
+--TEST--
+Bug #29061 (soap extension segfaults)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$client = new SoapClient(dirname(__FILE__)."/bug29061.wsdl", array("exceptions"=>0));
+$client->getQuote("ibm");
+echo "ok\n";
+?>
+--EXPECT--
+ok
\ No newline at end of file
--- /dev/null
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"\r
+xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://\r
+schemas.xmlsoap.org/wsdl/http/"\r
+xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
+xmlns:soapenc="http://schemas.xmlsoap.org/soap/e\r
+ncoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"\r
+xmlns:y="http://new.webservice.namespace" targetNamespace="http\r
+://new.webservice.namespace">\r
+<types>\r
+<xs:schema/>\r
+</types>\r
+<message name="getQuoteResponse">\r
+<part name="parameter" element="" type="xs:string"/>\r
+</message>\r
+<message name="getQuoteRequest">\r
+<part name="String" element="" type="xs:string"/>\r
+</message>\r
+<portType name="SOAPport">\r
+<operation name="getQuote">\r
+<input message="y:getQuoteRequest"/>\r
+<output message="y:getQuoteResponse"/>\r
+</operation>\r
+</portType>\r
+<binding name="bindingName" type="y:SOAPport">\r
+<soap:binding style="rpc"\r
+transport="http://schemas.xmlsoap.org/soap/http"/>\r
+<operation name="getQuote">\r
+<input>\r
+<soap:body use="literal"/>\r
+</input>\r
+<output>\r
+<soap:body use="literal"/>\r
+</output>\r
+</operation>\r
+</binding>\r
+<service name="myService">\r
+<port name="myPort" binding="y:bindingName">\r
+<soap:address location="test://"/>\r
+</port>\r
+</service>\r
+</definitions>\r
--- /dev/null
+--TEST--
+Bug #29109 (Uncaught SoapFault exception: [WSDL] Out of memory)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$client = new SoapClient(dirname(__FILE__)."/bug29109.wsdl");
+var_dump($client->__getFunctions());
+?>
+--EXPECT--
+array(3) {
+ [0]=>
+ string(53) "HelloWorldResponse HelloWorld(HelloWorld $parameters)"
+ [1]=>
+ string(19) "string HelloWorld()"
+ [2]=>
+ string(19) "string HelloWorld()"
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="windows-1257"?>\r
+<definitions xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"\r
+xmlns:s0="http://tempuri.org/"\r
+xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"\r
+xmlns:s="http://www.w3.org/2001/XMLSchema"\r
+xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"\r
+xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"\r
+xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" name="test"\r
+targetNamespace="http://tempuri.org/"\r
+xmlns="http://schemas.xmlsoap.org/wsdl/">\r
+ <types>\r
+ <xs:schema elementFormDefault="qualified"\r
+targetNamespace="http://tempuri.org/"\r
+xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:element name="HelloWorld">\r
+ <xs:complexType />\r
+ </xs:element>\r
+ <xs:element name="HelloWorldResponse">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+\r
+ <xs:element minOccurs="0" maxOccurs="1"\r
+name="HelloWorldResult" type="xs:string" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="string" type="xs:string" />\r
+ </xs:schema>\r
+ </types>\r
+ <message name="HelloWorldSoapIn">\r
+ <part name="parameters" element="s0:HelloWorld" />\r
+\r
+ </message>\r
+ <message name="HelloWorldSoapOut">\r
+ <part name="parameters" element="s0:HelloWorldResponse" />\r
+ </message>\r
+ <message name="HelloWorldHttpGetIn" />\r
+ <message name="HelloWorldHttpGetOut">\r
+ <part name="Body" element="s0:string" />\r
+ </message>\r
+ <message name="HelloWorldHttpPostIn" />\r
+\r
+ <message name="HelloWorldHttpPostOut">\r
+ <part name="Body" element="s0:string" />\r
+ </message>\r
+ <portType name="testSoap">\r
+ <operation name="HelloWorld">\r
+ <input message="s0:HelloWorldSoapIn" />\r
+ <output message="s0:HelloWorldSoapOut" />\r
+ </operation>\r
+ </portType>\r
+\r
+ <portType name="testHttpGet">\r
+ <operation name="HelloWorld">\r
+ <input message="s0:HelloWorldHttpGetIn" />\r
+ <output message="s0:HelloWorldHttpGetOut" />\r
+ </operation>\r
+ </portType>\r
+ <portType name="testHttpPost">\r
+ <operation name="HelloWorld">\r
+ <input message="s0:HelloWorldHttpPostIn" />\r
+\r
+ <output message="s0:HelloWorldHttpPostOut" />\r
+ </operation>\r
+ </portType>\r
+ <binding name="testSoap" type="s0:testSoap">\r
+ <soap:binding style="document"\r
+transport="http://schemas.xmlsoap.org/soap/http" />\r
+ <operation name="HelloWorld">\r
+ <soap:operation soapAction="http://tempuri.org/HelloWorld"\r
+style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ </binding>\r
+ <binding name="testHttpGet" type="s0:testHttpGet">\r
+ <http:binding verb="GET" />\r
+ <operation name="HelloWorld">\r
+\r
+ <http:operation location="/HelloWorld" />\r
+ <input>\r
+ <http:urlEncoded />\r
+ </input>\r
+ <output>\r
+ <mime:mimeXml part="Body" />\r
+ </output>\r
+ </operation>\r
+ </binding>\r
+\r
+ <binding name="testHttpPost" type="s0:testHttpPost">\r
+ <http:binding verb="POST" />\r
+ <operation name="HelloWorld">\r
+ <http:operation location="/HelloWorld" />\r
+ <input>\r
+ <mime:content part="" type="application/x-www-form-urlencoded"\r
+/>\r
+ </input>\r
+ <output>\r
+ <mime:mimeXml part="Body" />\r
+\r
+ </output>\r
+ </operation>\r
+ </binding>\r
+ <service name="test">\r
+ <port name="testSoap" binding="s0:testSoap">\r
+ <soap:address location="http://localhost:81/test.asmx" />\r
+ </port>\r
+ <port name="testHttpGet" binding="s0:testHttpGet">\r
+ <http:address location="http://localhost:81/test.asmx" />\r
+\r
+ </port>\r
+ <port name="testHttpPost" binding="s0:testHttpPost">\r
+ <http:address location="http://localhost:81/test.asmx" />\r
+ </port>\r
+ </service>\r
+</definitions>\r
--- /dev/null
+--TEST--
+Bug #29236 (memory error when wsdl-cache is enabled)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?
+$client = new SoapClient(dirname(__FILE__)."/bug29236.wsdl");
+var_dump($client->__getFunctions());
+?>
+--EXPECT--
+array(4) {
+ [0]=>
+ string(59) "StartSessionResponse StartSession(StartSession $parameters)"
+ [1]=>
+ string(62) "VerifySessionResponse VerifySession(VerifySession $parameters)"
+ [2]=>
+ string(41) "LogoutResponse Logout(Logout $parameters)"
+ [3]=>
+ string(62) "GetSystemInfoResponse GetSystemInfo(GetSystemInfo $parameters)"
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://isis.ais.ucla.edu/ws/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://isis.ais.ucla.edu/ws/" xmlns="http://schemas.xmlsoap.org/wsdl/">\r
+ <types>\r
+ <s:schema elementFormDefault="qualified" targetNamespace="http://isis.ais.ucla.edu/ws/">\r
+ <s:element name="StartSession">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="uclaId" type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="userIpAddr" type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="StartSessionResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="1" maxOccurs="1" name="iwsResponse" nillable="true" type="s0:IwsResponse" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:complexType name="IwsResponse">\r
+ <s:sequence>\r
+ <s:element minOccurs="1" maxOccurs="1" name="sessionInfo" nillable="true" type="s0:IwsSession" />\r
+ <s:element minOccurs="1" maxOccurs="1" name="errorInfo" nillable="true" type="s0:IwsErrorCollection" />\r
+ </s:sequence>\r
+ <s:attribute name="action" type="s0:ActionEnum" />\r
+ <s:attribute name="hasErrors" type="s:boolean" />\r
+ <s:attribute name="transactionId" type="s:long" />\r
+ </s:complexType>\r
+ <s:complexType name="IwsSession">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="userAttributes" type="s0:ArrayOfIwsUserAttribute" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="accounts" type="s0:ArrayOfIwsAccount" />\r
+ <s:element minOccurs="1" maxOccurs="1" name="ticket" nillable="true" type="s:string" />\r
+ <s:element minOccurs="1" maxOccurs="1" name="uclaId" nillable="true" type="s:string" />\r
+ </s:sequence>\r
+ <s:attribute name="status" type="s0:SessionStatus" />\r
+ </s:complexType>\r
+ <s:complexType name="ArrayOfIwsUserAttribute">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="unbounded" name="attribute" type="s0:IwsUserAttribute" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:complexType name="IwsUserAttribute">\r
+ <s:attribute name="name" type="s:string" />\r
+ <s:attribute name="value" type="s:string" />\r
+ </s:complexType>\r
+ <s:complexType name="ArrayOfIwsAccount">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="unbounded" name="account" type="s0:IwsAccount" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:complexType name="IwsAccount">\r
+ <s:attribute name="loginId" type="s:string" />\r
+ <s:attribute name="type" type="s0:LoginType" />\r
+ <s:attribute name="status" type="s0:AccountStatus" />\r
+ </s:complexType>\r
+ <s:simpleType name="LoginType">\r
+ <s:restriction base="s:string">\r
+ <s:enumeration value="BruinOnline" />\r
+ <s:enumeration value="ACF2" />\r
+ <s:enumeration value="QDB" />\r
+ <s:enumeration value="UID" />\r
+ <s:enumeration value="CommonLogon" />\r
+ <s:enumeration value="RACF" />\r
+ </s:restriction>\r
+ </s:simpleType>\r
+ <s:simpleType name="AccountStatus">\r
+ <s:restriction base="s:string">\r
+ <s:enumeration value="Unknown" />\r
+ <s:enumeration value="Active" />\r
+ <s:enumeration value="Authenticated" />\r
+ <s:enumeration value="AuthenticatedWithCachedCredential" />\r
+ <s:enumeration value="NotAuthenticated" />\r
+ <s:enumeration value="PermmanentlySuspended" />\r
+ <s:enumeration value="TemporarilySuspended" />\r
+ <s:enumeration value="PasswordResetRequired" />\r
+ <s:enumeration value="InvalidID" />\r
+ </s:restriction>\r
+ </s:simpleType>\r
+ <s:simpleType name="SessionStatus">\r
+ <s:restriction base="s:string">\r
+ <s:enumeration value="Uninitialized" />\r
+ <s:enumeration value="Active" />\r
+ <s:enumeration value="ActiveWithCachedCredential" />\r
+ <s:enumeration value="ActiveWithMultipleCredentials" />\r
+ <s:enumeration value="Expired" />\r
+ </s:restriction>\r
+ </s:simpleType>\r
+ <s:complexType name="IwsErrorCollection">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="errors" type="s0:ArrayOfIwsError" />\r
+ </s:sequence>\r
+ <s:attribute name="count" type="s:int" />\r
+ </s:complexType>\r
+ <s:complexType name="ArrayOfIwsError">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="unbounded" name="error" type="s0:IwsError" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:complexType name="IwsError">\r
+ <s:attribute name="errorCode" type="s:int" />\r
+ <s:attribute name="detail" type="s:string" />\r
+ </s:complexType>\r
+ <s:simpleType name="ActionEnum">\r
+ <s:restriction base="s:string">\r
+ <s:enumeration value="GetInfo" />\r
+ <s:enumeration value="Start" />\r
+ <s:enumeration value="Verify" />\r
+ <s:enumeration value="Logout" />\r
+ </s:restriction>\r
+ </s:simpleType>\r
+ <s:element name="wsConsumerCredential" type="s0:WsConsumerCredential" />\r
+ <s:complexType name="WsConsumerCredential">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="id" type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:element name="VerifySession">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="ticket" type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="userIpAddr" type="s:string" />\r
+ <s:element minOccurs="1" maxOccurs="1" name="returnExtendedAttributes" type="s:boolean" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="VerifySessionResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="1" maxOccurs="1" name="iwsResponse" nillable="true" type="s0:IwsResponse" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="Logout">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="ticket" type="s:string" />\r
+ <s:element minOccurs="0" maxOccurs="1" name="userIpAddr" type="s:string" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="LogoutResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="1" maxOccurs="1" name="iwsResponse" nillable="true" type="s0:IwsResponse" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:element name="GetSystemInfo">\r
+ <s:complexType />\r
+ </s:element>\r
+ <s:element name="GetSystemInfoResponse">\r
+ <s:complexType>\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="1" name="GetSystemInfoResult" type="s0:ArrayOfIwsAttribute" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ </s:element>\r
+ <s:complexType name="ArrayOfIwsAttribute">\r
+ <s:sequence>\r
+ <s:element minOccurs="0" maxOccurs="unbounded" name="IwsAttribute" type="s0:IwsAttribute" />\r
+ </s:sequence>\r
+ </s:complexType>\r
+ <s:complexType name="IwsAttribute">\r
+ <s:attribute name="name" type="s:string" />\r
+ <s:attribute name="value" type="s:string" />\r
+ </s:complexType>\r
+ </s:schema>\r
+ </types>\r
+ <message name="StartSessionSoapIn">\r
+ <part name="parameters" element="s0:StartSession" />\r
+ </message>\r
+ <message name="StartSessionSoapOut">\r
+ <part name="parameters" element="s0:StartSessionResponse" />\r
+ </message>\r
+ <message name="StartSessionwsConsumerCredential">\r
+ <part name="wsConsumerCredential" element="s0:wsConsumerCredential" />\r
+ </message>\r
+ <message name="VerifySessionSoapIn">\r
+ <part name="parameters" element="s0:VerifySession" />\r
+ </message>\r
+ <message name="VerifySessionSoapOut">\r
+ <part name="parameters" element="s0:VerifySessionResponse" />\r
+ </message>\r
+ <message name="VerifySessionwsConsumerCredential">\r
+ <part name="wsConsumerCredential" element="s0:wsConsumerCredential" />\r
+ </message>\r
+ <message name="LogoutSoapIn">\r
+ <part name="parameters" element="s0:Logout" />\r
+ </message>\r
+ <message name="LogoutSoapOut">\r
+ <part name="parameters" element="s0:LogoutResponse" />\r
+ </message>\r
+ <message name="LogoutwsConsumerCredential">\r
+ <part name="wsConsumerCredential" element="s0:wsConsumerCredential" />\r
+ </message>\r
+ <message name="GetSystemInfoSoapIn">\r
+ <part name="parameters" element="s0:GetSystemInfo" />\r
+ </message>\r
+ <message name="GetSystemInfoSoapOut">\r
+ <part name="parameters" element="s0:GetSystemInfoResponse" />\r
+ </message>\r
+ <message name="GetSystemInfowsConsumerCredential">\r
+ <part name="wsConsumerCredential" element="s0:wsConsumerCredential" />\r
+ </message>\r
+ <portType name="IsisSoap">\r
+ <operation name="StartSession">\r
+ <input message="s0:StartSessionSoapIn" />\r
+ <output message="s0:StartSessionSoapOut" />\r
+ </operation>\r
+ <operation name="VerifySession">\r
+ <input message="s0:VerifySessionSoapIn" />\r
+ <output message="s0:VerifySessionSoapOut" />\r
+ </operation>\r
+ <operation name="Logout">\r
+ <input message="s0:LogoutSoapIn" />\r
+ <output message="s0:LogoutSoapOut" />\r
+ </operation>\r
+ <operation name="GetSystemInfo">\r
+ <input message="s0:GetSystemInfoSoapIn" />\r
+ <output message="s0:GetSystemInfoSoapOut" />\r
+ </operation>\r
+ </portType>\r
+ <portType name="IsisHttpGet" />\r
+ <portType name="IsisHttpPost" />\r
+ <binding name="IsisSoap" type="s0:IsisSoap">\r
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />\r
+ <operation name="StartSession">\r
+ <soap:operation soapAction="http://isis.ais.ucla.edu/ws/StartSession" style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ <soap:header d5p1:required="true" message="s0:StartSessionwsConsumerCredential" part="wsConsumerCredential" use="literal" xmlns:d5p1="http://schemas.xmlsoap.org/wsdl/" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="VerifySession">\r
+ <soap:operation soapAction="http://isis.ais.ucla.edu/ws/VerifySession" style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ <soap:header d5p1:required="true" message="s0:VerifySessionwsConsumerCredential" part="wsConsumerCredential" use="literal" xmlns:d5p1="http://schemas.xmlsoap.org/wsdl/" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="Logout">\r
+ <soap:operation soapAction="http://isis.ais.ucla.edu/ws/Logout" style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ <soap:header d5p1:required="true" message="s0:LogoutwsConsumerCredential" part="wsConsumerCredential" use="literal" xmlns:d5p1="http://schemas.xmlsoap.org/wsdl/" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ <operation name="GetSystemInfo">\r
+ <soap:operation soapAction="http://isis.ais.ucla.edu/ws/GetSystemInfo" style="document" />\r
+ <input>\r
+ <soap:body use="literal" />\r
+ <soap:header d5p1:required="true" message="s0:GetSystemInfowsConsumerCredential" part="wsConsumerCredential" use="literal" xmlns:d5p1="http://schemas.xmlsoap.org/wsdl/" />\r
+ </input>\r
+ <output>\r
+ <soap:body use="literal" />\r
+ </output>\r
+ </operation>\r
+ </binding>\r
+ <binding name="IsisHttpGet" type="s0:IsisHttpGet">\r
+ <http:binding verb="GET" />\r
+ </binding>\r
+ <binding name="IsisHttpPost" type="s0:IsisHttpPost">\r
+ <http:binding verb="POST" />\r
+ </binding>\r
+ <service name="Isis">\r
+ <port name="IsisSoap" binding="s0:IsisSoap">\r
+ <soap:address location="http://isisdev1.tig.ucla.edu/iws/v4.asmx" />\r
+ </port>\r
+ <port name="IsisHttpGet" binding="s0:IsisHttpGet">\r
+ <http:address location="http://isisdev1.tig.ucla.edu/iws/v4.asmx" />\r
+ </port>\r
+ <port name="IsisHttpPost" binding="s0:IsisHttpPost">\r
+ <http:address location="http://isisdev1.tig.ucla.edu/iws/v4.asmx" />\r
+ </port>\r
+ </service>\r
+</definitions>
\ No newline at end of file
--- /dev/null
+--TEST--
+Bug #29199 (html_entity_decode() misbehaves with UTF-8)
+--FILE--
+<?php
+var_dump(bin2hex(html_entity_decode('  ‘†′⁄€', ENT_QUOTES, 'UTF-8')));
+?>
+--EXPECT--
+string(42) "e28082e28089e28098e280a0e280b2e28184e282ac"