dmitry          Tue Nov  8 03:36:51 2005 EDT

  Modified files:              
    /php-src/ext/soap   php_encoding.c php_schema.c 
    /php-src/ext/soap/tests/bugs        bug35142.phpt bug35142.wsdl 
  Log:
  Fixed bug #35142 (SOAP Client/Server Complex Object Support)
  
  
http://cvs.php.net/diff.php/php-src/ext/soap/php_encoding.c?r1=1.114&r2=1.115&ty=u
Index: php-src/ext/soap/php_encoding.c
diff -u php-src/ext/soap/php_encoding.c:1.114 
php-src/ext/soap/php_encoding.c:1.115
--- php-src/ext/soap/php_encoding.c:1.114       Tue Nov  1 06:11:17 2005
+++ php-src/ext/soap/php_encoding.c     Tue Nov  8 03:36:47 2005
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: php_encoding.c,v 1.114 2005/11/01 11:11:17 dmitry Exp $ */
+/* $Id: php_encoding.c,v 1.115 2005/11/08 08:36:47 dmitry Exp $ */
 
 #include <time.h>
 
@@ -1224,6 +1224,10 @@
                                  unset_zval_property(ret, "any" TSRMLS_CC);
                                        redo_any = 1;
                          }
+                               if (Z_TYPE_P(ret) == IS_OBJECT && ce != 
ZEND_STANDARD_CLASS_DEF_PTR) {
+                                       zend_object *zobj = 
zend_objects_get_address(ret TSRMLS_CC);
+                                       zobj->ce = ce;
+                               }
                        } else {
                                zval *base;
 
http://cvs.php.net/diff.php/php-src/ext/soap/php_schema.c?r1=1.59&r2=1.60&ty=u
Index: php-src/ext/soap/php_schema.c
diff -u php-src/ext/soap/php_schema.c:1.59 php-src/ext/soap/php_schema.c:1.60
--- php-src/ext/soap/php_schema.c:1.59  Wed Sep 28 07:23:30 2005
+++ php-src/ext/soap/php_schema.c       Tue Nov  8 03:36:48 2005
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: php_schema.c,v 1.59 2005/09/28 11:23:30 dmitry Exp $ */
+/* $Id: php_schema.c,v 1.60 2005/11/08 08:36:48 dmitry Exp $ */
 
 #include "php_soap.h"
 #include "libxml/uri.h"
@@ -2192,9 +2192,25 @@
                        }
                        break;
                }
-               case XSD_CONTENT_SEQUENCE:
-               case XSD_CONTENT_ALL:
                case XSD_CONTENT_CHOICE: {
+                       if (model->max_occurs != 1) {
+                               HashPosition pos;
+                               sdlContentModelPtr *tmp;
+
+                               
zend_hash_internal_pointer_reset_ex(model->u.content, &pos);
+                               while 
(zend_hash_get_current_data_ex(model->u.content, (void**)&tmp, &pos) == 
SUCCESS) {
+                                       (*tmp)->min_occurs = 0;
+                                       (*tmp)->max_occurs = model->max_occurs;
+                                       
zend_hash_move_forward_ex(model->u.content, &pos);
+                               }
+
+                               model->kind = XSD_CONTENT_ALL;
+                               model->min_occurs = 1;
+                               model->max_occurs = 1;
+                       }
+               }
+               case XSD_CONTENT_SEQUENCE:
+               case XSD_CONTENT_ALL: {
                        sdlContentModelPtr *tmp;
 
                        zend_hash_internal_pointer_reset(model->u.content);
http://cvs.php.net/diff.php/php-src/ext/soap/tests/bugs/bug35142.phpt?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/soap/tests/bugs/bug35142.phpt
diff -u /dev/null php-src/ext/soap/tests/bugs/bug35142.phpt:1.2
--- /dev/null   Tue Nov  8 03:36:51 2005
+++ php-src/ext/soap/tests/bugs/bug35142.phpt   Tue Nov  8 03:36:50 2005
@@ -0,0 +1,135 @@
+--TEST--
+Bug #35142 SOAP Client/Server Complex Object Support 
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--INI--
+soap.wsdl_cache_enabled=0
+--FILE--
+<?php
+ini_set("soap.wsdl_cache_enabled",0);
+$timestamp = "2005-11-08T11:22:07+03:00";
+$wsdl = dirname(__FILE__)."/bug35142.wsdl";
+
+function PostEvents($x) {
+       var_dump($x);
+       exit();
+  return $x;
+}
+
+class TestSoapClient extends SoapClient {
+
+  function __construct($wsdl, $options) {
+    parent::__construct($wsdl, $options);
+    $this->server = new SoapServer($wsdl, $options);
+    $this->server->addFunction('PostEvents');
+  }
+
+  function __doRequest($request, $location, $action, $version) {
+               echo "$request\n";
+    $this->server->handle($request);
+    return $response;
+  }
+
+}
+
+$soapClient = new TestSoapClient($wsdl, 
+       array('trace' => 1, 'exceptions' => 0,
+               'classmap' => array('logOnEvent' => 'LogOnEvent',
+                       'logOffEvent' => 'LogOffEvent',
+                       'events' => 'IVREvents')));
+
+$logOnEvent = new LogOnEvent(34567, $timestamp);
+$logOffEvents[] = new LogOffEvent(34567, $timestamp, "Smoked");
+$logOffEvents[] = new LogOffEvent(34568, $timestamp, "SmokeFree");
+$ivrEvents = new IVREvents("1.0", 101, 12345, 'IVR', $logOnEvent, 
$logOffEvents);
+
+$result = $soapClient->PostEvents($ivrEvents);
+
+class LogOffEvent {
+  public $audienceMemberId;
+  public $timestamp;
+  public $smokeStatus;
+  public $callInititator;
+
+  function __construct($audienceMemberId, $timestamp, $smokeStatus) {
+    $this->audienceMemberId = $audienceMemberId;
+    $this->timestamp = $timestamp;
+    $this->smokeStatus = $smokeStatus;
+    $this->callInitiator = "IVR";
+  }
+}
+
+class LogOnEvent {
+  public $audienceMemberId;
+  public $timestamp;
+
+  function __construct($audienceMemberId, $timestamp) {
+    $this->audienceMemberId = $audienceMemberId;
+    $this->timestamp = $timestamp;
+  }
+}
+
+class IVREvents {
+  public $version;
+  public $activityId;
+  public $messageId;
+  public $source;
+  public $logOnEvent;
+  public $logOffEvent;
+
+  function __construct($version, $activityId, $messageId, $source, 
$logOnEvent=NULL, $logOffEvent=NULL) {
+    $this->version = $version;
+    $this->activityId = $activityId;
+    $this->messageId = $messageId;
+    $this->source = $source;
+    $this->logOnEvent = $logOnEvent;
+    $this->logOffEvent = $logOffEvent;
+  }
+}
+?>
+--EXPECTF--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:ns1="http://testurl/Message";><SOAP-ENV:Body><ns1:ivrEvents version="1.0" 
activityId="101" messageId="12345" source="IVR"><ns1:logOffEvent 
audienceMemberId="34567" timestamp="2005-11-08T11:22:07+03:00" 
smokeStatus="Smoked" callInitiator="IVR"/><ns1:logOffEvent 
audienceMemberId="34568" timestamp="2005-11-08T11:22:07+03:00" 
smokeStatus="SmokeFree" callInitiator="IVR"/><ns1:logOnEvent 
audienceMemberId="34567" 
timestamp="2005-11-08T11:22:07+03:00"/></ns1:ivrEvents></SOAP-ENV:Body></SOAP-ENV:Envelope>
+
+object(IVREvents)#%d (6) {
+  ["version"]=>
+  string(3) "1.0"
+  ["activityId"]=>
+  int(101)
+  ["messageId"]=>
+  int(12345)
+  ["logOffEvent"]=>
+  array(2) {
+    [0]=>
+    object(LogOffEvent)#%d (4) {
+      ["audienceMemberId"]=>
+      int(34567)
+      ["timestamp"]=>
+      string(25) "2005-11-08T11:22:07+03:00"
+      ["smokeStatus"]=>
+      string(6) "Smoked"
+      ["callInitiator"]=>
+      string(3) "IVR"
+    }
+    [1]=>
+    object(LogOffEvent)#%d (4) {
+      ["audienceMemberId"]=>
+      int(34568)
+      ["timestamp"]=>
+      string(25) "2005-11-08T11:22:07+03:00"
+      ["smokeStatus"]=>
+      string(9) "SmokeFree"
+      ["callInitiator"]=>
+      string(3) "IVR"
+    }
+  }
+  ["logOnEvent"]=>
+  object(LogOnEvent)#%d (2) {
+    ["audienceMemberId"]=>
+    int(34567)
+    ["timestamp"]=>
+    string(25) "2005-11-08T11:22:07+03:00"
+  }
+  ["source"]=>
+  string(3) "IVR"
+}
http://cvs.php.net/diff.php/php-src/ext/soap/tests/bugs/bug35142.wsdl?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/soap/tests/bugs/bug35142.wsdl
diff -u /dev/null php-src/ext/soap/tests/bugs/bug35142.wsdl:1.2
--- /dev/null   Tue Nov  8 03:36:51 2005
+++ php-src/ext/soap/tests/bugs/bug35142.wsdl   Tue Nov  8 03:36:50 2005
@@ -0,0 +1,543 @@
+<?xml version="1.0" encoding="utf-8"?>
+<definitions xmlns:s1="http://testurl/Events"; 
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"; 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:s="http://www.w3.org/2001/XMLSchema"; xmlns:s0="http://testurl/Message"; 
xmlns:s3="http://testurl/Smoker"; 
xmlns:soap12enc="http://www.w3.org/2002/06/soap-envelope"; 
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"; 
xmlns:s4="http://testurl/AudienceMember"; 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:s2="http://testurl/Actions"; xmlns:tns="http://testurl/Service"; 
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"; 
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"; 
targetNamespace="http://testurl/Service"; 
xmlns="http://schemas.xmlsoap.org/wsdl/";>
+  <types>
+    <s:schema elementFormDefault="qualified" 
targetNamespace="http://testurl/Message";>
+      <s:import namespace="http://testurl/Events"; />
+      <s:import namespace="http://testurl/Actions"; />
+      <s:element name="ivrActions" type="s0:actions" />
+      <s:complexType name="actions">
+        <s:complexContent mixed="false">
+          <s:extension base="s0:abstractMessage">
+            <s:sequence>
+              <s:choice minOccurs="0" maxOccurs="unbounded">
+                <s:element minOccurs="0" maxOccurs="1" 
name="pauseSmokerAction" type="s2:pauseSmokerAction" />
+                <s:element minOccurs="0" maxOccurs="1" 
name="terminateSmokerAction" type="s2:terminateSmokerAction" />
+                <s:element minOccurs="0" maxOccurs="1" 
name="activateSmokerAction" type="s2:activateSmokerAction" />
+                <s:element minOccurs="0" maxOccurs="1" name="addSmokerAction" 
type="s2:addSmokerAction" />
+                <s:element minOccurs="0" maxOccurs="1" 
name="updateSmokerAction" type="s2:updateSmokerAction" />
+                <s:element minOccurs="0" maxOccurs="1" 
name="deleteSmokerAction" type="s2:deleteSmokerAction" />
+              </s:choice>
+            </s:sequence>
+            <s:attribute default="Client" name="source" 
type="s0:ivrMessageSource" />
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="abstractMessage" abstract="true">
+        <s:attribute default="1.0" name="version" type="s:string" />
+        <s:attribute name="activityId" type="s:unsignedLong" use="required" />
+        <s:attribute name="messageId" type="s:unsignedLong" use="required" />
+      </s:complexType>
+      <s:complexType name="events">
+        <s:complexContent mixed="false">
+          <s:extension base="s0:abstractMessage">
+            <s:sequence>
+              <s:choice minOccurs="0" maxOccurs="unbounded">
+                <s:element minOccurs="0" maxOccurs="1" name="authFailureEvent" 
type="s1:authFailureEvent" />
+                <s:element minOccurs="0" maxOccurs="1" name="logOffEvent" 
type="s1:logOffEvent" />
+                <s:element minOccurs="0" maxOccurs="1" name="cravingLineEvent" 
type="s1:cravingLineEvent" />
+                <s:element minOccurs="0" maxOccurs="1" name="terminateEvent" 
type="s1:terminateEvent" />
+                <s:element minOccurs="0" maxOccurs="1" 
name="relapseWakeSmsReplaceEvent" type="s1:relapseWakeSmsReplaceEvent" />
+                <s:element minOccurs="0" maxOccurs="1" 
name="confessionLineEvent" type="s1:confessionLineEvent" />
+                <s:element minOccurs="0" maxOccurs="1" name="rfqRecordedEvent" 
type="s1:rfqRecordedEvent" />
+                <s:element minOccurs="0" maxOccurs="1" name="logOnEvent" 
type="s1:logOnEvent" />
+              </s:choice>
+            </s:sequence>
+            <s:attribute default="IVR" name="source" 
type="s0:ivrMessageSource" />
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:simpleType name="ivrMessageSource">
+        <s:restriction base="s:string">
+          <s:enumeration value="IVR" />
+          <s:enumeration value="Client" />
+        </s:restriction>
+      </s:simpleType>
+      <s:complexType name="actionResults">
+        <s:complexContent mixed="false">
+          <s:extension base="s0:abstractMessage">
+            <s:sequence>
+              <s:choice minOccurs="0" maxOccurs="unbounded">
+                <s:element minOccurs="0" maxOccurs="1" 
name="updateSmokerActionResult" type="s2:updateSmokerActionResult" />
+                <s:element minOccurs="0" maxOccurs="1" 
name="activateSmokerActionResult" type="s2:activateSmokerActionResult" />
+                <s:element minOccurs="0" maxOccurs="1" 
name="deleteSmokerActionResult" type="s2:deleteSmokerActionResult" />
+                <s:element minOccurs="0" maxOccurs="1" 
name="addSmokerActionResult" type="s2:addSmokerActionResult" />
+                <s:element minOccurs="0" maxOccurs="1" 
name="pauseSmokerActionResult" type="s2:pauseSmokerActionResult" />
+                <s:element minOccurs="0" maxOccurs="1" 
name="terminateSmokerActionResult" type="s2:terminateSmokerActionResult" />
+              </s:choice>
+            </s:sequence>
+            <s:attribute default="IVR" name="source" 
type="s0:ivrMessageSource" />
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="eventResults">
+        <s:complexContent mixed="false">
+          <s:extension base="s0:abstractMessage">
+            <s:sequence>
+              <s:element minOccurs="0" maxOccurs="unbounded" 
name="eventResult" type="s1:eventResult" />
+            </s:sequence>
+            <s:attribute default="IVR" name="source" 
type="s0:ivrMessageSource" />
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:element name="ivrActionResults" type="s0:actionResults" />
+      <s:element name="ivrEvents" type="s0:events" />
+      <s:element name="ivrEventResults" type="s0:eventResults" />
+    </s:schema>
+    <s:schema elementFormDefault="qualified" 
targetNamespace="http://testurl/Events";>
+      <s:complexType name="authFailureEvent">
+        <s:complexContent mixed="false">
+          <s:extension base="s1:abstractEvent">
+            <s:attribute name="mobileNumber" type="s:string" />
+            <s:attribute name="line" type="s1:line" use="required" />
+            <s:attribute name="reason" type="s:string" />
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="abstractEvent" abstract="true">
+        <s:attribute name="audienceMemberId" type="s:unsignedLong" />
+        <s:attribute name="timestamp" type="s:dateTime" use="required" />
+      </s:complexType>
+      <s:complexType name="logOnEvent">
+        <s:complexContent mixed="false">
+          <s:extension base="s1:abstractEvent" />
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="cravingLineEvent">
+        <s:complexContent mixed="false">
+          <s:extension base="s1:abstractEvent">
+            <s:sequence>
+              <s:element minOccurs="0" maxOccurs="unbounded" name="selection" 
type="s1:cravingLineEventSelection" />
+            </s:sequence>
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="cravingLineEventSelection">
+        <s:attribute name="type" type="s1:cravingLineMessageType" 
use="required" />
+        <s:attribute name="msgNumber" type="s:positiveInteger" />
+      </s:complexType>
+      <s:simpleType name="cravingLineMessageType">
+        <s:restriction base="s:string">
+          <s:enumeration value="Motivational" />
+          <s:enumeration value="StressReval" />
+          <s:enumeration value="EffectReg" />
+        </s:restriction>
+      </s:simpleType>
+      <s:complexType name="confessionLineEvent">
+        <s:complexContent mixed="false">
+          <s:extension base="s1:abstractEvent">
+            <s:attribute name="smokeStatus" type="s1:smokeStatus" 
use="required" />
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:simpleType name="smokeStatus">
+        <s:restriction base="s:string">
+          <s:enumeration value="Smoked" />
+          <s:enumeration value="SmokeFree" />
+        </s:restriction>
+      </s:simpleType>
+      <s:complexType name="rfqRecordedEvent">
+        <s:complexContent mixed="false">
+          <s:extension base="s1:abstractEvent" />
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="terminateEvent">
+        <s:complexContent mixed="false">
+          <s:extension base="s1:abstractEvent" />
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="logOffEvent">
+        <s:complexContent mixed="false">
+          <s:extension base="s1:abstractEvent">
+            <s:attribute name="smokeStatus" type="s1:smokeStatus" 
use="required" />
+            <s:attribute name="callInitiator" type="s1:callInitiator" 
use="required" />
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:simpleType name="callInitiator">
+        <s:restriction base="s:string">
+          <s:enumeration value="AudienceMember" />
+          <s:enumeration value="IVR" />
+        </s:restriction>
+      </s:simpleType>
+      <s:complexType name="relapseWakeSmsReplaceEvent">
+        <s:complexContent mixed="false">
+          <s:extension base="s1:abstractEvent">
+            <s:attribute name="relapseCount" type="s:positiveInteger" />
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:simpleType name="line">
+        <s:restriction base="s:string">
+          <s:enumeration value="LogOnOffLine" />
+          <s:enumeration value="CravingLine" />
+          <s:enumeration value="ConfessionLine" />
+          <s:enumeration value="ReasonsForQuittingLine" />
+        </s:restriction>
+      </s:simpleType>
+      <s:complexType name="eventResult">
+        <s:attribute name="success" type="s:boolean" use="required" />
+      </s:complexType>
+    </s:schema>
+    <s:schema elementFormDefault="qualified" 
targetNamespace="http://testurl/Actions";>
+      <s:import namespace="http://testurl/Smoker"; />
+      <s:complexType name="updateSmokerActionResult">
+        <s:complexContent mixed="false">
+          <s:extension base="s2:abstractActionResult">
+            <s:sequence>
+              <s:element minOccurs="0" maxOccurs="unbounded" name="smoker" 
type="s2:updateSmokerActionResultSmoker" />
+            </s:sequence>
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="abstractActionResult">
+        <s:attribute name="resultId" type="s:unsignedLong" use="required" />
+      </s:complexType>
+      <s:complexType name="pauseSmokerActionResult">
+        <s:complexContent mixed="false">
+          <s:extension base="s2:abstractActionResult">
+            <s:sequence>
+              <s:element minOccurs="0" maxOccurs="unbounded" name="smoker" 
type="s2:pauseSmokerActionResultSmoker" />
+            </s:sequence>
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="pauseSmokerActionResultSmoker">
+        <s:attribute name="audienceMemberId" type="s:unsignedLong" 
use="required" />
+        <s:attribute name="status" 
type="s2:pauseSmokerActionResultSmokerStatus" use="required" />
+        <s:attribute name="exception" 
type="s2:pauseSmokerActionResultSmokerException" />
+      </s:complexType>
+      <s:simpleType name="pauseSmokerActionResultSmokerStatus">
+        <s:restriction base="s:string">
+          <s:enumeration value="Paused" />
+          <s:enumeration value="NotPaused" />
+        </s:restriction>
+      </s:simpleType>
+      <s:simpleType name="pauseSmokerActionResultSmokerException">
+        <s:restriction base="s:string">
+          <s:enumeration value="UnspecifiedError" />
+          <s:enumeration value="IDNotFound" />
+        </s:restriction>
+      </s:simpleType>
+      <s:complexType name="addSmokerActionResult">
+        <s:complexContent mixed="false">
+          <s:extension base="s2:abstractActionResult">
+            <s:sequence>
+              <s:element minOccurs="0" maxOccurs="unbounded" name="smoker" 
type="s2:addSmokerActionResultSmoker" />
+            </s:sequence>
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="addSmokerActionResultSmoker">
+        <s:attribute name="audienceMemberId" type="s:unsignedLong" 
use="required" />
+        <s:attribute name="status" type="s2:addSmokerActionResultSmokerStatus" 
use="required" />
+        <s:attribute name="exception" 
type="s2:addSmokerActionResultSmokerException" />
+      </s:complexType>
+      <s:simpleType name="addSmokerActionResultSmokerStatus">
+        <s:restriction base="s:string">
+          <s:enumeration value="Added" />
+          <s:enumeration value="NotAdded" />
+        </s:restriction>
+      </s:simpleType>
+      <s:simpleType name="addSmokerActionResultSmokerException">
+        <s:restriction base="s:string">
+          <s:enumeration value="UnspecifiedError" />
+          <s:enumeration value="DuplicateID" />
+        </s:restriction>
+      </s:simpleType>
+      <s:complexType name="deleteSmokerActionResult">
+        <s:complexContent mixed="false">
+          <s:extension base="s2:abstractActionResult">
+            <s:sequence>
+              <s:element minOccurs="0" maxOccurs="unbounded" name="smoker" 
type="s2:deleteSmokerActionResultSmoker" />
+            </s:sequence>
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="deleteSmokerActionResultSmoker">
+        <s:attribute name="audienceMemberId" type="s:unsignedLong" 
use="required" />
+        <s:attribute name="status" 
type="s2:deleteSmokerActionResultSmokerStatus" use="required" />
+        <s:attribute name="exception" 
type="s2:deleteSmokerActionResultSmokerException" />
+      </s:complexType>
+      <s:simpleType name="deleteSmokerActionResultSmokerStatus">
+        <s:restriction base="s:string">
+          <s:enumeration value="Deleted" />
+          <s:enumeration value="NotDeleted" />
+        </s:restriction>
+      </s:simpleType>
+      <s:simpleType name="deleteSmokerActionResultSmokerException">
+        <s:restriction base="s:string">
+          <s:enumeration value="UnspecifiedError" />
+          <s:enumeration value="IDNotFound" />
+        </s:restriction>
+      </s:simpleType>
+      <s:complexType name="activateSmokerActionResult">
+        <s:complexContent mixed="false">
+          <s:extension base="s2:abstractActionResult">
+            <s:sequence>
+              <s:element minOccurs="0" maxOccurs="unbounded" name="smoker" 
type="s2:activateSmokerActionResultSmoker" />
+            </s:sequence>
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="activateSmokerActionResultSmoker">
+        <s:attribute name="audienceMemberId" type="s:unsignedLong" 
use="required" />
+        <s:attribute name="status" 
type="s2:activateSmokerActionResultSmokerStatus" use="required" />
+        <s:attribute name="exception" 
type="s2:activateSmokerActionResultSmokerException" />
+      </s:complexType>
+      <s:simpleType name="activateSmokerActionResultSmokerStatus">
+        <s:restriction base="s:string">
+          <s:enumeration value="Activated" />
+          <s:enumeration value="NotActivated" />
+        </s:restriction>
+      </s:simpleType>
+      <s:simpleType name="activateSmokerActionResultSmokerException">
+        <s:restriction base="s:string">
+          <s:enumeration value="UnspecifiedError" />
+          <s:enumeration value="IDNotFound" />
+        </s:restriction>
+      </s:simpleType>
+      <s:complexType name="terminateSmokerActionResult">
+        <s:complexContent mixed="false">
+          <s:extension base="s2:abstractActionResult">
+            <s:sequence>
+              <s:element minOccurs="0" maxOccurs="unbounded" name="smoker" 
type="s2:terminateSmokerActionResultSmoker" />
+            </s:sequence>
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="terminateSmokerActionResultSmoker">
+        <s:attribute name="audienceMemberId" type="s:unsignedLong" 
use="required" />
+        <s:attribute name="status" 
type="s2:terminateSmokerActionResultSmokerStatus" use="required" />
+        <s:attribute name="exception" 
type="s2:terminateSmokerActionResultSmokerException" />
+      </s:complexType>
+      <s:simpleType name="terminateSmokerActionResultSmokerStatus">
+        <s:restriction base="s:string">
+          <s:enumeration value="Terminated" />
+          <s:enumeration value="NotTerminated" />
+        </s:restriction>
+      </s:simpleType>
+      <s:simpleType name="terminateSmokerActionResultSmokerException">
+        <s:restriction base="s:string">
+          <s:enumeration value="UnspecifiedError" />
+          <s:enumeration value="IDNotFound" />
+        </s:restriction>
+      </s:simpleType>
+      <s:complexType name="updateSmokerActionResultSmoker">
+        <s:attribute name="audienceMemberId" type="s:unsignedLong" 
use="required" />
+        <s:attribute name="status" 
type="s2:updateSmokerActionResultSmokerStatus" use="required" />
+        <s:attribute name="exception" 
type="s2:updateSmokerActionResultSmokerException" />
+      </s:complexType>
+      <s:simpleType name="updateSmokerActionResultSmokerStatus">
+        <s:restriction base="s:string">
+          <s:enumeration value="Updated" />
+          <s:enumeration value="NotUpdated" />
+        </s:restriction>
+      </s:simpleType>
+      <s:simpleType name="updateSmokerActionResultSmokerException">
+        <s:restriction base="s:string">
+          <s:enumeration value="UnspecifiedError" />
+          <s:enumeration value="IDNotFound" />
+        </s:restriction>
+      </s:simpleType>
+      <s:complexType name="pauseSmokerAction">
+        <s:complexContent mixed="false">
+          <s:extension base="s2:abstractAction">
+            <s:sequence>
+              <s:element minOccurs="0" maxOccurs="unbounded" 
name="audienceMemberID" type="s:unsignedLong" />
+            </s:sequence>
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="abstractAction" abstract="true">
+        <s:attribute name="requestId" type="s:unsignedLong" use="required" />
+      </s:complexType>
+      <s:complexType name="addSmokerAction">
+        <s:complexContent mixed="false">
+          <s:extension base="s2:abstractAction">
+            <s:sequence>
+              <s:element minOccurs="0" maxOccurs="unbounded" name="smoker" 
type="s3:smoker" />
+            </s:sequence>
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="updateSmokerAction">
+        <s:complexContent mixed="false">
+          <s:extension base="s2:abstractAction">
+            <s:sequence>
+              <s:element minOccurs="0" maxOccurs="unbounded" name="smoker" 
type="s3:smoker" />
+            </s:sequence>
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="terminateSmokerAction">
+        <s:complexContent mixed="false">
+          <s:extension base="s2:abstractAction">
+            <s:attribute name="audienceMemberId" type="s:unsignedLong" 
use="required" />
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="deleteSmokerAction">
+        <s:complexContent mixed="false">
+          <s:extension base="s2:abstractAction">
+            <s:sequence>
+              <s:element minOccurs="0" maxOccurs="unbounded" 
name="audienceMemberID" type="s:unsignedLong" />
+            </s:sequence>
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:complexType name="activateSmokerAction">
+        <s:complexContent mixed="false">
+          <s:extension base="s2:abstractAction">
+            <s:attribute name="audienceMemberId" type="s:unsignedLong" 
use="required" />
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+    </s:schema>
+    <s:schema elementFormDefault="qualified" 
targetNamespace="http://testurl/Smoker";>
+      <s:import namespace="http://testurl/AudienceMember"; />
+      <s:complexType name="smoker">
+        <s:complexContent mixed="false">
+          <s:extension base="s4:ivrAudienceMember">
+            <s:attribute name="startDate" type="s:date" use="required" />
+            <s:attribute name="phase" type="s3:phase" use="required" />
+            <s:attribute name="day" type="s:positiveInteger" />
+            <s:attribute name="track" type="s3:track" use="required" />
+            <s:attribute name="status" type="s3:status" use="required" />
+            <s:attribute name="baseTime" type="s:string" />
+            <s:attribute name="sunWakeOffset" type="s:string" />
+            <s:attribute name="monWakeOffset" type="s:string" />
+            <s:attribute name="tueWakeOffset" type="s:string" />
+            <s:attribute name="wedWakeOffset" type="s:string" />
+            <s:attribute name="thuWakeOffset" type="s:string" />
+            <s:attribute name="friWakeOffset" type="s:string" />
+            <s:attribute name="satWakeOffset" type="s:string" />
+            <s:attribute name="sunSleepOffset" type="s:string" />
+            <s:attribute name="monSleepOffset" type="s:string" />
+            <s:attribute name="tueSleepOffset" type="s:string" />
+            <s:attribute name="wedSleepOffset" type="s:string" />
+            <s:attribute name="thuSleepOffset" type="s:string" />
+            <s:attribute name="friSleepOffset" type="s:string" />
+            <s:attribute name="satSleepOffset" type="s:string" />
+            <s:attribute name="sunLogOnWindowOffset" type="s:string" />
+            <s:attribute name="monLogOnWindowOffset" type="s:string" />
+            <s:attribute name="tueLogOnWindowOffset" type="s:string" />
+            <s:attribute name="wedLogOnWindowOffset" type="s:string" />
+            <s:attribute name="thuLogOnWindowOffset" type="s:string" />
+            <s:attribute name="friLogOnWindowOffset" type="s:string" />
+            <s:attribute name="satLogOnWindowOffset" type="s:string" />
+            <s:attribute name="sunLogOffWindowOffset" type="s:string" />
+            <s:attribute name="monLogOffWindowOffset" type="s:string" />
+            <s:attribute name="tueLogOffWindowOffset" type="s:string" />
+            <s:attribute name="wedLogOffWindowOffset" type="s:string" />
+            <s:attribute name="thuLogOffWindowOffset" type="s:string" />
+            <s:attribute name="friLogOffWindowOffset" type="s:string" />
+            <s:attribute name="satLogOffWindowOffset" type="s:string" />
+          </s:extension>
+        </s:complexContent>
+      </s:complexType>
+      <s:simpleType name="phase">
+        <s:restriction base="s:string">
+          <s:enumeration value="Prep" />
+          <s:enumeration value="Quit" />
+          <s:enumeration value="Followup" />
+        </s:restriction>
+      </s:simpleType>
+      <s:simpleType name="track">
+        <s:restriction base="s:string">
+          <s:enumeration value="NRT" />
+          <s:enumeration value="NonNRT" />
+        </s:restriction>
+      </s:simpleType>
+      <s:simpleType name="status">
+        <s:restriction base="s:string">
+          <s:enumeration value="Pre-Start" />
+          <s:enumeration value="Completed" />
+          <s:enumeration value="Terminated" />
+          <s:enumeration value="Paused" />
+          <s:enumeration value="Active" />
+        </s:restriction>
+      </s:simpleType>
+    </s:schema>
+    <s:schema elementFormDefault="qualified" 
targetNamespace="http://testurl/AudienceMember";>
+      <s:import namespace="http://testurl/Smoker"; />
+      <s:complexType name="ivrAudienceMember">
+        <s:attribute name="id" type="s:unsignedLong" use="required" />
+        <s:attribute name="mobileNumber" type="s:string" />
+        <s:attribute name="firstName" type="s:string" />
+        <s:attribute name="lastName" type="s:string" />
+      </s:complexType>
+    </s:schema>
+  </types>
+  <message name="PostActionsSoapIn">
+    <part name="ivrActions" element="s0:ivrActions" />
+  </message>
+  <message name="PostActionsSoapOut">
+    <part name="PostActionsResult" element="s0:ivrActionResults" />
+  </message>
+  <message name="PostEventsSoapIn">
+    <part name="ivrEvents" element="s0:ivrEvents" />
+  </message>
+  <message name="PostEventsSoapOut">
+    <part name="PostEventsResult" element="s0:ivrEventResults" />
+  </message>
+  <portType name="IVRServicePortSoap">
+    <operation name="PostActions">
+      <input message="tns:PostActionsSoapIn" />
+      <output message="tns:PostActionsSoapOut" />
+    </operation>
+    <operation name="PostEvents">
+      <input message="tns:PostEventsSoapIn" />
+      <output message="tns:PostEventsSoapOut" />
+    </operation>
+  </portType>
+  <binding name="IVRServicePortSoap" type="tns:IVRServicePortSoap">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"; 
style="document" />
+    <operation name="PostActions">
+      <soap:operation soapAction="http://testurl/Service:postActionsIn"; 
style="document" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+    <operation name="PostEvents">
+      <soap:operation soapAction="http://testurl/Service:postEventsIn"; 
style="document" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+  </binding>
+  <binding name="IVRServicePortSoap12" type="tns:IVRServicePortSoap">
+    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"; 
style="document" />
+    <operation name="PostActions">
+      <soap12:operation soapAction="http://testurl/Service:postActionsIn"; 
style="document" />
+      <input>
+        <soap12:body use="literal" />
+      </input>
+      <output>
+        <soap12:body use="literal" />
+      </output>
+    </operation>
+    <operation name="PostEvents">
+      <soap12:operation soapAction="http://testurl/Service:postEventsIn"; 
style="document" />
+      <input>
+        <soap12:body use="literal" />
+      </input>
+      <output>
+        <soap12:body use="literal" />
+      </output>
+    </operation>
+  </binding>
+  <service name="IVRServicePort">
+    <port name="IVRServicePortSoap" binding="tns:IVRServicePortSoap">
+      <soap:address location="test://" />
+    </port>
+    <port name="IVRServicePortSoap12" binding="tns:IVRServicePortSoap12">
+      <soap12:address location="test://" />
+    </port>
+  </service>
+</definitions>

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to