Added filter and pagination to Product

This commit is contained in:
Frank Schubert
2022-11-24 20:36:09 +01:00
parent fc71a80dc4
commit 54ae6f62b0
119 changed files with 377 additions and 52238 deletions

View File

@@ -96,8 +96,8 @@
</tr>
<?php foreach($contracts as $contract): ?>
<tr>
<td><?=$contract->id?></td>
<td><a href="<?=self::getUrl("Address", "View", ["id" => $contract->owner_id])?>" target="_blank"><?=$contract->owner->getCompanyOrName()?></a></td>
<td><a href="<?=self::getUrl("Contract", "view", ["id" => $contract->id])?>"><?=$contract->id?></a></td>
<td><a href="<?=self::getUrl("Address", "View", ["id" => $contract->owner_id])?>" target="_blank"><i class="far fa-eyes" title="Kunde in neuem Tab anzeigen"></i></a> <?=$contract->owner->getCompanyOrName()?></td>
<td><a href="<?=self::getUrl("Contract", "view", ["id" => $contract->id])?>"><?=$contract->product->name?></a></td>
<td><a href="<?=self::getUrl("Contract", "view", ["id" => $contract->id])?>"><?=$contract->matchcode?></a></td>
<!--<td>

View File

@@ -24,6 +24,81 @@
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body mb-3">
<h4 class="header-title mb-3">Filter</h4>
<form method="get" action="<?=self::getUrl("Product")?>">
<div class="row">
<div class="col-2">
<label class="form-label" for="filter_network_id">Produktgruppen</label>
<select name="filter[productgroup_id][]" id="filter_productgroup_id" class="form-control select2" multiple="multiple">
<option></option>
<?php foreach(ProductgroupModel::getAll() as $group): ?>
<option value="<?=$group->id?>" <?=(is_array($filter) && array_key_exists('productgroup_id', $filter) && in_array($group->id, $filter['productgroup_id'])) ? "selected='selected'" : ""?>><?=$group->name?></option>
<?php endforeach; ?>
</select>
</div>
<div class="col-2">
<label class="form-label" for="filter_producttech_id">Technologien</label>
<select name="filter[producttech_id][]" id="filter_producttech_id" class="form-control select2" multiple="multiple">
<option></option>
<?php foreach(ProducttechModel::getAll() as $tech): ?>
<option value="<?=$tech->id?>" <?=(is_array($filter) && array_key_exists('producttech_id', $filter) && in_array($tech->id, $filter['producttech_id'])) ? "selected='selected'" : ""?>><?=$tech->name?></option>
<?php endforeach; ?>
</select>
</div>
<div class="col-2">
<label class="form-label" for="filter_sla_id">SLA</label>
<select name="filter[sla_id]" id="filter_sla_id" class="form-control">
<option></option>
<?php foreach(SlaModel::getAll() as $sla): ?>
<option value="<?=$sla->id?>" <?=(is_array($filter) && array_key_exists('sla_id', $filter) && $filter['sla_id'] == $sla->id) ? "selected='selected'" : ""?>><?=$sla->name?></option>
<?php endforeach; ?>
</select>
</div>
<div class="col-2">
<label class="form-label" for="filter_name">Name</label>
<input type="text" class="form-control" name="filter[name]" id="filter_name" value="<?=$filter['name']?>" />
</div>
<div class="col-2">
<label class="form-label" for="filter_customer_type">Kundentyp</label>
<select name="filter[customer_type]" id="filter_customer_type" class="form-control">
<option></option>
<option value="business" <?=(is_array($filter) && array_key_exists('customer_type', $filter) && $filter['customer_type'] == "business") ? "selected='selected'" : ""?>>Business</option>
<option value="residential" <?=(is_array($filter) && array_key_exists('customer_type', $filter) && $filter['customer_type'] == "residential") ? "selected='selected'" : ""?>>Residential</option>
</select>
</div>
<div class="col-2">
<label class="form-label" for="filter_external">Externe Produkte</label>
<select name="filter[external]" id="filter_external" class="form-control">
<option></option>
<option value="1" <?=(is_array($filter) && array_key_exists('external', $filter) && $filter['external']) ? "selected='selected'" : ""?>>Anzeigen</option>
<option value="0" <?=(is_array($filter) && array_key_exists('external', $filter) && !$filter['external']) ? "selected='selected'" : ""?>>Ausblenden</option>
</select>
</div>
</div>
<div class="row mt-2">
<div class="col">
<button type="submit" class="btn btn-primary">Filter anwenden</button>
<a class="btn btn-secondary" href="<?=self::getUrl("Product")?>">Filter zurücksetzen</a>
</div>
<!--<div class="col">
<button class="btn btn-info" type="button" onclick="refreshMap()"><i class="far fa-map"></i> Auf Karte anzeigen</button>
</div>-->
</div>
</form>
</div>
</div>
<div class="card">
<div class="card-body mb-3">
<div class="float-left">
@@ -34,8 +109,8 @@
</div>
<?php //include(realpath(dirname(__FILE__)."/../")."/tpl/pagination.php"); ?>
<?php //include(realpath(dirname(__FILE__)."/../")."/tpl/pagination-summary.php"); ?>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination.php"); ?>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination-summary.php"); ?>
<table class="table table-striped table-hover">
<tr>
@@ -69,12 +144,17 @@
<?php endforeach; ?>
</table>
<?php //include(realpath(dirname(__FILE__)."/../")."/tpl/pagination-summary.php"); ?>
<?php //include(realpath(dirname(__FILE__)."/../")."/tpl/pagination.php"); ?>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination-summary.php"); ?>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination.php"); ?>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$("#filter_productgroup_id").select2({closeOnSelect: false});
$("#filter_producttech_id").select2({closeOnSelect: false});
</script>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>

View File

@@ -0,0 +1,68 @@
<?php
$pagination_baseurl = $this->getUrl($Mod,"Index");
$pagination_baseurl_params = ["filter" => $filter];
$pagination_entity_name = "Produktgruppen";
?>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/header.php"); ?>
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box">
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item"><a href="<?=self::getUrl("Dashboard")?>"><?=MFAPPNAME_SLUG?></a></li>
<li class="breadcrumb-item active">Produkte</li>
</ol>
</div>
<h4 class="page-title">Produkte</h4>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body mb-3">
<div class="float-left">
<h4 class="header-title">Liste aller Produktgruppen</h4>
</div>
<div class="float-right">
<a class="btn btn-primary mb-2" href="<?=self::getUrl("Productgroup", "add")?>"><i class="fas fa-plus"></i> Neue Produktgruppe erstellen</a>
</div>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination.php"); ?>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination-summary.php"); ?>
<table class="table table-striped table-hover">
<tr>
<th>Produktgruppe</th>
<th>Beschreibung</th>
<th>Anzahl Produkte</th>
<th></th>
</tr>
<?php foreach($productgroups as $group): ?>
<tr>
<td><?=$group->name?></td>
<td><?=$group->description?></td>
<td><a href="<?=self::getUrl("Product","Index", ['filter' => ['productgroup_id' => [$group->id]]])?>"><?=(is_array($group->products)) ? count($group->products) : "0"?></a></td>
<td style="text-align: left; letter-spacing: 4px; font-size: 1.1em;">
<a href="<?=self::getUrl("Productgroup", "edit", ["id" => $group->id])?>"><i class="far fa-edit" title="Produktgruppe Bearbeiten"></i></a>
<a href="<?=self::getUrl("Productgroup", "delete", ["id" => $group->id])?>" class="text-danger" onclick="if(!confirm('Produktgruppe wirklich löschen?')) return false;" title="Produktgruppe Löschen"><i class="fas fa-trash"></i></a>
</td>
</tr>
<?php endforeach; ?>
</table>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination-summary.php"); ?>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination.php"); ?>
</div>
</div>
</div>
</div>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>

View File

@@ -31,6 +31,7 @@
<li><a href="<?=self::getUrl("Address", "Index" , ["filter" => ["addresstype" => ["supplier"]]])?>"><i class="fas fa-"></i> Lieferanten</a></li>
</ul>-->
</li>
<li><a href="<?=self::getUrl("Productgroup")?>"><i class="far fa-list-tree text-info"></i> Produktgruppen</a></li>
<li><a href="<?=self::getUrl("Product")?>"><i class="far fa-rectangle-list text-info"></i> Produkte</a></li>
<li><a href="<?=self::getUrl("Producttech")?>"><i class="fad fa-microchip text-info"></i> Technologien</a></li>
<li><a href="<?=self::getUrl("User")?>"><i class="fad fa-users text-info"></i> Benutzer</a></li>

View File

@@ -18,7 +18,48 @@ class ProductController extends mfBaseController {
if(!$this->me->is(["Admin"])) {
$this->redirect("Dashboard");
}
$this->layout()->set("products", ProductModel::getAll());
$filter = [];
if(is_array($this->request->filter)) {
$filter = $this->request->filter;
}
$this->layout->set("filter", $filter);
if($filter) {
$filter = $this->getPreparedFilter($filter);
}
// pagination defaults
$pagination = [];
$pagination['start'] = 0;
$pagination['count'] = 20;
$pagination['maxItems'] = 0;
if(is_numeric($this->request->s)) {
$pagination['start'] = intval($this->request->s);
}
$pagination['maxItems'] = ProductModel::count($filter);
$this->layout()->set("pagination", $pagination);
$products = ProductModel::search($filter, $pagination);
$this->layout()->set("products", $products);
}
private function getPreparedFilter($filter) {
$new_filter = [];
if(array_key_exists("name", $filter)) {
$new_filter['name%'] = $filter['name'];
unset($filter['name']);
}
foreach($filter as $name => $value) {
$new_filter[$name] = $value;
}
return $new_filter;
}
protected function addAction() {
@@ -276,7 +317,7 @@ class ProductController extends mfBaseController {
}
$products = array_merge($products, ProductModel::search(["nameLike" => $search]));
$products = array_merge($products, ProductModel::search(["name%" => $search]));
if(!is_array($products) && !count($products)) {
return false;

View File

@@ -92,21 +92,55 @@ class ProductModel {
return null;
}
public static function search($filter) {
public static function count($filter) {
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
$sql = "SELECT COUNT(*) as cnt FROM (
SELECT `Product`.id FROM `Product`
LEFT JOIN ProductAttribute ON (ProductAttribute.product_id = Product.id)
LEFT JOIN Producttech ON (Product.producttech_id = Producttech.id)
LEFT JOIN ProducttechAttribute ON (ProducttechAttribute.producttech_id = Producttech.id)
WHERE $where
GROUP BY Product.id
) as p
";
mfLoghandler::singleton()->debug($sql);
$res = $db->query($sql);
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
return $data->cnt;
}
return 0;
}
public static function search($filter, $limit=false) {
$items = [];
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
$sql = "SELECT Product.* FROM `Product`
LEFT JOIN Productgroup ON (Productgroup.id = Product.id)
LEFT JOIN ProductAttribute ON (ProductAttribute.product_id = Product.id)
LEFT JOIN Producttech ON (Product.producttech_id = Producttech.id)
LEFT JOIN ProducttechAttribute ON (ProducttechAttribute.producttech_id = Producttech.id)
WHERE $where
GROUP BY Product.id";
GROUP BY Product.id
ORDER BY Productgroup.name,Producttech.name,Product.name
";
mfLoghandler::singleton()->debug($sql);
if(is_array($limit) && count($limit)) {
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
$sql .= " LIMIT ".$limit['start'].", ".$limit['count'];
} elseif(is_numeric($count)) {
$sql .= " LIMIT ".$limit['count'];
}
}
$res = $db->query($sql);
//$res = $db->select("Product", "*", "$where ORDER BY name, producttech_id");
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new Product($data);
@@ -124,7 +158,7 @@ class ProductModel {
if(array_key_exists("id", $filter)) {
$id = $db->escape($filter['id']);
if($id) {
$where .= " AND Product.`id` like '%$id%'";
$where .= " AND Product.`id` = '$id'";
}
}
@@ -132,13 +166,27 @@ class ProductModel {
$productgroup_id = $filter['productgroup_id'];
if(is_numeric($productgroup_id)) {
$where .= " AND productgroup_id=$productgroup_id";
} elseif(is_array($productgroup_id) && count($productgroup_id)) {
$where .= " AND Product.productgroup_id IN (". implode(",", $productgroup_id).")";
}
}
if(array_key_exists("producttech_id", $filter)) {
$producttech_id = $filter['producttech_id'];
if(is_numeric($producttech_id)) {
$where .= " AND producttech_id=$producttech_id";
$where .= " AND Product.producttech_id=$producttech_id";
} elseif(is_array($producttech_id) && count($producttech_id)) {
$where .= " AND Product.producttech_id IN (". implode(",", $producttech_id).")";
}
}
if(array_key_exists("sla_id", $filter)) {
$sla_id = $filter['sla_id'];
if(is_numeric($sla_id)) {
$where .= " AND sla_id=$sla_id";
} elseif(is_array($sla_id) && count($sla_id)) {
$where .= " AND Product.sla_id IN (". implode(",", $sla_id).")";
}
}
@@ -149,13 +197,32 @@ class ProductModel {
}
}
if(array_key_exists("nameLike", $filter)) {
$name = $db->escape($filter['nameLike']);
if(array_key_exists("name%", $filter)) {
$name = $db->escape($filter['name%']);
if($name) {
$where .= " AND Product.`name` like '%$name%'";
}
}
if(array_key_exists("external", $filter)) {
$external = $filter['external'];
if(is_numeric($external)) {
if($external) {
$where .= " AND Product.external=1";
} else {
$where .= " AND Product.external=0";
}
}
}
if(array_key_exists("customer_type", $filter)) {
$customer_type = $db->escape($filter['customer_type']);
if($customer_type) {
$where .= " AND Producttech.`customer_type` = '$customer_type'";
}
}
if(array_key_exists("attributename", $filter)) {
$attributename = $db->escape($filter['attributename']);
if($attributename) {

View File

@@ -1,5 +1,65 @@
<?php
class Productgroup extends mfBaseModel {
private $products;
public function getProperty($name) {
if($this->$name == null) {
if(!$this->id) {
return null;
}
if($name == "products") {
$this->products = mfValuecache::singleton()->get("Productgroup-id-".$this->id."-Products");
if($this->products === null) {
$this->products = ProductModel::search(['productgroup_id' => $this->id]);
if($this->products) {
mfValuecache::singleton()->set("Productgroup-id-".$this->id."-Products", $this->products);
}
}
return $this->products;
}
if($name == "creator") {
$this->creator = mfValuecache::singleton()->get("Worker-id-".$this->create_by);
if($this->creator === null) {
$this->creator = new User($this->create_by);
if($this->creator->id) {
mfValuecache::singleton()->set("Worker-id-".$this->create_by, $this->creator);
}
}
return $this->creator;
}
if($name == "editor") {
$this->editor = mfValuecache::singleton()->get("Worker-id-".$this->edit_by);
if($this->editor === null) {
$this->editor = new User($this->edit_by);
if($this->editor->id) {
mfValuecache::singleton()->set("Worker-id-".$this->edit_by, $this->editor);
}
}
return $this->editor;
}
$classname = ucfirst($name);
$idfield = $name."_id";
$this->$name = mfValuecache::singleton()->get("mfObjectmodel-$name-".$this->$idfield);
if(!$this->$name) {
$this->$name = new $classname($this->$idfield);
}
if($this->$name->id) {
mfValuecache::singleton()->set("mfObjectmodel-$name-".$this->$name->id, $this->$name);
return $this->$name;
} else {
return null;
}
}
return $this->$name;
}
}

View File

@@ -15,7 +15,33 @@ class ProductgroupController extends mfBaseController {
}
protected function indexAction() {
$this->layout()->setTemplate("Productgroup/Index");
$filter = [];
if(is_array($this->request->filter)) {
$filter = $this->request->filter;
}
$this->layout->set("filter", $filter);
if($filter) {
$filter = $this->getPreparedFilter($filter);
}
// pagination defaults
$pagination = [];
$pagination['start'] = 0;
$pagination['count'] = 20;
$pagination['maxItems'] = 0;
if(is_numeric($this->request->s)) {
$pagination['start'] = intval($this->request->s);
}
$pagination['maxItems'] = ProductgroupModel::count($filter);
$this->layout()->set("pagination", $pagination);
$productgroups = ProductgroupModel::search($filter, $pagination);
$this->layout()->set("productgroups", $productgroups);
}
protected function addAction() {

View File

@@ -34,21 +34,6 @@ class ProductgroupModel {
return $model;
}
public static function getOne($id) {
if(!is_numeric($id) || !$id) {
throw new Exception("Invalid number", 400);
}
$item = [];
$db = FronkDB::singleton();
$res = $db->select("Productgroup", "*", "id=$id LIMIT 1");
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
$item = new Productgroup($data);
}
return $item;
}
public static function getAll() {
$items = [];
@@ -64,7 +49,7 @@ class ProductgroupModel {
}
public static function getFirst() {
public static function getFirst($filter) {
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
@@ -81,7 +66,23 @@ class ProductgroupModel {
return null;
}
public static function search($filter) {
public static function count($filter) {
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
$sql = "SELECT COUNT(*) as cnt FROM `Productgroup`
WHERE $where
";
$res = $db->query($sql);
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
return $data->cnt;
}
return 0;
}
public static function search($filter, $limit = false) {
$items = [];
$db = FronkDB::singleton();

View File

@@ -65,7 +65,7 @@ class ProducttechModel {
}
public static function getFirst() {
public static function getFirst($filter) {
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);

View File

@@ -1,648 +0,0 @@
2003-07-21, version 0.6.5
- soap_transport_http: SOAPAction header is quoted again, fixes problem w/ Weblogic Server
- applied Jason Levitt patch for proper array serialization, fixes problem w/ Amazon shopping cart services
- fixed null value serialization
- applied patch from "BZC ToOn'S" - fixes wsdl serialization when no parameters
- applied John's patch, implementing compression for the server
2003-07-22, version 0.6.5
- soap_server: fixed bug causing charset encoding not to be passed to the parser
- soap_fault: added default encoding to the fault serialization
- soap_parser: changed the parser to pre-load the parent's result array when processing scalar values. This increases parsing speed.
2003-07-23, version 0.6.5
- soap_base: fix code that overwrites user-supplied attributes in serialize_val
- soap_base: use arrays-of-arrays rather than attempting multi-dimensional in serialize_val
- xmlschema: emit import statements and qualify all elements with prefix in serializeSchema (better interop with validation tools)
- soapclient: get xml character encoding from HTTP Content-Type header if provided, e.g. text/xml;charset="UTF-8"
- soapclient: use headers in call if provided (previously ignored this parameter)
- soap_server: in parse_request, if neither getallheaders nor $_SERVER are available, use $HTTP_SERVER_VARS to get SOAPAction and xml encoding
2003-07-24, version 0.6.5
- soap_transport_http: apply patch from Steven Brown "if the server closes connection prematurely, nusoap would spin trying to read data that isn't there"
2003-07-25, version 0.6.5
- wsdl: apply patch from Sven to workaround single schema limitation
- wsdl: apply a variant of the patch from Holger to handle empty values for array by serializing an array with 0 elements
- xmlschema: remove the redundant default namespace attribute on the schema element; everything in xsd is explicitly specified as being from xsd
- soap_transport_http: fix setCredentials and add TODO comments in sendHTTPS about what to change if this setCredentials stays
2003-07-30, version 0.6.5
- nusoap_base: change documentation of soap_defencoding to specify it is the encoding for outgoing messages
- nusoap_base: only change &, <, > to entities, not all HTML entities
- soap_transport_http: update the Content-Type header in sendRequest, since soap_defencoding could be changed after ctor is called
- soap_server: use soap_defencoding instead of charset_encoding
- soap_server: read encoding from _SERVER if available
- nusoap_base: do entity translation for string parameters with an xsd type specified (thanks David Derr)
2003-07-31, version 0.6.5
- soap_transport_http: add proxy authentication
- soap_transport_http: build payload the same way for http and https
- wsdl: add proxy authentication
- soapclient: add proxy authentication
- soapclient: allow proxy information in ctor, so that it can be used for wsdl
2003-08-01, version 0.6.5
- soap_transport_http: close a persistent connection that's at EOF
- soap_transport_http: prevent conflicts between setEncoding and usePersistentConnection
- soap_transport_http: fix use of $headers instead of $this->incoming_headers in getResponse
- soapclient: improve handling of persistent connections
- soapclient: force xml_encoding to upper case
- soap_server: let the Web server decide whether to close the connection (no Connection: close header)
- soap_server: force xml_encoding to upper case
2003-08-04, version 0.6.5
- soap_parser: use XML type information to pick a PHP data type; also decode base64
- soap_server: read all HTTP headers when using _SERVER or HTTP_SERVER_VARS
- soap_server: add gzip encoding support for outgoing messages
- soap_transport_http: deflate is gzcompress/gzuncompress (cf. http://archive.develooper.com/libwww@perl.org/msg04650.html)
- soap_transport_http: clean use of persistentConnection so it's always a set boolean
- soapclient: add responseData member to access deflated/gunzipped payload
2003-08-05, version 0.6.5
- soap_server: look multiple places when setting debug_flag
2003-08-07, version 0.6.5
- nusoap_base: serialize specified type (e.g. ArrayOfString) even for simple array
- wsdl: only specify encodingStyle in the input/output soap bindings when it is not empty (thanks Guillaume)
2003-08-15, version 0.6.5
- soap_parser: fix parsing of elements with no XSD type specified
- soap_parser: use PHP string type for XSD long and unsignedLong types
2003-08-16, version 0.6.5
- soap_parser: fix code generating warning (thanks Torsten)
2003-08-19, version 0.6.5
- soap_parser: fix another line of code generating a warning (thanks Torsten)
2003-08-22, version 0.6.5
- soap_server: remove all '--' from debug_str; previous code changed '---' to '- --'
- wsdl, soapclient, soap_parser: patch submitted by Mark Spavin as described by
the following...
> Changes for the multiple/nested imports from the wsdl file. This builds an
> array of files not just the last one and also checks for relative paths to
> the parent. This will then get the imported files from the remote site
> instead of your local disk. Local wsdl files should still work (untested).
>
> Changes for multiple encoding sytles as previously posted
2003-08-24, version 0.6.5
- wsdl, soapclient: fix some PHP notices from previous update
2003-08-26, version 0.6.5
- wsdl: support multiple SOAP ports
- soapclient, soap_server: when no charset is specified, use UTF-8, even though HTTP specifies US-ASCII.
- soap_transport_http: do not prepend $host with 'ssl://' for https (is this required for older cURL versions?)
2003-08-27, version 0.6.5
- soap_server: support compressed request messages (thanks John Huong)
- soap_parser: deserialize Apache Vector as an array
- xmlschema: use $this->typemap in getPHPType (which is not used)
- soapclient, wsdl: check for WSDL errors after serializing parameters
- nusoap_base: add serialization of Apache Map (when not using WSDL)
- wsdl: add serialization of Apache Map (when using WSDL)
- wsdl: only change &, <, > to entities, not all HTML entities
2003-08-28, version 0.6.5
- soap_transport_http: disable cURL verification of peer and server (formerly the cURL default)
- soap_transport_http: mingle cURL code with straight http, so sendHTTP is no longer needed
2003-08-29, version 0.6.6
- soap_transport_http: add setContentType
- soapclient: call setContentType using new getHTTPContentType and getHTTPContentTypeCharset
2003-09-05, version 0.6.6
- wsdl: add some more code to handle null/nil values (but there's still a way to go)
2003-10-21, version 0.6.6
- soap_transport_http: only include port in Host header if it was specified in the URL
- soap_transport_http: add some code to use OpenSSL for PHP ssl:// scheme, but comment out since it's not ready
- soap_server: use $_SERVER['PHP_SELF'] if $GLOBALS['PHP_SELF'] is not set
- wsdl: add WSDL request and response and transport debug to debug
- wsdl: handle custom type extending xmlschema namespace (GLUE ... Thanks Matt)
- soap_parser: add param to docs
- soapclient: add getHTTPBody, getHTTPContentType, getHTTPContentTypeCharset (anticipating MIME subclass)
2003-10-28, version 0.6.6
- nusoap_base: add expandEntities method
- wsdl: use expandEntities
- soap_fault: use expandEntities
- soap_transport_http: Allow credentials to be included in URL, rather than requiring setCredentials
- soap_transport_http: Merge HTTP headers that span multiple lines
- soap_parser: Properly set errors in ctor
- soapclient: Pass headers to parseResponse and parse them in that method
2003-10-30, version 0.6.6
- xmlschema: Add some information for the related type to an element
2003-12-09, version 0.6.6
- nusoap_base: Add some namespace methods previously in xmlschema
- xmlschema: Improve parsing of complexType, element and simpleType
- xmlschema: Improve serialization
- xmlschema: Track imports
- xmlschema: Track elementFormDefault and form attributes
- wsdl: Support multiple <schema> (note that setting $server->wsdl->schemaTargetNamespace no longer does anything! Use configureWSDL instead.)
- wsdl: Use form attribute of element to control namespace specification
- wsdl: Support chained imports (A imports B which imports C)
- wsdl: Include port in endpoint address when serializing
- soap_server: Fix use of style (rpc|document) and use (encoded|literal)
- soap_server: Support _SERVER[CONTENT_TYPE] in addition to _SERVER[HTTP_CONTENT_TYPE]
- soap_server: Support wsdl with multiple <schema>
- soap_client: Remove a var_dump
- soap_client: Add style and use parameters to call method to support doc/lit without WSDL
- soap_transport_http: Check that $this->fp exists when doing persistent connections
2003-12-17, version 0.6.6
- soap_server: pass namespaces to xmlschema constructor
- wsdl: post-process after all imports
- wsdl: remove some debug, add some error handling
- xmlschema: allow enclosing namespaces to be specified in constructor
- xmlschema: improve handling of compositors and simple types
2004-01-08, version 0.6.6
- soap_server: when requested WSDL is in a file, return to client using passthru (thanks Ingo Fischer)
- soapclient: have proxy inherit more client state
- soapclient: allow timeout and response timeout to be specified in the constructor
- wsdl: allow timeout and response timeout to be specified in the constructor
- soap_transport_http: allow response timeout to be specified in send and sendHTTPS
2004-01-28, version 0.6.6
- wsdl: add namespace for array and scalar when form is qualified
- wsdl: fix a bug in which data type of complexType elements were ignored in serialization
- wsdl: enhance handling of URLs with file scheme
- wsdl: add addSimpleType
- xmlschema: add addSimpleType
- xmlschema: always set phpType elements
- soapclient: allow a wsdl instance to be specified in constructor
- soap_server: allow a wsdl instance to be specified in constructor (not tested!)
- soap_server: fix default SOAPAction created in register method
- soap_transport_http: accept chunking with LF separators in addition to CRLF.
- wsdlcache: added class
- nusoapmime: fix comments
2004-02-23, version 0.6.6
- soap_transport_http: don't try to unchunk cURL data, since cURL already does it
- soap_transport_http: append CVS revision to version in User-Agent
- wsdl: serialize boolean as true|false, not 1|0, to agree with XML Schema
- soap_server: always exit() after returning WSDL
- soap_server: use the WSDL URL scheme as the default endpoint URL scheme
- soap_server: append CVS revision to version in X-SOAP-Server
- nusoap_base: add (CVS) revision
- wsdlcache: synchronize using a per-WSDL lock file (Thanks Ingo)
- wsdlcache: add cache lifetime, after which cache contents are invalidated (Thanks Ingo)
2004-03-15, version 0.6.6
- nusoap_base: add isArraySimpleOrStruct method
- soap_server: improve WSDL URL scheme determination
- soap_server: only deflate/gzip payloads > 1024 bytes
- soap_server: fix parameter order in fault method (always used as faultcode, faultstring)
- soap_server: refactor parse_request into multiple functions (for sanity)
- soap_server: set the namespace on the Response element to the same as the request
- soap_server: name the return value element 'return' by default
- soap_server: added and documented data fields, so that service programmers can use them if desired
- soap_parser: standardize parsing error message
- soap_parser: fix document and responseHeaders so they are the correct XML text (as documented)
- soap_transport_http: fix read from persistent connection
- soapclient: clean up debugging for persistent connection
- wsdl: enforce correct naming of messages parts when an associative array is used for parameters
- wsdl: better serialization of null values
- wsdl: standardize parsing error message
- xmlschema: standardize parsing error message
2004-03-24, version 0.6.7
- soap_transport_http: add digest authentication (based on code by Kevin A. Miller)
- xmlschema: improve parsing of import elements
- wsdl: do schema imports even if there are no wsdl imports
2004-04-12, version 0.6.7
- wsdl: serialize multiple elements when maxOccurs="unbounded" and value is an array
- wsdl: serialize soapval values (used to force an XML type, e.g. when WSDL uses an abstract type)
- nusoapmime: do not require nusoap.php (it is now the programmer's responsibility)
2004-04-21, version 0.6.7
- soap_parser: parse repeated element name into an array (de-serializes doc/lit array into a PHP array when there is more than 1 array element)
- soap_server: do not wrap response in a response element for a document style service
2004-04-30, version 0.6.7
- soap_transport_http: allow digest auth params to be separated by "," as well as ", "
- soap_transport_http: re-initialize incoming headers for each response
- soap_server: add methodreturnisliteralxml property to allow service function to return XML as a string
- soapclient: improve rpc/literal support
- soapclient: allow XML string as call params in addition to array
- soapclient: support document style and literal encoding when not using WSDL
2004-05-05, version 0.6.7
- wsdl: serialize PHP objects for WSDL XML Schema complexTypes, in addition to associative arrays
- wsdl: fix WSDL generation when there is no encodingStyle
- soap_transport_http: suppress fsockopen warnings
- soap_transport_http: detect socket timeouts when reading (0 bytes returned)
- soap_transport_http: read chunked content "in-line" so it works on a persistent connection
- nusoap_base: serialize boolean as true|false, not 1|0, to agree with XML Schema
- nusoap_base: serialize array of struct differently than array of array
2004-06-25, version 0.6.8
- soap_server: prefer gzip to deflate, since IE does not like our deflate
- soap_server: move webDescription to the wsdl class
- soap_server: allow class and instance method calls for service (thanks Ingo Fischer and Roland Knall)
- wsdl: get webDescription from the soap_server class
- wsdl: allow compression from the server
- wsdl: fix serialization of soapval without a type
- wsdl: propagate debug value from query string to SOAP endpoint in programmatic WSDL generation
- nusoap_base: add anyType, anySimpleType for 2001 XML Schema
- nusoap_base: provide additional debug functions
- soap_transport_http: ignore Content-Length when chunked encoding is used
- soap_transport_http: remove ':' from username for Basic authentication (cf. RFC 2617)
- soap_transport_http: urldecode username and password taken from URL
- soap_transport_http: use raw inflate/deflate for IE/IIS compatibility, rather than having Zlib headers according to HTTP 1.1 spec
- soap_transport_http: attempt to handle the case when both the service application and Web server compress the response
- soapclient: when creating proxy methods, replace '.' in operation name with '__' in function name
- soapclient: initialize requestHeaders in proxy
- general: use new debug methods; never access debug_str directly
2004-09-30, version 0.6.8
- soapclient: do not allow getProxy call when WSDL is not used
- soapclient: use ISO-8859-1 as the charset if not specified in the Content-Type header
- soapclient: when an empty string is specified for the call namespace, do not put the method element in a namespace
- soapclient: let soap_transport_http check for SSL support
- soapclient: have proxy inherit soap_defencoding from the client from which it is generated
- soapclient: do not assume that 'ns1' is an unused namespace prefix; always generate namespace prefixes randomly
- soap_parser: compare any encoding in the XML declaration to the charset from the HTTP Content-Type header (thanks Ingo Fischer)
- soap_parser: improve parse repeated element name into an array (de-serializes doc/lit array into a PHP array when there is more than 1 array element)
- soap_server: use ISO-8859-1 as the charset if not specified in the Content-Type header
- soap_server: allow suppression of automatic UTF-8 decoding
- soap_server: fix a bug when call_user_func_array() is used
- soap_transport_http: correct digest authentication through a proxy
- wsdl: serialize SOAP-ENC types similarly to XSD types
- xmlschema: force unprefixed type into default namespace
- xmlschema: fix serialization of definition of simple types
2004-10-01, version 0.6.8
- soap_parser: handle default namespace attributes
- soap_server: add default_utf8 field
- soap_server: support literal encoding (with RPC style)
- soap_transport_http: parse HTTP status and generate error for 300, 302-307, 400, 401-417, 501-505 (thanks for the idea Ghislain)
- soap_transport_http: follow HTTP redirection (HTTP status 301 and Location header) (thanks for the idea Ghislain)
- xmlschema: allow any attributes to be specified in an element of a complexType, e.g., abstract, default, form, minOccurs, maxOccurs, nillable (thanks Jirka Pech for the original patch)
2004-10-02, version 0.6.8
- soapclient: read/write cookies (thanks Ingo)
- soap_server: change faultcode on non-resendable faults to Client
- soap_transport_http: read/write cookies (thanks Ingo)
2004-10-05, version 0.6.8
- wsdl: add addElement method
- wsdl: support the document style in the register method
- xmlschema: parse unnamed simpleTypes, rather than ignoring them
- xmlschema: include untyped elements when parsing a complexType
- xmlschema: add addElement method
2004-10-14, version 0.6.8
- soapclient: support client certificates
- soap_parser: deserialize attributes, prefixing names with "!"
- soap_server: notify the client with HTML when WSDL is requested but not supported by service
- soap_transport_http: support client certificates
- wsdl: support defaults for elements of a complexType
- wsdl: serialize elements from complexType extension base
- wsdl: serialize data (associative array elements) as attributes according to XML Schema
- xmlschema: record extension base if present for a complexType
2004-12-15, version 0.6.8
- nusoap_base: add 2000 XML Schema (rare, but used by Akamai)
- soap_parser: avoid deserializing more common attributes that are not data
- soap_parser: be lax when HTTP specifies ISO-8859-1 (the default) and XML specifies UTF-8 (the norm)
- soap_server: account for the fact that get_class_methods returns methods in all lower case (thanks Steve Haldane)
- soap_transport_http: parse digest info that includes '=' in the data (thanks Jinsuk Kim)
- wsdl: feably handle some cases for literal serialization of form="unqualified" elements
- wsdl: don't serialize the decimal portion of a PHP double when the XML type is long
- wsdl: fix serialization of attributes for complexType that is an extension
- wsdlcache: enhance diagnostics
- xmlschema: handle untyped elements
- xmlschema: handle WSDL for SOAP Array that uses the base attribute plus a sequence of element
2005-01-22, version 0.6.8
- wsdl: allow an element in one schema to have a type from another schema
2005-01-24, version 0.6.8
- xmlschema: correctly parse nested complexType definitions
2005-02-14, version 0.6.8
- nusoap_base: fix a bug in which attributes were sometimes not serialized with a value
- nusoap_base: improve serialization of null values (thanks Dominique Stender)
- soap_parser: parse null values by handling the nil attribute (thanks Dominique Stender)
- soap_server: set character encoding for a fault to be the same as for the server (thanks Mark Scott)
- soap_server: correctly check for null value returned from method when WSDL is used (without WSDL, cannot distinguish whether NULL or void return is desired)
- soapclient: for document style, call should always return an array rooted at the response part (all bets are off when there are multiple parts)
- xmlschema: save enumeration values parsed from WSDL
2005-02-10, version 0.6.9
- soapclient: only set SOAP headers when they are specified in call params (so setHeaders still works)
2005-04-04, version 0.6.9
- soap_server: use get_class instead of is_a (thanks Thomas Noel)
- soapclient: use get_class instead of is_a (thanks Thomas Noel)
- soapclient: add setEndpoint method
- soap_transport_http: fix client certificates (thanks Doug Anarino and Eryan Eriobowo)
2005-04-29, version 0.6.9
- nusoap_base: add global variable and methods for setting debug level
- nusoap_base: use xsd:anyType instead of xsd:ur-type to serialize arrays with multiple element types (thanks Ingo Fischer)
- nusoap_base: expand entities in attributes (thanks Gaetano Giunta)
- soapclient: call parent constructor
- soapval: call parent constructor
- soap_fault: call parent constructor
- soap_parser: call parent constructor
- soap_server: assume get_class_methods always returns lower case for PHP 4.x only
- soap_server: call parent constructor
- soap_transport_http: do nothing in setEncoding if gzdeflate is not present (thanks Franck Touanen for pointing this out)
- soap_transport_http: fix check for server request for digest authentication (thanks Mark Spavin)
- soap_transport_http: call parent constructor
- wsdl: fix documentation page popup of one method after another (thanks Owen)
- wsdl: call parent constructor
- wsdl: expand entities in attributes (thanks Gaetano Giunta)
- xmlschema: call parent constructor
2005-06-03, version 0.6.9
- nusoap_base: serialize empty arrays as having elements xsd:anyType[0]
- nusoap_base: add encodingStyle parameter to serializeEnvelope
- nusoap_base: serialize xsi:type with nil values
- nusoap_base: improve debug and comments
- soap_parser: correctly parse an empty array to an empty array, not an empty string
- soap_parser: improve debug and comments
- soap_server: specify encodingStyle for envelope when WSDL is used
- soapclient: factor out new getProxyClassCode method
- soapclient: specify encodingStyle for envelope
- soapclient: improve debug and comments
- wsdl: add namespace for Apache SOAP types if a variable of such type is serialized
- wsdl: serialize nil value for nillable elements when no value is provided
- wsdl: serialize xsi:type with nil values
- wsdl: copy attributes as well as elements to an element from its complexType
- wsdl: specify encodingStyle for operations
- wsdl: improve debug and comments
- xmlschema: improve debug and comments
2005-06-03, version 0.7.0
- nusoap_base: improve debug and comments
- nusoap_base: fix version, which should have been 0.7.0 since 2005-03-04
2005-06-06, version 0.7.1
- nusoap_base: adjust numeric element names for serialization, instead of forcing them to 'soapVal'
- nusoapmime: add type=text/xml to multipart/related (thanks Emmanuel Cordonnier)
- soap_fault: fix serialization of detail
- soap_server: check required parameters for register method
- soap_server: when getallheaders is used, massage header names
- soap_server: use SOAPAction to determine operation when doc/lit service does not wrap parameters in an element with the method name (thanks Peter Hrastnik)
- soap_transport_http: correctly handle multiple HTTP/1.1 100 responses for https (thanks Jan Slabon)
- wsdl: fixed documentation for addComplexType (thanks Csintalan Ádám)
- wsdl: serialize array data when maxOccurs = 'unbounded' OR maxOccurs > 1 (thanks Dominique Schreckling)
- wsdl: when serializing a string == 'false' as a boolean, set the value to false
- wsdl: when serializing a complexType, require the PHP value supplied to be an array
2005-07-01, version 0.7.1
- nusoap_base: Allow SOAP headers to be supplied as an array like parameters
- soap_parser: de-serialize simpleContent that accompanies complexContent
- soap_server: append debug information when programmatically-defined WSDL is returned
- soap_transport_http: Add debug when an outgoing header is set
- soapclient: Allow SOAP headers to be supplied as an array like parameters
- xmlschema: serialize attributes more generally, rather than assuming they are for SOAP 1.1 Array
- wsdl: when serializing, look up types by namespace, not prefix (simple programmatic doc/lit WSDL now seems to work)
- wsdl: process namespace declarations first when parsing an element
2005-07-27, version 0.7.1
- nusoap_base: do not override supplied element name with class name when serializing an object in serialize_val
- nusoap_base: remove http://soapinterop.org/xsd (si) from namespaces array
- nusoapmime: add nusoapservermime class to implement MIME attachments on the server
- soap_fault: improve documentation
- soap_server: improve documentation
- soap_server: make consistent use of _SERVER and HTTP_SERVER_VARS
- soap_server: make all incoming HTTP header keys lower case
- soap_server: add hook functions to support subclassing for MIME attachments
- soap_transport_http: remove an unnecessary global statement
- soapclient: when creating a proxy, make $params within each function an associative array
- soapval: improve documentation
- wsdl: when serializing complexType elements, used typed serialization if there is either a type or a reference for the element
- wsdl: allow PHP objects to be serialized as SOAP structs in serializeType
- wsdl: for WSDL and XML Schema imports, don't forget to use the TCP port number (thanks Luca GIOPPO)
- wsdl: make consistent use of _SERVER and HTTP_SERVER_VARS
- xmlschema: improve documentation
2005-07-31, version 0.7.2
- nusoap_base: correctly serialize attributes in serialize_val (thanks Hidran Arias)
- soap_parser: when resolving references, do not assume that buildVal returns an array (thanks Akshell)
- soap_parser: removed decode_entities, which does not work (thanks Martin Sarsale)
- soap_server: fix a bug parsing headers from _SERVER and HTTP_SERVER_VARS (thanks Bert Catsburg)
- soap_server: parse all "headers" from HTTP_SERVER_VARS (not just HTTP_*)
- soap_server: use PHP_SELF instead of SCRIPT_NAME for WSDL endpoint
- soap_server: when generating a fault while debug_flag is true, put debug into faultdetail
- wsdl: add enumeration parameter to addSimpleType
- xmlschema: add enumeration parameter to addSimpleType
2006-02-02, version 0.7.2
- soapclient: initialize paramArrayStr to improve proxy generation
- soap_parser: handle PHP5 soapclient's incorrect transmission of WSDL-described SOAP encoded arrays.
- soap_server: don't assume _SERVER['HTTPS'] is set; try HTTP_SERVER_VARS['HTTPS'] if it is not
- soap_server: "flatten out" the parameter array to call_user_func_array (thanks André Mamitzsch)
- soap_server: make thrown exceptions conform to specs
- wsdl: use serialize_val to serialize an array when the XSD type is soapenc:Array (JBoss/Axis does this)
- wsdl: change formatting of serialized XML for the WSDL
- xmlschema: change formatting of namespaces when serializing XML for the schema
2006-04-07, version 0.7.2
- soap_server: if methodparams is not an array, call call_user_func_array with an empty array (thanks Eric Grossi)
- wsdl: distinguish parts with element specified from those with type specified by suffixing element names with ^
- wsdl: do a case-insensitive match on schema URI when looking for type
- xmlschema: only get element (not type) when name has ^ suffix
2006-05-16, version 0.7.2
- soapclient: add getHeader to get parsed SOAP Header
- soap_parser: check status when receiving Header or Body element
- soap_parser: add soapheader
- soap_server: add requestHeader with parsed SOAP Header
2006-06-15, version 0.7.2
- wsdl: fix bug in addComplexType (thanks Maarten Meijer)
- soap_transport_http: change cURL message
2007-03-19, version 0.7.2
- soapclient: declare as nusoapclient, then also subclass soapclient if SOAP extension not loaded
- soapclientmime: declare as nusoapclientmime, then also subclass soapclientmime if SOAP extension not loaded
2007-03-28, version 0.7.2
- nusoap_base: fix serialization of a soapval when its value is a soapval
- soapval: fix serialization of a soapval when its value is a soapval
- soapval: add __toString (cf. http://article.gmane.org/gmane.comp.php.nusoap.general/2776)
- nusoapclient: use lazy retrieval of WSDL instead of always getting it in the constructor
- nusoapclient: fix getProxy that was broken in last revision
- wsdl: add ability to set authorization credentials and retrieve WSDL outside of constructor
2007-04-05, version 0.7.2
- nusoapclientmime: don't rely exclusively on Content-Disposition to distinguish the root part from attachment; also check Content-Type (thanks Ben Bosman)
- nusoapclientmime: obey RFC 2045 Section 5.1 (thanks Chris Butler)
- nusoapservermime: don't rely exclusively on Content-Disposition to distinguish the root part from attachment; also check Content-Type (thanks Ben Bosman)
- nusoapservermime: obey RFC 2045 Section 5.1 (thanks Chris Butler)
- nusoap_base: remove extra whitespace from some XML elements
- nusoap_base: allow SOAP headers to be specified as an associative array (thanks Unique)
- nusoap_base: implement __toString
- nusoap_base: improve doc accuracy and consistency (thanks Martin K?gler)
- iso8601_to_timestamp: avoid problem with negative hours after calculation, etc. (thanks Guntram Trebs)
- nusoapclient: support user-settable cURL options (thanks Ciprian Popovici)
- nusoapclient: call SOAP 1.2 binding operations if no SOAP 1.1 present (there is no reason to believe this will always work!)
- nusoapclient: improve doc accuracy and consistency (thanks Martin K?gler)
- soap_server: don't try to use eval to call function when any parameter is an object
- soap_server: don't print return value within debug string; returned objects would need __toString in PHP 5.2
- soap_server: use URL scheme for WSDL access as the scheme in SOAPAction
- soap_server: strip port number from server name (some FastCGI implementations include port in server name)
- soap_transport_http: support user-settable cURL options (thanks Ciprian Popovici)
- soap_transport_http: use cURL for NTLM authentication
- soap_transport_http: make digest authentication work for GET as well as POST
- soap_transport_http: improve doc accuracy and consistency (thanks Martin K?gler)
- soapval: remove __toString
- wsdl: set operation style if necessary, but do not override one already provided (thanks Raffaele Capobianco)
- wsdl: check SOAP 1.2 binding operations if no SOAP 1.1 present
- wsdl: improve doc accuracy and consistency (thanks Martin K?gler)
- xmlschema: fix simpleType serialization
- xmlschema: improve doc accuracy and consistency (thanks Martin K?gler)
2007-04-09, version 0.7.2
- nusoapclient: set decode_utf8 when creating a proxy (thanks Dmitri Dmitrienko)
- nusoapclient: rename class to nusoap_client
- soap_fault: also provide a class named nusoap_fault
- soap_parser: also provide a class named nusoap_parser
- soap_server: also provide a class named nusoap_server
- soap_transport_http: skip HTTP responses 301 and 401 when using cURL
- soap_transport_http: don't force HTTP Connection header when using cURL
- soap_transport_http: don't set HTTP Host and Content-Length headers when using cURL
- soap_transport_http: support CURLOPT_SSLCERTPASSWD (thanks David Blanco)
- wsdl: support user-settable cURL options (thanks Ciprian Popovici)
- wsdl: serialize parameters for non-SOAP 1.1 binding operations (there is no reason to believe this will always work!)
- xmlschema: also provide a class named nusoap_xmlschema
- nusoapclientmime: rename class to nusoap_client_mime
- nusoapservermime: rename class to nusoap_server_mime
2007-04-11, version 0.7.2
- nusoap_client: enable cURL usage to be forced (thanks Giunta Gaetano)
- soap_transport_http: enable cURL proxy usage (thanks Giunta Gaetano)
- soap_transport_http: enable cURL usage to be forced (thanks Giunta Gaetano)
- soap_transport_http: use cURL's HTTP authentication options for basic, digest
- wsdl: enable cURL usage to be forced (thanks Giunta Gaetano)
2007-04-12, version 0.7.2
- nusoap_client: add debug
- nusoap_xmlschema: don't add elements of complexTypes to elements array (thanks Heiko Hund)
- soap_transport_http: set cURL connection timeout if supported
- soap_transport_http: add debug when setting cURL option
- soap_transport_http: fix digest authentication broken in previous revision
- wsdl: add debug
- wsdlcache: address some issues with non-existing cache-files and PHP Warnings which came in such cases (thanks Ingo Fischer)
- wsdlcache: change class name to nusoap_wsdlcache
2007-04-13, version 0.7.2
- wsdl: wrap parameters if unwrapped values are supplied and WSDL specifies Microsoft-style wrapping
2007-04-16, version 0.7.2
- nusoap_base: avoid warning in getDebugAsXMLComment
- nusoap_client: small debug change
- nusoap_client_mime: set responseData when the root part is found
2007-04-17, version 0.7.2
- soap_transport_http: improve detection of undefined cURL options (thanks Ingo Fischer)
2007-05-28, version 0.7.2
- soap_transport_http: support digest authentication opaque feature (cf. RFC 2617) (thanks Daniel Lacroix)
- soap_transport_http: check safe_mode and open_basedir before setting CURLOPT_FOLLOWLOCATION
- soap_transport_http: skip "HTTP/1.0 200 Connection established" header when cURL returns it (thanks Raimund Jacob)
- nusoap_client: improve handling when getProxy is called and WSDL is not being used
- nusoap_base: add comments about which specifications are used/implemented by NuSOAP
- nusoap_xmlschema: create names for unnamed types that are unique by scope within XML Schema
2007-06-11, version 0.7.2
- wsdl: wrap return value if unwrapped value is supplied and WSDL specifies Microsoft-style wrapping
2007-06-22, version 0.7.2
- nusoap_xmlschema: fix serialization of simpleType restriction (thanks Rizwan Tejpar)
2007-07-30, version 0.7.2
- nusoap_server: Per http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html R2735, rpc/literal accessor elements should not be in a namespace (thanks Kostas Kalevras)
- nusoap_client: Per http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html R2735, rpc/literal accessor elements should not be in a namespace (thanks Kostas Kalevras)
2007-10-21, version 0.7.2
- nusoap_server: Per http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html R2735, rpc/literal accessor elements should not be in a namespace (thanks Kostas Kalevras)
- nusoap_client: Per http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html R2735, rpc/literal accessor elements should not be in a namespace (thanks Kostas Kalevras)
2007-10-26, version 0.7.2
- nusoap_server: Fix munging of _SERVER variables that start with HTTP_ (thanks Thomas Wieczorek)
2007-10-30, version 0.7.2
- nusoap_xmlschema: Serialize values for elementFormDefault, attributeFormDefault
- wsdl: Improve consistency between doc/lit schema auto-wrapping and client's parsed schema
- nusoap_server: Correct bug that placed encodingType in Envelope for doc/lit
- nusoap_server: Specify elementFormDefault for schema within doc/lit wsdl
2007-10-31, version 0.7.2
- wsdl: Fix typo in parametersMatchWrapped (thanks Sam Stepanyan)
- soap_transport_http: Fix three typos in setProxy (thanks Sam Stepanyan)
- nusoap_xmlschema: Fix typo in serializeTypeDef (thanks Sam Stepanyan)
2007-11-06, version 1.0rc1
- wsdl: Improve handling of return values from doc/lit methods
- nusoap_server: Handle case when method is not in a namespace
2007-11-27, version 1.0rc1
- nusoap_server: always try to invoke service for a POST
- nusoap_server: only return Location: for WSDL at http://...
- nusoap_base: change some syntax associated with globalDebugLevel
2008-01-08, version 1.0rc1
- nusoap_server: fix a typo where = was used instead of == (thanks J. (Johan) Bosma)
2008-01-10, version 1.0rc1
- nusoap_client: handle case where request or response has no content-type header (thanks Ingo Fischer)
- nusoap_server: handle case where request or response has no content-type header (thanks Ingo Fischer)
- wsdl: change CSS for .title in webDescription (thanks Marcus Uy)
2008-01-25, version 1.0rc1
- nusoap_xmlschema: when an element is of a complexType that is an extension, copy extensionBase from the type
- nusoap_xmlschema: do not apply elementFormDefault to globally defined elements
2008-02-11, version 1.0rc1
- wsdl: internally set form of wrapped parameter elements to unqualified (so server handles correctly)
2008-03-03, version 1.0.rc1
- nusoap_xmlschema: fix extension when base type has no explicit prefix
- nusoap_xmlschema: support XML Schema include
- wsdl: improve support for sequence by serializing inherited attributes and elements first
2008-03-04, version 1.0.rc1
- wsdl: allow WSDL port name to be specified in getOperations
- nusoap_client: allow WSDL port name to be specified in ctor
2008-03-06, version 1.0rc1
- wsdl: fix some port name variable references
- nusoap_base: change comments regarding preferred mode of support
- wsdl2nusoap: initial revision
2008-03-14, version 1.0rc1
- nusoap_base: fix timezone offset in timestamp_to_iso8601 (thanks Mario Trojan)
2008-03-27, version 1.0rc1
- nusoap_server: fix bug setting encodingStyle in serialize_return (thanks Luca Gobbo)
2008-05-15, version 1.0rc1
- nusoap_parser: handle case where Header or Body tags are used within SOAP messages (thanks Sergey Zhuravlev)
2008-08-26, version 1.0rc1
- wsdl: serialize simpleContent for complexType
- wsdl: avoid serializing complexType elements with no value and minOccurs = 0 regardless of nillability
2010-04-26, version 0.9.5
- nusoap_xmlschema: replace regex function calls (ereg, eregi, split) with PCRE calls (preg_match, preg_split) (thanks Pier-Luc Duchaine)
- wsdl: replace regex function calls (ereg, eregi, split) with PCRE calls (preg_match, preg_split) (thanks Pier-Luc Duchaine)
- soap_transport_http: replace regex function calls (ereg, eregi, split) with PCRE calls (preg_match, preg_split) (thanks Pier-Luc Duchaine)
- soap_transport_http: remove call to deprecated function set_magic_quotes_runtime
- nusoap_server: replace regex function calls (ereg, eregi, split) with PCRE calls (preg_match, preg_split) (thanks Pier-Luc Duchaine)
- nusoap_server: check that value is an object before calling get_class (thanks Pier-Luc Duchaine)
- nusoap_parser: replace regex function calls (ereg, eregi, split) with PCRE calls (preg_match, preg_split) (thanks Pier-Luc Duchaine)
- nusoap_client: replace regex function calls (ereg, eregi, split) with PCRE calls (preg_match, preg_split) (thanks Pier-Luc Duchaine)
- nusoap_client: do not assign the return value of new by reference (it is deprecated) (thanks Pier-Luc Duchaine)
- nusoap_base: replace regex function calls (ereg, eregi, split) with PCRE calls (preg_match, preg_split) (thanks Pier-Luc Duchaine)
- nusoapmime: do not assign the return value of new by reference (it is deprecated)

View File

@@ -1,996 +0,0 @@
<?php
/*
$Id: class.nusoap_base.php,v 1.56 2010/04/26 20:15:08 snichol Exp $
NuSOAP - Web Services Toolkit for PHP
Copyright (c) 2002 NuSphere Corporation
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
The NuSOAP project home is:
http://sourceforge.net/projects/nusoap/
The primary support for NuSOAP is the Help forum on the project home page.
If you have any questions or comments, please email:
Dietrich Ayala
dietrich@ganx4.com
http://dietrich.ganx4.com/nusoap
NuSphere Corporation
http://www.nusphere.com
*/
/*
* Some of the standards implmented in whole or part by NuSOAP:
*
* SOAP 1.1 (http://www.w3.org/TR/2000/NOTE-SOAP-20000508/)
* WSDL 1.1 (http://www.w3.org/TR/2001/NOTE-wsdl-20010315)
* SOAP Messages With Attachments (http://www.w3.org/TR/SOAP-attachments)
* XML 1.0 (http://www.w3.org/TR/2006/REC-xml-20060816/)
* Namespaces in XML 1.0 (http://www.w3.org/TR/2006/REC-xml-names-20060816/)
* XML Schema 1.0 (http://www.w3.org/TR/xmlschema-0/)
* RFC 2045 Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies
* RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1
* RFC 2617 HTTP Authentication: Basic and Digest Access Authentication
*/
/* load classes
// necessary classes
require_once('class.soapclient.php');
require_once('class.soap_val.php');
require_once('class.soap_parser.php');
require_once('class.soap_fault.php');
// transport classes
require_once('class.soap_transport_http.php');
// optional add-on classes
require_once('class.xmlschema.php');
require_once('class.wsdl.php');
// server class
require_once('class.soap_server.php');*/
// class variable emulation
// cf. http://www.webkreator.com/php/techniques/php-static-class-variables.html
$GLOBALS['_transient']['static']['nusoap_base']['globalDebugLevel'] = 9;
/**
*
* nusoap_base
*
* @author Dietrich Ayala <dietrich@ganx4.com>
* @author Scott Nichol <snichol@users.sourceforge.net>
* @version $Id: class.nusoap_base.php,v 1.56 2010/04/26 20:15:08 snichol Exp $
* @access public
*/
class nusoap_base {
/**
* Identification for HTTP headers.
*
* @var string
* @access private
*/
var $title = 'NuSOAP';
/**
* Version for HTTP headers.
*
* @var string
* @access private
*/
var $version = '0.9.5';
/**
* CVS revision for HTTP headers.
*
* @var string
* @access private
*/
var $revision = '$Revision: 1.56 $';
/**
* Current error string (manipulated by getError/setError)
*
* @var string
* @access private
*/
var $error_str = '';
/**
* Current debug string (manipulated by debug/appendDebug/clearDebug/getDebug/getDebugAsXMLComment)
*
* @var string
* @access private
*/
var $debug_str = '';
/**
* toggles automatic encoding of special characters as entities
* (should always be true, I think)
*
* @var boolean
* @access private
*/
var $charencoding = true;
/**
* the debug level for this instance
*
* @var integer
* @access private
*/
var $debugLevel;
/**
* set schema version
*
* @var string
* @access public
*/
var $XMLSchemaVersion = 'http://www.w3.org/2001/XMLSchema';
/**
* charset encoding for outgoing messages
*
* @var string
* @access public
*/
var $soap_defencoding = 'ISO-8859-1';
//var $soap_defencoding = 'UTF-8';
/**
* namespaces in an array of prefix => uri
*
* this is "seeded" by a set of constants, but it may be altered by code
*
* @var array
* @access public
*/
var $namespaces = array(
'SOAP-ENV' => 'http://schemas.xmlsoap.org/soap/envelope/',
'xsd' => 'http://www.w3.org/2001/XMLSchema',
'xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
'SOAP-ENC' => 'http://schemas.xmlsoap.org/soap/encoding/'
);
/**
* namespaces used in the current context, e.g. during serialization
*
* @var array
* @access private
*/
var $usedNamespaces = array();
/**
* XML Schema types in an array of uri => (array of xml type => php type)
* is this legacy yet?
* no, this is used by the nusoap_xmlschema class to verify type => namespace mappings.
* @var array
* @access public
*/
var $typemap = array(
'http://www.w3.org/2001/XMLSchema' => array(
'string'=>'string','boolean'=>'boolean','float'=>'double','double'=>'double','decimal'=>'double',
'duration'=>'','dateTime'=>'string','time'=>'string','date'=>'string','gYearMonth'=>'',
'gYear'=>'','gMonthDay'=>'','gDay'=>'','gMonth'=>'','hexBinary'=>'string','base64Binary'=>'string',
// abstract "any" types
'anyType'=>'string','anySimpleType'=>'string',
// derived datatypes
'normalizedString'=>'string','token'=>'string','language'=>'','NMTOKEN'=>'','NMTOKENS'=>'','Name'=>'','NCName'=>'','ID'=>'',
'IDREF'=>'','IDREFS'=>'','ENTITY'=>'','ENTITIES'=>'','integer'=>'integer','nonPositiveInteger'=>'integer',
'negativeInteger'=>'integer','long'=>'integer','int'=>'integer','short'=>'integer','byte'=>'integer','nonNegativeInteger'=>'integer',
'unsignedLong'=>'','unsignedInt'=>'','unsignedShort'=>'','unsignedByte'=>'','positiveInteger'=>''),
'http://www.w3.org/2000/10/XMLSchema' => array(
'i4'=>'','int'=>'integer','boolean'=>'boolean','string'=>'string','double'=>'double',
'float'=>'double','dateTime'=>'string',
'timeInstant'=>'string','base64Binary'=>'string','base64'=>'string','ur-type'=>'array'),
'http://www.w3.org/1999/XMLSchema' => array(
'i4'=>'','int'=>'integer','boolean'=>'boolean','string'=>'string','double'=>'double',
'float'=>'double','dateTime'=>'string',
'timeInstant'=>'string','base64Binary'=>'string','base64'=>'string','ur-type'=>'array'),
'http://soapinterop.org/xsd' => array('SOAPStruct'=>'struct'),
'http://schemas.xmlsoap.org/soap/encoding/' => array('base64'=>'string','array'=>'array','Array'=>'array'),
'http://xml.apache.org/xml-soap' => array('Map')
);
/**
* XML entities to convert
*
* @var array
* @access public
* @deprecated
* @see expandEntities
*/
var $xmlEntities = array('quot' => '"','amp' => '&',
'lt' => '<','gt' => '>','apos' => "'");
/**
* constructor
*
* @access public
*/
function nusoap_base() {
$this->debugLevel = $GLOBALS['_transient']['static']['nusoap_base']['globalDebugLevel'];
}
/**
* gets the global debug level, which applies to future instances
*
* @return integer Debug level 0-9, where 0 turns off
* @access public
*/
function getGlobalDebugLevel() {
return $GLOBALS['_transient']['static']['nusoap_base']['globalDebugLevel'];
}
/**
* sets the global debug level, which applies to future instances
*
* @param int $level Debug level 0-9, where 0 turns off
* @access public
*/
function setGlobalDebugLevel($level) {
$GLOBALS['_transient']['static']['nusoap_base']['globalDebugLevel'] = $level;
}
/**
* gets the debug level for this instance
*
* @return int Debug level 0-9, where 0 turns off
* @access public
*/
function getDebugLevel() {
return $this->debugLevel;
}
/**
* sets the debug level for this instance
*
* @param int $level Debug level 0-9, where 0 turns off
* @access public
*/
function setDebugLevel($level) {
$this->debugLevel = $level;
}
/**
* adds debug data to the instance debug string with formatting
*
* @param string $string debug data
* @access private
*/
function debug($string){
if ($this->debugLevel > 0) {
$this->appendDebug($this->getmicrotime().' '.get_class($this).": $string\n");
}
}
/**
* adds debug data to the instance debug string without formatting
*
* @param string $string debug data
* @access public
*/
function appendDebug($string){
if ($this->debugLevel > 0) {
// it would be nice to use a memory stream here to use
// memory more efficiently
$this->debug_str .= $string;
}
}
/**
* clears the current debug data for this instance
*
* @access public
*/
function clearDebug() {
// it would be nice to use a memory stream here to use
// memory more efficiently
$this->debug_str = '';
}
/**
* gets the current debug data for this instance
*
* @return debug data
* @access public
*/
function &getDebug() {
// it would be nice to use a memory stream here to use
// memory more efficiently
return $this->debug_str;
}
/**
* gets the current debug data for this instance as an XML comment
* this may change the contents of the debug data
*
* @return debug data as an XML comment
* @access public
*/
function &getDebugAsXMLComment() {
// it would be nice to use a memory stream here to use
// memory more efficiently
while (strpos($this->debug_str, '--')) {
$this->debug_str = str_replace('--', '- -', $this->debug_str);
}
$ret = "<!--\n" . $this->debug_str . "\n-->";
return $ret;
}
/**
* expands entities, e.g. changes '<' to '&lt;'.
*
* @param string $val The string in which to expand entities.
* @access private
*/
function expandEntities($val) {
if ($this->charencoding) {
$val = str_replace('&', '&amp;', $val);
$val = str_replace("'", '&apos;', $val);
$val = str_replace('"', '&quot;', $val);
$val = str_replace('<', '&lt;', $val);
$val = str_replace('>', '&gt;', $val);
}
return $val;
}
/**
* returns error string if present
*
* @return mixed error string or false
* @access public
*/
function getError(){
if($this->error_str != ''){
return $this->error_str;
}
return false;
}
/**
* sets error string
*
* @return boolean $string error string
* @access private
*/
function setError($str){
$this->error_str = $str;
}
/**
* detect if array is a simple array or a struct (associative array)
*
* @param mixed $val The PHP array
* @return string (arraySimple|arrayStruct)
* @access private
*/
function isArraySimpleOrStruct($val) {
$keyList = array_keys($val);
foreach ($keyList as $keyListValue) {
if (!is_int($keyListValue)) {
return 'arrayStruct';
}
}
return 'arraySimple';
}
/**
* serializes PHP values in accordance w/ section 5. Type information is
* not serialized if $use == 'literal'.
*
* @param mixed $val The value to serialize
* @param string $name The name (local part) of the XML element
* @param string $type The XML schema type (local part) for the element
* @param string $name_ns The namespace for the name of the XML element
* @param string $type_ns The namespace for the type of the element
* @param array $attributes The attributes to serialize as name=>value pairs
* @param string $use The WSDL "use" (encoded|literal)
* @param boolean $soapval Whether this is called from soapval.
* @return string The serialized element, possibly with child elements
* @access public
*/
function serialize_val($val,$name=false,$type=false,$name_ns=false,$type_ns=false,$attributes=false,$use='encoded',$soapval=false) {
$this->debug("in serialize_val: name=$name, type=$type, name_ns=$name_ns, type_ns=$type_ns, use=$use, soapval=$soapval");
$this->appendDebug('value=' . $this->varDump($val));
$this->appendDebug('attributes=' . $this->varDump($attributes));
if (is_object($val) && get_class($val) == 'soapval' && (! $soapval)) {
$this->debug("serialize_val: serialize soapval");
$xml = $val->serialize($use);
$this->appendDebug($val->getDebug());
$val->clearDebug();
$this->debug("serialize_val of soapval returning $xml");
return $xml;
}
// force valid name if necessary
if (is_numeric($name)) {
$name = '__numeric_' . $name;
} elseif (! $name) {
$name = 'noname';
}
// if name has ns, add ns prefix to name
$xmlns = '';
if($name_ns){
$prefix = 'nu'.rand(1000,9999);
$name = $prefix.':'.$name;
$xmlns .= " xmlns:$prefix=\"$name_ns\"";
}
// if type is prefixed, create type prefix
if($type_ns != '' && $type_ns == $this->namespaces['xsd']){
// need to fix this. shouldn't default to xsd if no ns specified
// w/o checking against typemap
$type_prefix = 'xsd';
} elseif($type_ns){
$type_prefix = 'ns'.rand(1000,9999);
$xmlns .= " xmlns:$type_prefix=\"$type_ns\"";
}
// serialize attributes if present
$atts = '';
if($attributes){
foreach($attributes as $k => $v){
$atts .= " $k=\"".$this->expandEntities($v).'"';
}
}
// serialize null value
if (is_null($val)) {
$this->debug("serialize_val: serialize null");
if ($use == 'literal') {
// TODO: depends on minOccurs
$xml = "<$name$xmlns$atts/>";
$this->debug("serialize_val returning $xml");
return $xml;
} else {
if (isset($type) && isset($type_prefix)) {
$type_str = " xsi:type=\"$type_prefix:$type\"";
} else {
$type_str = '';
}
$xml = "<$name$xmlns$type_str$atts xsi:nil=\"true\"/>";
$this->debug("serialize_val returning $xml");
return $xml;
}
}
// serialize if an xsd built-in primitive type
if($type != '' && isset($this->typemap[$this->XMLSchemaVersion][$type])){
$this->debug("serialize_val: serialize xsd built-in primitive type");
if (is_bool($val)) {
if ($type == 'boolean') {
$val = $val ? 'true' : 'false';
} elseif (! $val) {
$val = 0;
}
} else if (is_string($val)) {
$val = $this->expandEntities($val);
}
if ($use == 'literal') {
$xml = "<$name$xmlns$atts>$val</$name>";
$this->debug("serialize_val returning $xml");
return $xml;
} else {
$xml = "<$name$xmlns xsi:type=\"xsd:$type\"$atts>$val</$name>";
$this->debug("serialize_val returning $xml");
return $xml;
}
}
// detect type and serialize
$xml = '';
switch(true) {
case (is_bool($val) || $type == 'boolean'):
$this->debug("serialize_val: serialize boolean");
if ($type == 'boolean') {
$val = $val ? 'true' : 'false';
} elseif (! $val) {
$val = 0;
}
if ($use == 'literal') {
$xml .= "<$name$xmlns$atts>$val</$name>";
} else {
$xml .= "<$name$xmlns xsi:type=\"xsd:boolean\"$atts>$val</$name>";
}
break;
case (is_int($val) || is_long($val) || $type == 'int'):
$this->debug("serialize_val: serialize int");
if ($use == 'literal') {
$xml .= "<$name$xmlns$atts>$val</$name>";
} else {
$xml .= "<$name$xmlns xsi:type=\"xsd:int\"$atts>$val</$name>";
}
break;
case (is_float($val)|| is_double($val) || $type == 'float'):
$this->debug("serialize_val: serialize float");
if ($use == 'literal') {
$xml .= "<$name$xmlns$atts>$val</$name>";
} else {
$xml .= "<$name$xmlns xsi:type=\"xsd:float\"$atts>$val</$name>";
}
break;
case (is_string($val) || $type == 'string'):
$this->debug("serialize_val: serialize string");
$val = $this->expandEntities($val);
if ($use == 'literal') {
$xml .= "<$name$xmlns$atts>$val</$name>";
} else {
$xml .= "<$name$xmlns xsi:type=\"xsd:string\"$atts>$val</$name>";
}
break;
case is_object($val):
$this->debug("serialize_val: serialize object");
if (get_class($val) == 'soapval') {
$this->debug("serialize_val: serialize soapval object");
$pXml = $val->serialize($use);
$this->appendDebug($val->getDebug());
$val->clearDebug();
} else {
if (! $name) {
$name = get_class($val);
$this->debug("In serialize_val, used class name $name as element name");
} else {
$this->debug("In serialize_val, do not override name $name for element name for class " . get_class($val));
}
foreach(get_object_vars($val) as $k => $v){
$pXml = isset($pXml) ? $pXml.$this->serialize_val($v,$k,false,false,false,false,$use) : $this->serialize_val($v,$k,false,false,false,false,$use);
}
}
if(isset($type) && isset($type_prefix)){
$type_str = " xsi:type=\"$type_prefix:$type\"";
} else {
$type_str = '';
}
if ($use == 'literal') {
$xml .= "<$name$xmlns$atts>$pXml</$name>";
} else {
$xml .= "<$name$xmlns$type_str$atts>$pXml</$name>";
}
break;
break;
case (is_array($val) || $type):
// detect if struct or array
$valueType = $this->isArraySimpleOrStruct($val);
if($valueType=='arraySimple' || preg_match('/^ArrayOf/',$type)){
$this->debug("serialize_val: serialize array");
$i = 0;
if(is_array($val) && count($val)> 0){
foreach($val as $v){
if(is_object($v) && get_class($v) == 'soapval'){
$tt_ns = $v->type_ns;
$tt = $v->type;
} elseif (is_array($v)) {
$tt = $this->isArraySimpleOrStruct($v);
} else {
$tt = gettype($v);
}
$array_types[$tt] = 1;
// TODO: for literal, the name should be $name
$xml .= $this->serialize_val($v,'item',false,false,false,false,$use);
++$i;
}
if(count($array_types) > 1){
$array_typename = 'xsd:anyType';
} elseif(isset($tt) && isset($this->typemap[$this->XMLSchemaVersion][$tt])) {
if ($tt == 'integer') {
$tt = 'int';
}
$array_typename = 'xsd:'.$tt;
} elseif(isset($tt) && $tt == 'arraySimple'){
$array_typename = 'SOAP-ENC:Array';
} elseif(isset($tt) && $tt == 'arrayStruct'){
$array_typename = 'unnamed_struct_use_soapval';
} else {
// if type is prefixed, create type prefix
if ($tt_ns != '' && $tt_ns == $this->namespaces['xsd']){
$array_typename = 'xsd:' . $tt;
} elseif ($tt_ns) {
$tt_prefix = 'ns' . rand(1000, 9999);
$array_typename = "$tt_prefix:$tt";
$xmlns .= " xmlns:$tt_prefix=\"$tt_ns\"";
} else {
$array_typename = $tt;
}
}
$array_type = $i;
if ($use == 'literal') {
$type_str = '';
} else if (isset($type) && isset($type_prefix)) {
$type_str = " xsi:type=\"$type_prefix:$type\"";
} else {
$type_str = " xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"".$array_typename."[$array_type]\"";
}
// empty array
} else {
if ($use == 'literal') {
$type_str = '';
} else if (isset($type) && isset($type_prefix)) {
$type_str = " xsi:type=\"$type_prefix:$type\"";
} else {
$type_str = " xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"xsd:anyType[0]\"";
}
}
// TODO: for array in literal, there is no wrapper here
$xml = "<$name$xmlns$type_str$atts>".$xml."</$name>";
} else {
// got a struct
$this->debug("serialize_val: serialize struct");
if(isset($type) && isset($type_prefix)){
$type_str = " xsi:type=\"$type_prefix:$type\"";
} else {
$type_str = '';
}
if ($use == 'literal') {
$xml .= "<$name$xmlns$atts>";
} else {
$xml .= "<$name$xmlns$type_str$atts>";
}
foreach($val as $k => $v){
// Apache Map
if ($type == 'Map' && $type_ns == 'http://xml.apache.org/xml-soap') {
$xml .= '<item>';
$xml .= $this->serialize_val($k,'key',false,false,false,false,$use);
$xml .= $this->serialize_val($v,'value',false,false,false,false,$use);
$xml .= '</item>';
} else {
$xml .= $this->serialize_val($v,$k,false,false,false,false,$use);
}
}
$xml .= "</$name>";
}
break;
default:
$this->debug("serialize_val: serialize unknown");
$xml .= 'not detected, got '.gettype($val).' for '.$val;
break;
}
$this->debug("serialize_val returning $xml");
return $xml;
}
/**
* serializes a message
*
* @param string $body the XML of the SOAP body
* @param mixed $headers optional string of XML with SOAP header content, or array of soapval objects for SOAP headers, or associative array
* @param array $namespaces optional the namespaces used in generating the body and headers
* @param string $style optional (rpc|document)
* @param string $use optional (encoded|literal)
* @param string $encodingStyle optional (usually 'http://schemas.xmlsoap.org/soap/encoding/' for encoded)
* @return string the message
* @access public
*/
function serializeEnvelope($body,$headers=false,$namespaces=array(),$style='rpc',$use='encoded',$encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'){
// TODO: add an option to automatically run utf8_encode on $body and $headers
// if $this->soap_defencoding is UTF-8. Not doing this automatically allows
// one to send arbitrary UTF-8 characters, not just characters that map to ISO-8859-1
$this->debug("In serializeEnvelope length=" . strlen($body) . " body (max 1000 characters)=" . substr($body, 0, 1000) . " style=$style use=$use encodingStyle=$encodingStyle");
$this->debug("headers:");
$this->appendDebug($this->varDump($headers));
$this->debug("namespaces:");
$this->appendDebug($this->varDump($namespaces));
// serialize namespaces
$ns_string = '';
foreach(array_merge($this->namespaces,$namespaces) as $k => $v){
$ns_string .= " xmlns:$k=\"$v\"";
}
if($encodingStyle) {
$ns_string = " SOAP-ENV:encodingStyle=\"$encodingStyle\"$ns_string";
}
// serialize headers
if($headers){
if (is_array($headers)) {
$xml = '';
foreach ($headers as $k => $v) {
if (is_object($v) && get_class($v) == 'soapval') {
$xml .= $this->serialize_val($v, false, false, false, false, false, $use);
} else {
$xml .= $this->serialize_val($v, $k, false, false, false, false, $use);
}
}
$headers = $xml;
$this->debug("In serializeEnvelope, serialized array of headers to $headers");
}
$headers = "<SOAP-ENV:Header>".$headers."</SOAP-ENV:Header>";
}
// serialize envelope
return
'<?xml version="1.0" encoding="'.$this->soap_defencoding .'"?'.">".
'<SOAP-ENV:Envelope'.$ns_string.">".
$headers.
"<SOAP-ENV:Body>".
$body.
"</SOAP-ENV:Body>".
"</SOAP-ENV:Envelope>";
}
/**
* formats a string to be inserted into an HTML stream
*
* @param string $str The string to format
* @return string The formatted string
* @access public
* @deprecated
*/
function formatDump($str){
$str = htmlspecialchars($str);
return nl2br($str);
}
/**
* contracts (changes namespace to prefix) a qualified name
*
* @param string $qname qname
* @return string contracted qname
* @access private
*/
function contractQname($qname){
// get element namespace
//$this->xdebug("Contract $qname");
if (strrpos($qname, ':')) {
// get unqualified name
$name = substr($qname, strrpos($qname, ':') + 1);
// get ns
$ns = substr($qname, 0, strrpos($qname, ':'));
$p = $this->getPrefixFromNamespace($ns);
if ($p) {
return $p . ':' . $name;
}
return $qname;
} else {
return $qname;
}
}
/**
* expands (changes prefix to namespace) a qualified name
*
* @param string $qname qname
* @return string expanded qname
* @access private
*/
function expandQname($qname){
// get element prefix
if(strpos($qname,':') && !preg_match('/^http:\/\//',$qname)){
// get unqualified name
$name = substr(strstr($qname,':'),1);
// get ns prefix
$prefix = substr($qname,0,strpos($qname,':'));
if(isset($this->namespaces[$prefix])){
return $this->namespaces[$prefix].':'.$name;
} else {
return $qname;
}
} else {
return $qname;
}
}
/**
* returns the local part of a prefixed string
* returns the original string, if not prefixed
*
* @param string $str The prefixed string
* @return string The local part
* @access public
*/
function getLocalPart($str){
if($sstr = strrchr($str,':')){
// get unqualified name
return substr( $sstr, 1 );
} else {
return $str;
}
}
/**
* returns the prefix part of a prefixed string
* returns false, if not prefixed
*
* @param string $str The prefixed string
* @return mixed The prefix or false if there is no prefix
* @access public
*/
function getPrefix($str){
if($pos = strrpos($str,':')){
// get prefix
return substr($str,0,$pos);
}
return false;
}
/**
* pass it a prefix, it returns a namespace
*
* @param string $prefix The prefix
* @return mixed The namespace, false if no namespace has the specified prefix
* @access public
*/
function getNamespaceFromPrefix($prefix){
if (isset($this->namespaces[$prefix])) {
return $this->namespaces[$prefix];
}
//$this->setError("No namespace registered for prefix '$prefix'");
return false;
}
/**
* returns the prefix for a given namespace (or prefix)
* or false if no prefixes registered for the given namespace
*
* @param string $ns The namespace
* @return mixed The prefix, false if the namespace has no prefixes
* @access public
*/
function getPrefixFromNamespace($ns) {
foreach ($this->namespaces as $p => $n) {
if ($ns == $n || $ns == $p) {
$this->usedNamespaces[$p] = $n;
return $p;
}
}
return false;
}
/**
* returns the time in ODBC canonical form with microseconds
*
* @return string The time in ODBC canonical form with microseconds
* @access public
*/
function getmicrotime() {
if (function_exists('gettimeofday')) {
$tod = gettimeofday();
$sec = $tod['sec'];
$usec = $tod['usec'];
} else {
$sec = time();
$usec = 0;
}
return strftime('%Y-%m-%d %H:%M:%S', $sec) . '.' . sprintf('%06d', $usec);
}
/**
* Returns a string with the output of var_dump
*
* @param mixed $data The variable to var_dump
* @return string The output of var_dump
* @access public
*/
function varDump($data) {
ob_start();
var_dump($data);
$ret_val = ob_get_contents();
ob_end_clean();
return $ret_val;
}
/**
* represents the object as a string
*
* @return string
* @access public
*/
function __toString() {
return $this->varDump($this);
}
}
// XML Schema Datatype Helper Functions
//xsd:dateTime helpers
/**
* convert unix timestamp to ISO 8601 compliant date string
*
* @param int $timestamp Unix time stamp
* @param boolean $utc Whether the time stamp is UTC or local
* @return mixed ISO 8601 date string or false
* @access public
*/
function timestamp_to_iso8601($timestamp,$utc=true){
$datestr = date('Y-m-d\TH:i:sO',$timestamp);
$pos = strrpos($datestr, "+");
if ($pos === FALSE) {
$pos = strrpos($datestr, "-");
}
if ($pos !== FALSE) {
if (strlen($datestr) == $pos + 5) {
$datestr = substr($datestr, 0, $pos + 3) . ':' . substr($datestr, -2);
}
}
if($utc){
$pattern = '/'.
'([0-9]{4})-'. // centuries & years CCYY-
'([0-9]{2})-'. // months MM-
'([0-9]{2})'. // days DD
'T'. // separator T
'([0-9]{2}):'. // hours hh:
'([0-9]{2}):'. // minutes mm:
'([0-9]{2})(\.[0-9]*)?'. // seconds ss.ss...
'(Z|[+\-][0-9]{2}:?[0-9]{2})?'. // Z to indicate UTC, -/+HH:MM:SS.SS... for local tz's
'/';
if(preg_match($pattern,$datestr,$regs)){
return sprintf('%04d-%02d-%02dT%02d:%02d:%02dZ',$regs[1],$regs[2],$regs[3],$regs[4],$regs[5],$regs[6]);
}
return false;
} else {
return $datestr;
}
}
/**
* convert ISO 8601 compliant date string to unix timestamp
*
* @param string $datestr ISO 8601 compliant date string
* @return mixed Unix timestamp (int) or false
* @access public
*/
function iso8601_to_timestamp($datestr){
$pattern = '/'.
'([0-9]{4})-'. // centuries & years CCYY-
'([0-9]{2})-'. // months MM-
'([0-9]{2})'. // days DD
'T'. // separator T
'([0-9]{2}):'. // hours hh:
'([0-9]{2}):'. // minutes mm:
'([0-9]{2})(\.[0-9]+)?'. // seconds ss.ss...
'(Z|[+\-][0-9]{2}:?[0-9]{2})?'. // Z to indicate UTC, -/+HH:MM:SS.SS... for local tz's
'/';
if(preg_match($pattern,$datestr,$regs)){
// not utc
if($regs[8] != 'Z'){
$op = substr($regs[8],0,1);
$h = substr($regs[8],1,2);
$m = substr($regs[8],strlen($regs[8])-2,2);
if($op == '-'){
$regs[4] = $regs[4] + $h;
$regs[5] = $regs[5] + $m;
} elseif($op == '+'){
$regs[4] = $regs[4] - $h;
$regs[5] = $regs[5] - $m;
}
}
return gmmktime($regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1]);
// return strtotime("$regs[1]-$regs[2]-$regs[3] $regs[4]:$regs[5]:$regs[6]Z");
} else {
return false;
}
}
/**
* sleeps some number of microseconds
*
* @param string $usec the number of microseconds to sleep
* @access public
* @deprecated
*/
function usleepWindows($usec)
{
$start = gettimeofday();
do
{
$stop = gettimeofday();
$timePassed = 1000000 * ($stop['sec'] - $start['sec'])
+ $stop['usec'] - $start['usec'];
}
while ($timePassed < $usec);
}
?>

View File

@@ -1,90 +0,0 @@
<?php
/**
* Contains information for a SOAP fault.
* Mainly used for returning faults from deployed functions
* in a server instance.
* @author Dietrich Ayala <dietrich@ganx4.com>
* @version $Id: class.soap_fault.php,v 1.14 2007/04/11 15:49:47 snichol Exp $
* @access public
*/
class nusoap_fault extends nusoap_base {
/**
* The fault code (client|server)
* @var string
* @access private
*/
var $faultcode;
/**
* The fault actor
* @var string
* @access private
*/
var $faultactor;
/**
* The fault string, a description of the fault
* @var string
* @access private
*/
var $faultstring;
/**
* The fault detail, typically a string or array of string
* @var mixed
* @access private
*/
var $faultdetail;
/**
* constructor
*
* @param string $faultcode (SOAP-ENV:Client | SOAP-ENV:Server)
* @param string $faultactor only used when msg routed between multiple actors
* @param string $faultstring human readable error message
* @param mixed $faultdetail detail, typically a string or array of string
*/
function nusoap_fault($faultcode,$faultactor='',$faultstring='',$faultdetail=''){
parent::nusoap_base();
$this->faultcode = $faultcode;
$this->faultactor = $faultactor;
$this->faultstring = $faultstring;
$this->faultdetail = $faultdetail;
}
/**
* serialize a fault
*
* @return string The serialization of the fault instance.
* @access public
*/
function serialize(){
$ns_string = '';
foreach($this->namespaces as $k => $v){
$ns_string .= "\n xmlns:$k=\"$v\"";
}
$return_msg =
'<?xml version="1.0" encoding="'.$this->soap_defencoding.'"?>'.
'<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"'.$ns_string.">\n".
'<SOAP-ENV:Body>'.
'<SOAP-ENV:Fault>'.
$this->serialize_val($this->faultcode, 'faultcode').
$this->serialize_val($this->faultactor, 'faultactor').
$this->serialize_val($this->faultstring, 'faultstring').
$this->serialize_val($this->faultdetail, 'detail').
'</SOAP-ENV:Fault>'.
'</SOAP-ENV:Body>'.
'</SOAP-ENV:Envelope>';
return $return_msg;
}
}
/**
* Backward compatibility
*/
class soap_fault extends nusoap_fault {
}
?>

View File

@@ -1,643 +0,0 @@
<?php
/**
*
* nusoap_parser class parses SOAP XML messages into native PHP values
*
* @author Dietrich Ayala <dietrich@ganx4.com>
* @author Scott Nichol <snichol@users.sourceforge.net>
* @version $Id: class.soap_parser.php,v 1.42 2010/04/26 20:15:08 snichol Exp $
* @access public
*/
class nusoap_parser extends nusoap_base {
var $xml = '';
var $xml_encoding = '';
var $method = '';
var $root_struct = '';
var $root_struct_name = '';
var $root_struct_namespace = '';
var $root_header = '';
var $document = ''; // incoming SOAP body (text)
// determines where in the message we are (envelope,header,body,method)
var $status = '';
var $position = 0;
var $depth = 0;
var $default_namespace = '';
var $namespaces = array();
var $message = array();
var $parent = '';
var $fault = false;
var $fault_code = '';
var $fault_str = '';
var $fault_detail = '';
var $depth_array = array();
var $debug_flag = true;
var $soapresponse = NULL; // parsed SOAP Body
var $soapheader = NULL; // parsed SOAP Header
var $responseHeaders = ''; // incoming SOAP headers (text)
var $body_position = 0;
// for multiref parsing:
// array of id => pos
var $ids = array();
// array of id => hrefs => pos
var $multirefs = array();
// toggle for auto-decoding element content
var $decode_utf8 = true;
/**
* constructor that actually does the parsing
*
* @param string $xml SOAP message
* @param string $encoding character encoding scheme of message
* @param string $method method for which XML is parsed (unused?)
* @param string $decode_utf8 whether to decode UTF-8 to ISO-8859-1
* @access public
*/
function nusoap_parser($xml,$encoding='UTF-8',$method='',$decode_utf8=true){
parent::nusoap_base();
$this->xml = $xml;
$this->xml_encoding = $encoding;
$this->method = $method;
$this->decode_utf8 = $decode_utf8;
// Check whether content has been read.
if(!empty($xml)){
// Check XML encoding
$pos_xml = strpos($xml, '<?xml');
if ($pos_xml !== FALSE) {
$xml_decl = substr($xml, $pos_xml, strpos($xml, '?>', $pos_xml + 2) - $pos_xml + 1);
if (preg_match("/encoding=[\"']([^\"']*)[\"']/", $xml_decl, $res)) {
$xml_encoding = $res[1];
if (strtoupper($xml_encoding) != $encoding) {
$err = "Charset from HTTP Content-Type '" . $encoding . "' does not match encoding from XML declaration '" . $xml_encoding . "'";
$this->debug($err);
if ($encoding != 'ISO-8859-1' || strtoupper($xml_encoding) != 'UTF-8') {
$this->setError($err);
return;
}
// when HTTP says ISO-8859-1 (the default) and XML says UTF-8 (the typical), assume the other endpoint is just sloppy and proceed
} else {
$this->debug('Charset from HTTP Content-Type matches encoding from XML declaration');
}
} else {
$this->debug('No encoding specified in XML declaration');
}
} else {
$this->debug('No XML declaration');
}
$this->debug('Entering nusoap_parser(), length='.strlen($xml).', encoding='.$encoding);
// Create an XML parser - why not xml_parser_create_ns?
$this->parser = xml_parser_create($this->xml_encoding);
// Set the options for parsing the XML data.
//xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($this->parser, XML_OPTION_TARGET_ENCODING, $this->xml_encoding);
// Set the object for the parser.
xml_set_object($this->parser, $this);
// Set the element handlers for the parser.
xml_set_element_handler($this->parser, 'start_element','end_element');
xml_set_character_data_handler($this->parser,'character_data');
// Parse the XML file.
if(!xml_parse($this->parser,$xml,true)){
// Display an error message.
$err = sprintf('XML error parsing SOAP payload on line %d: %s',
xml_get_current_line_number($this->parser),
xml_error_string(xml_get_error_code($this->parser)));
$this->debug($err);
$this->debug("XML payload:\n" . $xml);
$this->setError($err);
} else {
$this->debug('in nusoap_parser ctor, message:');
$this->appendDebug($this->varDump($this->message));
$this->debug('parsed successfully, found root struct: '.$this->root_struct.' of name '.$this->root_struct_name);
// get final value
$this->soapresponse = $this->message[$this->root_struct]['result'];
// get header value
if($this->root_header != '' && isset($this->message[$this->root_header]['result'])){
$this->soapheader = $this->message[$this->root_header]['result'];
}
// resolve hrefs/ids
if(sizeof($this->multirefs) > 0){
foreach($this->multirefs as $id => $hrefs){
$this->debug('resolving multirefs for id: '.$id);
$idVal = $this->buildVal($this->ids[$id]);
if (is_array($idVal) && isset($idVal['!id'])) {
unset($idVal['!id']);
}
foreach($hrefs as $refPos => $ref){
$this->debug('resolving href at pos '.$refPos);
$this->multirefs[$id][$refPos] = $idVal;
}
}
}
}
xml_parser_free($this->parser);
} else {
$this->debug('xml was empty, didn\'t parse!');
$this->setError('xml was empty, didn\'t parse!');
}
}
/**
* start-element handler
*
* @param resource $parser XML parser object
* @param string $name element name
* @param array $attrs associative array of attributes
* @access private
*/
function start_element($parser, $name, $attrs) {
// position in a total number of elements, starting from 0
// update class level pos
$pos = $this->position++;
// and set mine
$this->message[$pos] = array('pos' => $pos,'children'=>'','cdata'=>'');
// depth = how many levels removed from root?
// set mine as current global depth and increment global depth value
$this->message[$pos]['depth'] = $this->depth++;
// else add self as child to whoever the current parent is
if($pos != 0){
$this->message[$this->parent]['children'] .= '|'.$pos;
}
// set my parent
$this->message[$pos]['parent'] = $this->parent;
// set self as current parent
$this->parent = $pos;
// set self as current value for this depth
$this->depth_array[$this->depth] = $pos;
// get element prefix
if(strpos($name,':')){
// get ns prefix
$prefix = substr($name,0,strpos($name,':'));
// get unqualified name
$name = substr(strstr($name,':'),1);
}
// set status
if ($name == 'Envelope' && $this->status == '') {
$this->status = 'envelope';
} elseif ($name == 'Header' && $this->status == 'envelope') {
$this->root_header = $pos;
$this->status = 'header';
} elseif ($name == 'Body' && $this->status == 'envelope'){
$this->status = 'body';
$this->body_position = $pos;
// set method
} elseif($this->status == 'body' && $pos == ($this->body_position+1)) {
$this->status = 'method';
$this->root_struct_name = $name;
$this->root_struct = $pos;
$this->message[$pos]['type'] = 'struct';
$this->debug("found root struct $this->root_struct_name, pos $this->root_struct");
}
// set my status
$this->message[$pos]['status'] = $this->status;
// set name
$this->message[$pos]['name'] = htmlspecialchars($name);
// set attrs
$this->message[$pos]['attrs'] = $attrs;
// loop through atts, logging ns and type declarations
$attstr = '';
foreach($attrs as $key => $value){
$key_prefix = $this->getPrefix($key);
$key_localpart = $this->getLocalPart($key);
// if ns declarations, add to class level array of valid namespaces
if($key_prefix == 'xmlns'){
if(preg_match('/^http:\/\/www.w3.org\/[0-9]{4}\/XMLSchema$/',$value)){
$this->XMLSchemaVersion = $value;
$this->namespaces['xsd'] = $this->XMLSchemaVersion;
$this->namespaces['xsi'] = $this->XMLSchemaVersion.'-instance';
}
$this->namespaces[$key_localpart] = $value;
// set method namespace
if($name == $this->root_struct_name){
$this->methodNamespace = $value;
}
// if it's a type declaration, set type
} elseif($key_localpart == 'type'){
if (isset($this->message[$pos]['type']) && $this->message[$pos]['type'] == 'array') {
// do nothing: already processed arrayType
} else {
$value_prefix = $this->getPrefix($value);
$value_localpart = $this->getLocalPart($value);
$this->message[$pos]['type'] = $value_localpart;
$this->message[$pos]['typePrefix'] = $value_prefix;
if(isset($this->namespaces[$value_prefix])){
$this->message[$pos]['type_namespace'] = $this->namespaces[$value_prefix];
} else if(isset($attrs['xmlns:'.$value_prefix])) {
$this->message[$pos]['type_namespace'] = $attrs['xmlns:'.$value_prefix];
}
// should do something here with the namespace of specified type?
}
} elseif($key_localpart == 'arrayType'){
$this->message[$pos]['type'] = 'array';
/* do arrayType ereg here
[1] arrayTypeValue ::= atype asize
[2] atype ::= QName rank*
[3] rank ::= '[' (',')* ']'
[4] asize ::= '[' length~ ']'
[5] length ::= nextDimension* Digit+
[6] nextDimension ::= Digit+ ','
*/
$expr = '/([A-Za-z0-9_]+):([A-Za-z]+[A-Za-z0-9_]+)\[([0-9]+),?([0-9]*)\]/';
if(preg_match($expr,$value,$regs)){
$this->message[$pos]['typePrefix'] = $regs[1];
$this->message[$pos]['arrayTypePrefix'] = $regs[1];
if (isset($this->namespaces[$regs[1]])) {
$this->message[$pos]['arrayTypeNamespace'] = $this->namespaces[$regs[1]];
} else if (isset($attrs['xmlns:'.$regs[1]])) {
$this->message[$pos]['arrayTypeNamespace'] = $attrs['xmlns:'.$regs[1]];
}
$this->message[$pos]['arrayType'] = $regs[2];
$this->message[$pos]['arraySize'] = $regs[3];
$this->message[$pos]['arrayCols'] = $regs[4];
}
// specifies nil value (or not)
} elseif ($key_localpart == 'nil'){
$this->message[$pos]['nil'] = ($value == 'true' || $value == '1');
// some other attribute
} elseif ($key != 'href' && $key != 'xmlns' && $key_localpart != 'encodingStyle' && $key_localpart != 'root') {
$this->message[$pos]['xattrs']['!' . $key] = $value;
}
if ($key == 'xmlns') {
$this->default_namespace = $value;
}
// log id
if($key == 'id'){
$this->ids[$value] = $pos;
}
// root
if($key_localpart == 'root' && $value == 1){
$this->status = 'method';
$this->root_struct_name = $name;
$this->root_struct = $pos;
$this->debug("found root struct $this->root_struct_name, pos $pos");
}
// for doclit
$attstr .= " $key=\"$value\"";
}
// get namespace - must be done after namespace atts are processed
if(isset($prefix)){
$this->message[$pos]['namespace'] = $this->namespaces[$prefix];
$this->default_namespace = $this->namespaces[$prefix];
} else {
$this->message[$pos]['namespace'] = $this->default_namespace;
}
if($this->status == 'header'){
if ($this->root_header != $pos) {
$this->responseHeaders .= "<" . (isset($prefix) ? $prefix . ':' : '') . "$name$attstr>";
}
} elseif($this->root_struct_name != ''){
$this->document .= "<" . (isset($prefix) ? $prefix . ':' : '') . "$name$attstr>";
}
}
/**
* end-element handler
*
* @param resource $parser XML parser object
* @param string $name element name
* @access private
*/
function end_element($parser, $name) {
// position of current element is equal to the last value left in depth_array for my depth
$pos = $this->depth_array[$this->depth--];
// get element prefix
if(strpos($name,':')){
// get ns prefix
$prefix = substr($name,0,strpos($name,':'));
// get unqualified name
$name = substr(strstr($name,':'),1);
}
// build to native type
if(isset($this->body_position) && $pos > $this->body_position){
// deal w/ multirefs
if(isset($this->message[$pos]['attrs']['href'])){
// get id
$id = substr($this->message[$pos]['attrs']['href'],1);
// add placeholder to href array
$this->multirefs[$id][$pos] = 'placeholder';
// add set a reference to it as the result value
$this->message[$pos]['result'] =& $this->multirefs[$id][$pos];
// build complexType values
} elseif($this->message[$pos]['children'] != ''){
// if result has already been generated (struct/array)
if(!isset($this->message[$pos]['result'])){
$this->message[$pos]['result'] = $this->buildVal($pos);
}
// build complexType values of attributes and possibly simpleContent
} elseif (isset($this->message[$pos]['xattrs'])) {
if (isset($this->message[$pos]['nil']) && $this->message[$pos]['nil']) {
$this->message[$pos]['xattrs']['!'] = null;
} elseif (isset($this->message[$pos]['cdata']) && trim($this->message[$pos]['cdata']) != '') {
if (isset($this->message[$pos]['type'])) {
$this->message[$pos]['xattrs']['!'] = $this->decodeSimple($this->message[$pos]['cdata'], $this->message[$pos]['type'], isset($this->message[$pos]['type_namespace']) ? $this->message[$pos]['type_namespace'] : '');
} else {
$parent = $this->message[$pos]['parent'];
if (isset($this->message[$parent]['type']) && ($this->message[$parent]['type'] == 'array') && isset($this->message[$parent]['arrayType'])) {
$this->message[$pos]['xattrs']['!'] = $this->decodeSimple($this->message[$pos]['cdata'], $this->message[$parent]['arrayType'], isset($this->message[$parent]['arrayTypeNamespace']) ? $this->message[$parent]['arrayTypeNamespace'] : '');
} else {
$this->message[$pos]['xattrs']['!'] = $this->message[$pos]['cdata'];
}
}
}
$this->message[$pos]['result'] = $this->message[$pos]['xattrs'];
// set value of simpleType (or nil complexType)
} else {
//$this->debug('adding data for scalar value '.$this->message[$pos]['name'].' of value '.$this->message[$pos]['cdata']);
if (isset($this->message[$pos]['nil']) && $this->message[$pos]['nil']) {
$this->message[$pos]['xattrs']['!'] = null;
} elseif (isset($this->message[$pos]['type'])) {
$this->message[$pos]['result'] = $this->decodeSimple($this->message[$pos]['cdata'], $this->message[$pos]['type'], isset($this->message[$pos]['type_namespace']) ? $this->message[$pos]['type_namespace'] : '');
} else {
$parent = $this->message[$pos]['parent'];
if (isset($this->message[$parent]['type']) && ($this->message[$parent]['type'] == 'array') && isset($this->message[$parent]['arrayType'])) {
$this->message[$pos]['result'] = $this->decodeSimple($this->message[$pos]['cdata'], $this->message[$parent]['arrayType'], isset($this->message[$parent]['arrayTypeNamespace']) ? $this->message[$parent]['arrayTypeNamespace'] : '');
} else {
$this->message[$pos]['result'] = $this->message[$pos]['cdata'];
}
}
/* add value to parent's result, if parent is struct/array
$parent = $this->message[$pos]['parent'];
if($this->message[$parent]['type'] != 'map'){
if(strtolower($this->message[$parent]['type']) == 'array'){
$this->message[$parent]['result'][] = $this->message[$pos]['result'];
} else {
$this->message[$parent]['result'][$this->message[$pos]['name']] = $this->message[$pos]['result'];
}
}
*/
}
}
// for doclit
if($this->status == 'header'){
if ($this->root_header != $pos) {
$this->responseHeaders .= "</" . (isset($prefix) ? $prefix . ':' : '') . "$name>";
}
} elseif($pos >= $this->root_struct){
$this->document .= "</" . (isset($prefix) ? $prefix . ':' : '') . "$name>";
}
// switch status
if ($pos == $this->root_struct){
$this->status = 'body';
$this->root_struct_namespace = $this->message[$pos]['namespace'];
} elseif ($pos == $this->root_header) {
$this->status = 'envelope';
} elseif ($name == 'Body' && $this->status == 'body') {
$this->status = 'envelope';
} elseif ($name == 'Header' && $this->status == 'header') { // will never happen
$this->status = 'envelope';
} elseif ($name == 'Envelope' && $this->status == 'envelope') {
$this->status = '';
}
// set parent back to my parent
$this->parent = $this->message[$pos]['parent'];
}
/**
* element content handler
*
* @param resource $parser XML parser object
* @param string $data element content
* @access private
*/
function character_data($parser, $data){
$pos = $this->depth_array[$this->depth];
if ($this->xml_encoding=='UTF-8'){
// TODO: add an option to disable this for folks who want
// raw UTF-8 that, e.g., might not map to iso-8859-1
// TODO: this can also be handled with xml_parser_set_option($this->parser, XML_OPTION_TARGET_ENCODING, "ISO-8859-1");
if($this->decode_utf8){
$data = utf8_decode($data);
}
}
$this->message[$pos]['cdata'] .= $data;
// for doclit
if($this->status == 'header'){
$this->responseHeaders .= $data;
} else {
$this->document .= $data;
}
}
/**
* get the parsed message (SOAP Body)
*
* @return mixed
* @access public
* @deprecated use get_soapbody instead
*/
function get_response(){
return $this->soapresponse;
}
/**
* get the parsed SOAP Body (NULL if there was none)
*
* @return mixed
* @access public
*/
function get_soapbody(){
return $this->soapresponse;
}
/**
* get the parsed SOAP Header (NULL if there was none)
*
* @return mixed
* @access public
*/
function get_soapheader(){
return $this->soapheader;
}
/**
* get the unparsed SOAP Header
*
* @return string XML or empty if no Header
* @access public
*/
function getHeaders(){
return $this->responseHeaders;
}
/**
* decodes simple types into PHP variables
*
* @param string $value value to decode
* @param string $type XML type to decode
* @param string $typens XML type namespace to decode
* @return mixed PHP value
* @access private
*/
function decodeSimple($value, $type, $typens) {
// TODO: use the namespace!
if ((!isset($type)) || $type == 'string' || $type == 'long' || $type == 'unsignedLong') {
return (string) $value;
}
if ($type == 'int' || $type == 'integer' || $type == 'short' || $type == 'byte') {
return (int) $value;
}
if ($type == 'float' || $type == 'double' || $type == 'decimal') {
return (double) $value;
}
if ($type == 'boolean') {
if (strtolower($value) == 'false' || strtolower($value) == 'f') {
return false;
}
return (boolean) $value;
}
if ($type == 'base64' || $type == 'base64Binary') {
$this->debug('Decode base64 value');
return base64_decode($value);
}
// obscure numeric types
if ($type == 'nonPositiveInteger' || $type == 'negativeInteger'
|| $type == 'nonNegativeInteger' || $type == 'positiveInteger'
|| $type == 'unsignedInt'
|| $type == 'unsignedShort' || $type == 'unsignedByte') {
return (int) $value;
}
// bogus: parser treats array with no elements as a simple type
if ($type == 'array') {
return array();
}
// everything else
return (string) $value;
}
/**
* builds response structures for compound values (arrays/structs)
* and scalars
*
* @param integer $pos position in node tree
* @return mixed PHP value
* @access private
*/
function buildVal($pos){
if(!isset($this->message[$pos]['type'])){
$this->message[$pos]['type'] = '';
}
$this->debug('in buildVal() for '.$this->message[$pos]['name']."(pos $pos) of type ".$this->message[$pos]['type']);
// if there are children...
if($this->message[$pos]['children'] != ''){
$this->debug('in buildVal, there are children');
$children = explode('|',$this->message[$pos]['children']);
array_shift($children); // knock off empty
// md array
if(isset($this->message[$pos]['arrayCols']) && $this->message[$pos]['arrayCols'] != ''){
$r=0; // rowcount
$c=0; // colcount
foreach($children as $child_pos){
$this->debug("in buildVal, got an MD array element: $r, $c");
$params[$r][] = $this->message[$child_pos]['result'];
$c++;
if($c == $this->message[$pos]['arrayCols']){
$c = 0;
$r++;
}
}
// array
} elseif($this->message[$pos]['type'] == 'array' || $this->message[$pos]['type'] == 'Array'){
$this->debug('in buildVal, adding array '.$this->message[$pos]['name']);
foreach($children as $child_pos){
$params[] = &$this->message[$child_pos]['result'];
}
// apache Map type: java hashtable
} elseif($this->message[$pos]['type'] == 'Map' && $this->message[$pos]['type_namespace'] == 'http://xml.apache.org/xml-soap'){
$this->debug('in buildVal, Java Map '.$this->message[$pos]['name']);
foreach($children as $child_pos){
$kv = explode("|",$this->message[$child_pos]['children']);
$params[$this->message[$kv[1]]['result']] = &$this->message[$kv[2]]['result'];
}
// generic compound type
//} elseif($this->message[$pos]['type'] == 'SOAPStruct' || $this->message[$pos]['type'] == 'struct') {
} else {
// Apache Vector type: treat as an array
$this->debug('in buildVal, adding Java Vector or generic compound type '.$this->message[$pos]['name']);
if ($this->message[$pos]['type'] == 'Vector' && $this->message[$pos]['type_namespace'] == 'http://xml.apache.org/xml-soap') {
$notstruct = 1;
} else {
$notstruct = 0;
}
//
foreach($children as $child_pos){
if($notstruct){
$params[] = &$this->message[$child_pos]['result'];
} else {
if (isset($params[$this->message[$child_pos]['name']])) {
// de-serialize repeated element name into an array
if ((!is_array($params[$this->message[$child_pos]['name']])) || (!isset($params[$this->message[$child_pos]['name']][0]))) {
$params[$this->message[$child_pos]['name']] = array($params[$this->message[$child_pos]['name']]);
}
$params[$this->message[$child_pos]['name']][] = &$this->message[$child_pos]['result'];
} else {
$params[$this->message[$child_pos]['name']] = &$this->message[$child_pos]['result'];
}
}
}
}
if (isset($this->message[$pos]['xattrs'])) {
$this->debug('in buildVal, handling attributes');
foreach ($this->message[$pos]['xattrs'] as $n => $v) {
$params[$n] = $v;
}
}
// handle simpleContent
if (isset($this->message[$pos]['cdata']) && trim($this->message[$pos]['cdata']) != '') {
$this->debug('in buildVal, handling simpleContent');
if (isset($this->message[$pos]['type'])) {
$params['!'] = $this->decodeSimple($this->message[$pos]['cdata'], $this->message[$pos]['type'], isset($this->message[$pos]['type_namespace']) ? $this->message[$pos]['type_namespace'] : '');
} else {
$parent = $this->message[$pos]['parent'];
if (isset($this->message[$parent]['type']) && ($this->message[$parent]['type'] == 'array') && isset($this->message[$parent]['arrayType'])) {
$params['!'] = $this->decodeSimple($this->message[$pos]['cdata'], $this->message[$parent]['arrayType'], isset($this->message[$parent]['arrayTypeNamespace']) ? $this->message[$parent]['arrayTypeNamespace'] : '');
} else {
$params['!'] = $this->message[$pos]['cdata'];
}
}
}
$ret = is_array($params) ? $params : array();
$this->debug('in buildVal, return:');
$this->appendDebug($this->varDump($ret));
return $ret;
} else {
$this->debug('in buildVal, no children, building scalar');
$cdata = isset($this->message[$pos]['cdata']) ? $this->message[$pos]['cdata'] : '';
if (isset($this->message[$pos]['type'])) {
$ret = $this->decodeSimple($cdata, $this->message[$pos]['type'], isset($this->message[$pos]['type_namespace']) ? $this->message[$pos]['type_namespace'] : '');
$this->debug("in buildVal, return: $ret");
return $ret;
}
$parent = $this->message[$pos]['parent'];
if (isset($this->message[$parent]['type']) && ($this->message[$parent]['type'] == 'array') && isset($this->message[$parent]['arrayType'])) {
$ret = $this->decodeSimple($cdata, $this->message[$parent]['arrayType'], isset($this->message[$parent]['arrayTypeNamespace']) ? $this->message[$parent]['arrayTypeNamespace'] : '');
$this->debug("in buildVal, return: $ret");
return $ret;
}
$ret = $this->message[$pos]['cdata'];
$this->debug("in buildVal, return: $ret");
return $ret;
}
}
}
/**
* Backward compatibility
*/
class soap_parser extends nusoap_parser {
}
?>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,107 +0,0 @@
<?php
/**
* For creating serializable abstractions of native PHP types. This class
* allows element name/namespace, XSD type, and XML attributes to be
* associated with a value. This is extremely useful when WSDL is not
* used, but is also useful when WSDL is used with polymorphic types, including
* xsd:anyType and user-defined types.
*
* @author Dietrich Ayala <dietrich@ganx4.com>
* @version $Id: class.soap_val.php,v 1.11 2007/04/06 13:56:32 snichol Exp $
* @access public
*/
class soapval extends nusoap_base {
/**
* The XML element name
*
* @var string
* @access private
*/
var $name;
/**
* The XML type name (string or false)
*
* @var mixed
* @access private
*/
var $type;
/**
* The PHP value
*
* @var mixed
* @access private
*/
var $value;
/**
* The XML element namespace (string or false)
*
* @var mixed
* @access private
*/
var $element_ns;
/**
* The XML type namespace (string or false)
*
* @var mixed
* @access private
*/
var $type_ns;
/**
* The XML element attributes (array or false)
*
* @var mixed
* @access private
*/
var $attributes;
/**
* constructor
*
* @param string $name optional name
* @param mixed $type optional type name
* @param mixed $value optional value
* @param mixed $element_ns optional namespace of value
* @param mixed $type_ns optional namespace of type
* @param mixed $attributes associative array of attributes to add to element serialization
* @access public
*/
function soapval($name='soapval',$type=false,$value=-1,$element_ns=false,$type_ns=false,$attributes=false) {
parent::nusoap_base();
$this->name = $name;
$this->type = $type;
$this->value = $value;
$this->element_ns = $element_ns;
$this->type_ns = $type_ns;
$this->attributes = $attributes;
}
/**
* return serialized value
*
* @param string $use The WSDL use value (encoded|literal)
* @return string XML data
* @access public
*/
function serialize($use='encoded') {
return $this->serialize_val($this->value, $this->name, $this->type, $this->element_ns, $this->type_ns, $this->attributes, $use, true);
}
/**
* decodes a soapval object into a PHP native type
*
* @return mixed
* @access public
*/
function decode(){
return $this->value;
}
}
?>

View File

@@ -1,991 +0,0 @@
<?php
/**
*
* [nu]soapclient higher level class for easy usage.
*
* usage:
*
* // instantiate client with server info
* $soapclient = new nusoap_client( string path [ ,mixed wsdl] );
*
* // call method, get results
* echo $soapclient->call( string methodname [ ,array parameters] );
*
* // bye bye client
* unset($soapclient);
*
* @author Dietrich Ayala <dietrich@ganx4.com>
* @author Scott Nichol <snichol@users.sourceforge.net>
* @version $Id: class.soapclient.php,v 1.69 2010/04/26 20:15:08 snichol Exp $
* @access public
*/
class nusoap_client extends nusoap_base {
var $username = ''; // Username for HTTP authentication
var $password = ''; // Password for HTTP authentication
var $authtype = ''; // Type of HTTP authentication
var $certRequest = array(); // Certificate for HTTP SSL authentication
var $requestHeaders = false; // SOAP headers in request (text)
var $responseHeaders = ''; // SOAP headers from response (incomplete namespace resolution) (text)
var $responseHeader = NULL; // SOAP Header from response (parsed)
var $document = ''; // SOAP body response portion (incomplete namespace resolution) (text)
var $endpoint;
var $forceEndpoint = ''; // overrides WSDL endpoint
var $proxyhost = '';
var $proxyport = '';
var $proxyusername = '';
var $proxypassword = '';
var $portName = ''; // port name to use in WSDL
var $xml_encoding = ''; // character set encoding of incoming (response) messages
var $http_encoding = false;
var $timeout = 0; // HTTP connection timeout
var $response_timeout = 30; // HTTP response timeout
var $endpointType = ''; // soap|wsdl, empty for WSDL initialization error
var $persistentConnection = false;
var $defaultRpcParams = false; // This is no longer used
var $request = ''; // HTTP request
var $response = ''; // HTTP response
var $responseData = ''; // SOAP payload of response
var $cookies = array(); // Cookies from response or for request
var $decode_utf8 = true; // toggles whether the parser decodes element content w/ utf8_decode()
var $operations = array(); // WSDL operations, empty for WSDL initialization error
var $curl_options = array(); // User-specified cURL options
var $bindingType = ''; // WSDL operation binding type
var $use_curl = false; // whether to always try to use cURL
/*
* fault related variables
*/
/**
* @var fault
* @access public
*/
var $fault;
/**
* @var faultcode
* @access public
*/
var $faultcode;
/**
* @var faultstring
* @access public
*/
var $faultstring;
/**
* @var faultdetail
* @access public
*/
var $faultdetail;
/**
* constructor
*
* @param mixed $endpoint SOAP server or WSDL URL (string), or wsdl instance (object)
* @param mixed $wsdl optional, set to 'wsdl' or true if using WSDL
* @param string $proxyhost optional
* @param string $proxyport optional
* @param string $proxyusername optional
* @param string $proxypassword optional
* @param integer $timeout set the connection timeout
* @param integer $response_timeout set the response timeout
* @param string $portName optional portName in WSDL document
* @access public
*/
function nusoap_client($endpoint,$wsdl = false,$proxyhost = false,$proxyport = false,$proxyusername = false, $proxypassword = false, $timeout = 0, $response_timeout = 30, $portName = ''){
parent::nusoap_base();
$this->endpoint = $endpoint;
$this->proxyhost = $proxyhost;
$this->proxyport = $proxyport;
$this->proxyusername = $proxyusername;
$this->proxypassword = $proxypassword;
$this->timeout = $timeout;
$this->response_timeout = $response_timeout;
$this->portName = $portName;
$this->debug("ctor wsdl=$wsdl timeout=$timeout response_timeout=$response_timeout");
$this->appendDebug('endpoint=' . $this->varDump($endpoint));
// make values
if($wsdl){
if (is_object($endpoint) && (get_class($endpoint) == 'wsdl')) {
$this->wsdl = $endpoint;
$this->endpoint = $this->wsdl->wsdl;
$this->wsdlFile = $this->endpoint;
$this->debug('existing wsdl instance created from ' . $this->endpoint);
$this->checkWSDL();
} else {
$this->wsdlFile = $this->endpoint;
$this->wsdl = null;
$this->debug('will use lazy evaluation of wsdl from ' . $this->endpoint);
}
$this->endpointType = 'wsdl';
} else {
$this->debug("instantiate SOAP with endpoint at $endpoint");
$this->endpointType = 'soap';
}
}
/**
* calls method, returns PHP native type
*
* @param string $operation SOAP server URL or path
* @param mixed $params An array, associative or simple, of the parameters
* for the method call, or a string that is the XML
* for the call. For rpc style, this call will
* wrap the XML in a tag named after the method, as
* well as the SOAP Envelope and Body. For document
* style, this will only wrap with the Envelope and Body.
* IMPORTANT: when using an array with document style,
* in which case there
* is really one parameter, the root of the fragment
* used in the call, which encloses what programmers
* normally think of parameters. A parameter array
* *must* include the wrapper.
* @param string $namespace optional method namespace (WSDL can override)
* @param string $soapAction optional SOAPAction value (WSDL can override)
* @param mixed $headers optional string of XML with SOAP header content, or array of soapval objects for SOAP headers, or associative array
* @param boolean $rpcParams optional (no longer used)
* @param string $style optional (rpc|document) the style to use when serializing parameters (WSDL can override)
* @param string $use optional (encoded|literal) the use when serializing parameters (WSDL can override)
* @return mixed response from SOAP call, normally an associative array mirroring the structure of the XML response, false for certain fatal errors
* @access public
*/
function call($operation,$params=array(),$namespace='http://tempuri.org',$soapAction='',$headers=false,$rpcParams=null,$style='rpc',$use='encoded'){
$this->operation = $operation;
$this->fault = false;
$this->setError('');
$this->request = '';
$this->response = '';
$this->responseData = '';
$this->faultstring = '';
$this->faultcode = '';
$this->opData = array();
$this->debug("call: operation=$operation, namespace=$namespace, soapAction=$soapAction, rpcParams=$rpcParams, style=$style, use=$use, endpointType=$this->endpointType");
$this->appendDebug('params=' . $this->varDump($params));
$this->appendDebug('headers=' . $this->varDump($headers));
if ($headers) {
$this->requestHeaders = $headers;
}
if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
$this->loadWSDL();
if ($this->getError())
return false;
}
// serialize parameters
if($this->endpointType == 'wsdl' && $opData = $this->getOperationData($operation)){
// use WSDL for operation
$this->opData = $opData;
$this->debug("found operation");
$this->appendDebug('opData=' . $this->varDump($opData));
if (isset($opData['soapAction'])) {
$soapAction = $opData['soapAction'];
}
if (! $this->forceEndpoint) {
$this->endpoint = $opData['endpoint'];
} else {
$this->endpoint = $this->forceEndpoint;
}
$namespace = isset($opData['input']['namespace']) ? $opData['input']['namespace'] : $namespace;
$style = $opData['style'];
$use = $opData['input']['use'];
// add ns to ns array
if($namespace != '' && !isset($this->wsdl->namespaces[$namespace])){
$nsPrefix = 'ns' . rand(1000, 9999);
$this->wsdl->namespaces[$nsPrefix] = $namespace;
}
$nsPrefix = $this->wsdl->getPrefixFromNamespace($namespace);
// serialize payload
if (is_string($params)) {
$this->debug("serializing param string for WSDL operation $operation");
$payload = $params;
} elseif (is_array($params)) {
$this->debug("serializing param array for WSDL operation $operation");
$payload = $this->wsdl->serializeRPCParameters($operation,'input',$params,$this->bindingType);
} else {
$this->debug('params must be array or string');
$this->setError('params must be array or string');
return false;
}
$usedNamespaces = $this->wsdl->usedNamespaces;
if (isset($opData['input']['encodingStyle'])) {
$encodingStyle = $opData['input']['encodingStyle'];
} else {
$encodingStyle = '';
}
$this->appendDebug($this->wsdl->getDebug());
$this->wsdl->clearDebug();
if ($errstr = $this->wsdl->getError()) {
$this->debug('got wsdl error: '.$errstr);
$this->setError('wsdl error: '.$errstr);
return false;
}
} elseif($this->endpointType == 'wsdl') {
// operation not in WSDL
$this->appendDebug($this->wsdl->getDebug());
$this->wsdl->clearDebug();
$this->setError('operation '.$operation.' not present in WSDL.');
$this->debug("operation '$operation' not present in WSDL.");
return false;
} else {
// no WSDL
//$this->namespaces['ns1'] = $namespace;
$nsPrefix = 'ns' . rand(1000, 9999);
// serialize
$payload = '';
if (is_string($params)) {
$this->debug("serializing param string for operation $operation");
$payload = $params;
} elseif (is_array($params)) {
$this->debug("serializing param array for operation $operation");
foreach($params as $k => $v){
$payload .= $this->serialize_val($v,$k,false,false,false,false,$use);
}
} else {
$this->debug('params must be array or string');
$this->setError('params must be array or string');
return false;
}
$usedNamespaces = array();
if ($use == 'encoded') {
$encodingStyle = 'http://schemas.xmlsoap.org/soap/encoding/';
} else {
$encodingStyle = '';
}
}
// wrap RPC calls with method element
if ($style == 'rpc') {
if ($use == 'literal') {
$this->debug("wrapping RPC request with literal method element");
if ($namespace) {
// http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html R2735 says rpc/literal accessor elements should not be in a namespace
$payload = "<$nsPrefix:$operation xmlns:$nsPrefix=\"$namespace\">" .
$payload .
"</$nsPrefix:$operation>";
} else {
$payload = "<$operation>" . $payload . "</$operation>";
}
} else {
$this->debug("wrapping RPC request with encoded method element");
if ($namespace) {
$payload = "<$nsPrefix:$operation xmlns:$nsPrefix=\"$namespace\">" .
$payload .
"</$nsPrefix:$operation>";
} else {
$payload = "<$operation>" .
$payload .
"</$operation>";
}
}
}
// serialize envelope
$soapmsg = $this->serializeEnvelope($payload,$this->requestHeaders,$usedNamespaces,$style,$use,$encodingStyle);
$this->debug("endpoint=$this->endpoint, soapAction=$soapAction, namespace=$namespace, style=$style, use=$use, encodingStyle=$encodingStyle");
$this->debug('SOAP message length=' . strlen($soapmsg) . ' contents (max 1000 bytes)=' . substr($soapmsg, 0, 1000));
// send
$return = $this->send($this->getHTTPBody($soapmsg),$soapAction,$this->timeout,$this->response_timeout);
if($errstr = $this->getError()){
$this->debug('Error: '.$errstr);
return false;
} else {
$this->return = $return;
$this->debug('sent message successfully and got a(n) '.gettype($return));
$this->appendDebug('return=' . $this->varDump($return));
// fault?
if(is_array($return) && isset($return['faultcode'])){
$this->debug('got fault');
$this->setError($return['faultcode'].': '.$return['faultstring']);
$this->fault = true;
foreach($return as $k => $v){
$this->$k = $v;
$this->debug("$k = $v<br>");
}
return $return;
} elseif ($style == 'document') {
// NOTE: if the response is defined to have multiple parts (i.e. unwrapped),
// we are only going to return the first part here...sorry about that
return $return;
} else {
// array of return values
if(is_array($return)){
// multiple 'out' parameters, which we return wrapped up
// in the array
if(sizeof($return) > 1){
return $return;
}
// single 'out' parameter (normally the return value)
$return = array_shift($return);
$this->debug('return shifted value: ');
$this->appendDebug($this->varDump($return));
return $return;
// nothing returned (ie, echoVoid)
} else {
return "";
}
}
}
}
/**
* check WSDL passed as an instance or pulled from an endpoint
*
* @access private
*/
function checkWSDL() {
$this->appendDebug($this->wsdl->getDebug());
$this->wsdl->clearDebug();
$this->debug('checkWSDL');
// catch errors
if ($errstr = $this->wsdl->getError()) {
$this->appendDebug($this->wsdl->getDebug());
$this->wsdl->clearDebug();
$this->debug('got wsdl error: '.$errstr);
$this->setError('wsdl error: '.$errstr);
} elseif ($this->operations = $this->wsdl->getOperations($this->portName, 'soap')) {
$this->appendDebug($this->wsdl->getDebug());
$this->wsdl->clearDebug();
$this->bindingType = 'soap';
$this->debug('got '.count($this->operations).' operations from wsdl '.$this->wsdlFile.' for binding type '.$this->bindingType);
} elseif ($this->operations = $this->wsdl->getOperations($this->portName, 'soap12')) {
$this->appendDebug($this->wsdl->getDebug());
$this->wsdl->clearDebug();
$this->bindingType = 'soap12';
$this->debug('got '.count($this->operations).' operations from wsdl '.$this->wsdlFile.' for binding type '.$this->bindingType);
$this->debug('**************** WARNING: SOAP 1.2 BINDING *****************');
} else {
$this->appendDebug($this->wsdl->getDebug());
$this->wsdl->clearDebug();
$this->debug('getOperations returned false');
$this->setError('no operations defined in the WSDL document!');
}
}
/**
* instantiate wsdl object and parse wsdl file
*
* @access public
*/
function loadWSDL() {
$this->debug('instantiating wsdl class with doc: '.$this->wsdlFile);
$this->wsdl = new wsdl('',$this->proxyhost,$this->proxyport,$this->proxyusername,$this->proxypassword,$this->timeout,$this->response_timeout,$this->curl_options,$this->use_curl);
$this->wsdl->setCredentials($this->username, $this->password, $this->authtype, $this->certRequest);
$this->wsdl->fetchWSDL($this->wsdlFile);
$this->checkWSDL();
}
/**
* get available data pertaining to an operation
*
* @param string $operation operation name
* @return array array of data pertaining to the operation
* @access public
*/
function getOperationData($operation){
if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
$this->loadWSDL();
if ($this->getError())
return false;
}
if(isset($this->operations[$operation])){
return $this->operations[$operation];
}
$this->debug("No data for operation: $operation");
}
/**
* send the SOAP message
*
* Note: if the operation has multiple return values
* the return value of this method will be an array
* of those values.
*
* @param string $msg a SOAPx4 soapmsg object
* @param string $soapaction SOAPAction value
* @param integer $timeout set connection timeout in seconds
* @param integer $response_timeout set response timeout in seconds
* @return mixed native PHP types.
* @access private
*/
function send($msg, $soapaction = '', $timeout=0, $response_timeout=30) {
$this->checkCookies();
// detect transport
switch(true){
// http(s)
case preg_match('/^http/',$this->endpoint):
$this->debug('transporting via HTTP');
if($this->persistentConnection == true && is_object($this->persistentConnection)){
$http =& $this->persistentConnection;
} else {
$http = new soap_transport_http($this->endpoint, $this->curl_options, $this->use_curl);
if ($this->persistentConnection) {
$http->usePersistentConnection();
}
}
$http->setContentType($this->getHTTPContentType(), $this->getHTTPContentTypeCharset());
$http->setSOAPAction($soapaction);
if($this->proxyhost && $this->proxyport){
$http->setProxy($this->proxyhost,$this->proxyport,$this->proxyusername,$this->proxypassword);
}
if($this->authtype != '') {
$http->setCredentials($this->username, $this->password, $this->authtype, array(), $this->certRequest);
}
if($this->http_encoding != ''){
$http->setEncoding($this->http_encoding);
}
$this->debug('sending message, length='.strlen($msg));
if(preg_match('/^http:/',$this->endpoint)){
//if(strpos($this->endpoint,'http:')){
$this->responseData = $http->send($msg,$timeout,$response_timeout,$this->cookies);
} elseif(preg_match('/^https/',$this->endpoint)){
//} elseif(strpos($this->endpoint,'https:')){
//if(phpversion() == '4.3.0-dev'){
//$response = $http->send($msg,$timeout,$response_timeout);
//$this->request = $http->outgoing_payload;
//$this->response = $http->incoming_payload;
//} else
$this->responseData = $http->sendHTTPS($msg,$timeout,$response_timeout,$this->cookies);
} else {
$this->setError('no http/s in endpoint url');
}
$this->request = $http->outgoing_payload;
$this->response = $http->incoming_payload;
$this->appendDebug($http->getDebug());
$this->UpdateCookies($http->incoming_cookies);
// save transport object if using persistent connections
if ($this->persistentConnection) {
$http->clearDebug();
if (!is_object($this->persistentConnection)) {
$this->persistentConnection = $http;
}
}
if($err = $http->getError()){
$this->setError('HTTP Error: '.$err);
return false;
} elseif($this->getError()){
return false;
} else {
$this->debug('got response, length='. strlen($this->responseData).' type='.$http->incoming_headers['content-type']);
return $this->parseResponse($http->incoming_headers, $this->responseData);
}
break;
default:
$this->setError('no transport found, or selected transport is not yet supported!');
return false;
break;
}
}
/**
* processes SOAP message returned from server
*
* @param array $headers The HTTP headers
* @param string $data unprocessed response data from server
* @return mixed value of the message, decoded into a PHP type
* @access private
*/
function parseResponse($headers, $data) {
$this->debug('Entering parseResponse() for data of length ' . strlen($data) . ' headers:');
$this->appendDebug($this->varDump($headers));
if (!isset($headers['content-type'])) {
$this->setError('Response not of type text/xml (no content-type header)');
return false;
}
if (!strstr($headers['content-type'], 'text/xml')) {
$this->setError('Response not of type text/xml: ' . $headers['content-type']);
return false;
}
if (strpos($headers['content-type'], '=')) {
$enc = str_replace('"', '', substr(strstr($headers["content-type"], '='), 1));
$this->debug('Got response encoding: ' . $enc);
if(preg_match('/^(ISO-8859-1|US-ASCII|UTF-8)$/i',$enc)){
$this->xml_encoding = strtoupper($enc);
} else {
$this->xml_encoding = 'US-ASCII';
}
} else {
// should be US-ASCII for HTTP 1.0 or ISO-8859-1 for HTTP 1.1
$this->xml_encoding = 'ISO-8859-1';
}
$this->debug('Use encoding: ' . $this->xml_encoding . ' when creating nusoap_parser');
$parser = new nusoap_parser($data,$this->xml_encoding,$this->operation,$this->decode_utf8);
// add parser debug data to our debug
$this->appendDebug($parser->getDebug());
// if parse errors
if($errstr = $parser->getError()){
$this->setError( $errstr);
// destroy the parser object
unset($parser);
return false;
} else {
// get SOAP headers
$this->responseHeaders = $parser->getHeaders();
// get SOAP headers
$this->responseHeader = $parser->get_soapheader();
// get decoded message
$return = $parser->get_soapbody();
// add document for doclit support
$this->document = $parser->document;
// destroy the parser object
unset($parser);
// return decode message
return $return;
}
}
/**
* sets user-specified cURL options
*
* @param mixed $option The cURL option (always integer?)
* @param mixed $value The cURL option value
* @access public
*/
function setCurlOption($option, $value) {
$this->debug("setCurlOption option=$option, value=");
$this->appendDebug($this->varDump($value));
$this->curl_options[$option] = $value;
}
/**
* sets the SOAP endpoint, which can override WSDL
*
* @param string $endpoint The endpoint URL to use, or empty string or false to prevent override
* @access public
*/
function setEndpoint($endpoint) {
$this->debug("setEndpoint(\"$endpoint\")");
$this->forceEndpoint = $endpoint;
}
/**
* set the SOAP headers
*
* @param mixed $headers String of XML with SOAP header content, or array of soapval objects for SOAP headers
* @access public
*/
function setHeaders($headers){
$this->debug("setHeaders headers=");
$this->appendDebug($this->varDump($headers));
$this->requestHeaders = $headers;
}
/**
* get the SOAP response headers (namespace resolution incomplete)
*
* @return string
* @access public
*/
function getHeaders(){
return $this->responseHeaders;
}
/**
* get the SOAP response Header (parsed)
*
* @return mixed
* @access public
*/
function getHeader(){
return $this->responseHeader;
}
/**
* set proxy info here
*
* @param string $proxyhost
* @param string $proxyport
* @param string $proxyusername
* @param string $proxypassword
* @access public
*/
function setHTTPProxy($proxyhost, $proxyport, $proxyusername = '', $proxypassword = '') {
$this->proxyhost = $proxyhost;
$this->proxyport = $proxyport;
$this->proxyusername = $proxyusername;
$this->proxypassword = $proxypassword;
}
/**
* if authenticating, set user credentials here
*
* @param string $username
* @param string $password
* @param string $authtype (basic|digest|certificate|ntlm)
* @param array $certRequest (keys must be cainfofile (optional), sslcertfile, sslkeyfile, passphrase, verifypeer (optional), verifyhost (optional): see corresponding options in cURL docs)
* @access public
*/
function setCredentials($username, $password, $authtype = 'basic', $certRequest = array()) {
$this->debug("setCredentials username=$username authtype=$authtype certRequest=");
$this->appendDebug($this->varDump($certRequest));
$this->username = $username;
$this->password = $password;
$this->authtype = $authtype;
$this->certRequest = $certRequest;
}
/**
* use HTTP encoding
*
* @param string $enc HTTP encoding
* @access public
*/
function setHTTPEncoding($enc='gzip, deflate'){
$this->debug("setHTTPEncoding(\"$enc\")");
$this->http_encoding = $enc;
}
/**
* Set whether to try to use cURL connections if possible
*
* @param boolean $use Whether to try to use cURL
* @access public
*/
function setUseCURL($use) {
$this->debug("setUseCURL($use)");
$this->use_curl = $use;
}
/**
* use HTTP persistent connections if possible
*
* @access public
*/
function useHTTPPersistentConnection(){
$this->debug("useHTTPPersistentConnection");
$this->persistentConnection = true;
}
/**
* gets the default RPC parameter setting.
* If true, default is that call params are like RPC even for document style.
* Each call() can override this value.
*
* This is no longer used.
*
* @return boolean
* @access public
* @deprecated
*/
function getDefaultRpcParams() {
return $this->defaultRpcParams;
}
/**
* sets the default RPC parameter setting.
* If true, default is that call params are like RPC even for document style
* Each call() can override this value.
*
* This is no longer used.
*
* @param boolean $rpcParams
* @access public
* @deprecated
*/
function setDefaultRpcParams($rpcParams) {
$this->defaultRpcParams = $rpcParams;
}
/**
* dynamically creates an instance of a proxy class,
* allowing user to directly call methods from wsdl
*
* @return object soap_proxy object
* @access public
*/
function getProxy() {
$r = rand();
$evalStr = $this->_getProxyClassCode($r);
//$this->debug("proxy class: $evalStr");
if ($this->getError()) {
$this->debug("Error from _getProxyClassCode, so return NULL");
return null;
}
// eval the class
eval($evalStr);
// instantiate proxy object
eval("\$proxy = new nusoap_proxy_$r('');");
// transfer current wsdl data to the proxy thereby avoiding parsing the wsdl twice
$proxy->endpointType = 'wsdl';
$proxy->wsdlFile = $this->wsdlFile;
$proxy->wsdl = $this->wsdl;
$proxy->operations = $this->operations;
$proxy->defaultRpcParams = $this->defaultRpcParams;
// transfer other state
$proxy->soap_defencoding = $this->soap_defencoding;
$proxy->username = $this->username;
$proxy->password = $this->password;
$proxy->authtype = $this->authtype;
$proxy->certRequest = $this->certRequest;
$proxy->requestHeaders = $this->requestHeaders;
$proxy->endpoint = $this->endpoint;
$proxy->forceEndpoint = $this->forceEndpoint;
$proxy->proxyhost = $this->proxyhost;
$proxy->proxyport = $this->proxyport;
$proxy->proxyusername = $this->proxyusername;
$proxy->proxypassword = $this->proxypassword;
$proxy->http_encoding = $this->http_encoding;
$proxy->timeout = $this->timeout;
$proxy->response_timeout = $this->response_timeout;
$proxy->persistentConnection = &$this->persistentConnection;
$proxy->decode_utf8 = $this->decode_utf8;
$proxy->curl_options = $this->curl_options;
$proxy->bindingType = $this->bindingType;
$proxy->use_curl = $this->use_curl;
return $proxy;
}
/**
* dynamically creates proxy class code
*
* @return string PHP/NuSOAP code for the proxy class
* @access private
*/
function _getProxyClassCode($r) {
$this->debug("in getProxy endpointType=$this->endpointType");
$this->appendDebug("wsdl=" . $this->varDump($this->wsdl));
if ($this->endpointType != 'wsdl') {
$evalStr = 'A proxy can only be created for a WSDL client';
$this->setError($evalStr);
$evalStr = "echo \"$evalStr\";";
return $evalStr;
}
if ($this->endpointType == 'wsdl' && is_null($this->wsdl)) {
$this->loadWSDL();
if ($this->getError()) {
return "echo \"" . $this->getError() . "\";";
}
}
$evalStr = '';
foreach ($this->operations as $operation => $opData) {
if ($operation != '') {
// create param string and param comment string
if (sizeof($opData['input']['parts']) > 0) {
$paramStr = '';
$paramArrayStr = '';
$paramCommentStr = '';
foreach ($opData['input']['parts'] as $name => $type) {
$paramStr .= "\$$name, ";
$paramArrayStr .= "'$name' => \$$name, ";
$paramCommentStr .= "$type \$$name, ";
}
$paramStr = substr($paramStr, 0, strlen($paramStr)-2);
$paramArrayStr = substr($paramArrayStr, 0, strlen($paramArrayStr)-2);
$paramCommentStr = substr($paramCommentStr, 0, strlen($paramCommentStr)-2);
} else {
$paramStr = '';
$paramArrayStr = '';
$paramCommentStr = 'void';
}
$opData['namespace'] = !isset($opData['namespace']) ? 'http://testuri.com' : $opData['namespace'];
$evalStr .= "// $paramCommentStr
function " . str_replace('.', '__', $operation) . "($paramStr) {
\$params = array($paramArrayStr);
return \$this->call('$operation', \$params, '".$opData['namespace']."', '".(isset($opData['soapAction']) ? $opData['soapAction'] : '')."');
}
";
unset($paramStr);
unset($paramCommentStr);
}
}
$evalStr = 'class nusoap_proxy_'.$r.' extends nusoap_client {
'.$evalStr.'
}';
return $evalStr;
}
/**
* dynamically creates proxy class code
*
* @return string PHP/NuSOAP code for the proxy class
* @access public
*/
function getProxyClassCode() {
$r = rand();
return $this->_getProxyClassCode($r);
}
/**
* gets the HTTP body for the current request.
*
* @param string $soapmsg The SOAP payload
* @return string The HTTP body, which includes the SOAP payload
* @access private
*/
function getHTTPBody($soapmsg) {
return $soapmsg;
}
/**
* gets the HTTP content type for the current request.
*
* Note: getHTTPBody must be called before this.
*
* @return string the HTTP content type for the current request.
* @access private
*/
function getHTTPContentType() {
return 'text/xml';
}
/**
* gets the HTTP content type charset for the current request.
* returns false for non-text content types.
*
* Note: getHTTPBody must be called before this.
*
* @return string the HTTP content type charset for the current request.
* @access private
*/
function getHTTPContentTypeCharset() {
return $this->soap_defencoding;
}
/*
* whether or not parser should decode utf8 element content
*
* @return always returns true
* @access public
*/
function decodeUTF8($bool){
$this->decode_utf8 = $bool;
return true;
}
/**
* adds a new Cookie into $this->cookies array
*
* @param string $name Cookie Name
* @param string $value Cookie Value
* @return boolean if cookie-set was successful returns true, else false
* @access public
*/
function setCookie($name, $value) {
if (strlen($name) == 0) {
return false;
}
$this->cookies[] = array('name' => $name, 'value' => $value);
return true;
}
/**
* gets all Cookies
*
* @return array with all internal cookies
* @access public
*/
function getCookies() {
return $this->cookies;
}
/**
* checks all Cookies and delete those which are expired
*
* @return boolean always return true
* @access private
*/
function checkCookies() {
if (sizeof($this->cookies) == 0) {
return true;
}
$this->debug('checkCookie: check ' . sizeof($this->cookies) . ' cookies');
$curr_cookies = $this->cookies;
$this->cookies = array();
foreach ($curr_cookies as $cookie) {
if (! is_array($cookie)) {
$this->debug('Remove cookie that is not an array');
continue;
}
if ((isset($cookie['expires'])) && (! empty($cookie['expires']))) {
if (strtotime($cookie['expires']) > time()) {
$this->cookies[] = $cookie;
} else {
$this->debug('Remove expired cookie ' . $cookie['name']);
}
} else {
$this->cookies[] = $cookie;
}
}
$this->debug('checkCookie: '.sizeof($this->cookies).' cookies left in array');
return true;
}
/**
* updates the current cookies with a new set
*
* @param array $cookies new cookies with which to update current ones
* @return boolean always return true
* @access private
*/
function UpdateCookies($cookies) {
if (sizeof($this->cookies) == 0) {
// no existing cookies: take whatever is new
if (sizeof($cookies) > 0) {
$this->debug('Setting new cookie(s)');
$this->cookies = $cookies;
}
return true;
}
if (sizeof($cookies) == 0) {
// no new cookies: keep what we've got
return true;
}
// merge
foreach ($cookies as $newCookie) {
if (!is_array($newCookie)) {
continue;
}
if ((!isset($newCookie['name'])) || (!isset($newCookie['value']))) {
continue;
}
$newName = $newCookie['name'];
$found = false;
for ($i = 0; $i < count($this->cookies); $i++) {
$cookie = $this->cookies[$i];
if (!is_array($cookie)) {
continue;
}
if (!isset($cookie['name'])) {
continue;
}
if ($newName != $cookie['name']) {
continue;
}
$newDomain = isset($newCookie['domain']) ? $newCookie['domain'] : 'NODOMAIN';
$domain = isset($cookie['domain']) ? $cookie['domain'] : 'NODOMAIN';
if ($newDomain != $domain) {
continue;
}
$newPath = isset($newCookie['path']) ? $newCookie['path'] : 'NOPATH';
$path = isset($cookie['path']) ? $cookie['path'] : 'NOPATH';
if ($newPath != $path) {
continue;
}
$this->cookies[$i] = $newCookie;
$found = true;
$this->debug('Update cookie ' . $newName . '=' . $newCookie['value']);
break;
}
if (! $found) {
$this->debug('Add cookie ' . $newName . '=' . $newCookie['value']);
$this->cookies[] = $newCookie;
}
}
return true;
}
}
if (!extension_loaded('soap')) {
/**
* For backwards compatiblity, define soapclient unless the PHP SOAP extension is loaded.
*/
class soapclient extends nusoap_client {
}
}
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,209 +0,0 @@
<?php
/*
The NuSOAP project home is:
http://sourceforge.net/projects/nusoap/
The primary support for NuSOAP is the mailing list:
nusoap-general@lists.sourceforge.net
*/
/**
* caches instances of the wsdl class
*
* @author Scott Nichol <snichol@users.sourceforge.net>
* @author Ingo Fischer <ingo@apollon.de>
* @version $Id: class.wsdlcache.php,v 1.7 2007/04/17 16:34:03 snichol Exp $
* @access public
*/
class nusoap_wsdlcache {
/**
* @var resource
* @access private
*/
var $fplock;
/**
* @var integer
* @access private
*/
var $cache_lifetime;
/**
* @var string
* @access private
*/
var $cache_dir;
/**
* @var string
* @access public
*/
var $debug_str = '';
/**
* constructor
*
* @param string $cache_dir directory for cache-files
* @param integer $cache_lifetime lifetime for caching-files in seconds or 0 for unlimited
* @access public
*/
function nusoap_wsdlcache($cache_dir='.', $cache_lifetime=0) {
$this->fplock = array();
$this->cache_dir = $cache_dir != '' ? $cache_dir : '.';
$this->cache_lifetime = $cache_lifetime;
}
/**
* creates the filename used to cache a wsdl instance
*
* @param string $wsdl The URL of the wsdl instance
* @return string The filename used to cache the instance
* @access private
*/
function createFilename($wsdl) {
return $this->cache_dir.'/wsdlcache-' . md5($wsdl);
}
/**
* adds debug data to the class level debug string
*
* @param string $string debug data
* @access private
*/
function debug($string){
$this->debug_str .= get_class($this).": $string\n";
}
/**
* gets a wsdl instance from the cache
*
* @param string $wsdl The URL of the wsdl instance
* @return object wsdl The cached wsdl instance, null if the instance is not in the cache
* @access public
*/
function get($wsdl) {
$filename = $this->createFilename($wsdl);
if ($this->obtainMutex($filename, "r")) {
// check for expired WSDL that must be removed from the cache
if ($this->cache_lifetime > 0) {
if (file_exists($filename) && (time() - filemtime($filename) > $this->cache_lifetime)) {
unlink($filename);
$this->debug("Expired $wsdl ($filename) from cache");
$this->releaseMutex($filename);
return null;
}
}
// see what there is to return
if (!file_exists($filename)) {
$this->debug("$wsdl ($filename) not in cache (1)");
$this->releaseMutex($filename);
return null;
}
$fp = @fopen($filename, "r");
if ($fp) {
$s = implode("", @file($filename));
fclose($fp);
$this->debug("Got $wsdl ($filename) from cache");
} else {
$s = null;
$this->debug("$wsdl ($filename) not in cache (2)");
}
$this->releaseMutex($filename);
return (!is_null($s)) ? unserialize($s) : null;
} else {
$this->debug("Unable to obtain mutex for $filename in get");
}
return null;
}
/**
* obtains the local mutex
*
* @param string $filename The Filename of the Cache to lock
* @param string $mode The open-mode ("r" or "w") or the file - affects lock-mode
* @return boolean Lock successfully obtained ?!
* @access private
*/
function obtainMutex($filename, $mode) {
if (isset($this->fplock[md5($filename)])) {
$this->debug("Lock for $filename already exists");
return false;
}
$this->fplock[md5($filename)] = fopen($filename.".lock", "w");
if ($mode == "r") {
return flock($this->fplock[md5($filename)], LOCK_SH);
} else {
return flock($this->fplock[md5($filename)], LOCK_EX);
}
}
/**
* adds a wsdl instance to the cache
*
* @param object wsdl $wsdl_instance The wsdl instance to add
* @return boolean WSDL successfully cached
* @access public
*/
function put($wsdl_instance) {
$filename = $this->createFilename($wsdl_instance->wsdl);
$s = serialize($wsdl_instance);
if ($this->obtainMutex($filename, "w")) {
$fp = fopen($filename, "w");
if (! $fp) {
$this->debug("Cannot write $wsdl_instance->wsdl ($filename) in cache");
$this->releaseMutex($filename);
return false;
}
fputs($fp, $s);
fclose($fp);
$this->debug("Put $wsdl_instance->wsdl ($filename) in cache");
$this->releaseMutex($filename);
return true;
} else {
$this->debug("Unable to obtain mutex for $filename in put");
}
return false;
}
/**
* releases the local mutex
*
* @param string $filename The Filename of the Cache to lock
* @return boolean Lock successfully released
* @access private
*/
function releaseMutex($filename) {
$ret = flock($this->fplock[md5($filename)], LOCK_UN);
fclose($this->fplock[md5($filename)]);
unset($this->fplock[md5($filename)]);
if (! $ret) {
$this->debug("Not able to release lock for $filename");
}
return $ret;
}
/**
* removes a wsdl instance from the cache
*
* @param string $wsdl The URL of the wsdl instance
* @return boolean Whether there was an instance to remove
* @access public
*/
function remove($wsdl) {
$filename = $this->createFilename($wsdl);
if (!file_exists($filename)) {
$this->debug("$wsdl ($filename) not in cache to be removed");
return false;
}
// ignore errors obtaining mutex
$this->obtainMutex($filename, "w");
$ret = unlink($filename);
$this->debug("Removed ($ret) $wsdl ($filename) from cache");
$this->releaseMutex($filename);
return $ret;
}
}
/**
* For backward compatibility
*/
class wsdlcache extends nusoap_wsdlcache {
}
?>

View File

@@ -1,973 +0,0 @@
<?php
/**
* parses an XML Schema, allows access to it's data, other utility methods.
* imperfect, no validation... yet, but quite functional.
*
* @author Dietrich Ayala <dietrich@ganx4.com>
* @author Scott Nichol <snichol@users.sourceforge.net>
* @version $Id: class.xmlschema.php,v 1.53 2010/04/26 20:15:08 snichol Exp $
* @access public
*/
class nusoap_xmlschema extends nusoap_base {
// files
var $schema = '';
var $xml = '';
// namespaces
var $enclosingNamespaces;
// schema info
var $schemaInfo = array();
var $schemaTargetNamespace = '';
// types, elements, attributes defined by the schema
var $attributes = array();
var $complexTypes = array();
var $complexTypeStack = array();
var $currentComplexType = null;
var $elements = array();
var $elementStack = array();
var $currentElement = null;
var $simpleTypes = array();
var $simpleTypeStack = array();
var $currentSimpleType = null;
// imports
var $imports = array();
// parser vars
var $parser;
var $position = 0;
var $depth = 0;
var $depth_array = array();
var $message = array();
var $defaultNamespace = array();
/**
* constructor
*
* @param string $schema schema document URI
* @param string $xml xml document URI
* @param string $namespaces namespaces defined in enclosing XML
* @access public
*/
function nusoap_xmlschema($schema='',$xml='',$namespaces=array()){
parent::nusoap_base();
$this->debug('nusoap_xmlschema class instantiated, inside constructor');
// files
$this->schema = $schema;
$this->xml = $xml;
// namespaces
$this->enclosingNamespaces = $namespaces;
$this->namespaces = array_merge($this->namespaces, $namespaces);
// parse schema file
if($schema != ''){
$this->debug('initial schema file: '.$schema);
$this->parseFile($schema, 'schema');
}
// parse xml file
if($xml != ''){
$this->debug('initial xml file: '.$xml);
$this->parseFile($xml, 'xml');
}
}
/**
* parse an XML file
*
* @param string $xml path/URL to XML file
* @param string $type (schema | xml)
* @return boolean
* @access public
*/
function parseFile($xml,$type){
// parse xml file
if($xml != ""){
$xmlStr = @join("",@file($xml));
if($xmlStr == ""){
$msg = 'Error reading XML from '.$xml;
$this->setError($msg);
$this->debug($msg);
return false;
} else {
$this->debug("parsing $xml");
$this->parseString($xmlStr,$type);
$this->debug("done parsing $xml");
return true;
}
}
return false;
}
/**
* parse an XML string
*
* @param string $xml path or URL
* @param string $type (schema|xml)
* @access private
*/
function parseString($xml,$type){
// parse xml string
if($xml != ""){
// Create an XML parser.
$this->parser = xml_parser_create();
// Set the options for parsing the XML data.
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
// Set the object for the parser.
xml_set_object($this->parser, $this);
// Set the element handlers for the parser.
if($type == "schema"){
xml_set_element_handler($this->parser, 'schemaStartElement','schemaEndElement');
xml_set_character_data_handler($this->parser,'schemaCharacterData');
} elseif($type == "xml"){
xml_set_element_handler($this->parser, 'xmlStartElement','xmlEndElement');
xml_set_character_data_handler($this->parser,'xmlCharacterData');
}
// Parse the XML file.
if(!xml_parse($this->parser,$xml,true)){
// Display an error message.
$errstr = sprintf('XML error parsing XML schema on line %d: %s',
xml_get_current_line_number($this->parser),
xml_error_string(xml_get_error_code($this->parser))
);
$this->debug($errstr);
$this->debug("XML payload:\n" . $xml);
$this->setError($errstr);
}
xml_parser_free($this->parser);
} else{
$this->debug('no xml passed to parseString()!!');
$this->setError('no xml passed to parseString()!!');
}
}
/**
* gets a type name for an unnamed type
*
* @param string Element name
* @return string A type name for an unnamed type
* @access private
*/
function CreateTypeName($ename) {
$scope = '';
for ($i = 0; $i < count($this->complexTypeStack); $i++) {
$scope .= $this->complexTypeStack[$i] . '_';
}
return $scope . $ename . '_ContainedType';
}
/**
* start-element handler
*
* @param string $parser XML parser object
* @param string $name element name
* @param string $attrs associative array of attributes
* @access private
*/
function schemaStartElement($parser, $name, $attrs) {
// position in the total number of elements, starting from 0
$pos = $this->position++;
$depth = $this->depth++;
// set self as current value for this depth
$this->depth_array[$depth] = $pos;
$this->message[$pos] = array('cdata' => '');
if ($depth > 0) {
$this->defaultNamespace[$pos] = $this->defaultNamespace[$this->depth_array[$depth - 1]];
} else {
$this->defaultNamespace[$pos] = false;
}
// get element prefix
if($prefix = $this->getPrefix($name)){
// get unqualified name
$name = $this->getLocalPart($name);
} else {
$prefix = '';
}
// loop thru attributes, expanding, and registering namespace declarations
if(count($attrs) > 0){
foreach($attrs as $k => $v){
// if ns declarations, add to class level array of valid namespaces
if(preg_match('/^xmlns/',$k)){
//$this->xdebug("$k: $v");
//$this->xdebug('ns_prefix: '.$this->getPrefix($k));
if($ns_prefix = substr(strrchr($k,':'),1)){
//$this->xdebug("Add namespace[$ns_prefix] = $v");
$this->namespaces[$ns_prefix] = $v;
} else {
$this->defaultNamespace[$pos] = $v;
if (! $this->getPrefixFromNamespace($v)) {
$this->namespaces['ns'.(count($this->namespaces)+1)] = $v;
}
}
if($v == 'http://www.w3.org/2001/XMLSchema' || $v == 'http://www.w3.org/1999/XMLSchema' || $v == 'http://www.w3.org/2000/10/XMLSchema'){
$this->XMLSchemaVersion = $v;
$this->namespaces['xsi'] = $v.'-instance';
}
}
}
foreach($attrs as $k => $v){
// expand each attribute
$k = strpos($k,':') ? $this->expandQname($k) : $k;
$v = strpos($v,':') ? $this->expandQname($v) : $v;
$eAttrs[$k] = $v;
}
$attrs = $eAttrs;
} else {
$attrs = array();
}
// find status, register data
switch($name){
case 'all': // (optional) compositor content for a complexType
case 'choice':
case 'group':
case 'sequence':
//$this->xdebug("compositor $name for currentComplexType: $this->currentComplexType and currentElement: $this->currentElement");
$this->complexTypes[$this->currentComplexType]['compositor'] = $name;
//if($name == 'all' || $name == 'sequence'){
// $this->complexTypes[$this->currentComplexType]['phpType'] = 'struct';
//}
break;
case 'attribute': // complexType attribute
//$this->xdebug("parsing attribute $attrs[name] $attrs[ref] of value: ".$attrs['http://schemas.xmlsoap.org/wsdl/:arrayType']);
$this->xdebug("parsing attribute:");
$this->appendDebug($this->varDump($attrs));
if (!isset($attrs['form'])) {
// TODO: handle globals
$attrs['form'] = $this->schemaInfo['attributeFormDefault'];
}
if (isset($attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'])) {
$v = $attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'];
if (!strpos($v, ':')) {
// no namespace in arrayType attribute value...
if ($this->defaultNamespace[$pos]) {
// ...so use the default
$attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'] = $this->defaultNamespace[$pos] . ':' . $attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'];
}
}
}
if(isset($attrs['name'])){
$this->attributes[$attrs['name']] = $attrs;
$aname = $attrs['name'];
} elseif(isset($attrs['ref']) && $attrs['ref'] == 'http://schemas.xmlsoap.org/soap/encoding/:arrayType'){
if (isset($attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'])) {
$aname = $attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'];
} else {
$aname = '';
}
} elseif(isset($attrs['ref'])){
$aname = $attrs['ref'];
$this->attributes[$attrs['ref']] = $attrs;
}
if($this->currentComplexType){ // This should *always* be
$this->complexTypes[$this->currentComplexType]['attrs'][$aname] = $attrs;
}
// arrayType attribute
if(isset($attrs['http://schemas.xmlsoap.org/wsdl/:arrayType']) || $this->getLocalPart($aname) == 'arrayType'){
$this->complexTypes[$this->currentComplexType]['phpType'] = 'array';
$prefix = $this->getPrefix($aname);
if(isset($attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'])){
$v = $attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'];
} else {
$v = '';
}
if(strpos($v,'[,]')){
$this->complexTypes[$this->currentComplexType]['multidimensional'] = true;
}
$v = substr($v,0,strpos($v,'[')); // clip the []
if(!strpos($v,':') && isset($this->typemap[$this->XMLSchemaVersion][$v])){
$v = $this->XMLSchemaVersion.':'.$v;
}
$this->complexTypes[$this->currentComplexType]['arrayType'] = $v;
}
break;
case 'complexContent': // (optional) content for a complexType
$this->xdebug("do nothing for element $name");
break;
case 'complexType':
array_push($this->complexTypeStack, $this->currentComplexType);
if(isset($attrs['name'])){
// TODO: what is the scope of named complexTypes that appear
// nested within other c complexTypes?
$this->xdebug('processing named complexType '.$attrs['name']);
//$this->currentElement = false;
$this->currentComplexType = $attrs['name'];
$this->complexTypes[$this->currentComplexType] = $attrs;
$this->complexTypes[$this->currentComplexType]['typeClass'] = 'complexType';
// This is for constructs like
// <complexType name="ListOfString" base="soap:Array">
// <sequence>
// <element name="string" type="xsd:string"
// minOccurs="0" maxOccurs="unbounded" />
// </sequence>
// </complexType>
if(isset($attrs['base']) && preg_match('/:Array$/',$attrs['base'])){
$this->xdebug('complexType is unusual array');
$this->complexTypes[$this->currentComplexType]['phpType'] = 'array';
} else {
$this->complexTypes[$this->currentComplexType]['phpType'] = 'struct';
}
} else {
$name = $this->CreateTypeName($this->currentElement);
$this->xdebug('processing unnamed complexType for element ' . $this->currentElement . ' named ' . $name);
$this->currentComplexType = $name;
//$this->currentElement = false;
$this->complexTypes[$this->currentComplexType] = $attrs;
$this->complexTypes[$this->currentComplexType]['typeClass'] = 'complexType';
// This is for constructs like
// <complexType name="ListOfString" base="soap:Array">
// <sequence>
// <element name="string" type="xsd:string"
// minOccurs="0" maxOccurs="unbounded" />
// </sequence>
// </complexType>
if(isset($attrs['base']) && preg_match('/:Array$/',$attrs['base'])){
$this->xdebug('complexType is unusual array');
$this->complexTypes[$this->currentComplexType]['phpType'] = 'array';
} else {
$this->complexTypes[$this->currentComplexType]['phpType'] = 'struct';
}
}
$this->complexTypes[$this->currentComplexType]['simpleContent'] = 'false';
break;
case 'element':
array_push($this->elementStack, $this->currentElement);
if (!isset($attrs['form'])) {
if ($this->currentComplexType) {
$attrs['form'] = $this->schemaInfo['elementFormDefault'];
} else {
// global
$attrs['form'] = 'qualified';
}
}
if(isset($attrs['type'])){
$this->xdebug("processing typed element ".$attrs['name']." of type ".$attrs['type']);
if (! $this->getPrefix($attrs['type'])) {
if ($this->defaultNamespace[$pos]) {
$attrs['type'] = $this->defaultNamespace[$pos] . ':' . $attrs['type'];
$this->xdebug('used default namespace to make type ' . $attrs['type']);
}
}
// This is for constructs like
// <complexType name="ListOfString" base="soap:Array">
// <sequence>
// <element name="string" type="xsd:string"
// minOccurs="0" maxOccurs="unbounded" />
// </sequence>
// </complexType>
if ($this->currentComplexType && $this->complexTypes[$this->currentComplexType]['phpType'] == 'array') {
$this->xdebug('arrayType for unusual array is ' . $attrs['type']);
$this->complexTypes[$this->currentComplexType]['arrayType'] = $attrs['type'];
}
$this->currentElement = $attrs['name'];
$ename = $attrs['name'];
} elseif(isset($attrs['ref'])){
$this->xdebug("processing element as ref to ".$attrs['ref']);
$this->currentElement = "ref to ".$attrs['ref'];
$ename = $this->getLocalPart($attrs['ref']);
} else {
$type = $this->CreateTypeName($this->currentComplexType . '_' . $attrs['name']);
$this->xdebug("processing untyped element " . $attrs['name'] . ' type ' . $type);
$this->currentElement = $attrs['name'];
$attrs['type'] = $this->schemaTargetNamespace . ':' . $type;
$ename = $attrs['name'];
}
if (isset($ename) && $this->currentComplexType) {
$this->xdebug("add element $ename to complexType $this->currentComplexType");
$this->complexTypes[$this->currentComplexType]['elements'][$ename] = $attrs;
} elseif (!isset($attrs['ref'])) {
$this->xdebug("add element $ename to elements array");
$this->elements[ $attrs['name'] ] = $attrs;
$this->elements[ $attrs['name'] ]['typeClass'] = 'element';
}
break;
case 'enumeration': // restriction value list member
$this->xdebug('enumeration ' . $attrs['value']);
if ($this->currentSimpleType) {
$this->simpleTypes[$this->currentSimpleType]['enumeration'][] = $attrs['value'];
} elseif ($this->currentComplexType) {
$this->complexTypes[$this->currentComplexType]['enumeration'][] = $attrs['value'];
}
break;
case 'extension': // simpleContent or complexContent type extension
$this->xdebug('extension ' . $attrs['base']);
if ($this->currentComplexType) {
$ns = $this->getPrefix($attrs['base']);
if ($ns == '') {
$this->complexTypes[$this->currentComplexType]['extensionBase'] = $this->schemaTargetNamespace . ':' . $attrs['base'];
} else {
$this->complexTypes[$this->currentComplexType]['extensionBase'] = $attrs['base'];
}
} else {
$this->xdebug('no current complexType to set extensionBase');
}
break;
case 'import':
if (isset($attrs['schemaLocation'])) {
$this->xdebug('import namespace ' . $attrs['namespace'] . ' from ' . $attrs['schemaLocation']);
$this->imports[$attrs['namespace']][] = array('location' => $attrs['schemaLocation'], 'loaded' => false);
} else {
$this->xdebug('import namespace ' . $attrs['namespace']);
$this->imports[$attrs['namespace']][] = array('location' => '', 'loaded' => true);
if (! $this->getPrefixFromNamespace($attrs['namespace'])) {
$this->namespaces['ns'.(count($this->namespaces)+1)] = $attrs['namespace'];
}
}
break;
case 'include':
if (isset($attrs['schemaLocation'])) {
$this->xdebug('include into namespace ' . $this->schemaTargetNamespace . ' from ' . $attrs['schemaLocation']);
$this->imports[$this->schemaTargetNamespace][] = array('location' => $attrs['schemaLocation'], 'loaded' => false);
} else {
$this->xdebug('ignoring invalid XML Schema construct: include without schemaLocation attribute');
}
break;
case 'list': // simpleType value list
$this->xdebug("do nothing for element $name");
break;
case 'restriction': // simpleType, simpleContent or complexContent value restriction
$this->xdebug('restriction ' . $attrs['base']);
if($this->currentSimpleType){
$this->simpleTypes[$this->currentSimpleType]['type'] = $attrs['base'];
} elseif($this->currentComplexType){
$this->complexTypes[$this->currentComplexType]['restrictionBase'] = $attrs['base'];
if(strstr($attrs['base'],':') == ':Array'){
$this->complexTypes[$this->currentComplexType]['phpType'] = 'array';
}
}
break;
case 'schema':
$this->schemaInfo = $attrs;
$this->schemaInfo['schemaVersion'] = $this->getNamespaceFromPrefix($prefix);
if (isset($attrs['targetNamespace'])) {
$this->schemaTargetNamespace = $attrs['targetNamespace'];
}
if (!isset($attrs['elementFormDefault'])) {
$this->schemaInfo['elementFormDefault'] = 'unqualified';
}
if (!isset($attrs['attributeFormDefault'])) {
$this->schemaInfo['attributeFormDefault'] = 'unqualified';
}
break;
case 'simpleContent': // (optional) content for a complexType
if ($this->currentComplexType) { // This should *always* be
$this->complexTypes[$this->currentComplexType]['simpleContent'] = 'true';
} else {
$this->xdebug("do nothing for element $name because there is no current complexType");
}
break;
case 'simpleType':
array_push($this->simpleTypeStack, $this->currentSimpleType);
if(isset($attrs['name'])){
$this->xdebug("processing simpleType for name " . $attrs['name']);
$this->currentSimpleType = $attrs['name'];
$this->simpleTypes[ $attrs['name'] ] = $attrs;
$this->simpleTypes[ $attrs['name'] ]['typeClass'] = 'simpleType';
$this->simpleTypes[ $attrs['name'] ]['phpType'] = 'scalar';
} else {
$name = $this->CreateTypeName($this->currentComplexType . '_' . $this->currentElement);
$this->xdebug('processing unnamed simpleType for element ' . $this->currentElement . ' named ' . $name);
$this->currentSimpleType = $name;
//$this->currentElement = false;
$this->simpleTypes[$this->currentSimpleType] = $attrs;
$this->simpleTypes[$this->currentSimpleType]['phpType'] = 'scalar';
}
break;
case 'union': // simpleType type list
$this->xdebug("do nothing for element $name");
break;
default:
$this->xdebug("do not have any logic to process element $name");
}
}
/**
* end-element handler
*
* @param string $parser XML parser object
* @param string $name element name
* @access private
*/
function schemaEndElement($parser, $name) {
// bring depth down a notch
$this->depth--;
// position of current element is equal to the last value left in depth_array for my depth
if(isset($this->depth_array[$this->depth])){
$pos = $this->depth_array[$this->depth];
}
// get element prefix
if ($prefix = $this->getPrefix($name)){
// get unqualified name
$name = $this->getLocalPart($name);
} else {
$prefix = '';
}
// move on...
if($name == 'complexType'){
$this->xdebug('done processing complexType ' . ($this->currentComplexType ? $this->currentComplexType : '(unknown)'));
$this->xdebug($this->varDump($this->complexTypes[$this->currentComplexType]));
$this->currentComplexType = array_pop($this->complexTypeStack);
//$this->currentElement = false;
}
if($name == 'element'){
$this->xdebug('done processing element ' . ($this->currentElement ? $this->currentElement : '(unknown)'));
$this->currentElement = array_pop($this->elementStack);
}
if($name == 'simpleType'){
$this->xdebug('done processing simpleType ' . ($this->currentSimpleType ? $this->currentSimpleType : '(unknown)'));
$this->xdebug($this->varDump($this->simpleTypes[$this->currentSimpleType]));
$this->currentSimpleType = array_pop($this->simpleTypeStack);
}
}
/**
* element content handler
*
* @param string $parser XML parser object
* @param string $data element content
* @access private
*/
function schemaCharacterData($parser, $data){
$pos = $this->depth_array[$this->depth - 1];
$this->message[$pos]['cdata'] .= $data;
}
/**
* serialize the schema
*
* @access public
*/
function serializeSchema(){
$schemaPrefix = $this->getPrefixFromNamespace($this->XMLSchemaVersion);
$xml = '';
// imports
if (sizeof($this->imports) > 0) {
foreach($this->imports as $ns => $list) {
foreach ($list as $ii) {
if ($ii['location'] != '') {
$xml .= " <$schemaPrefix:import location=\"" . $ii['location'] . '" namespace="' . $ns . "\" />\n";
} else {
$xml .= " <$schemaPrefix:import namespace=\"" . $ns . "\" />\n";
}
}
}
}
// complex types
foreach($this->complexTypes as $typeName => $attrs){
$contentStr = '';
// serialize child elements
if(isset($attrs['elements']) && (count($attrs['elements']) > 0)){
foreach($attrs['elements'] as $element => $eParts){
if(isset($eParts['ref'])){
$contentStr .= " <$schemaPrefix:element ref=\"$element\"/>\n";
} else {
$contentStr .= " <$schemaPrefix:element name=\"$element\" type=\"" . $this->contractQName($eParts['type']) . "\"";
foreach ($eParts as $aName => $aValue) {
// handle, e.g., abstract, default, form, minOccurs, maxOccurs, nillable
if ($aName != 'name' && $aName != 'type') {
$contentStr .= " $aName=\"$aValue\"";
}
}
$contentStr .= "/>\n";
}
}
// compositor wraps elements
if (isset($attrs['compositor']) && ($attrs['compositor'] != '')) {
$contentStr = " <$schemaPrefix:$attrs[compositor]>\n".$contentStr." </$schemaPrefix:$attrs[compositor]>\n";
}
}
// attributes
if(isset($attrs['attrs']) && (count($attrs['attrs']) >= 1)){
foreach($attrs['attrs'] as $attr => $aParts){
$contentStr .= " <$schemaPrefix:attribute";
foreach ($aParts as $a => $v) {
if ($a == 'ref' || $a == 'type') {
$contentStr .= " $a=\"".$this->contractQName($v).'"';
} elseif ($a == 'http://schemas.xmlsoap.org/wsdl/:arrayType') {
$this->usedNamespaces['wsdl'] = $this->namespaces['wsdl'];
$contentStr .= ' wsdl:arrayType="'.$this->contractQName($v).'"';
} else {
$contentStr .= " $a=\"$v\"";
}
}
$contentStr .= "/>\n";
}
}
// if restriction
if (isset($attrs['restrictionBase']) && $attrs['restrictionBase'] != ''){
$contentStr = " <$schemaPrefix:restriction base=\"".$this->contractQName($attrs['restrictionBase'])."\">\n".$contentStr." </$schemaPrefix:restriction>\n";
// complex or simple content
if ((isset($attrs['elements']) && count($attrs['elements']) > 0) || (isset($attrs['attrs']) && count($attrs['attrs']) > 0)){
$contentStr = " <$schemaPrefix:complexContent>\n".$contentStr." </$schemaPrefix:complexContent>\n";
}
}
// finalize complex type
if($contentStr != ''){
$contentStr = " <$schemaPrefix:complexType name=\"$typeName\">\n".$contentStr." </$schemaPrefix:complexType>\n";
} else {
$contentStr = " <$schemaPrefix:complexType name=\"$typeName\"/>\n";
}
$xml .= $contentStr;
}
// simple types
if(isset($this->simpleTypes) && count($this->simpleTypes) > 0){
foreach($this->simpleTypes as $typeName => $eParts){
$xml .= " <$schemaPrefix:simpleType name=\"$typeName\">\n <$schemaPrefix:restriction base=\"".$this->contractQName($eParts['type'])."\">\n";
if (isset($eParts['enumeration'])) {
foreach ($eParts['enumeration'] as $e) {
$xml .= " <$schemaPrefix:enumeration value=\"$e\"/>\n";
}
}
$xml .= " </$schemaPrefix:restriction>\n </$schemaPrefix:simpleType>";
}
}
// elements
if(isset($this->elements) && count($this->elements) > 0){
foreach($this->elements as $element => $eParts){
$xml .= " <$schemaPrefix:element name=\"$element\" type=\"".$this->contractQName($eParts['type'])."\"/>\n";
}
}
// attributes
if(isset($this->attributes) && count($this->attributes) > 0){
foreach($this->attributes as $attr => $aParts){
$xml .= " <$schemaPrefix:attribute name=\"$attr\" type=\"".$this->contractQName($aParts['type'])."\"\n/>";
}
}
// finish 'er up
$attr = '';
foreach ($this->schemaInfo as $k => $v) {
if ($k == 'elementFormDefault' || $k == 'attributeFormDefault') {
$attr .= " $k=\"$v\"";
}
}
$el = "<$schemaPrefix:schema$attr targetNamespace=\"$this->schemaTargetNamespace\"\n";
foreach (array_diff($this->usedNamespaces, $this->enclosingNamespaces) as $nsp => $ns) {
$el .= " xmlns:$nsp=\"$ns\"";
}
$xml = $el . ">\n".$xml."</$schemaPrefix:schema>\n";
return $xml;
}
/**
* adds debug data to the clas level debug string
*
* @param string $string debug data
* @access private
*/
function xdebug($string){
$this->debug('<' . $this->schemaTargetNamespace . '> '.$string);
}
/**
* get the PHP type of a user defined type in the schema
* PHP type is kind of a misnomer since it actually returns 'struct' for assoc. arrays
* returns false if no type exists, or not w/ the given namespace
* else returns a string that is either a native php type, or 'struct'
*
* @param string $type name of defined type
* @param string $ns namespace of type
* @return mixed
* @access public
* @deprecated
*/
function getPHPType($type,$ns){
if(isset($this->typemap[$ns][$type])){
//print "found type '$type' and ns $ns in typemap<br>";
return $this->typemap[$ns][$type];
} elseif(isset($this->complexTypes[$type])){
//print "getting type '$type' and ns $ns from complexTypes array<br>";
return $this->complexTypes[$type]['phpType'];
}
return false;
}
/**
* returns an associative array of information about a given type
* returns false if no type exists by the given name
*
* For a complexType typeDef = array(
* 'restrictionBase' => '',
* 'phpType' => '',
* 'compositor' => '(sequence|all)',
* 'elements' => array(), // refs to elements array
* 'attrs' => array() // refs to attributes array
* ... and so on (see addComplexType)
* )
*
* For simpleType or element, the array has different keys.
*
* @param string $type
* @return mixed
* @access public
* @see addComplexType
* @see addSimpleType
* @see addElement
*/
function getTypeDef($type){
//$this->debug("in getTypeDef for type $type");
if (substr($type, -1) == '^') {
$is_element = 1;
$type = substr($type, 0, -1);
} else {
$is_element = 0;
}
if((! $is_element) && isset($this->complexTypes[$type])){
$this->xdebug("in getTypeDef, found complexType $type");
return $this->complexTypes[$type];
} elseif((! $is_element) && isset($this->simpleTypes[$type])){
$this->xdebug("in getTypeDef, found simpleType $type");
if (!isset($this->simpleTypes[$type]['phpType'])) {
// get info for type to tack onto the simple type
// TODO: can this ever really apply (i.e. what is a simpleType really?)
$uqType = substr($this->simpleTypes[$type]['type'], strrpos($this->simpleTypes[$type]['type'], ':') + 1);
$ns = substr($this->simpleTypes[$type]['type'], 0, strrpos($this->simpleTypes[$type]['type'], ':'));
$etype = $this->getTypeDef($uqType);
if ($etype) {
$this->xdebug("in getTypeDef, found type for simpleType $type:");
$this->xdebug($this->varDump($etype));
if (isset($etype['phpType'])) {
$this->simpleTypes[$type]['phpType'] = $etype['phpType'];
}
if (isset($etype['elements'])) {
$this->simpleTypes[$type]['elements'] = $etype['elements'];
}
}
}
return $this->simpleTypes[$type];
} elseif(isset($this->elements[$type])){
$this->xdebug("in getTypeDef, found element $type");
if (!isset($this->elements[$type]['phpType'])) {
// get info for type to tack onto the element
$uqType = substr($this->elements[$type]['type'], strrpos($this->elements[$type]['type'], ':') + 1);
$ns = substr($this->elements[$type]['type'], 0, strrpos($this->elements[$type]['type'], ':'));
$etype = $this->getTypeDef($uqType);
if ($etype) {
$this->xdebug("in getTypeDef, found type for element $type:");
$this->xdebug($this->varDump($etype));
if (isset($etype['phpType'])) {
$this->elements[$type]['phpType'] = $etype['phpType'];
}
if (isset($etype['elements'])) {
$this->elements[$type]['elements'] = $etype['elements'];
}
if (isset($etype['extensionBase'])) {
$this->elements[$type]['extensionBase'] = $etype['extensionBase'];
}
} elseif ($ns == 'http://www.w3.org/2001/XMLSchema') {
$this->xdebug("in getTypeDef, element $type is an XSD type");
$this->elements[$type]['phpType'] = 'scalar';
}
}
return $this->elements[$type];
} elseif(isset($this->attributes[$type])){
$this->xdebug("in getTypeDef, found attribute $type");
return $this->attributes[$type];
} elseif (preg_match('/_ContainedType$/', $type)) {
$this->xdebug("in getTypeDef, have an untyped element $type");
$typeDef['typeClass'] = 'simpleType';
$typeDef['phpType'] = 'scalar';
$typeDef['type'] = 'http://www.w3.org/2001/XMLSchema:string';
return $typeDef;
}
$this->xdebug("in getTypeDef, did not find $type");
return false;
}
/**
* returns a sample serialization of a given type, or false if no type by the given name
*
* @param string $type name of type
* @return mixed
* @access public
* @deprecated
*/
function serializeTypeDef($type){
//print "in sTD() for type $type<br>";
if($typeDef = $this->getTypeDef($type)){
$str .= '<'.$type;
if(is_array($typeDef['attrs'])){
foreach($typeDef['attrs'] as $attName => $data){
$str .= " $attName=\"{type = ".$data['type']."}\"";
}
}
$str .= " xmlns=\"".$this->schema['targetNamespace']."\"";
if(count($typeDef['elements']) > 0){
$str .= ">";
foreach($typeDef['elements'] as $element => $eData){
$str .= $this->serializeTypeDef($element);
}
$str .= "</$type>";
} elseif($typeDef['typeClass'] == 'element') {
$str .= "></$type>";
} else {
$str .= "/>";
}
return $str;
}
return false;
}
/**
* returns HTML form elements that allow a user
* to enter values for creating an instance of the given type.
*
* @param string $name name for type instance
* @param string $type name of type
* @return string
* @access public
* @deprecated
*/
function typeToForm($name,$type){
// get typedef
if($typeDef = $this->getTypeDef($type)){
// if struct
if($typeDef['phpType'] == 'struct'){
$buffer .= '<table>';
foreach($typeDef['elements'] as $child => $childDef){
$buffer .= "
<tr><td align='right'>$childDef[name] (type: ".$this->getLocalPart($childDef['type'])."):</td>
<td><input type='text' name='parameters[".$name."][$childDef[name]]'></td></tr>";
}
$buffer .= '</table>';
// if array
} elseif($typeDef['phpType'] == 'array'){
$buffer .= '<table>';
for($i=0;$i < 3; $i++){
$buffer .= "
<tr><td align='right'>array item (type: $typeDef[arrayType]):</td>
<td><input type='text' name='parameters[".$name."][]'></td></tr>";
}
$buffer .= '</table>';
// if scalar
} else {
$buffer .= "<input type='text' name='parameters[$name]'>";
}
} else {
$buffer .= "<input type='text' name='parameters[$name]'>";
}
return $buffer;
}
/**
* adds a complex type to the schema
*
* example: array
*
* addType(
* 'ArrayOfstring',
* 'complexType',
* 'array',
* '',
* 'SOAP-ENC:Array',
* array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'string[]'),
* 'xsd:string'
* );
*
* example: PHP associative array ( SOAP Struct )
*
* addType(
* 'SOAPStruct',
* 'complexType',
* 'struct',
* 'all',
* array('myVar'=> array('name'=>'myVar','type'=>'string')
* );
*
* @param name
* @param typeClass (complexType|simpleType|attribute)
* @param phpType: currently supported are array and struct (php assoc array)
* @param compositor (all|sequence|choice)
* @param restrictionBase namespace:name (http://schemas.xmlsoap.org/soap/encoding/:Array)
* @param elements = array ( name = array(name=>'',type=>'') )
* @param attrs = array(
* array(
* 'ref' => "http://schemas.xmlsoap.org/soap/encoding/:arrayType",
* "http://schemas.xmlsoap.org/wsdl/:arrayType" => "string[]"
* )
* )
* @param arrayType: namespace:name (http://www.w3.org/2001/XMLSchema:string)
* @access public
* @see getTypeDef
*/
function addComplexType($name,$typeClass='complexType',$phpType='array',$compositor='',$restrictionBase='',$elements=array(),$attrs=array(),$arrayType=''){
$this->complexTypes[$name] = array(
'name' => $name,
'typeClass' => $typeClass,
'phpType' => $phpType,
'compositor'=> $compositor,
'restrictionBase' => $restrictionBase,
'elements' => $elements,
'attrs' => $attrs,
'arrayType' => $arrayType
);
$this->xdebug("addComplexType $name:");
$this->appendDebug($this->varDump($this->complexTypes[$name]));
}
/**
* adds a simple type to the schema
*
* @param string $name
* @param string $restrictionBase namespace:name (http://schemas.xmlsoap.org/soap/encoding/:Array)
* @param string $typeClass (should always be simpleType)
* @param string $phpType (should always be scalar)
* @param array $enumeration array of values
* @access public
* @see nusoap_xmlschema
* @see getTypeDef
*/
function addSimpleType($name, $restrictionBase='', $typeClass='simpleType', $phpType='scalar', $enumeration=array()) {
$this->simpleTypes[$name] = array(
'name' => $name,
'typeClass' => $typeClass,
'phpType' => $phpType,
'type' => $restrictionBase,
'enumeration' => $enumeration
);
$this->xdebug("addSimpleType $name:");
$this->appendDebug($this->varDump($this->simpleTypes[$name]));
}
/**
* adds an element to the schema
*
* @param array $attrs attributes that must include name and type
* @see nusoap_xmlschema
* @access public
*/
function addElement($attrs) {
if (! $this->getPrefix($attrs['type'])) {
$attrs['type'] = $this->schemaTargetNamespace . ':' . $attrs['type'];
}
$this->elements[ $attrs['name'] ] = $attrs;
$this->elements[ $attrs['name'] ]['typeClass'] = 'element';
$this->xdebug("addElement " . $attrs['name']);
$this->appendDebug($this->varDump($this->elements[ $attrs['name'] ]));
}
}
/**
* Backward compatibility
*/
class XMLSchema extends nusoap_xmlschema {
}
?>

View File

@@ -1,11 +0,0 @@
D/__filesource////
D/media////
D/nusoap////
/blank.html/1.1/Mon Apr 26 19:16:48 2010//
/packages.html/1.1/Mon Apr 26 19:16:48 2010//
/classtrees_nusoap.html/1.2/Mon Apr 26 19:16:48 2010//
/elementindex.html/1.2/Mon Apr 26 19:16:48 2010//
/elementindex_nusoap.html/1.2/Mon Apr 26 19:16:48 2010//
/errors.html/1.2/Mon Apr 26 19:17:11 2010//
/index.html/1.2/Mon Apr 26 19:16:48 2010//
/li_nusoap.html/1.2/Mon Apr 26 19:16:48 2010//

View File

@@ -1 +0,0 @@
docs

View File

@@ -1 +0,0 @@
:ext:snichol@nusoap.cvs.sourceforge.net:/cvsroot/nusoap

View File

@@ -1,4 +0,0 @@
/fsource_nusoap__class.wsdlcache.php.html/1.2/Mon Apr 26 19:25:21 2010//
/fsource_nusoap__nusoap.php.html/1.2/Mon Apr 26 19:25:21 2010//
/fsource_nusoap__nusoapmime.php.html/1.2/Mon Apr 26 19:25:21 2010//
D

View File

@@ -1 +0,0 @@
docs/__filesource

View File

@@ -1 +0,0 @@
:ext:snichol@nusoap.cvs.sourceforge.net:/cvsroot/nusoap

View File

@@ -1,229 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>File Source for class.wsdlcache.php</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<h1>Source for file class.wsdlcache.php</h1>
<p>Documentation is available at <a href="../nusoap/_class_wsdlcache_php.html">class.wsdlcache.php</a></p>
<div class="src-code">
<pre><ol><li><a name="a1"></a><span class="src-php">&lt;?php</span></li>
<li><a name="a2"></a><span class="src-comm">/*</span></li>
<li><a name="a3"></a><span class="src-comm">The NuSOAP project home is:</span></li>
<li><a name="a4"></a><span class="src-comm">http://sourceforge.net/projects/nusoap/</span></li>
<li><a name="a5"></a>&nbsp;</li>
<li><a name="a6"></a><span class="src-comm">The primary support for NuSOAP is the mailing list:</span></li>
<li><a name="a7"></a><span class="src-comm">nusoap-general@lists.sourceforge.net</span></li>
<li><a name="a8"></a><span class="src-comm">*/</span></li>
<li><a name="a9"></a>&nbsp;</li>
<li><a name="a10"></a><span class="src-doc">/**</span></li>
<li><a name="a11"></a><span class="src-doc">* caches instances of the wsdl class</span></li>
<li><a name="a12"></a><span class="src-doc">* </span></li>
<li><a name="a13"></a><span class="src-doc">* </span><span class="src-doc-coretag">@author</span><span class="src-doc"> Scott Nichol &lt;snichol@users.sourceforge.net&gt;</span></li>
<li><a name="a14"></a><span class="src-doc">* </span><span class="src-doc-coretag">@author</span><span class="src-doc"> Ingo Fischer &lt;ingo@apollon.de&gt;</span></li>
<li><a name="a15"></a><span class="src-doc">* </span><span class="src-doc-coretag">@version</span><span class="src-doc"> $Id: fsource_nusoap__class.wsdlcache.php.html,v 1.2 2010/04/26 20:25:21 snichol Exp $</span></li>
<li><a name="a16"></a><span class="src-doc">* </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></li>
<li><a name="a17"></a><span class="src-doc">*/</span></li>
<li><a name="a18"></a><span class="src-key">class </span><a href="../nusoap/nusoap_wsdlcache.html">nusoap_wsdlcache</a> <span class="src-sym">{</span></li>
<li><a name="a19"></a> <span class="src-doc">/**</span></li>
<li><a name="a20"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">resource </span></li>
<li><a name="a21"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a22"></a><span class="src-doc"> */</span></li>
<li><a name="a23"></a> <span class="src-key">var </span><a href="../nusoap/nusoap_wsdlcache.html#var$fplock">$fplock</a><span class="src-sym">;</span></li>
<li><a name="a24"></a> <span class="src-doc">/**</span></li>
<li><a name="a25"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">integer </span></li>
<li><a name="a26"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a27"></a><span class="src-doc"> */</span></li>
<li><a name="a28"></a> <span class="src-key">var </span><a href="../nusoap/nusoap_wsdlcache.html#var$cache_lifetime">$cache_lifetime</a><span class="src-sym">;</span></li>
<li><a name="a29"></a> <span class="src-doc">/**</span></li>
<li><a name="a30"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">string </span></li>
<li><a name="a31"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a32"></a><span class="src-doc"> */</span></li>
<li><a name="a33"></a> <span class="src-key">var </span><a href="../nusoap/nusoap_wsdlcache.html#var$cache_dir">$cache_dir</a><span class="src-sym">;</span></li>
<li><a name="a34"></a> <span class="src-doc">/**</span></li>
<li><a name="a35"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">string </span></li>
<li><a name="a36"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></li>
<li><a name="a37"></a><span class="src-doc"> */</span></li>
<li><a name="a38"></a> <span class="src-key">var </span><a href="../nusoap/nusoap_wsdlcache.html#var$debug_str">$debug_str</a> = <span class="src-str">''</span><span class="src-sym">;</span></li>
<li><a name="a39"></a>&nbsp;</li>
<li><a name="a40"></a> <span class="src-doc">/**</span></li>
<li><a name="a41"></a><span class="src-doc"> * constructor</span></li>
<li><a name="a42"></a><span class="src-doc"> *</span></li>
<li><a name="a43"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$cache_dir </span><span class="src-doc">directory for cache-files</span></li>
<li><a name="a44"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">integer </span><span class="src-doc-var">$cache_lifetime </span><span class="src-doc">lifetime for caching-files in seconds or 0 for unlimited</span></li>
<li><a name="a45"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></li>
<li><a name="a46"></a><span class="src-doc"> */</span></li>
<li><a name="a47"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_wsdlcache.html#methodnusoap_wsdlcache">nusoap_wsdlcache</a><span class="src-sym">(</span><span class="src-var">$cache_dir</span>=<span class="src-str">'.'</span><span class="src-sym">, </span><span class="src-var">$cache_lifetime</span>=<span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a48"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#var$fplock">fplock</a> = <span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a49"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#var$cache_dir">cache_dir</a> = <span class="src-var">$cache_dir </span>!= <span class="src-str">'' </span>? <span class="src-var">$cache_dir </span>: <span class="src-str">'.'</span><span class="src-sym">;</span></li>
<li><a name="a50"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#var$cache_lifetime">cache_lifetime</a> = <span class="src-var">$cache_lifetime</span><span class="src-sym">;</span></li>
<li><a name="a51"></a> <span class="src-sym">}</span></li>
<li><a name="a52"></a>&nbsp;</li>
<li><a name="a53"></a> <span class="src-doc">/**</span></li>
<li><a name="a54"></a><span class="src-doc"> * creates the filename used to cache a wsdl instance</span></li>
<li><a name="a55"></a><span class="src-doc"> *</span></li>
<li><a name="a56"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$wsdl </span><span class="src-doc">The URL of the wsdl instance</span></li>
<li><a name="a57"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc">The filename used to cache the instance</span></li>
<li><a name="a58"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a59"></a><span class="src-doc"> */</span></li>
<li><a name="a60"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_wsdlcache.html#methodcreateFilename">createFilename</a><span class="src-sym">(</span><span class="src-var">$wsdl</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a61"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#var$cache_dir">cache_dir</a>.<span class="src-str">'/wsdlcache-' </span>. <a href="http://www.php.net/md5">md5</a><span class="src-sym">(</span><span class="src-var">$wsdl</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a62"></a> <span class="src-sym">}</span></li>
<li><a name="a63"></a>&nbsp;</li>
<li><a name="a64"></a> <span class="src-doc">/**</span></li>
<li><a name="a65"></a><span class="src-doc"> * adds debug data to the class level debug string</span></li>
<li><a name="a66"></a><span class="src-doc"> *</span></li>
<li><a name="a67"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc"> </span><span class="src-doc-type">string </span><span class="src-doc-var">$string </span><span class="src-doc">debug data</span></li>
<li><a name="a68"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a69"></a><span class="src-doc"> */</span></li>
<li><a name="a70"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_wsdlcache.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-var">$string</span><span class="src-sym">)</span><span class="src-sym">{</span></li>
<li><a name="a71"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#var$debug_str">debug_str</a> .= <a href="http://www.php.net/get_class">get_class</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">)</span>.<span class="src-str">&quot;</span><span class="src-str">: <span class="src-var">$string</span>\n</span><span class="src-str">&quot;</span><span class="src-sym">;</span></li>
<li><a name="a72"></a> <span class="src-sym">}</span></li>
<li><a name="a73"></a>&nbsp;</li>
<li><a name="a74"></a> <span class="src-doc">/**</span></li>
<li><a name="a75"></a><span class="src-doc"> * gets a wsdl instance from the cache</span></li>
<li><a name="a76"></a><span class="src-doc"> *</span></li>
<li><a name="a77"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$wsdl </span><span class="src-doc">The URL of the wsdl instance</span></li>
<li><a name="a78"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">object </span><span class="src-doc-type">wsdl </span><span class="src-doc">The cached wsdl instance, null if the instance is not in the cache</span></li>
<li><a name="a79"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></li>
<li><a name="a80"></a><span class="src-doc"> */</span></li>
<li><a name="a81"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_wsdlcache.html#methodget">get</a><span class="src-sym">(</span><span class="src-var">$wsdl</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a82"></a> <span class="src-var">$filename </span>= <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methodcreateFilename">createFilename</a><span class="src-sym">(</span><span class="src-var">$wsdl</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a83"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methodobtainMutex">obtainMutex</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">, </span><span class="src-str">&quot;r&quot;</span><span class="src-sym">)) </span><span class="src-sym">{</span></li>
<li><a name="a84"></a> <span class="src-comm">// check for expired WSDL that must be removed from the cache</span></li>
<li><a name="a85"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#var$cache_lifetime">cache_lifetime</a> &gt; <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a86"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/file_exists">file_exists</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">) </span>&amp;&amp; <span class="src-sym">(</span><a href="http://www.php.net/time">time</a><span class="src-sym">(</span><span class="src-sym">) </span>- <a href="http://www.php.net/filemtime">filemtime</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">) </span>&gt; <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#var$cache_lifetime">cache_lifetime</a><span class="src-sym">)) </span><span class="src-sym">{</span></li>
<li><a name="a87"></a> <a href="http://www.php.net/unlink">unlink</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a88"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str">Expired <span class="src-var">$wsdl</span> (<span class="src-var">$filename</span>) from cache</span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a89"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methodreleaseMutex">releaseMutex</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a90"></a> <span class="src-key">return </span><span class="src-id">null</span><span class="src-sym">;</span></li>
<li><a name="a91"></a> <span class="src-sym">}</span></li>
<li><a name="a92"></a> <span class="src-sym">}</span></li>
<li><a name="a93"></a> <span class="src-comm">// see what there is to return</span></li>
<li><a name="a94"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/file_exists">file_exists</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)) </span><span class="src-sym">{</span></li>
<li><a name="a95"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str"><span class="src-var">$wsdl</span> (<span class="src-var">$filename</span>) not in cache (1)</span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a96"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methodreleaseMutex">releaseMutex</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a97"></a> <span class="src-key">return </span><span class="src-id">null</span><span class="src-sym">;</span></li>
<li><a name="a98"></a> <span class="src-sym">}</span></li>
<li><a name="a99"></a> <span class="src-var">$fp </span>= <span class="src-sym">@</span><a href="http://www.php.net/fopen">fopen</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">, </span><span class="src-str">&quot;r&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a100"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$fp</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a101"></a> <span class="src-var">$s </span>= <a href="http://www.php.net/implode">implode</a><span class="src-sym">(</span><span class="src-str">&quot;&quot;</span><span class="src-sym">, </span><span class="src-sym">@</span><a href="http://www.php.net/file">file</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">))</span><span class="src-sym">;</span></li>
<li><a name="a102"></a> <a href="http://www.php.net/fclose">fclose</a><span class="src-sym">(</span><span class="src-var">$fp</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a103"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str">Got <span class="src-var">$wsdl</span> (<span class="src-var">$filename</span>) from cache</span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a104"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></li>
<li><a name="a105"></a> <span class="src-var">$s </span>= <span class="src-id">null</span><span class="src-sym">;</span></li>
<li><a name="a106"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str"><span class="src-var">$wsdl</span> (<span class="src-var">$filename</span>) not in cache (2)</span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a107"></a> <span class="src-sym">}</span></li>
<li><a name="a108"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methodreleaseMutex">releaseMutex</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a109"></a> <span class="src-key">return </span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/is_null">is_null</a><span class="src-sym">(</span><span class="src-var">$s</span><span class="src-sym">)) </span>? <a href="http://www.php.net/unserialize">unserialize</a><span class="src-sym">(</span><span class="src-var">$s</span><span class="src-sym">) </span>: <span class="src-id">null</span><span class="src-sym">;</span></li>
<li><a name="a110"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></li>
<li><a name="a111"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str">Unable to obtain mutex for <span class="src-var">$filename</span> in get</span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a112"></a> <span class="src-sym">}</span></li>
<li><a name="a113"></a> <span class="src-key">return </span><span class="src-id">null</span><span class="src-sym">;</span></li>
<li><a name="a114"></a> <span class="src-sym">}</span></li>
<li><a name="a115"></a>&nbsp;</li>
<li><a name="a116"></a> <span class="src-doc">/**</span></li>
<li><a name="a117"></a><span class="src-doc"> * obtains the local mutex</span></li>
<li><a name="a118"></a><span class="src-doc"> *</span></li>
<li><a name="a119"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$filename </span><span class="src-doc">The Filename of the Cache to lock</span></li>
<li><a name="a120"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$mode </span><span class="src-doc">The open-mode (&quot;r&quot; or &quot;w&quot;) or the file - affects lock-mode</span></li>
<li><a name="a121"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">boolean </span><span class="src-doc">Lock successfully obtained ?!</span></li>
<li><a name="a122"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a123"></a><span class="src-doc"> */</span></li>
<li><a name="a124"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_wsdlcache.html#methodobtainMutex">obtainMutex</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">, </span><span class="src-var">$mode</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a125"></a> <span class="src-key">if </span><span class="src-sym">(</span>isset<span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#var$fplock">fplock</a><span class="src-sym">[</span><a href="http://www.php.net/md5">md5</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)</span><span class="src-sym">]</span><span class="src-sym">)) </span><span class="src-sym">{</span></li>
<li><a name="a126"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str">Lock for <span class="src-var">$filename</span> already exists</span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a127"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></li>
<li><a name="a128"></a> <span class="src-sym">}</span></li>
<li><a name="a129"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#var$fplock">fplock</a><span class="src-sym">[</span><a href="http://www.php.net/md5">md5</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)</span><span class="src-sym">] </span>= <a href="http://www.php.net/fopen">fopen</a><span class="src-sym">(</span><span class="src-var">$filename</span>.<span class="src-str">&quot;.lock&quot;</span><span class="src-sym">, </span><span class="src-str">&quot;w&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a130"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$mode </span>== <span class="src-str">&quot;r&quot;</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a131"></a> <span class="src-key">return </span><a href="http://www.php.net/flock">flock</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#var$fplock">fplock</a><span class="src-sym">[</span><a href="http://www.php.net/md5">md5</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)</span><span class="src-sym">]</span><span class="src-sym">, </span><span class="src-id">LOCK_SH</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a132"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></li>
<li><a name="a133"></a> <span class="src-key">return </span><a href="http://www.php.net/flock">flock</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#var$fplock">fplock</a><span class="src-sym">[</span><a href="http://www.php.net/md5">md5</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)</span><span class="src-sym">]</span><span class="src-sym">, </span><span class="src-id">LOCK_EX</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a134"></a> <span class="src-sym">}</span></li>
<li><a name="a135"></a> <span class="src-sym">}</span></li>
<li><a name="a136"></a>&nbsp;</li>
<li><a name="a137"></a> <span class="src-doc">/**</span></li>
<li><a name="a138"></a><span class="src-doc"> * adds a wsdl instance to the cache</span></li>
<li><a name="a139"></a><span class="src-doc"> *</span></li>
<li><a name="a140"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">object </span><span class="src-doc-type">wsdl </span><span class="src-doc-var">$wsdl_instance </span><span class="src-doc">The wsdl instance to add</span></li>
<li><a name="a141"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">boolean </span><span class="src-doc">WSDL successfully cached</span></li>
<li><a name="a142"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></li>
<li><a name="a143"></a><span class="src-doc"> */</span></li>
<li><a name="a144"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_wsdlcache.html#methodput">put</a><span class="src-sym">(</span><span class="src-var">$wsdl_instance</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a145"></a> <span class="src-var">$filename </span>= <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methodcreateFilename">createFilename</a><span class="src-sym">(</span><span class="src-var">$wsdl_instance</span><span class="src-sym">-&gt;</span><span class="src-id">wsdl</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a146"></a> <span class="src-var">$s </span>= <a href="http://www.php.net/serialize">serialize</a><span class="src-sym">(</span><span class="src-var">$wsdl_instance</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a147"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methodobtainMutex">obtainMutex</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">, </span><span class="src-str">&quot;w&quot;</span><span class="src-sym">)) </span><span class="src-sym">{</span></li>
<li><a name="a148"></a> <span class="src-var">$fp </span>= <a href="http://www.php.net/fopen">fopen</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">, </span><span class="src-str">&quot;w&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a149"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">! </span><span class="src-var">$fp</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a150"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str">Cannot write <span class="src-var">$wsdl_instance</span><span class="src-sym">-&gt;</span><span class="src-id">wsdl</span> (<span class="src-var">$filename</span>) in cache</span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a151"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methodreleaseMutex">releaseMutex</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a152"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></li>
<li><a name="a153"></a> <span class="src-sym">}</span></li>
<li><a name="a154"></a> <a href="http://www.php.net/fputs">fputs</a><span class="src-sym">(</span><span class="src-var">$fp</span><span class="src-sym">, </span><span class="src-var">$s</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a155"></a> <a href="http://www.php.net/fclose">fclose</a><span class="src-sym">(</span><span class="src-var">$fp</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a156"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str">Put <span class="src-var">$wsdl_instance</span><span class="src-sym">-&gt;</span><span class="src-id">wsdl</span> (<span class="src-var">$filename</span>) in cache</span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a157"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methodreleaseMutex">releaseMutex</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a158"></a> <span class="src-key">return </span><span class="src-id">true</span><span class="src-sym">;</span></li>
<li><a name="a159"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></li>
<li><a name="a160"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str">Unable to obtain mutex for <span class="src-var">$filename</span> in put</span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a161"></a> <span class="src-sym">}</span></li>
<li><a name="a162"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></li>
<li><a name="a163"></a> <span class="src-sym">}</span></li>
<li><a name="a164"></a>&nbsp;</li>
<li><a name="a165"></a> <span class="src-doc">/**</span></li>
<li><a name="a166"></a><span class="src-doc"> * releases the local mutex</span></li>
<li><a name="a167"></a><span class="src-doc"> *</span></li>
<li><a name="a168"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$filename </span><span class="src-doc">The Filename of the Cache to lock</span></li>
<li><a name="a169"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">boolean </span><span class="src-doc">Lock successfully released</span></li>
<li><a name="a170"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a171"></a><span class="src-doc"> */</span></li>
<li><a name="a172"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_wsdlcache.html#methodreleaseMutex">releaseMutex</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a173"></a> <span class="src-var">$ret </span>= <a href="http://www.php.net/flock">flock</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#var$fplock">fplock</a><span class="src-sym">[</span><a href="http://www.php.net/md5">md5</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)</span><span class="src-sym">]</span><span class="src-sym">, </span><span class="src-id">LOCK_UN</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a174"></a> <a href="http://www.php.net/fclose">fclose</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#var$fplock">fplock</a><span class="src-sym">[</span><a href="http://www.php.net/md5">md5</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a175"></a> unset<span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#var$fplock">fplock</a><span class="src-sym">[</span><a href="http://www.php.net/md5">md5</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a176"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">! </span><span class="src-var">$ret</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a177"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str">Not able to release lock for <span class="src-var">$filename</span></span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a178"></a> <span class="src-sym">}</span></li>
<li><a name="a179"></a> <span class="src-key">return </span><span class="src-var">$ret</span><span class="src-sym">;</span></li>
<li><a name="a180"></a> <span class="src-sym">}</span></li>
<li><a name="a181"></a>&nbsp;</li>
<li><a name="a182"></a> <span class="src-doc">/**</span></li>
<li><a name="a183"></a><span class="src-doc"> * removes a wsdl instance from the cache</span></li>
<li><a name="a184"></a><span class="src-doc"> *</span></li>
<li><a name="a185"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$wsdl </span><span class="src-doc">The URL of the wsdl instance</span></li>
<li><a name="a186"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">boolean </span><span class="src-doc">Whether there was an instance to remove</span></li>
<li><a name="a187"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></li>
<li><a name="a188"></a><span class="src-doc"> */</span></li>
<li><a name="a189"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_wsdlcache.html#methodremove">remove</a><span class="src-sym">(</span><span class="src-var">$wsdl</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a190"></a> <span class="src-var">$filename </span>= <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methodcreateFilename">createFilename</a><span class="src-sym">(</span><span class="src-var">$wsdl</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a191"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/file_exists">file_exists</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)) </span><span class="src-sym">{</span></li>
<li><a name="a192"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str"><span class="src-var">$wsdl</span> (<span class="src-var">$filename</span>) not in cache to be removed</span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a193"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></li>
<li><a name="a194"></a> <span class="src-sym">}</span></li>
<li><a name="a195"></a> <span class="src-comm">// ignore errors obtaining mutex</span></li>
<li><a name="a196"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methodobtainMutex">obtainMutex</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">, </span><span class="src-str">&quot;w&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a197"></a> <span class="src-var">$ret </span>= <a href="http://www.php.net/unlink">unlink</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a198"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str">Removed (<span class="src-var">$ret</span>) <span class="src-var">$wsdl</span> (<span class="src-var">$filename</span>) from cache</span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a199"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_wsdlcache.html#methodreleaseMutex">releaseMutex</a><span class="src-sym">(</span><span class="src-var">$filename</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a200"></a> <span class="src-key">return </span><span class="src-var">$ret</span><span class="src-sym">;</span></li>
<li><a name="a201"></a> <span class="src-sym">}</span></li>
<li><a name="a202"></a><span class="src-sym">}</span></li>
<li><a name="a203"></a>&nbsp;</li>
<li><a name="a204"></a><span class="src-doc">/**</span></li>
<li><a name="a205"></a><span class="src-doc"> * For backward compatibility</span></li>
<li><a name="a206"></a><span class="src-doc"> */</span></li>
<li><a name="a207"></a><span class="src-key">class </span><a href="../nusoap/wsdlcache.html">wsdlcache</a> <span class="src-key">extends </span><a href="../nusoap/nusoap_wsdlcache.html#methodnusoap_wsdlcache">nusoap_wsdlcache</a> <span class="src-sym">{</span></li>
<li><a name="a208"></a><span class="src-sym">}</span></li>
<li><a name="a209"></a><span class="src-php">?&gt;</span></li>
</ol></pre>
</div>
<p class="notes" id="credit">
Documentation generated on Mon, 26 Apr 2010 16:16:49 -0400 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
</p>
</body>

View File

@@ -1,521 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>File Source for nusoapmime.php</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<h1>Source for file nusoapmime.php</h1>
<p>Documentation is available at <a href="../nusoap/_nusoapmime_php.html">nusoapmime.php</a></p>
<div class="src-code">
<pre><ol><li><a name="a1"></a><span class="src-php">&lt;?php</span></li>
<li><a name="a2"></a><span class="src-comm">/*</span></li>
<li><a name="a3"></a><span class="src-comm">$Id: fsource_nusoap__nusoapmime.php.html,v 1.2 2010/04/26 20:25:21 snichol Exp $</span></li>
<li><a name="a4"></a>&nbsp;</li>
<li><a name="a5"></a><span class="src-comm">NuSOAP - Web Services Toolkit for PHP</span></li>
<li><a name="a6"></a>&nbsp;</li>
<li><a name="a7"></a><span class="src-comm">Copyright (c) 2002 NuSphere Corporation</span></li>
<li><a name="a8"></a>&nbsp;</li>
<li><a name="a9"></a><span class="src-comm">This library is free software; you can redistribute it and/or</span></li>
<li><a name="a10"></a><span class="src-comm">modify it under the terms of the GNU Lesser General Public</span></li>
<li><a name="a11"></a><span class="src-comm">License as published by the Free Software Foundation; either</span></li>
<li><a name="a12"></a><span class="src-comm">version 2.1 of the License, or (at your option) any later version.</span></li>
<li><a name="a13"></a>&nbsp;</li>
<li><a name="a14"></a><span class="src-comm">This library is distributed in the hope that it will be useful,</span></li>
<li><a name="a15"></a><span class="src-comm">but WITHOUT ANY WARRANTY; without even the implied warranty of</span></li>
<li><a name="a16"></a><span class="src-comm">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></li>
<li><a name="a17"></a><span class="src-comm">Lesser General Public License for more details.</span></li>
<li><a name="a18"></a>&nbsp;</li>
<li><a name="a19"></a><span class="src-comm">You should have received a copy of the GNU Lesser General Public</span></li>
<li><a name="a20"></a><span class="src-comm">License along with this library; if not, write to the Free Software</span></li>
<li><a name="a21"></a><span class="src-comm">Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</span></li>
<li><a name="a22"></a>&nbsp;</li>
<li><a name="a23"></a><span class="src-comm">The NuSOAP project home is:</span></li>
<li><a name="a24"></a><span class="src-comm">http://sourceforge.net/projects/nusoap/</span></li>
<li><a name="a25"></a>&nbsp;</li>
<li><a name="a26"></a><span class="src-comm">The primary support for NuSOAP is the mailing list:</span></li>
<li><a name="a27"></a><span class="src-comm">nusoap-general@lists.sourceforge.net</span></li>
<li><a name="a28"></a>&nbsp;</li>
<li><a name="a29"></a><span class="src-comm">If you have any questions or comments, please email:</span></li>
<li><a name="a30"></a>&nbsp;</li>
<li><a name="a31"></a><span class="src-comm">Dietrich Ayala</span></li>
<li><a name="a32"></a><span class="src-comm">dietrich@ganx4.com</span></li>
<li><a name="a33"></a><span class="src-comm">http://dietrich.ganx4.com/nusoap</span></li>
<li><a name="a34"></a>&nbsp;</li>
<li><a name="a35"></a><span class="src-comm">NuSphere Corporation</span></li>
<li><a name="a36"></a><span class="src-comm">http://www.nusphere.com</span></li>
<li><a name="a37"></a>&nbsp;</li>
<li><a name="a38"></a><span class="src-comm">*/</span></li>
<li><a name="a39"></a>&nbsp;</li>
<li><a name="a40"></a><span class="src-comm">/*require_once('nusoap.php');*/</span></li>
<li><a name="a41"></a><span class="src-comm">/* PEAR Mail_MIME library */</span></li>
<li><a name="a42"></a><span class="src-inc">require_once</span><span class="src-sym">(</span><span class="src-str">'Mail/mimeDecode.php'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a43"></a><span class="src-inc">require_once</span><span class="src-sym">(</span><span class="src-str">'Mail/mimePart.php'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a44"></a>&nbsp;</li>
<li><a name="a45"></a><span class="src-doc">/**</span></li>
<li><a name="a46"></a><span class="src-doc">* nusoap_client_mime client supporting MIME attachments defined at</span></li>
<li><a name="a47"></a><span class="src-doc">* http://www.w3.org/TR/SOAP-attachments. It depends on the PEAR Mail_MIME library.</span></li>
<li><a name="a48"></a><span class="src-doc">*</span></li>
<li><a name="a49"></a><span class="src-doc">* </span><span class="src-doc-coretag">@author</span><span class="src-doc"> Scott Nichol &lt;snichol@users.sourceforge.net&gt;</span></li>
<li><a name="a50"></a><span class="src-doc">* </span><span class="src-doc-coretag">@author</span><span class="src-doc"> Thanks to Guillaume and Henning Reich for posting great attachment code to the mail list</span></li>
<li><a name="a51"></a><span class="src-doc">* </span><span class="src-doc-coretag">@version</span><span class="src-doc"> $Id: fsource_nusoap__nusoapmime.php.html,v 1.2 2010/04/26 20:25:21 snichol Exp $</span></li>
<li><a name="a52"></a><span class="src-doc">* </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></li>
<li><a name="a53"></a><span class="src-doc">*/</span></li>
<li><a name="a54"></a><span class="src-key">class </span><a href="../nusoap/nusoap_client_mime.html">nusoap_client_mime</a> <span class="src-key">extends </span><a href="../nusoap/nusoap_client.html#methodnusoap_client">nusoap_client</a> <span class="src-sym">{</span></li>
<li><a name="a55"></a> <span class="src-doc">/**</span></li>
<li><a name="a56"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">array </span><span class="src-doc">Each array element in the return is an associative array with keys</span></li>
<li><a name="a57"></a><span class="src-doc"> * data, filename, contenttype, cid</span></li>
<li><a name="a58"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a59"></a><span class="src-doc"> */</span></li>
<li><a name="a60"></a> <span class="src-key">var </span><a href="../nusoap/nusoap_client_mime.html#var$requestAttachments">$requestAttachments</a> = <span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a61"></a> <span class="src-doc">/**</span></li>
<li><a name="a62"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">array </span><span class="src-doc">Each array element in the return is an associative array with keys</span></li>
<li><a name="a63"></a><span class="src-doc"> * data, filename, contenttype, cid</span></li>
<li><a name="a64"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a65"></a><span class="src-doc"> */</span></li>
<li><a name="a66"></a> <span class="src-key">var </span><a href="../nusoap/nusoap_client_mime.html#var$responseAttachments">$responseAttachments</a><span class="src-sym">;</span></li>
<li><a name="a67"></a> <span class="src-doc">/**</span></li>
<li><a name="a68"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">string </span></li>
<li><a name="a69"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a70"></a><span class="src-doc"> */</span></li>
<li><a name="a71"></a> <span class="src-key">var </span><a href="../nusoap/nusoap_client_mime.html#var$mimeContentType">$mimeContentType</a><span class="src-sym">;</span></li>
<li><a name="a72"></a> </li>
<li><a name="a73"></a> <span class="src-doc">/**</span></li>
<li><a name="a74"></a><span class="src-doc"> * adds a MIME attachment to the current request.</span></li>
<li><a name="a75"></a><span class="src-doc"> *</span></li>
<li><a name="a76"></a><span class="src-doc"> * If the $data parameter contains an empty string, this method will read</span></li>
<li><a name="a77"></a><span class="src-doc"> * the contents of the file named by the $filename parameter.</span></li>
<li><a name="a78"></a><span class="src-doc"> *</span></li>
<li><a name="a79"></a><span class="src-doc"> * If the $cid parameter is false, this method will generate the cid.</span></li>
<li><a name="a80"></a><span class="src-doc"> *</span></li>
<li><a name="a81"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$data </span><span class="src-doc">The data of the attachment</span></li>
<li><a name="a82"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$filename </span><span class="src-doc">The filename of the attachment (default is empty string)</span></li>
<li><a name="a83"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$contenttype </span><span class="src-doc">The MIME Content-Type of the attachment (default is application/octet-stream)</span></li>
<li><a name="a84"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$cid </span><span class="src-doc">The content-id (cid) of the attachment (default is false)</span></li>
<li><a name="a85"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc">The content-id (cid) of the attachment</span></li>
<li><a name="a86"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></li>
<li><a name="a87"></a><span class="src-doc"> */</span></li>
<li><a name="a88"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_client_mime.html#methodaddAttachment">addAttachment</a><span class="src-sym">(</span><span class="src-var">$data</span><span class="src-sym">, </span><span class="src-var">$filename </span>= <span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$contenttype </span>= <span class="src-str">'application/octet-stream'</span><span class="src-sym">, </span><span class="src-var">$cid </span>= <span class="src-id">false</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a89"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">! </span><span class="src-var">$cid</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a90"></a> <span class="src-var">$cid </span>= <a href="http://www.php.net/md5">md5</a><span class="src-sym">(</span><a href="http://www.php.net/uniqid">uniqid</a><span class="src-sym">(</span><a href="http://www.php.net/time">time</a><span class="src-sym">(</span><span class="src-sym">)))</span><span class="src-sym">;</span></li>
<li><a name="a91"></a> <span class="src-sym">}</span></li>
<li><a name="a92"></a>&nbsp;</li>
<li><a name="a93"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-var">$data</span><span class="src-sym">;</span></li>
<li><a name="a94"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">] </span>= <span class="src-var">$filename</span><span class="src-sym">;</span></li>
<li><a name="a95"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'contenttype'</span><span class="src-sym">] </span>= <span class="src-var">$contenttype</span><span class="src-sym">;</span></li>
<li><a name="a96"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'cid'</span><span class="src-sym">] </span>= <span class="src-var">$cid</span><span class="src-sym">;</span></li>
<li><a name="a97"></a> </li>
<li><a name="a98"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_client_mime.html#var$requestAttachments">requestAttachments</a><span class="src-sym">[</span><span class="src-sym">] </span>= <span class="src-var">$info</span><span class="src-sym">;</span></li>
<li><a name="a99"></a>&nbsp;</li>
<li><a name="a100"></a> <span class="src-key">return </span><span class="src-var">$cid</span><span class="src-sym">;</span></li>
<li><a name="a101"></a> <span class="src-sym">}</span></li>
<li><a name="a102"></a>&nbsp;</li>
<li><a name="a103"></a> <span class="src-doc">/**</span></li>
<li><a name="a104"></a><span class="src-doc"> * clears the MIME attachments for the current request.</span></li>
<li><a name="a105"></a><span class="src-doc"> *</span></li>
<li><a name="a106"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></li>
<li><a name="a107"></a><span class="src-doc"> */</span></li>
<li><a name="a108"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_client_mime.html#methodclearAttachments">clearAttachments</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a109"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_client_mime.html#var$requestAttachments">requestAttachments</a> = <span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a110"></a> <span class="src-sym">}</span></li>
<li><a name="a111"></a>&nbsp;</li>
<li><a name="a112"></a> <span class="src-doc">/**</span></li>
<li><a name="a113"></a><span class="src-doc"> * gets the MIME attachments from the current response.</span></li>
<li><a name="a114"></a><span class="src-doc"> *</span></li>
<li><a name="a115"></a><span class="src-doc"> * Each array element in the return is an associative array with keys</span></li>
<li><a name="a116"></a><span class="src-doc"> * data, filename, contenttype, cid. These keys correspond to the parameters</span></li>
<li><a name="a117"></a><span class="src-doc"> * for addAttachment.</span></li>
<li><a name="a118"></a><span class="src-doc"> *</span></li>
<li><a name="a119"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array </span><span class="src-doc">The attachments.</span></li>
<li><a name="a120"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></li>
<li><a name="a121"></a><span class="src-doc"> */</span></li>
<li><a name="a122"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_client_mime.html#methodgetAttachments">getAttachments</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a123"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_client_mime.html#var$responseAttachments">responseAttachments</a><span class="src-sym">;</span></li>
<li><a name="a124"></a> <span class="src-sym">}</span></li>
<li><a name="a125"></a>&nbsp;</li>
<li><a name="a126"></a> <span class="src-doc">/**</span></li>
<li><a name="a127"></a><span class="src-doc"> * gets the HTTP body for the current request.</span></li>
<li><a name="a128"></a><span class="src-doc"> *</span></li>
<li><a name="a129"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$soapmsg </span><span class="src-doc">The SOAP payload</span></li>
<li><a name="a130"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc">The HTTP body, which includes the SOAP payload</span></li>
<li><a name="a131"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a132"></a><span class="src-doc"> */</span></li>
<li><a name="a133"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_client_mime.html#methodgetHTTPBody">getHTTPBody</a><span class="src-sym">(</span><span class="src-var">$soapmsg</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a134"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_client_mime.html#var$requestAttachments">requestAttachments</a><span class="src-sym">) </span>&gt; <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a135"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'content_type'</span><span class="src-sym">] </span>= <span class="src-str">'multipart/related; type=&quot;text/xml&quot;'</span><span class="src-sym">;</span></li>
<li><a name="a136"></a> <span class="src-var">$mimeMessage </span>= <span class="src-key">new </span><span class="src-id">Mail_mimePart</span><span class="src-sym">(</span><span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a137"></a> unset<span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a138"></a>&nbsp;</li>
<li><a name="a139"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'content_type'</span><span class="src-sym">] </span>= <span class="src-str">'text/xml'</span><span class="src-sym">;</span></li>
<li><a name="a140"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'encoding'</span><span class="src-sym">] </span>= <span class="src-str">'8bit'</span><span class="src-sym">;</span></li>
<li><a name="a141"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'charset'</span><span class="src-sym">] </span>= <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#var$soap_defencoding">soap_defencoding</a><span class="src-sym">;</span></li>
<li><a name="a142"></a> <span class="src-var">$mimeMessage</span><span class="src-sym">-&gt;</span><span class="src-id">addSubpart</span><span class="src-sym">(</span><span class="src-var">$soapmsg</span><span class="src-sym">, </span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a143"></a> </li>
<li><a name="a144"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_client_mime.html#var$requestAttachments">requestAttachments</a> <span class="src-key">as </span><span class="src-var">$att</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a145"></a> unset<span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a146"></a>&nbsp;</li>
<li><a name="a147"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'content_type'</span><span class="src-sym">] </span>= <span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'contenttype'</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a148"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'encoding'</span><span class="src-sym">] </span>= <span class="src-str">'base64'</span><span class="src-sym">;</span></li>
<li><a name="a149"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'disposition'</span><span class="src-sym">] </span>= <span class="src-str">'attachment'</span><span class="src-sym">;</span></li>
<li><a name="a150"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'dfilename'</span><span class="src-sym">] </span>= <span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a151"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'cid'</span><span class="src-sym">] </span>= <span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'cid'</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a152"></a>&nbsp;</li>
<li><a name="a153"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>== <span class="src-str">'' </span>&amp;&amp; <span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">] </span>&lt;&gt; <span class="src-str">''</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a154"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$fd </span>= <a href="http://www.php.net/fopen">fopen</a><span class="src-sym">(</span><span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">]</span><span class="src-sym">, </span><span class="src-str">'rb'</span><span class="src-sym">)) </span><span class="src-sym">{</span></li>
<li><a name="a155"></a> <span class="src-var">$data </span>= <a href="http://www.php.net/fread">fread</a><span class="src-sym">(</span><span class="src-var">$fd</span><span class="src-sym">, </span><a href="http://www.php.net/filesize">filesize</a><span class="src-sym">(</span><span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">]</span><span class="src-sym">))</span><span class="src-sym">;</span></li>
<li><a name="a156"></a> <a href="http://www.php.net/fclose">fclose</a><span class="src-sym">(</span><span class="src-var">$fd</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a157"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></li>
<li><a name="a158"></a> <span class="src-var">$data </span>= <span class="src-str">''</span><span class="src-sym">;</span></li>
<li><a name="a159"></a> <span class="src-sym">}</span></li>
<li><a name="a160"></a> <span class="src-var">$mimeMessage</span><span class="src-sym">-&gt;</span><span class="src-id">addSubpart</span><span class="src-sym">(</span><span class="src-var">$data</span><span class="src-sym">, </span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a161"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></li>
<li><a name="a162"></a> <span class="src-var">$mimeMessage</span><span class="src-sym">-&gt;</span><span class="src-id">addSubpart</span><span class="src-sym">(</span><span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">]</span><span class="src-sym">, </span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a163"></a> <span class="src-sym">}</span></li>
<li><a name="a164"></a> <span class="src-sym">}</span></li>
<li><a name="a165"></a>&nbsp;</li>
<li><a name="a166"></a> <span class="src-var">$output </span>= <span class="src-var">$mimeMessage</span><span class="src-sym">-&gt;</span><span class="src-id">encode</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a167"></a> <span class="src-var">$mimeHeaders </span>= <span class="src-var">$output</span><span class="src-sym">[</span><span class="src-str">'headers'</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a168"></a> </li>
<li><a name="a169"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$mimeHeaders </span><span class="src-key">as </span><span class="src-var">$k </span>=&gt; <span class="src-var">$v</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a170"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str">MIME header <span class="src-var">$k</span>: <span class="src-var">$v</span></span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a171"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/strtolower">strtolower</a><span class="src-sym">(</span><span class="src-var">$k</span><span class="src-sym">) </span>== <span class="src-str">'content-type'</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a172"></a> <span class="src-comm">// PHP header() seems to strip leading whitespace starting</span></li>
<li><a name="a173"></a> <span class="src-comm">// the second line, so force everything to one line</span></li>
<li><a name="a174"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_client_mime.html#var$mimeContentType">mimeContentType</a> = <a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">&quot;\r\n&quot;</span><span class="src-sym">, </span><span class="src-str">&quot; &quot;</span><span class="src-sym">, </span><span class="src-var">$v</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a175"></a> <span class="src-sym">}</span></li>
<li><a name="a176"></a> <span class="src-sym">}</span></li>
<li><a name="a177"></a> </li>
<li><a name="a178"></a> <span class="src-key">return </span><span class="src-var">$output</span><span class="src-sym">[</span><span class="src-str">'body'</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a179"></a> <span class="src-sym">}</span></li>
<li><a name="a180"></a>&nbsp;</li>
<li><a name="a181"></a> <span class="src-key">return </span><span class="src-id">parent</span><span class="src-sym">::</span><a href="../nusoap/nusoap_client.html#methodgetHTTPBody">getHTTPBody</a><span class="src-sym">(</span><span class="src-var">$soapmsg</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a182"></a> <span class="src-sym">}</span></li>
<li><a name="a183"></a> </li>
<li><a name="a184"></a> <span class="src-doc">/**</span></li>
<li><a name="a185"></a><span class="src-doc"> * gets the HTTP content type for the current request.</span></li>
<li><a name="a186"></a><span class="src-doc"> *</span></li>
<li><a name="a187"></a><span class="src-doc"> * Note: getHTTPBody must be called before this.</span></li>
<li><a name="a188"></a><span class="src-doc"> *</span></li>
<li><a name="a189"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc">the HTTP content type for the current request.</span></li>
<li><a name="a190"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a191"></a><span class="src-doc"> */</span></li>
<li><a name="a192"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_client_mime.html#methodgetHTTPContentType">getHTTPContentType</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a193"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_client_mime.html#var$requestAttachments">requestAttachments</a><span class="src-sym">) </span>&gt; <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a194"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_client_mime.html#var$mimeContentType">mimeContentType</a><span class="src-sym">;</span></li>
<li><a name="a195"></a> <span class="src-sym">}</span></li>
<li><a name="a196"></a> <span class="src-key">return </span><span class="src-id">parent</span><span class="src-sym">::</span><a href="../nusoap/nusoap_client.html#methodgetHTTPContentType">getHTTPContentType</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a197"></a> <span class="src-sym">}</span></li>
<li><a name="a198"></a> </li>
<li><a name="a199"></a> <span class="src-doc">/**</span></li>
<li><a name="a200"></a><span class="src-doc"> * gets the HTTP content type charset for the current request.</span></li>
<li><a name="a201"></a><span class="src-doc"> * returns false for non-text content types.</span></li>
<li><a name="a202"></a><span class="src-doc"> *</span></li>
<li><a name="a203"></a><span class="src-doc"> * Note: getHTTPBody must be called before this.</span></li>
<li><a name="a204"></a><span class="src-doc"> *</span></li>
<li><a name="a205"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc">the HTTP content type charset for the current request.</span></li>
<li><a name="a206"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a207"></a><span class="src-doc"> */</span></li>
<li><a name="a208"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_client_mime.html#methodgetHTTPContentTypeCharset">getHTTPContentTypeCharset</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a209"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_client_mime.html#var$requestAttachments">requestAttachments</a><span class="src-sym">) </span>&gt; <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a210"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></li>
<li><a name="a211"></a> <span class="src-sym">}</span></li>
<li><a name="a212"></a> <span class="src-key">return </span><span class="src-id">parent</span><span class="src-sym">::</span><a href="../nusoap/nusoap_client.html#methodgetHTTPContentTypeCharset">getHTTPContentTypeCharset</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a213"></a> <span class="src-sym">}</span></li>
<li><a name="a214"></a>&nbsp;</li>
<li><a name="a215"></a> <span class="src-doc">/**</span></li>
<li><a name="a216"></a><span class="src-doc"> * processes SOAP message returned from server</span></li>
<li><a name="a217"></a><span class="src-doc"> *</span></li>
<li><a name="a218"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc"> </span><span class="src-doc-type">array </span><span class="src-doc"> </span><span class="src-doc-var">$headers </span><span class="src-doc"> The HTTP headers</span></li>
<li><a name="a219"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc"> </span><span class="src-doc-type">string </span><span class="src-doc"> </span><span class="src-doc-var">$data </span><span class="src-doc"> unprocessed response data from server</span></li>
<li><a name="a220"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc"> </span><span class="src-doc-type">mixed </span><span class="src-doc"> value of the message, decoded into a PHP type</span></li>
<li><a name="a221"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a222"></a><span class="src-doc"> */</span></li>
<li><a name="a223"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_client_mime.html#methodparseResponse">parseResponse</a><span class="src-sym">(</span><span class="src-var">$headers</span><span class="src-sym">, </span><span class="src-var">$data</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a224"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">'Entering parseResponse() for payload of length ' </span>. <a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$data</span><span class="src-sym">) </span>. <span class="src-str">' and type of ' </span>. <span class="src-var">$headers</span><span class="src-sym">[</span><span class="src-str">'content-type'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a225"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_client_mime.html#var$responseAttachments">responseAttachments</a> = <span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a226"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/strstr">strstr</a><span class="src-sym">(</span><span class="src-var">$headers</span><span class="src-sym">[</span><span class="src-str">'content-type'</span><span class="src-sym">]</span><span class="src-sym">, </span><span class="src-str">'multipart/related'</span><span class="src-sym">)) </span><span class="src-sym">{</span></li>
<li><a name="a227"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">'Decode multipart/related'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a228"></a> <span class="src-var">$input </span>= <span class="src-str">''</span><span class="src-sym">;</span></li>
<li><a name="a229"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$headers </span><span class="src-key">as </span><span class="src-var">$k </span>=&gt; <span class="src-var">$v</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a230"></a> <span class="src-var">$input </span>.= <span class="src-str">&quot;</span><span class="src-str"><span class="src-var">$k</span>: <span class="src-var">$v</span>\r\n</span><span class="src-str">&quot;</span><span class="src-sym">;</span></li>
<li><a name="a231"></a> <span class="src-sym">}</span></li>
<li><a name="a232"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'input'</span><span class="src-sym">] </span>= <span class="src-var">$input </span>. <span class="src-str">&quot;\r\n&quot; </span>. <span class="src-var">$data</span><span class="src-sym">;</span></li>
<li><a name="a233"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'include_bodies'</span><span class="src-sym">] </span>= <span class="src-id">true</span><span class="src-sym">;</span></li>
<li><a name="a234"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'decode_bodies'</span><span class="src-sym">] </span>= <span class="src-id">true</span><span class="src-sym">;</span></li>
<li><a name="a235"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'decode_headers'</span><span class="src-sym">] </span>= <span class="src-id">true</span><span class="src-sym">;</span></li>
<li><a name="a236"></a> </li>
<li><a name="a237"></a> <span class="src-var">$structure </span>= <span class="src-id">Mail_mimeDecode</span><span class="src-sym">::</span><span class="src-id">decode</span><span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a238"></a>&nbsp;</li>
<li><a name="a239"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$structure</span><span class="src-sym">-&gt;</span><span class="src-id">parts </span><span class="src-key">as </span><span class="src-var">$part</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a240"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span>isset<span class="src-sym">(</span><span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">disposition</span><span class="src-sym">) </span>&amp;&amp; <span class="src-sym">(</span><a href="http://www.php.net/strstr">strstr</a><span class="src-sym">(</span><span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">headers</span><span class="src-sym">[</span><span class="src-str">'content-type'</span><span class="src-sym">]</span><span class="src-sym">, </span><span class="src-str">'text/xml'</span><span class="src-sym">))) </span><span class="src-sym">{</span></li>
<li><a name="a241"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">'Have root part of type ' </span>. <span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">headers</span><span class="src-sym">[</span><span class="src-str">'content-type'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a242"></a> <span class="src-var">$root </span>= <span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">body</span><span class="src-sym">;</span></li>
<li><a name="a243"></a> <span class="src-var">$return </span>= <span class="src-id">parent</span><span class="src-sym">::</span><a href="../nusoap/nusoap_client.html#methodparseResponse">parseResponse</a><span class="src-sym">(</span><span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">headers</span><span class="src-sym">, </span><span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">body</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a244"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></li>
<li><a name="a245"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">'Have an attachment of type ' </span>. <span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">headers</span><span class="src-sym">[</span><span class="src-str">'content-type'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a246"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">body</span><span class="src-sym">;</span></li>
<li><a name="a247"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">] </span>= isset<span class="src-sym">(</span><span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">d_parameters</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">]</span><span class="src-sym">) </span>? <span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">d_parameters</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">] </span>: <span class="src-str">''</span><span class="src-sym">;</span></li>
<li><a name="a248"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'contenttype'</span><span class="src-sym">] </span>= <span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">headers</span><span class="src-sym">[</span><span class="src-str">'content-type'</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a249"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'cid'</span><span class="src-sym">] </span>= <span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">headers</span><span class="src-sym">[</span><span class="src-str">'content-id'</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a250"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_client_mime.html#var$responseAttachments">responseAttachments</a><span class="src-sym">[</span><span class="src-sym">] </span>= <span class="src-var">$info</span><span class="src-sym">;</span></li>
<li><a name="a251"></a> <span class="src-sym">}</span></li>
<li><a name="a252"></a> <span class="src-sym">}</span></li>
<li><a name="a253"></a> </li>
<li><a name="a254"></a> <span class="src-key">if </span><span class="src-sym">(</span>isset<span class="src-sym">(</span><span class="src-var">$return</span><span class="src-sym">)) </span><span class="src-sym">{</span></li>
<li><a name="a255"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_client.html#var$responseData">responseData</a> = <span class="src-var">$root</span><span class="src-sym">;</span></li>
<li><a name="a256"></a> <span class="src-key">return </span><span class="src-var">$return</span><span class="src-sym">;</span></li>
<li><a name="a257"></a> <span class="src-sym">}</span></li>
<li><a name="a258"></a> </li>
<li><a name="a259"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#methodsetError">setError</a><span class="src-sym">(</span><span class="src-str">'No root part found in multipart/related content'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a260"></a> <span class="src-key">return </span><span class="src-str">''</span><span class="src-sym">;</span></li>
<li><a name="a261"></a> <span class="src-sym">}</span></li>
<li><a name="a262"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">'Not multipart/related'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a263"></a> <span class="src-key">return </span><span class="src-id">parent</span><span class="src-sym">::</span><a href="../nusoap/nusoap_client.html#methodparseResponse">parseResponse</a><span class="src-sym">(</span><span class="src-var">$headers</span><span class="src-sym">, </span><span class="src-var">$data</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a264"></a> <span class="src-sym">}</span></li>
<li><a name="a265"></a><span class="src-sym">}</span></li>
<li><a name="a266"></a>&nbsp;</li>
<li><a name="a267"></a><span class="src-comm">/*</span></li>
<li><a name="a268"></a><span class="src-comm"> * For backwards compatiblity, define soapclientmime unless the PHP SOAP extension is loaded.</span></li>
<li><a name="a269"></a><span class="src-comm"> */</span></li>
<li><a name="a270"></a><span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span><a href="http://www.php.net/extension_loaded">extension_loaded</a><span class="src-sym">(</span><span class="src-str">'soap'</span><span class="src-sym">)) </span><span class="src-sym">{</span></li>
<li><a name="a271"></a> <span class="src-key">class </span><a href="../nusoap/soapclientmime.html">soapclientmime</a> <span class="src-key">extends </span><a href="../nusoap/nusoap_client_mime.html">nusoap_client_mime</a> <span class="src-sym">{</span></li>
<li><a name="a272"></a> <span class="src-sym">}</span></li>
<li><a name="a273"></a><span class="src-sym">}</span></li>
<li><a name="a274"></a>&nbsp;</li>
<li><a name="a275"></a><span class="src-doc">/**</span></li>
<li><a name="a276"></a><span class="src-doc">* nusoap_server_mime server supporting MIME attachments defined at</span></li>
<li><a name="a277"></a><span class="src-doc">* http://www.w3.org/TR/SOAP-attachments. It depends on the PEAR Mail_MIME library.</span></li>
<li><a name="a278"></a><span class="src-doc">*</span></li>
<li><a name="a279"></a><span class="src-doc">* </span><span class="src-doc-coretag">@author</span><span class="src-doc"> Scott Nichol &lt;snichol@users.sourceforge.net&gt;</span></li>
<li><a name="a280"></a><span class="src-doc">* </span><span class="src-doc-coretag">@author</span><span class="src-doc"> Thanks to Guillaume and Henning Reich for posting great attachment code to the mail list</span></li>
<li><a name="a281"></a><span class="src-doc">* </span><span class="src-doc-coretag">@version</span><span class="src-doc"> $Id: fsource_nusoap__nusoapmime.php.html,v 1.2 2010/04/26 20:25:21 snichol Exp $</span></li>
<li><a name="a282"></a><span class="src-doc">* </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></li>
<li><a name="a283"></a><span class="src-doc">*/</span></li>
<li><a name="a284"></a><span class="src-key">class </span><a href="../nusoap/nusoap_server_mime.html">nusoap_server_mime</a> <span class="src-key">extends </span><a href="../nusoap/nusoap_server.html#methodnusoap_server">nusoap_server</a> <span class="src-sym">{</span></li>
<li><a name="a285"></a> <span class="src-doc">/**</span></li>
<li><a name="a286"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">array </span><span class="src-doc">Each array element in the return is an associative array with keys</span></li>
<li><a name="a287"></a><span class="src-doc"> * data, filename, contenttype, cid</span></li>
<li><a name="a288"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a289"></a><span class="src-doc"> */</span></li>
<li><a name="a290"></a> <span class="src-key">var </span><a href="../nusoap/nusoap_server_mime.html#var$requestAttachments">$requestAttachments</a> = <span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a291"></a> <span class="src-doc">/**</span></li>
<li><a name="a292"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">array </span><span class="src-doc">Each array element in the return is an associative array with keys</span></li>
<li><a name="a293"></a><span class="src-doc"> * data, filename, contenttype, cid</span></li>
<li><a name="a294"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a295"></a><span class="src-doc"> */</span></li>
<li><a name="a296"></a> <span class="src-key">var </span><a href="../nusoap/nusoap_server_mime.html#var$responseAttachments">$responseAttachments</a><span class="src-sym">;</span></li>
<li><a name="a297"></a> <span class="src-doc">/**</span></li>
<li><a name="a298"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">string </span></li>
<li><a name="a299"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a300"></a><span class="src-doc"> */</span></li>
<li><a name="a301"></a> <span class="src-key">var </span><a href="../nusoap/nusoap_server_mime.html#var$mimeContentType">$mimeContentType</a><span class="src-sym">;</span></li>
<li><a name="a302"></a> </li>
<li><a name="a303"></a> <span class="src-doc">/**</span></li>
<li><a name="a304"></a><span class="src-doc"> * adds a MIME attachment to the current response.</span></li>
<li><a name="a305"></a><span class="src-doc"> *</span></li>
<li><a name="a306"></a><span class="src-doc"> * If the $data parameter contains an empty string, this method will read</span></li>
<li><a name="a307"></a><span class="src-doc"> * the contents of the file named by the $filename parameter.</span></li>
<li><a name="a308"></a><span class="src-doc"> *</span></li>
<li><a name="a309"></a><span class="src-doc"> * If the $cid parameter is false, this method will generate the cid.</span></li>
<li><a name="a310"></a><span class="src-doc"> *</span></li>
<li><a name="a311"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$data </span><span class="src-doc">The data of the attachment</span></li>
<li><a name="a312"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$filename </span><span class="src-doc">The filename of the attachment (default is empty string)</span></li>
<li><a name="a313"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$contenttype </span><span class="src-doc">The MIME Content-Type of the attachment (default is application/octet-stream)</span></li>
<li><a name="a314"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$cid </span><span class="src-doc">The content-id (cid) of the attachment (default is false)</span></li>
<li><a name="a315"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc">The content-id (cid) of the attachment</span></li>
<li><a name="a316"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></li>
<li><a name="a317"></a><span class="src-doc"> */</span></li>
<li><a name="a318"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_server_mime.html#methodaddAttachment">addAttachment</a><span class="src-sym">(</span><span class="src-var">$data</span><span class="src-sym">, </span><span class="src-var">$filename </span>= <span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$contenttype </span>= <span class="src-str">'application/octet-stream'</span><span class="src-sym">, </span><span class="src-var">$cid </span>= <span class="src-id">false</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a319"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">! </span><span class="src-var">$cid</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a320"></a> <span class="src-var">$cid </span>= <a href="http://www.php.net/md5">md5</a><span class="src-sym">(</span><a href="http://www.php.net/uniqid">uniqid</a><span class="src-sym">(</span><a href="http://www.php.net/time">time</a><span class="src-sym">(</span><span class="src-sym">)))</span><span class="src-sym">;</span></li>
<li><a name="a321"></a> <span class="src-sym">}</span></li>
<li><a name="a322"></a>&nbsp;</li>
<li><a name="a323"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-var">$data</span><span class="src-sym">;</span></li>
<li><a name="a324"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">] </span>= <span class="src-var">$filename</span><span class="src-sym">;</span></li>
<li><a name="a325"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'contenttype'</span><span class="src-sym">] </span>= <span class="src-var">$contenttype</span><span class="src-sym">;</span></li>
<li><a name="a326"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'cid'</span><span class="src-sym">] </span>= <span class="src-var">$cid</span><span class="src-sym">;</span></li>
<li><a name="a327"></a> </li>
<li><a name="a328"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_server_mime.html#var$responseAttachments">responseAttachments</a><span class="src-sym">[</span><span class="src-sym">] </span>= <span class="src-var">$info</span><span class="src-sym">;</span></li>
<li><a name="a329"></a>&nbsp;</li>
<li><a name="a330"></a> <span class="src-key">return </span><span class="src-var">$cid</span><span class="src-sym">;</span></li>
<li><a name="a331"></a> <span class="src-sym">}</span></li>
<li><a name="a332"></a>&nbsp;</li>
<li><a name="a333"></a> <span class="src-doc">/**</span></li>
<li><a name="a334"></a><span class="src-doc"> * clears the MIME attachments for the current response.</span></li>
<li><a name="a335"></a><span class="src-doc"> *</span></li>
<li><a name="a336"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></li>
<li><a name="a337"></a><span class="src-doc"> */</span></li>
<li><a name="a338"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_server_mime.html#methodclearAttachments">clearAttachments</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a339"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_server_mime.html#var$responseAttachments">responseAttachments</a> = <span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a340"></a> <span class="src-sym">}</span></li>
<li><a name="a341"></a>&nbsp;</li>
<li><a name="a342"></a> <span class="src-doc">/**</span></li>
<li><a name="a343"></a><span class="src-doc"> * gets the MIME attachments from the current request.</span></li>
<li><a name="a344"></a><span class="src-doc"> *</span></li>
<li><a name="a345"></a><span class="src-doc"> * Each array element in the return is an associative array with keys</span></li>
<li><a name="a346"></a><span class="src-doc"> * data, filename, contenttype, cid. These keys correspond to the parameters</span></li>
<li><a name="a347"></a><span class="src-doc"> * for addAttachment.</span></li>
<li><a name="a348"></a><span class="src-doc"> *</span></li>
<li><a name="a349"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array </span><span class="src-doc">The attachments.</span></li>
<li><a name="a350"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> public</span></li>
<li><a name="a351"></a><span class="src-doc"> */</span></li>
<li><a name="a352"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_server_mime.html#methodgetAttachments">getAttachments</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a353"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_server_mime.html#var$requestAttachments">requestAttachments</a><span class="src-sym">;</span></li>
<li><a name="a354"></a> <span class="src-sym">}</span></li>
<li><a name="a355"></a>&nbsp;</li>
<li><a name="a356"></a> <span class="src-doc">/**</span></li>
<li><a name="a357"></a><span class="src-doc"> * gets the HTTP body for the current response.</span></li>
<li><a name="a358"></a><span class="src-doc"> *</span></li>
<li><a name="a359"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc-var">$soapmsg </span><span class="src-doc">The SOAP payload</span></li>
<li><a name="a360"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc">The HTTP body, which includes the SOAP payload</span></li>
<li><a name="a361"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a362"></a><span class="src-doc"> */</span></li>
<li><a name="a363"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_server_mime.html#methodgetHTTPBody">getHTTPBody</a><span class="src-sym">(</span><span class="src-var">$soapmsg</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a364"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_server_mime.html#var$responseAttachments">responseAttachments</a><span class="src-sym">) </span>&gt; <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a365"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'content_type'</span><span class="src-sym">] </span>= <span class="src-str">'multipart/related; type=&quot;text/xml&quot;'</span><span class="src-sym">;</span></li>
<li><a name="a366"></a> <span class="src-var">$mimeMessage </span>= <span class="src-key">new </span><span class="src-id">Mail_mimePart</span><span class="src-sym">(</span><span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a367"></a> unset<span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a368"></a>&nbsp;</li>
<li><a name="a369"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'content_type'</span><span class="src-sym">] </span>= <span class="src-str">'text/xml'</span><span class="src-sym">;</span></li>
<li><a name="a370"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'encoding'</span><span class="src-sym">] </span>= <span class="src-str">'8bit'</span><span class="src-sym">;</span></li>
<li><a name="a371"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'charset'</span><span class="src-sym">] </span>= <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#var$soap_defencoding">soap_defencoding</a><span class="src-sym">;</span></li>
<li><a name="a372"></a> <span class="src-var">$mimeMessage</span><span class="src-sym">-&gt;</span><span class="src-id">addSubpart</span><span class="src-sym">(</span><span class="src-var">$soapmsg</span><span class="src-sym">, </span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a373"></a> </li>
<li><a name="a374"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_server_mime.html#var$responseAttachments">responseAttachments</a> <span class="src-key">as </span><span class="src-var">$att</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a375"></a> unset<span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a376"></a>&nbsp;</li>
<li><a name="a377"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'content_type'</span><span class="src-sym">] </span>= <span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'contenttype'</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a378"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'encoding'</span><span class="src-sym">] </span>= <span class="src-str">'base64'</span><span class="src-sym">;</span></li>
<li><a name="a379"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'disposition'</span><span class="src-sym">] </span>= <span class="src-str">'attachment'</span><span class="src-sym">;</span></li>
<li><a name="a380"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'dfilename'</span><span class="src-sym">] </span>= <span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a381"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'cid'</span><span class="src-sym">] </span>= <span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'cid'</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a382"></a>&nbsp;</li>
<li><a name="a383"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>== <span class="src-str">'' </span>&amp;&amp; <span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">] </span>&lt;&gt; <span class="src-str">''</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a384"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$fd </span>= <a href="http://www.php.net/fopen">fopen</a><span class="src-sym">(</span><span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">]</span><span class="src-sym">, </span><span class="src-str">'rb'</span><span class="src-sym">)) </span><span class="src-sym">{</span></li>
<li><a name="a385"></a> <span class="src-var">$data </span>= <a href="http://www.php.net/fread">fread</a><span class="src-sym">(</span><span class="src-var">$fd</span><span class="src-sym">, </span><a href="http://www.php.net/filesize">filesize</a><span class="src-sym">(</span><span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">]</span><span class="src-sym">))</span><span class="src-sym">;</span></li>
<li><a name="a386"></a> <a href="http://www.php.net/fclose">fclose</a><span class="src-sym">(</span><span class="src-var">$fd</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a387"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></li>
<li><a name="a388"></a> <span class="src-var">$data </span>= <span class="src-str">''</span><span class="src-sym">;</span></li>
<li><a name="a389"></a> <span class="src-sym">}</span></li>
<li><a name="a390"></a> <span class="src-var">$mimeMessage</span><span class="src-sym">-&gt;</span><span class="src-id">addSubpart</span><span class="src-sym">(</span><span class="src-var">$data</span><span class="src-sym">, </span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a391"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></li>
<li><a name="a392"></a> <span class="src-var">$mimeMessage</span><span class="src-sym">-&gt;</span><span class="src-id">addSubpart</span><span class="src-sym">(</span><span class="src-var">$att</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">]</span><span class="src-sym">, </span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a393"></a> <span class="src-sym">}</span></li>
<li><a name="a394"></a> <span class="src-sym">}</span></li>
<li><a name="a395"></a>&nbsp;</li>
<li><a name="a396"></a> <span class="src-var">$output </span>= <span class="src-var">$mimeMessage</span><span class="src-sym">-&gt;</span><span class="src-id">encode</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a397"></a> <span class="src-var">$mimeHeaders </span>= <span class="src-var">$output</span><span class="src-sym">[</span><span class="src-str">'headers'</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a398"></a> </li>
<li><a name="a399"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$mimeHeaders </span><span class="src-key">as </span><span class="src-var">$k </span>=&gt; <span class="src-var">$v</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a400"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">&quot;</span><span class="src-str">MIME header <span class="src-var">$k</span>: <span class="src-var">$v</span></span><span class="src-str">&quot;</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a401"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/strtolower">strtolower</a><span class="src-sym">(</span><span class="src-var">$k</span><span class="src-sym">) </span>== <span class="src-str">'content-type'</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a402"></a> <span class="src-comm">// PHP header() seems to strip leading whitespace starting</span></li>
<li><a name="a403"></a> <span class="src-comm">// the second line, so force everything to one line</span></li>
<li><a name="a404"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_server_mime.html#var$mimeContentType">mimeContentType</a> = <a href="http://www.php.net/str_replace">str_replace</a><span class="src-sym">(</span><span class="src-str">&quot;\r\n&quot;</span><span class="src-sym">, </span><span class="src-str">&quot; &quot;</span><span class="src-sym">, </span><span class="src-var">$v</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a405"></a> <span class="src-sym">}</span></li>
<li><a name="a406"></a> <span class="src-sym">}</span></li>
<li><a name="a407"></a> </li>
<li><a name="a408"></a> <span class="src-key">return </span><span class="src-var">$output</span><span class="src-sym">[</span><span class="src-str">'body'</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a409"></a> <span class="src-sym">}</span></li>
<li><a name="a410"></a>&nbsp;</li>
<li><a name="a411"></a> <span class="src-key">return </span><span class="src-id">parent</span><span class="src-sym">::</span><a href="../nusoap/nusoap_server.html#methodgetHTTPBody">getHTTPBody</a><span class="src-sym">(</span><span class="src-var">$soapmsg</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a412"></a> <span class="src-sym">}</span></li>
<li><a name="a413"></a> </li>
<li><a name="a414"></a> <span class="src-doc">/**</span></li>
<li><a name="a415"></a><span class="src-doc"> * gets the HTTP content type for the current response.</span></li>
<li><a name="a416"></a><span class="src-doc"> *</span></li>
<li><a name="a417"></a><span class="src-doc"> * Note: getHTTPBody must be called before this.</span></li>
<li><a name="a418"></a><span class="src-doc"> *</span></li>
<li><a name="a419"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc">the HTTP content type for the current response.</span></li>
<li><a name="a420"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a421"></a><span class="src-doc"> */</span></li>
<li><a name="a422"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_server_mime.html#methodgetHTTPContentType">getHTTPContentType</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a423"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_server_mime.html#var$responseAttachments">responseAttachments</a><span class="src-sym">) </span>&gt; <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a424"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_server_mime.html#var$mimeContentType">mimeContentType</a><span class="src-sym">;</span></li>
<li><a name="a425"></a> <span class="src-sym">}</span></li>
<li><a name="a426"></a> <span class="src-key">return </span><span class="src-id">parent</span><span class="src-sym">::</span><a href="../nusoap/nusoap_server.html#methodgetHTTPContentType">getHTTPContentType</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a427"></a> <span class="src-sym">}</span></li>
<li><a name="a428"></a> </li>
<li><a name="a429"></a> <span class="src-doc">/**</span></li>
<li><a name="a430"></a><span class="src-doc"> * gets the HTTP content type charset for the current response.</span></li>
<li><a name="a431"></a><span class="src-doc"> * returns false for non-text content types.</span></li>
<li><a name="a432"></a><span class="src-doc"> *</span></li>
<li><a name="a433"></a><span class="src-doc"> * Note: getHTTPBody must be called before this.</span></li>
<li><a name="a434"></a><span class="src-doc"> *</span></li>
<li><a name="a435"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc">the HTTP content type charset for the current response.</span></li>
<li><a name="a436"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a437"></a><span class="src-doc"> */</span></li>
<li><a name="a438"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_server_mime.html#methodgetHTTPContentTypeCharset">getHTTPContentTypeCharset</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a439"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/count">count</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_server_mime.html#var$responseAttachments">responseAttachments</a><span class="src-sym">) </span>&gt; <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a440"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></li>
<li><a name="a441"></a> <span class="src-sym">}</span></li>
<li><a name="a442"></a> <span class="src-key">return </span><span class="src-id">parent</span><span class="src-sym">::</span><a href="../nusoap/nusoap_server.html#methodgetHTTPContentTypeCharset">getHTTPContentTypeCharset</a><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a443"></a> <span class="src-sym">}</span></li>
<li><a name="a444"></a>&nbsp;</li>
<li><a name="a445"></a> <span class="src-doc">/**</span></li>
<li><a name="a446"></a><span class="src-doc"> * processes SOAP message received from client</span></li>
<li><a name="a447"></a><span class="src-doc"> *</span></li>
<li><a name="a448"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc"> </span><span class="src-doc-type">array </span><span class="src-doc"> </span><span class="src-doc-var">$headers </span><span class="src-doc"> The HTTP headers</span></li>
<li><a name="a449"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc"> </span><span class="src-doc-type">string </span><span class="src-doc"> </span><span class="src-doc-var">$data </span><span class="src-doc"> unprocessed request data from client</span></li>
<li><a name="a450"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc"> </span><span class="src-doc-type">mixed </span><span class="src-doc"> value of the message, decoded into a PHP type</span></li>
<li><a name="a451"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@access</span><span class="src-doc"> private</span></li>
<li><a name="a452"></a><span class="src-doc"> */</span></li>
<li><a name="a453"></a> <span class="src-key">function </span><a href="../nusoap/nusoap_server_mime.html#methodparseRequest">parseRequest</a><span class="src-sym">(</span><span class="src-var">$headers</span><span class="src-sym">, </span><span class="src-var">$data</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a454"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">'Entering parseRequest() for payload of length ' </span>. <a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$data</span><span class="src-sym">) </span>. <span class="src-str">' and type of ' </span>. <span class="src-var">$headers</span><span class="src-sym">[</span><span class="src-str">'content-type'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a455"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_server_mime.html#var$requestAttachments">requestAttachments</a> = <span class="src-key">array</span><span class="src-sym">(</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a456"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/strstr">strstr</a><span class="src-sym">(</span><span class="src-var">$headers</span><span class="src-sym">[</span><span class="src-str">'content-type'</span><span class="src-sym">]</span><span class="src-sym">, </span><span class="src-str">'multipart/related'</span><span class="src-sym">)) </span><span class="src-sym">{</span></li>
<li><a name="a457"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">'Decode multipart/related'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a458"></a> <span class="src-var">$input </span>= <span class="src-str">''</span><span class="src-sym">;</span></li>
<li><a name="a459"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$headers </span><span class="src-key">as </span><span class="src-var">$k </span>=&gt; <span class="src-var">$v</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a460"></a> <span class="src-var">$input </span>.= <span class="src-str">&quot;</span><span class="src-str"><span class="src-var">$k</span>: <span class="src-var">$v</span>\r\n</span><span class="src-str">&quot;</span><span class="src-sym">;</span></li>
<li><a name="a461"></a> <span class="src-sym">}</span></li>
<li><a name="a462"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'input'</span><span class="src-sym">] </span>= <span class="src-var">$input </span>. <span class="src-str">&quot;\r\n&quot; </span>. <span class="src-var">$data</span><span class="src-sym">;</span></li>
<li><a name="a463"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'include_bodies'</span><span class="src-sym">] </span>= <span class="src-id">true</span><span class="src-sym">;</span></li>
<li><a name="a464"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'decode_bodies'</span><span class="src-sym">] </span>= <span class="src-id">true</span><span class="src-sym">;</span></li>
<li><a name="a465"></a> <span class="src-var">$params</span><span class="src-sym">[</span><span class="src-str">'decode_headers'</span><span class="src-sym">] </span>= <span class="src-id">true</span><span class="src-sym">;</span></li>
<li><a name="a466"></a> </li>
<li><a name="a467"></a> <span class="src-var">$structure </span>= <span class="src-id">Mail_mimeDecode</span><span class="src-sym">::</span><span class="src-id">decode</span><span class="src-sym">(</span><span class="src-var">$params</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a468"></a>&nbsp;</li>
<li><a name="a469"></a> <span class="src-key">foreach </span><span class="src-sym">(</span><span class="src-var">$structure</span><span class="src-sym">-&gt;</span><span class="src-id">parts </span><span class="src-key">as </span><span class="src-var">$part</span><span class="src-sym">) </span><span class="src-sym">{</span></li>
<li><a name="a470"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-sym">!</span>isset<span class="src-sym">(</span><span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">disposition</span><span class="src-sym">) </span>&amp;&amp; <span class="src-sym">(</span><a href="http://www.php.net/strstr">strstr</a><span class="src-sym">(</span><span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">headers</span><span class="src-sym">[</span><span class="src-str">'content-type'</span><span class="src-sym">]</span><span class="src-sym">, </span><span class="src-str">'text/xml'</span><span class="src-sym">))) </span><span class="src-sym">{</span></li>
<li><a name="a471"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">'Have root part of type ' </span>. <span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">headers</span><span class="src-sym">[</span><span class="src-str">'content-type'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a472"></a> <span class="src-var">$return </span>= <span class="src-id">parent</span><span class="src-sym">::</span><a href="../nusoap/nusoap_server.html#methodparseRequest">parseRequest</a><span class="src-sym">(</span><span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">headers</span><span class="src-sym">, </span><span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">body</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a473"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></li>
<li><a name="a474"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">'Have an attachment of type ' </span>. <span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">headers</span><span class="src-sym">[</span><span class="src-str">'content-type'</span><span class="src-sym">]</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a475"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'data'</span><span class="src-sym">] </span>= <span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">body</span><span class="src-sym">;</span></li>
<li><a name="a476"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">] </span>= isset<span class="src-sym">(</span><span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">d_parameters</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">]</span><span class="src-sym">) </span>? <span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">d_parameters</span><span class="src-sym">[</span><span class="src-str">'filename'</span><span class="src-sym">] </span>: <span class="src-str">''</span><span class="src-sym">;</span></li>
<li><a name="a477"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'contenttype'</span><span class="src-sym">] </span>= <span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">headers</span><span class="src-sym">[</span><span class="src-str">'content-type'</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a478"></a> <span class="src-var">$info</span><span class="src-sym">[</span><span class="src-str">'cid'</span><span class="src-sym">] </span>= <span class="src-var">$part</span><span class="src-sym">-&gt;</span><span class="src-id">headers</span><span class="src-sym">[</span><span class="src-str">'content-id'</span><span class="src-sym">]</span><span class="src-sym">;</span></li>
<li><a name="a479"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_server_mime.html#var$requestAttachments">requestAttachments</a><span class="src-sym">[</span><span class="src-sym">] </span>= <span class="src-var">$info</span><span class="src-sym">;</span></li>
<li><a name="a480"></a> <span class="src-sym">}</span></li>
<li><a name="a481"></a> <span class="src-sym">}</span></li>
<li><a name="a482"></a> </li>
<li><a name="a483"></a> <span class="src-key">if </span><span class="src-sym">(</span>isset<span class="src-sym">(</span><span class="src-var">$return</span><span class="src-sym">)) </span><span class="src-sym">{</span></li>
<li><a name="a484"></a> <span class="src-key">return </span><span class="src-var">$return</span><span class="src-sym">;</span></li>
<li><a name="a485"></a> <span class="src-sym">}</span></li>
<li><a name="a486"></a> </li>
<li><a name="a487"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#methodsetError">setError</a><span class="src-sym">(</span><span class="src-str">'No root part found in multipart/related content'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a488"></a> <span class="src-key">return</span><span class="src-sym">;</span></li>
<li><a name="a489"></a> <span class="src-sym">}</span></li>
<li><a name="a490"></a> <span class="src-var">$this</span><span class="src-sym">-&gt;</span><a href="../nusoap/nusoap_base.html#methoddebug">debug</a><span class="src-sym">(</span><span class="src-str">'Not multipart/related'</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a491"></a> <span class="src-key">return </span><span class="src-id">parent</span><span class="src-sym">::</span><a href="../nusoap/nusoap_server.html#methodparseRequest">parseRequest</a><span class="src-sym">(</span><span class="src-var">$headers</span><span class="src-sym">, </span><span class="src-var">$data</span><span class="src-sym">)</span><span class="src-sym">;</span></li>
<li><a name="a492"></a> <span class="src-sym">}</span></li>
<li><a name="a493"></a><span class="src-sym">}</span></li>
<li><a name="a494"></a>&nbsp;</li>
<li><a name="a495"></a><span class="src-comm">/*</span></li>
<li><a name="a496"></a><span class="src-comm"> * For backwards compatiblity</span></li>
<li><a name="a497"></a><span class="src-comm"> */</span></li>
<li><a name="a498"></a><span class="src-key">class </span><a href="../nusoap/nusoapservermime.html">nusoapservermime</a> <span class="src-key">extends </span><a href="../nusoap/nusoap_server_mime.html">nusoap_server_mime</a> <span class="src-sym">{</span></li>
<li><a name="a499"></a><span class="src-sym">}</span></li>
<li><a name="a500"></a>&nbsp;</li>
<li><a name="a501"></a><span class="src-php">?&gt;</span></li>
</ol></pre>
</div>
<p class="notes" id="credit">
Documentation generated on Mon, 26 Apr 2010 16:17:09 -0400 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
</p>
</body>

View File

@@ -1,13 +0,0 @@
<html>
<head>
<title>phpDocumentor 1.3.0 Manual</title>
<link rel="stylesheet" href="media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div align="center"><h1>phpDocumentor 1.3.0 Manual</h1></div>
<b>Welcome to nusoap!</b><br />
<br />
This documentation was generated by <a href="http://www.phpdoc.org">phpDocumentor v1.3.0RC3</a><br />
</body>
</html>

View File

@@ -1,46 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title></title>
<link rel="stylesheet" href="media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<!-- Start of Class Data -->
<H2>
</H2>
<h2>Root class nusoap_base</h2>
<ul>
<li><a href="nusoap/nusoap_base.html">nusoap_base</a><ul>
<li><a href="nusoap/nusoap_client.html">nusoap_client</a><ul>
<li><a href="nusoap/nusoap_client_mime.html">nusoap_client_mime</a><ul>
<li><a href="nusoap/soapclientmime.html">soapclientmime</a></li></ul></li>
<li><a href="nusoap/soapclient.html">soapclient</a></li></ul></li>
<li><a href="nusoap/nusoap_fault.html">nusoap_fault</a><ul>
<li><a href="nusoap/soap_fault.html">soap_fault</a></li></ul></li>
<li><a href="nusoap/nusoap_parser.html">nusoap_parser</a><ul>
<li><a href="nusoap/soap_parser.html">soap_parser</a></li></ul></li>
<li><a href="nusoap/nusoap_server.html">nusoap_server</a><ul>
<li><a href="nusoap/nusoap_server_mime.html">nusoap_server_mime</a><ul>
<li><a href="nusoap/nusoapservermime.html">nusoapservermime</a></li></ul></li>
<li><a href="nusoap/soap_server.html">soap_server</a></li></ul></li>
<li><a href="nusoap/nusoap_xmlschema.html">nusoap_xmlschema</a><ul>
<li><a href="nusoap/XMLSchema.html">XMLSchema</a></li></ul></li>
<li><a href="nusoap/soapval.html">soapval</a></li><li><a href="nusoap/soap_transport_http.html">soap_transport_http</a></li><li><a href="nusoap/wsdl.html">wsdl</a></li></ul></li>
</ul>
<h2>Root class nusoap_wsdlcache</h2>
<ul>
<li><a href="nusoap/nusoap_wsdlcache.html">nusoap_wsdlcache</a><ul>
<li><a href="nusoap/wsdlcache.html">wsdlcache</a></li></ul></li>
</ul>
<p class="notes" id="credit">
Documentation generated on Mon, 26 Apr 2010 16:16:48 -0400 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
</p>
</body>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,50 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>phpDocumentor Parser Errors and Warnings</title>
<link rel="stylesheet" href="media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<a href="#Post-parsing">Post-parsing</a><br>
<a href="#nusoap.php">nusoap.php</a><br>
<a href="#nusoapmime.php">nusoapmime.php</a><br>
<a name="class.wsdlcache.php"></a>
<h1>class.wsdlcache.php</h1>
<h2>Warnings:</h2><br>
<b>Warning on line 17</b> - no @package tag was used in a DocBlock for class nusoap_wsdlcache<br>
<b>Warning on line 206</b> - no @package tag was used in a DocBlock for class wsdlcache<br>
<b>Warning on line 208</b> - File "C:\nusoap\lib\class.wsdlcache.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br>
<a name="nusoap.php"></a>
<h1>nusoap.php</h1>
<h2>Warnings:</h2><br>
<b>Warning on line 84</b> - no @package tag was used in a DocBlock for class nusoap_base<br>
<b>Warning on line 1006</b> - no @package tag was used in a DocBlock for class nusoap_fault<br>
<b>Warning on line 1078</b> - no @package tag was used in a DocBlock for class soap_fault<br>
<b>Warning on line 1094</b> - no @package tag was used in a DocBlock for class nusoap_xmlschema<br>
<b>Warning on line 2047</b> - no @package tag was used in a DocBlock for class XMLSchema<br>
<b>Warning on line 2065</b> - no @package tag was used in a DocBlock for class soapval<br>
<b>Warning on line 2167</b> - no @package tag was used in a DocBlock for class soap_transport_http<br>
<b>Warning on line 3472</b> - no @package tag was used in a DocBlock for class nusoap_server<br>
<b>Warning on line 4579</b> - no @package tag was used in a DocBlock for class soap_server<br>
<b>Warning on line 4595</b> - no @package tag was used in a DocBlock for class wsdl<br>
<b>Warning on line 6445</b> - no @package tag was used in a DocBlock for class nusoap_parser<br>
<b>Warning on line 7069</b> - no @package tag was used in a DocBlock for class soap_parser<br>
<b>Warning on line 7096</b> - no @package tag was used in a DocBlock for class nusoap_client<br>
<b>Warning on line 8054</b> - no @package tag was used in a DocBlock for class soapclient<br>
<b>Warning on line 8057</b> - File "C:\nusoap\lib\nusoap.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br>
<a name="nusoapmime.php"></a>
<h1>nusoapmime.php</h1>
<h2>Warnings:</h2><br>
<b>Warning on line 53</b> - no @package tag was used in a DocBlock for class nusoap_client_mime<br>
<b>Warning on line 270</b> - no @package tag was used in a DocBlock for class soapclientmime<br>
<b>Warning on line 283</b> - no @package tag was used in a DocBlock for class nusoap_server_mime<br>
<b>Warning on line 497</b> - no @package tag was used in a DocBlock for class nusoapservermime<br>
<b>Warning on line 500</b> - File "C:\nusoap\lib\nusoapmime.php" has no page-level DocBlock, use @package in the first DocBlock to create one<br>
<p class="notes" id="credit">
Documentation generated on Mon, 26 Apr 2010 16:17:11 -0400 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
</p>
</body>

View File

@@ -1,24 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- Generated by phpDocumentor on Mon, 26 Apr 2010 16:16:48 -0400 -->
<title>phpDocumentor 1.3.0 Manual</title>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<FRAMESET rows='120,*'>
<FRAME src='packages.html' name='left_top' frameborder="1" bordercolor="#999999">
<FRAMESET cols='25%,*'>
<FRAME src='li_nusoap.html' name='left_bottom' frameborder="1" bordercolor="#999999">
<FRAME src='blank.html' name='right' frameborder="1" bordercolor="#999999">
</FRAMESET>
<NOFRAMES>
<H2>Frame Alert</H2>
<P>This document is designed to be viewed using the frames feature.
If you see this message, you are using a non-frame-capable web client.</P>
</NOFRAMES>
</FRAMESET>
</HTML>

View File

@@ -1,59 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title></title>
<link rel="stylesheet" href="media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="package-title">nusoap</div>
<div class="package-details">
<dl class="tree">
<dt class="folder-title">Description</dt>
<dd>
<a href='classtrees_nusoap.html' target='right'>Class trees</a><br />
<a href='elementindex_nusoap.html' target='right'>Index of elements</a><br />
</dd>
<dt class="folder-title"><img class="tree-icon" src="media/images/class_folder.png" alt=" ">Classes</dt>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/nusoapservermime.html' target='right'>nusoapservermime</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/nusoap_base.html' target='right'>nusoap_base</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/nusoap_client.html' target='right'>nusoap_client</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/nusoap_client_mime.html' target='right'>nusoap_client_mime</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/nusoap_fault.html' target='right'>nusoap_fault</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/nusoap_parser.html' target='right'>nusoap_parser</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/nusoap_server.html' target='right'>nusoap_server</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/nusoap_server_mime.html' target='right'>nusoap_server_mime</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/nusoap_wsdlcache.html' target='right'>nusoap_wsdlcache</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/nusoap_xmlschema.html' target='right'>nusoap_xmlschema</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/soapclient.html' target='right'>soapclient</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/soapclientmime.html' target='right'>soapclientmime</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/soapval.html' target='right'>soapval</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/soap_fault.html' target='right'>soap_fault</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/soap_parser.html' target='right'>soap_parser</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/soap_server.html' target='right'>soap_server</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/soap_transport_http.html' target='right'>soap_transport_http</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/wsdl.html' target='right'>wsdl</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/wsdlcache.html' target='right'>wsdlcache</a></dd>
<dd><img class="tree-icon" src="media/images/Class.png" alt="Class"><a href='nusoap/XMLSchema.html' target='right'>XMLSchema</a></dd>
<dt class="folder-title"><img class="tree-icon" src="media/images/function_folder.png" alt=" ">Functions</dt>
<dd><img class="tree-icon" src="media/images/Function.png" alt="Function"><a href='nusoap/_nusoap_php.html#functioniso8601_to_timestamp' target='right'>iso8601_to_timestamp</a></dd>
<dd><img class="tree-icon" src="media/images/Function.png" alt="Function"><a href='nusoap/_nusoap_php.html#functiontimestamp_to_iso8601' target='right'>timestamp_to_iso8601</a></dd>
<dd><img class="tree-icon" src="media/images/Function.png" alt="Function"><a href='nusoap/_nusoap_php.html#functionusleepWindows' target='right'>usleepWindows</a></dd>
<dt class="folder-title"><img class="tree-icon" src="media/images/folder.png" alt=" ">Files</dt>
<dd><img class="tree-icon" src="media/images/Page.png" alt="File"><a href='nusoap/_class_wsdlcache_php.html' target='right'>class.wsdlcache.php</a></dd>
<dd><img class="tree-icon" src="media/images/Page.png" alt="File"><a href='nusoap/_nusoap_php.html' target='right'>nusoap.php</a></dd>
<dd><img class="tree-icon" src="media/images/Page.png" alt="File"><a href='nusoap/_nusoapmime_php.html' target='right'>nusoapmime.php</a></dd>
</dl>
</div>
<p class="notes"><a href="http://www.phpdoc.org" target="_blank">phpDocumentor v <span class="field">1.3.0RC3</span></a></p>
</BODY>

View File

@@ -1,3 +0,0 @@
D/images////
/banner.css/1.1/Mon Apr 26 19:16:48 2010//
/stylesheet.css/1.1/Mon Apr 26 19:16:48 2010//

View File

@@ -1 +0,0 @@
docs/media

View File

@@ -1 +0,0 @@
:ext:snichol@nusoap.cvs.sourceforge.net:/cvsroot/nusoap

View File

@@ -1,33 +0,0 @@
body
{
background-color: #EEEEEE;
margin: 0px;
padding: 0px;
}
/* Banner (top bar) classes */
.banner { }
.banner-menu
{
text-align: right;
clear: both;
padding: .5em;
border-top: 2px solid #AAAAAA;
}
.banner-title
{
text-align: right;
font-size: 20pt;
font-weight: bold;
margin: .2em;
}
.package-selector
{
background-color: #DDDDDD;
border: 1px solid #AAAAAA;
color: #000090;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 848 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 874 B

View File

@@ -1,46 +0,0 @@
/AbstractClass.png/1.1/Mon Apr 26 19:16:48 2010//
/AbstractClass_logo.png/1.1/Mon Apr 26 19:16:48 2010//
/AbstractMethod.png/1.1/Mon Apr 26 19:16:48 2010//
/AbstractPrivateClass.png/1.1/Mon Apr 26 19:16:48 2010//
/AbstractPrivateClass_logo.png/1.1/Mon Apr 26 19:16:48 2010//
/AbstractPrivateMethod.png/1.1/Mon Apr 26 19:16:48 2010//
/Class.png/1.1/Mon Apr 26 19:16:48 2010//
/Class_logo.png/1.1/Mon Apr 26 19:16:48 2010//
/Constant.png/1.1/Mon Apr 26 19:16:48 2010//
/Constructor.png/1.1/Mon Apr 26 19:16:48 2010//
/Destructor.png/1.1/Mon Apr 26 19:16:48 2010//
/Function.png/1.1/Mon Apr 26 19:16:48 2010//
/Global.png/1.1/Mon Apr 26 19:16:48 2010//
/I.png/1.1/Mon Apr 26 19:16:48 2010//
/Index.png/1.1/Mon Apr 26 19:16:48 2010//
/L.png/1.1/Mon Apr 26 19:16:48 2010//
/Lminus.png/1.1/Mon Apr 26 19:16:48 2010//
/Lplus.png/1.1/Mon Apr 26 19:16:48 2010//
/Method.png/1.1/Mon Apr 26 19:16:48 2010//
/Page.png/1.1/Mon Apr 26 19:16:48 2010//
/Page_logo.png/1.1/Mon Apr 26 19:16:48 2010//
/PrivateClass.png/1.1/Mon Apr 26 19:16:48 2010//
/PrivateClass_logo.png/1.1/Mon Apr 26 19:16:48 2010//
/PrivateMethod.png/1.1/Mon Apr 26 19:16:48 2010//
/PrivateVariable.png/1.1/Mon Apr 26 19:16:48 2010//
/T.png/1.1/Mon Apr 26 19:16:48 2010//
/Tminus.png/1.1/Mon Apr 26 19:16:48 2010//
/Tplus.png/1.1/Mon Apr 26 19:16:48 2010//
/Variable.png/1.1/Mon Apr 26 19:16:48 2010//
/blank.png/1.1/Mon Apr 26 19:16:48 2010//
/class_folder.png/1.1/Mon Apr 26 19:16:48 2010//
/empty.png/1.1/Mon Apr 26 19:16:48 2010//
/file.png/1.1/Mon Apr 26 19:16:48 2010//
/folder.png/1.1/Mon Apr 26 19:16:48 2010//
/function_folder.png/1.1/Mon Apr 26 19:16:48 2010//
/next_button.png/1.1/Mon Apr 26 19:16:48 2010//
/next_button_disabled.png/1.1/Mon Apr 26 19:16:48 2010//
/package.png/1.1/Mon Apr 26 19:16:48 2010//
/package_folder.png/1.1/Mon Apr 26 19:16:48 2010//
/previous_button.png/1.1/Mon Apr 26 19:16:48 2010//
/previous_button_disabled.png/1.1/Mon Apr 26 19:16:48 2010//
/private_class_logo.png/1.1/Mon Apr 26 19:16:48 2010//
/tutorial.png/1.1/Mon Apr 26 19:16:48 2010//
/tutorial_folder.png/1.1/Mon Apr 26 19:16:48 2010//
/up_button.png/1.1/Mon Apr 26 19:16:48 2010//
D

View File

@@ -1 +0,0 @@
docs/media/images

View File

@@ -1 +0,0 @@
:ext:snichol@nusoap.cvs.sourceforge.net:/cvsroot/nusoap

Binary file not shown.

Before

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 752 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 956 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 712 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 584 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 661 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 592 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 790 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 918 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 772 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 688 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 633 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 605 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 668 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 644 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 541 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 572 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 668 B

View File

@@ -1,146 +0,0 @@
a { color: #000090; text-decoration: none; }
a:hover, a:active, a:focus { color: highlighttext; background-color: highlight; text-decoration: none; }
body { background: #FFFFFF; }
body, table { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; }
a img { border: 0px; }
/* Page layout/boxes */
.info-box { }
.info-box-title { margin: 1em 0em 0em 0em; font-weight: normal; font-size: 14pt; color: #999999; border-bottom: 2px solid #999999; }
.info-box-body { border: 1px solid #999999; padding: .5em; }
.nav-bar { font-size: 8pt; white-space: nowrap; text-align: right; padding: .2em; margin: 0em 0em 1em 0em; }
.oddrow { background-color: #F8F8F8; border: 1px solid #AAAAAA; padding: .5em; margin-bottom: 1em}
.evenrow { border: 1px solid #AAAAAA; padding: .5em; margin-bottom: 1em}
.page-body { max-width: 800px; margin: auto; }
.tree { white-space: nowrap; font: icon }
.tree dd { margin-left: 19px }
.tree dl { margin: 0px }
.tree-icon { vertical-align: middle; border: 0px; margin-right: 3px }
/* Index formatting classes */
.index-item-body { margin-top: .5em; margin-bottom: .5em}
.index-item-description { margin-top: .25em }
.index-item-details { font-weight: normal; font-style: italic; font-size: 8pt }
.index-letter-section { background-color: #EEEEEE; border: 1px dotted #999999; padding: .5em; margin-bottom: 1em}
.index-letter-title { font-size: 12pt; font-weight: bold }
.index-letter-menu { text-align: center; margin: 1em }
.index-letter { font-size: 12pt }
/* Docbook classes */
.description {}
.short-description { font-weight: bold; color: #666666; }
.tags { padding-left: 0em; margin-left: 3em; color: #666666; list-style-type: square; }
.parameters { padding-left: 0em; margin-left: 3em; color: #014fbe; list-style-type: square; }
.redefinitions { font-size: 8pt; padding-left: 0em; margin-left: 2em; }
.package { font-weight: bold; }
.package-title { font-weight: bold; font-size: 14pt; border-bottom: 1px solid black }
.package-details { font-size: 85%; }
.sub-package { font-weight: bold; }
.tutorial { border-width: thin; border-color: #0066ff; }
.tutorial-nav-box { width: 100%; border: 1px solid #999999; background-color: #F8F8F8; }
.folder-title { font-style: italic; font-family: Verdana, Arial, Helvetica, sans-serif }
/* Generic formatting */
.field { font-weight: bold; }
.detail { font-size: 8pt; }
.notes { font-style: italic; font-size: 8pt; }
.separator { background-color: #999999; height: 2px; }
.warning { color: #FF6600; }
.disabled { font-style: italic; color: #999999; }
/* Code elements */
.line-number { }
.class-table { width: 100%; }
.class-table-header { border-bottom: 1px dotted #666666; text-align: left}
.class-name { color: #0000AA; font-weight: bold; }
.method-summary { color: #009000; padding-left: 1em; font-size: 8pt; }
.method-header { }
.method-definition { margin-bottom: .2em }
.method-title { color: #009000; font-weight: bold; }
.method-name { font-weight: bold; }
.method-signature { font-size: 85%; color: #666666; margin: .5em 0em }
.method-result { font-style: italic; }
.var-summary { padding-left: 1em; font-size: 8pt; }
.var-header { }
.var-title { color: #014fbe; margin-bottom: .3em }
.var-type { font-style: italic; }
.var-name { font-weight: bold; }
.var-default {}
.var-description { font-weight: normal; color: #000000; }
.include-title { color: #014fbe;}
.include-type { font-style: italic; }
.include-name { font-weight: bold; }
.const-title { color: #FF6600; }
.const-name { font-weight: bold; }
/* Syntax highlighting */
.src-code { }
*[class="src-code"] { line-height : 0.5em }
.src-code a:link { padding: 1px; text-decoration: underline; color: #0000DD; }
.src-code a:visited { text-decoration: underline; color: #0000DD; }
.src-code a:active { background-color: #FFFF66; color: #008000; }
.src-code a:hover { background-color: #FFFF66; text-decoration: overline underline; color: #008000; }
.src-comm { color: #666666; }
.src-id { color: #FF6600; font-style: italic; }
.src-inc { color: #0000AA; font-weight: bold; }
.src-key { color: #0000AA; font-weight: bold; }
.src-num { color: #CC0000; }
.src-str { color: #CC0000; }
.src-sym { }
.src-var { }
.src-php { font-weight: bold; }
.src-doc { color: #666666; }
.src-doc-close-template { color: #666666 }
.src-doc-coretag { color: #008000; }
.src-doc-inlinetag {}
.src-doc-internal {}
.src-doc-tag { color: #0080CC; }
.src-doc-template { color: #666666 }
.src-doc-type { font-style: italic; color: #444444 }
.src-doc-var { color: #444444 }
.tute-tag { color: #009999 }
.tute-attribute-name { color: #0000FF }
.tute-attribute-value { color: #0099FF }
.tute-entity { font-weight: bold; }
.tute-comment { font-style: italic }
.tute-inline-tag { color: #636311; font-weight: bold }
/* tutorial */
.authors { }
.author { font-style: italic; font-weight: bold }
.author-blurb { margin: .5em 0em .5em 2em; font-size: 85%; font-weight: normal; font-style: normal }
.example { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; }
*[class="example"] { line-height : 0.5em; }
.listing { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; white-space: nowrap; }
*[class="listing"] { line-height : 0.5em; }
.release-info { font-size: 85%; font-style: italic; margin: 1em 0em }
.ref-title-box { }
.ref-title { }
.ref-purpose { font-style: italic; color: #666666 }
.ref-synopsis { }
.title { font-weight: bold; border-bottom: 1px solid #999999; color: #999999; }
.cmd-synopsis { margin: 1em 0em }
.cmd-title { font-weight: bold }
.toc { margin-left: 2em; padding-left: 0em }

View File

@@ -1,15 +0,0 @@
/XMLSchema.html/1.2/Mon Apr 26 19:25:21 2010//
/_class_wsdlcache_php.html/1.2/Mon Apr 26 19:16:49 2010//
/_nusoap_php.html/1.2/Mon Apr 26 19:17:09 2010//
/_nusoapmime_php.html/1.2/Mon Apr 26 19:17:11 2010//
/nusoap_base.html/1.2/Mon Apr 26 19:25:21 2010//
/soap_fault.html/1.2/Mon Apr 26 19:25:21 2010//
/soap_parser.html/1.2/Mon Apr 26 19:25:21 2010//
/soap_server.html/1.2/Mon Apr 26 19:25:21 2010//
/soap_transport_http.html/1.2/Mon Apr 26 19:25:21 2010//
/soapclient.html/1.2/Mon Apr 26 19:25:21 2010//
/soapclientmime.html/1.2/Mon Apr 26 19:25:21 2010//
/soapval.html/1.2/Mon Apr 26 19:25:21 2010//
/wsdl.html/1.2/Mon Apr 26 19:25:21 2010//
/wsdlcache.html/1.2/Mon Apr 26 19:25:21 2010//
D

View File

@@ -1 +0,0 @@
docs/nusoap

View File

@@ -1 +0,0 @@
:ext:snichol@nusoap.cvs.sourceforge.net:/cvsroot/nusoap

View File

@@ -1,331 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class XMLSchema</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> XMLSchema</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-vars">Vars</a>
| <a href="#sec-methods">Methods</a>
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">Backward compatibility</p>
<ul class="tags">
<li><span class="field">version:</span> $Id: XMLSchema.html,v 1.2 2010/04/26 20:25:21 snichol Exp $</li>
<li><span class="field">author:</span> Dietrich Ayala &lt;<a href="mailto:dietrich@ganx4.com">dietrich@ganx4.com</a>&gt;</li>
<li><span class="field">author:</span> Scott Nichol &lt;<a href="mailto:snichol@users.sourceforge.net">snichol@users.sourceforge.net</a>&gt;</li>
</ul>
<p class="notes">
Located in <a class="field" href="_nusoap_php.html">/nusoap.php</a> (line <span class="field"><a href="..//__filesource/fsource_nusoap__nusoap.php.html#a2048">2048</a></span>)
</p>
<pre><a href="../nusoap/nusoap_base.html">nusoap_base</a>
|
--<a href="../nusoap/nusoap_xmlschema.html">nusoap_xmlschema</a>
|
--XMLSchema</pre>
</div>
</div>
<a name="sec-vars"></a>
<div class="info-box">
<div class="info-box-title">Variables</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Vars</span>
|
<a href="#sec-methods">Methods</a>
</div>
<div class="info-box-body">
<h4>Inherited Variables</h4>
<A NAME='inherited_vars'><!-- --></A>
<p>Inherited from <span class="classname"><a href="../nusoap/nusoap_xmlschema.html">nusoap_xmlschema</a></span></p>
<blockquote>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$attributes">nusoap_xmlschema::$attributes</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$complexTypes">nusoap_xmlschema::$complexTypes</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$complexTypeStack">nusoap_xmlschema::$complexTypeStack</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$currentComplexType">nusoap_xmlschema::$currentComplexType</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$currentElement">nusoap_xmlschema::$currentElement</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$currentSimpleType">nusoap_xmlschema::$currentSimpleType</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$defaultNamespace">nusoap_xmlschema::$defaultNamespace</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$depth">nusoap_xmlschema::$depth</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$depth_array">nusoap_xmlschema::$depth_array</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$elements">nusoap_xmlschema::$elements</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$elementStack">nusoap_xmlschema::$elementStack</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$enclosingNamespaces">nusoap_xmlschema::$enclosingNamespaces</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$imports">nusoap_xmlschema::$imports</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$message">nusoap_xmlschema::$message</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$parser">nusoap_xmlschema::$parser</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$position">nusoap_xmlschema::$position</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$schema">nusoap_xmlschema::$schema</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$schemaInfo">nusoap_xmlschema::$schemaInfo</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$schemaTargetNamespace">nusoap_xmlschema::$schemaTargetNamespace</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$simpleTypes">nusoap_xmlschema::$simpleTypes</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$simpleTypeStack">nusoap_xmlschema::$simpleTypeStack</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_xmlschema.html#var$xml">nusoap_xmlschema::$xml</a></span><br>
</span>
</blockquote>
<p>Inherited from <span class="classname"><a href="../nusoap/nusoap_base.html">nusoap_base</a></span></p>
<blockquote>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$charencoding">nusoap_base::$charencoding</a></span><br>
</span>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$debugLevel">nusoap_base::$debugLevel</a></span><br>
</span>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$debug_str">nusoap_base::$debug_str</a></span><br>
</span>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$error_str">nusoap_base::$error_str</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$namespaces">nusoap_base::$namespaces</a></span><br>
</span>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$revision">nusoap_base::$revision</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$soap_defencoding">nusoap_base::$soap_defencoding</a></span><br>
</span>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$title">nusoap_base::$title</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$typemap">nusoap_base::$typemap</a></span><br>
</span>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$usedNamespaces">nusoap_base::$usedNamespaces</a></span><br>
</span>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$version">nusoap_base::$version</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$xmlEntities">nusoap_base::$xmlEntities</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$XMLSchemaVersion">nusoap_base::$XMLSchemaVersion</a></span><br>
</span>
</blockquote>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-vars">Vars</a>
<span class="disabled">Methods</span>
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<h4>Inherited Methods</h4>
<a name='inherited_methods'><!-- --></a>
<!-- =========== Summary =========== -->
<p>Inherited From <span class="classname"><a href="../nusoap/nusoap_xmlschema.html">nusoap_xmlschema</a></span></p>
<blockquote>
<img src="../media/images/Constructor.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodnusoap_xmlschema">nusoap_xmlschema::nusoap_xmlschema()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodaddComplexType">nusoap_xmlschema::addComplexType()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodaddElement">nusoap_xmlschema::addElement()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodaddSimpleType">nusoap_xmlschema::addSimpleType()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodCreateTypeName">nusoap_xmlschema::CreateTypeName()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodgetPHPType">nusoap_xmlschema::getPHPType()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodgetTypeDef">nusoap_xmlschema::getTypeDef()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodparseFile">nusoap_xmlschema::parseFile()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodparseString">nusoap_xmlschema::parseString()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodschemaCharacterData">nusoap_xmlschema::schemaCharacterData()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodschemaEndElement">nusoap_xmlschema::schemaEndElement()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodschemaStartElement">nusoap_xmlschema::schemaStartElement()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodserializeSchema">nusoap_xmlschema::serializeSchema()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodserializeTypeDef">nusoap_xmlschema::serializeTypeDef()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodtypeToForm">nusoap_xmlschema::typeToForm()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_xmlschema.html#methodxdebug">nusoap_xmlschema::xdebug()</a></span><br>
</blockquote>
<!-- =========== Summary =========== -->
<p>Inherited From <span class="classname"><a href="../nusoap/nusoap_base.html">nusoap_base</a></span></p>
<blockquote>
<img src="../media/images/Constructor.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodnusoap_base">nusoap_base::nusoap_base()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodappendDebug">nusoap_base::appendDebug()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodclearDebug">nusoap_base::clearDebug()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodcontractQname">nusoap_base::contractQname()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methoddebug">nusoap_base::debug()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodexpandEntities">nusoap_base::expandEntities()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodexpandQname">nusoap_base::expandQname()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodformatDump">nusoap_base::formatDump()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetDebug">nusoap_base::getDebug()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetDebugAsXMLComment">nusoap_base::getDebugAsXMLComment()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetDebugLevel">nusoap_base::getDebugLevel()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetError">nusoap_base::getError()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetGlobalDebugLevel">nusoap_base::getGlobalDebugLevel()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetLocalPart">nusoap_base::getLocalPart()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetmicrotime">nusoap_base::getmicrotime()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetNamespaceFromPrefix">nusoap_base::getNamespaceFromPrefix()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetPrefix">nusoap_base::getPrefix()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetPrefixFromNamespace">nusoap_base::getPrefixFromNamespace()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodisArraySimpleOrStruct">nusoap_base::isArraySimpleOrStruct()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodserializeEnvelope">nusoap_base::serializeEnvelope()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodserialize_val">nusoap_base::serialize_val()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodsetDebugLevel">nusoap_base::setDebugLevel()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodsetError">nusoap_base::setError()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodsetGlobalDebugLevel">nusoap_base::setGlobalDebugLevel()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodvarDump">nusoap_base::varDump()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#method__toString">nusoap_base::__toString()</a></span><br>
</blockquote>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Mon, 26 Apr 2010 16:17:08 -0400 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
</p>

View File

@@ -1,77 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs for page class.wsdlcache.php</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="file-name"><img src="../media/images/Page_logo.png" alt="File" style="vertical-align: middle">/class.wsdlcache.php</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-classes">Classes</a>
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">filesource:</span> <a href="..//__filesource/fsource_nusoap__class.wsdlcache.php.html">Source Code for this file</a></li>
</ul>
</div>
</div>
<a name="sec-classes"></a>
<div class="info-box">
<div class="info-box-title">Classes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Classes</span>
</div>
<div class="info-box-body">
<table cellpadding="2" cellspacing="0" class="class-table">
<tr>
<th class="class-table-header">Class</th>
<th class="class-table-header">Description</th>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/nusoap_wsdlcache.html">nusoap_wsdlcache</a>
</td>
<td>
caches instances of the wsdl class
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/wsdlcache.html">wsdlcache</a>
</td>
<td>
For backward compatibility
</td>
</tr>
</table>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Mon, 26 Apr 2010 16:16:48 -0400 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
</p>
</div></body>

View File

@@ -1,315 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs for page nusoap.php</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="file-name"><img src="../media/images/Page_logo.png" alt="File" style="vertical-align: middle">/nusoap.php</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-classes">Classes</a>
| <a href="#sec-functions">Functions</a>
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">filesource:</span> <a href="..//__filesource/fsource_nusoap__nusoap.php.html">Source Code for this file</a></li>
</ul>
</div>
</div>
<a name="sec-classes"></a>
<div class="info-box">
<div class="info-box-title">Classes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Classes</span>
| <a href="#sec-functions">Functions</a>
</div>
<div class="info-box-body">
<table cellpadding="2" cellspacing="0" class="class-table">
<tr>
<th class="class-table-header">Class</th>
<th class="class-table-header">Description</th>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/nusoap_base.html">nusoap_base</a>
</td>
<td>
nusoap_base
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/nusoap_fault.html">nusoap_fault</a>
</td>
<td>
Contains information for a SOAP fault.
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/soap_fault.html">soap_fault</a>
</td>
<td>
Backward compatibility
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/nusoap_xmlschema.html">nusoap_xmlschema</a>
</td>
<td>
parses an XML Schema, allows access to it's data, other utility methods.
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/XMLSchema.html">XMLSchema</a>
</td>
<td>
Backward compatibility
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/soapval.html">soapval</a>
</td>
<td>
For creating serializable abstractions of native PHP types. This class
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/soap_transport_http.html">soap_transport_http</a>
</td>
<td>
transport class for sending/receiving data via HTTP and HTTPS NOTE: PHP must be compiled with the CURL extension for HTTPS support
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/nusoap_server.html">nusoap_server</a>
</td>
<td>
nusoap_server allows the user to create a SOAP server that is capable of receiving messages and returning responses
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/soap_server.html">soap_server</a>
</td>
<td>
Backward compatibility
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/wsdl.html">wsdl</a>
</td>
<td>
parses a WSDL file, allows access to it's data, other utility methods.
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/nusoap_parser.html">nusoap_parser</a>
</td>
<td>
nusoap_parser class parses SOAP XML messages into native PHP values
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/soap_parser.html">soap_parser</a>
</td>
<td>
Backward compatibility
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/nusoap_client.html">nusoap_client</a>
</td>
<td>
[nu]soapclient higher level class for easy usage.
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/soapclient.html">soapclient</a>
</td>
<td>
For backwards compatiblity, define soapclient unless the PHP SOAP extension is loaded.
</td>
</tr>
</table>
</div>
</div>
<a name="sec-functions"></a>
<div class="info-box">
<div class="info-box-title">Functions</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-classes">Classes</a>
| <span class="disabled">Functions</span>
</div>
<div class="info-box-body">
<a name="functioniso8601_to_timestamp" id="functioniso8601_to_timestamp"><!-- --></a>
<div class="oddrow">
<div>
<img src="../media/images/Function.png" />
<span class="method-title">iso8601_to_timestamp</span> (line <span class="line-number"><a href="..//__filesource/fsource_nusoap__nusoap.php.html#a943">943</a></span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">convert ISO 8601 compliant date string to unix timestamp</p>
<ul class="tags">
<li><span class="field">return:</span> Unix timestamp (int) or false</li>
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">mixed</span>
<span class="method-name">
iso8601_to_timestamp
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$datestr</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$datestr</span><span class="var-description">: ISO 8601 compliant date string</span> </li>
</ul>
</div>
<a name="functiontimestamp_to_iso8601" id="functiontimestamp_to_iso8601"><!-- --></a>
<div class="evenrow">
<div>
<img src="../media/images/Function.png" />
<span class="method-title">timestamp_to_iso8601</span> (line <span class="line-number"><a href="..//__filesource/fsource_nusoap__nusoap.php.html#a904">904</a></span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">convert unix timestamp to ISO 8601 compliant date string</p>
<ul class="tags">
<li><span class="field">return:</span> ISO 8601 date string or false</li>
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">mixed</span>
<span class="method-name">
timestamp_to_iso8601
</span>
(<span class="var-type">int</span>&nbsp;<span class="var-name">$timestamp</span>, [<span class="var-type">boolean</span>&nbsp;<span class="var-name">$utc</span> = <span class="var-default">true</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type">int</span>
<span class="var-name">$timestamp</span><span class="var-description">: Unix time stamp</span> </li>
<li>
<span class="var-type">boolean</span>
<span class="var-name">$utc</span><span class="var-description">: Whether the time stamp is UTC or local</span> </li>
</ul>
</div>
<a name="functionusleepWindows" id="functionusleepWindows"><!-- --></a>
<div class="oddrow">
<div>
<img src="../media/images/Function.png" />
<span class="method-title">usleepWindows</span> (line <span class="line-number"><a href="..//__filesource/fsource_nusoap__nusoap.php.html#a982">982</a></span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">sleeps some number of microseconds</p>
<ul class="tags">
<li><span class="field">deprecated:</span> </li>
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
usleepWindows
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$usec</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$usec</span><span class="var-description">: the number of microseconds to sleep</span> </li>
</ul>
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Mon, 26 Apr 2010 16:16:49 -0400 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
</p>
</div></body>

View File

@@ -1,142 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs for page nusoapmime.php</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="file-name"><img src="../media/images/Page_logo.png" alt="File" style="vertical-align: middle">/nusoapmime.php</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-classes">Classes</a>
| <a href="#sec-includes">Includes</a>
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">filesource:</span> <a href="..//__filesource/fsource_nusoap__nusoapmime.php.html">Source Code for this file</a></li>
</ul>
</div>
</div>
<a name="sec-classes"></a>
<div class="info-box">
<div class="info-box-title">Classes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Classes</span>
| <a href="#sec-includes">Includes</a>
</div>
<div class="info-box-body">
<table cellpadding="2" cellspacing="0" class="class-table">
<tr>
<th class="class-table-header">Class</th>
<th class="class-table-header">Description</th>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/nusoap_client_mime.html">nusoap_client_mime</a>
</td>
<td>
nusoap_client_mime client supporting MIME attachments defined at http://www.w3.org/TR/SOAP-attachments. It depends on the PEAR Mail_MIME library.
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/soapclientmime.html">soapclientmime</a>
</td>
<td>
nusoap_client_mime client supporting MIME attachments defined at http://www.w3.org/TR/SOAP-attachments. It depends on the PEAR Mail_MIME library.
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/nusoap_server_mime.html">nusoap_server_mime</a>
</td>
<td>
nusoap_server_mime server supporting MIME attachments defined at http://www.w3.org/TR/SOAP-attachments. It depends on the PEAR Mail_MIME library.
</td>
</tr>
<tr>
<td style="padding-right: 2em; vertical-align: top; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"/>
<a href="../nusoap/nusoapservermime.html">nusoapservermime</a>
</td>
<td>
nusoap_server_mime server supporting MIME attachments defined at http://www.w3.org/TR/SOAP-attachments. It depends on the PEAR Mail_MIME library.
</td>
</tr>
</table>
</div>
</div>
<a name="sec-includes"></a>
<div class="info-box">
<div class="info-box-title">Includes</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-classes">Classes</a>
| <span class="disabled">Includes</span>
</div>
<div class="info-box-body">
<a name="_Mail/mimeDecode_php"><!-- --></a>
<div class="evenrow">
<div>
<img src="../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">require_once</span>
(<span class="include-name">'Mail/mimeDecode.php'</span>)
(line <span class="line-number"><a href="..//__filesource/fsource_nusoap__nusoapmime.php.html#a42">42</a></span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
</div>
<a name="_Mail/mimePart_php"><!-- --></a>
<div class="oddrow">
<div>
<img src="../media/images/Page.png" alt=" " />
<span class="include-title">
<span class="include-type">require_once</span>
(<span class="include-name">'Mail/mimePart.php'</span>)
(line <span class="line-number"><a href="..//__filesource/fsource_nusoap__nusoapmime.php.html#a43">43</a></span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
</div>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Mon, 26 Apr 2010 16:17:09 -0400 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
</p>
</div></body>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,846 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>Docs For Class nusoap_client_mime</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<div class="page-body">
<h2 class="class-name"><img src="../media/images/Class_logo.png"
alt=" Class"
title=" Class"
style="vertical-align: middle"> nusoap_client_mime</h2>
<a name="sec-description"></a>
<div class="info-box">
<div class="info-box-title">Description</div>
<div class="nav-bar">
<span class="disabled">Description</span> |
<a href="#sec-descendents">Descendents</a>
| <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">nusoap_client_mime client supporting MIME attachments defined at http://www.w3.org/TR/SOAP-attachments. It depends on the PEAR Mail_MIME library.</p>
<ul class="tags">
<li><span class="field">access:</span> public</li>
<li><span class="field">version:</span> $Id: nusoapmime.php,v 1.13 2010/04/26 20:15:08 snichol Exp $</li>
<li><span class="field">author:</span> Scott Nichol &lt;<a href="mailto:snichol@users.sourceforge.net">snichol@users.sourceforge.net</a>&gt;</li>
<li><span class="field">author:</span> Thanks to Guillaume and Henning Reich for posting great attachment code to the mail list</li>
</ul>
<p class="notes">
Located in <a class="field" href="_nusoapmime_php.html">/nusoapmime.php</a> (line <span class="field"><a href="..//__filesource/fsource_nusoap__nusoapmime.php.html#a54">54</a></span>)
</p>
<pre><a href="../nusoap/nusoap_base.html">nusoap_base</a>
|
--<a href="../nusoap/nusoap_client.html">nusoap_client</a>
|
--nusoap_client_mime</pre>
</div>
</div>
<a name="sec-descendents"></a>
<div class="info-box">
<div class="info-box-title">Direct descendents</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<span class="disabled">Descendents</span>
| <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<table cellpadding="2" cellspacing="0" class="class-table">
<tr>
<th class="class-table-header">Class</th>
<th class="class-table-header">Description</th>
</tr>
<tr>
<td style="padding-right: 2em; white-space: nowrap">
<img src="../media/images/Class.png"
alt=" class"
title=" class"
style="vertical-align: center"/>
<a href="../nusoap/soapclientmime.html">soapclientmime</a>
</td>
<td>
nusoap_client_mime client supporting MIME attachments defined at http://www.w3.org/TR/SOAP-attachments. It depends on the PEAR Mail_MIME library.
</td>
</tr>
</table>
</div>
</div>
<a name="sec-var-summary"></a>
<div class="info-box">
<div class="info-box-title">Variable Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-descendents">Descendants</a> |
<span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="var-summary">
<div class="var-title">
<img src="../media/images/PrivateVariable.png" alt=" " />
<span class="var-type">string</span>
<a href="#$mimeContentType" title="details" class="var-name">$mimeContentType</a>
</div>
<div class="var-title">
<img src="../media/images/PrivateVariable.png" alt=" " />
<span class="var-type">array</span>
<a href="#$requestAttachments" title="details" class="var-name">$requestAttachments</a>
</div>
<div class="var-title">
<img src="../media/images/PrivateVariable.png" alt=" " />
<span class="var-type">array</span>
<a href="#$responseAttachments" title="details" class="var-name">$responseAttachments</a>
</div>
</div>
</div>
</div>
<a name="sec-method-summary"></a>
<div class="info-box">
<div class="info-box-title">Method Summary</span></div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-descendents">Descendants</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<div class="method-summary">
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">string</span>
<a href="#addAttachment" title="details" class="method-name">addAttachment</a>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$data</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$filename</span> = <span class="var-default">''</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$contenttype</span> = <span class="var-default">'application/octet-stream'</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$cid</span> = <span class="var-default">false</span>])
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">void</span>
<a href="#clearAttachments" title="details" class="method-name">clearAttachments</a>
()
</div>
<div class="method-definition">
<img src="../media/images/Method.png" alt=" "/>
<span class="method-result">array</span>
<a href="#getAttachments" title="details" class="method-name">getAttachments</a>
()
</div>
<div class="method-definition">
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-result">string</span>
<a href="#getHTTPBody" title="details" class="method-name">getHTTPBody</a>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$soapmsg</span>)
</div>
<div class="method-definition">
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-result">string</span>
<a href="#getHTTPContentType" title="details" class="method-name">getHTTPContentType</a>
()
</div>
<div class="method-definition">
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-result">string</span>
<a href="#getHTTPContentTypeCharset" title="details" class="method-name">getHTTPContentTypeCharset</a>
()
</div>
<div class="method-definition">
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-result">mixed</span>
<a href="#parseResponse" title="details" class="method-name">parseResponse</a>
(<span class="var-type">array</span>&nbsp;<span class="var-name">$headers</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$data</span>)
</div>
</div>
</div>
</div>
<a name="sec-vars"></a>
<div class="info-box">
<div class="info-box-title">Variables</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-descendents">Descendents</a> |
<a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
|
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
</div>
<div class="info-box-body">
<a name="var$mimeContentType" id="$mimeContentType"><!-- --></A>
<div class="evenrow">
<div class="var-header">
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-type">string</span>
<span class="var-name">$mimeContentType</span>
(line <span class="line-number"><a href="..//__filesource/fsource_nusoap__nusoapmime.php.html#a71">71</a></span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">access:</span> private</li>
</ul>
</div>
<a name="var$requestAttachments" id="$requestAttachments"><!-- --></A>
<div class="oddrow">
<div class="var-header">
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-type">array</span>
<span class="var-name">$requestAttachments</span>
= <span class="var-default">array()</span> (line <span class="line-number"><a href="..//__filesource/fsource_nusoap__nusoapmime.php.html#a60">60</a></span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">var:</span> Each array element in the return is an associative array with keys data, filename, contenttype, cid</li>
<li><span class="field">access:</span> private</li>
</ul>
</div>
<a name="var$responseAttachments" id="$responseAttachments"><!-- --></A>
<div class="evenrow">
<div class="var-header">
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-type">array</span>
<span class="var-name">$responseAttachments</span>
(line <span class="line-number"><a href="..//__filesource/fsource_nusoap__nusoapmime.php.html#a66">66</a></span>)
</span>
</div>
<!-- ========== Info from phpDoc block ========= -->
<ul class="tags">
<li><span class="field">var:</span> Each array element in the return is an associative array with keys data, filename, contenttype, cid</li>
<li><span class="field">access:</span> private</li>
</ul>
</div>
<h4>Inherited Variables</h4>
<A NAME='inherited_vars'><!-- --></A>
<p>Inherited from <span class="classname"><a href="../nusoap/nusoap_client.html">nusoap_client</a></span></p>
<blockquote>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$authtype">nusoap_client::$authtype</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$bindingType">nusoap_client::$bindingType</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$certRequest">nusoap_client::$certRequest</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$cookies">nusoap_client::$cookies</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$curl_options">nusoap_client::$curl_options</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$decode_utf8">nusoap_client::$decode_utf8</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$defaultRpcParams">nusoap_client::$defaultRpcParams</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$document">nusoap_client::$document</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$endpoint">nusoap_client::$endpoint</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$endpointType">nusoap_client::$endpointType</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$fault">nusoap_client::$fault</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$faultcode">nusoap_client::$faultcode</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$faultdetail">nusoap_client::$faultdetail</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$faultstring">nusoap_client::$faultstring</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$forceEndpoint">nusoap_client::$forceEndpoint</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$http_encoding">nusoap_client::$http_encoding</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$operations">nusoap_client::$operations</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$password">nusoap_client::$password</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$persistentConnection">nusoap_client::$persistentConnection</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$portName">nusoap_client::$portName</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$proxyhost">nusoap_client::$proxyhost</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$proxypassword">nusoap_client::$proxypassword</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$proxyport">nusoap_client::$proxyport</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$proxyusername">nusoap_client::$proxyusername</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$request">nusoap_client::$request</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$requestHeaders">nusoap_client::$requestHeaders</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$response">nusoap_client::$response</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$responseData">nusoap_client::$responseData</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$responseHeader">nusoap_client::$responseHeader</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$responseHeaders">nusoap_client::$responseHeaders</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$response_timeout">nusoap_client::$response_timeout</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$timeout">nusoap_client::$timeout</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$username">nusoap_client::$username</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$use_curl">nusoap_client::$use_curl</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_client.html#var$xml_encoding">nusoap_client::$xml_encoding</a></span><br>
</span>
</blockquote>
<p>Inherited from <span class="classname"><a href="../nusoap/nusoap_base.html">nusoap_base</a></span></p>
<blockquote>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$charencoding">nusoap_base::$charencoding</a></span><br>
</span>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$debugLevel">nusoap_base::$debugLevel</a></span><br>
</span>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$debug_str">nusoap_base::$debug_str</a></span><br>
</span>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$error_str">nusoap_base::$error_str</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$namespaces">nusoap_base::$namespaces</a></span><br>
</span>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$revision">nusoap_base::$revision</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$soap_defencoding">nusoap_base::$soap_defencoding</a></span><br>
</span>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$title">nusoap_base::$title</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$typemap">nusoap_base::$typemap</a></span><br>
</span>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$usedNamespaces">nusoap_base::$usedNamespaces</a></span><br>
</span>
<img src="../media/images/PrivateVariable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$version">nusoap_base::$version</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$xmlEntities">nusoap_base::$xmlEntities</a></span><br>
</span>
<img src="../media/images/Variable.png" />
<span class="var-title">
<span class="var-name"><a href="../nusoap/nusoap_base.html#var$XMLSchemaVersion">nusoap_base::$XMLSchemaVersion</a></span><br>
</span>
</blockquote>
</div>
</div>
<a name="sec-methods"></a>
<div class="info-box">
<div class="info-box-title">Methods</div>
<div class="nav-bar">
<a href="#sec-description">Description</a> |
<a href="#sec-descendents">Descendents</a> |
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
</div>
<div class="info-box-body">
<A NAME='method_detail'></A>
<a name="methodaddAttachment" id="addAttachment"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">addAttachment</span> (line <span class="line-number"><a href="..//__filesource/fsource_nusoap__nusoapmime.php.html#a88">88</a></span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">adds a MIME attachment to the current request.</p>
<p class="description"><p>If the $data parameter contains an empty string, this method will read the contents of the file named by the $filename parameter.</p><p>If the $cid parameter is false, this method will generate the cid.</p></p>
<ul class="tags">
<li><span class="field">return:</span> The content-id (cid) of the attachment</li>
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">string</span>
<span class="method-name">
addAttachment
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$data</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$filename</span> = <span class="var-default">''</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$contenttype</span> = <span class="var-default">'application/octet-stream'</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$cid</span> = <span class="var-default">false</span>])
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$data</span><span class="var-description">: The data of the attachment</span> </li>
<li>
<span class="var-type">string</span>
<span class="var-name">$filename</span><span class="var-description">: The filename of the attachment (default is empty string)</span> </li>
<li>
<span class="var-type">string</span>
<span class="var-name">$contenttype</span><span class="var-description">: The MIME Content-Type of the attachment (default is application/octet-stream)</span> </li>
<li>
<span class="var-type">string</span>
<span class="var-name">$cid</span><span class="var-description">: The content-id (cid) of the attachment (default is false)</span> </li>
</ul>
</div>
<a name="methodclearAttachments" id="clearAttachments"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">clearAttachments</span> (line <span class="line-number"><a href="..//__filesource/fsource_nusoap__nusoapmime.php.html#a108">108</a></span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">clears the MIME attachments for the current request.</p>
<ul class="tags">
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">void</span>
<span class="method-name">
clearAttachments
</span>
()
</div>
</div>
<a name="methodgetAttachments" id="getAttachments"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/Method.png" />
<span class="method-title">getAttachments</span> (line <span class="line-number"><a href="..//__filesource/fsource_nusoap__nusoapmime.php.html#a122">122</a></span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">gets the MIME attachments from the current response.</p>
<p class="description"><p>Each array element in the return is an associative array with keys data, filename, contenttype, cid. These keys correspond to the parameters for addAttachment.</p></p>
<ul class="tags">
<li><span class="field">return:</span> The attachments.</li>
<li><span class="field">access:</span> public</li>
</ul>
<div class="method-signature">
<span class="method-result">array</span>
<span class="method-name">
getAttachments
</span>
()
</div>
</div>
<a name="methodgetHTTPBody" id="getHTTPBody"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/PrivateMethod.png" />
<span class="method-title">getHTTPBody</span> (line <span class="line-number"><a href="..//__filesource/fsource_nusoap__nusoapmime.php.html#a133">133</a></span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">gets the HTTP body for the current request.</p>
<ul class="tags">
<li><span class="field">return:</span> The HTTP body, which includes the SOAP payload</li>
<li><span class="field">access:</span> private</li>
</ul>
<div class="method-signature">
<span class="method-result">string</span>
<span class="method-name">
getHTTPBody
</span>
(<span class="var-type">string</span>&nbsp;<span class="var-name">$soapmsg</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">string</span>
<span class="var-name">$soapmsg</span><span class="var-description">: The SOAP payload</span> </li>
</ul>
<hr class="separator" />
<div class="notes">Redefinition of:</div>
<dl>
<dt><a href="../nusoap/nusoap_client.html#methodgetHTTPBody">nusoap_client::getHTTPBody()</a></dt>
<dd>gets the HTTP body for the current request.</dd>
</dl>
</div>
<a name="methodgetHTTPContentType" id="getHTTPContentType"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/PrivateMethod.png" />
<span class="method-title">getHTTPContentType</span> (line <span class="line-number"><a href="..//__filesource/fsource_nusoap__nusoapmime.php.html#a192">192</a></span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">gets the HTTP content type for the current request.</p>
<p class="description"><p>Note: getHTTPBody must be called before this.</p></p>
<ul class="tags">
<li><span class="field">return:</span> the HTTP content type for the current request.</li>
<li><span class="field">access:</span> private</li>
</ul>
<div class="method-signature">
<span class="method-result">string</span>
<span class="method-name">
getHTTPContentType
</span>
()
</div>
<hr class="separator" />
<div class="notes">Redefinition of:</div>
<dl>
<dt><a href="../nusoap/nusoap_client.html#methodgetHTTPContentType">nusoap_client::getHTTPContentType()</a></dt>
<dd>gets the HTTP content type for the current request.</dd>
</dl>
</div>
<a name="methodgetHTTPContentTypeCharset" id="getHTTPContentTypeCharset"><!-- --></a>
<div class="evenrow">
<div class="method-header">
<img src="../media/images/PrivateMethod.png" />
<span class="method-title">getHTTPContentTypeCharset</span> (line <span class="line-number"><a href="..//__filesource/fsource_nusoap__nusoapmime.php.html#a208">208</a></span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">gets the HTTP content type charset for the current request.</p>
<p class="description"><p>returns false for non-text content types.</p><p>Note: getHTTPBody must be called before this.</p></p>
<ul class="tags">
<li><span class="field">return:</span> the HTTP content type charset for the current request.</li>
<li><span class="field">access:</span> private</li>
</ul>
<div class="method-signature">
<span class="method-result">string</span>
<span class="method-name">
getHTTPContentTypeCharset
</span>
()
</div>
<hr class="separator" />
<div class="notes">Redefinition of:</div>
<dl>
<dt><a href="../nusoap/nusoap_client.html#methodgetHTTPContentTypeCharset">nusoap_client::getHTTPContentTypeCharset()</a></dt>
<dd>gets the HTTP content type charset for the current request.</dd>
</dl>
</div>
<a name="methodparseResponse" id="parseResponse"><!-- --></a>
<div class="oddrow">
<div class="method-header">
<img src="../media/images/PrivateMethod.png" />
<span class="method-title">parseResponse</span> (line <span class="line-number"><a href="..//__filesource/fsource_nusoap__nusoapmime.php.html#a223">223</a></span>)
</div>
<!-- ========== Info from phpDoc block ========= -->
<p class="short-description">processes SOAP message returned from server</p>
<ul class="tags">
<li><span class="field">return:</span> value of the message, decoded into a PHP type</li>
<li><span class="field">access:</span> private</li>
</ul>
<div class="method-signature">
<span class="method-result">mixed</span>
<span class="method-name">
parseResponse
</span>
(<span class="var-type">array</span>&nbsp;<span class="var-name">$headers</span>, <span class="var-type">string</span>&nbsp;<span class="var-name">$data</span>)
</div>
<ul class="parameters">
<li>
<span class="var-type">array</span>
<span class="var-name">$headers</span><span class="var-description">: The HTTP headers</span> </li>
<li>
<span class="var-type">string</span>
<span class="var-name">$data</span><span class="var-description">: unprocessed response data from server</span> </li>
</ul>
<hr class="separator" />
<div class="notes">Redefinition of:</div>
<dl>
<dt><a href="../nusoap/nusoap_client.html#methodparseResponse">nusoap_client::parseResponse()</a></dt>
<dd>processes SOAP message returned from server</dd>
</dl>
</div>
<h4>Inherited Methods</h4>
<a name='inherited_methods'><!-- --></a>
<!-- =========== Summary =========== -->
<p>Inherited From <span class="classname"><a href="../nusoap/nusoap_client.html">nusoap_client</a></span></p>
<blockquote>
<img src="../media/images/Constructor.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodnusoap_client">nusoap_client::nusoap_client()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodcall">nusoap_client::call()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodcheckCookies">nusoap_client::checkCookies()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodcheckWSDL">nusoap_client::checkWSDL()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methoddecodeUTF8">nusoap_client::decodeUTF8()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodgetCookies">nusoap_client::getCookies()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodgetDefaultRpcParams">nusoap_client::getDefaultRpcParams()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodgetHeader">nusoap_client::getHeader()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodgetHeaders">nusoap_client::getHeaders()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodgetHTTPBody">nusoap_client::getHTTPBody()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodgetHTTPContentType">nusoap_client::getHTTPContentType()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodgetHTTPContentTypeCharset">nusoap_client::getHTTPContentTypeCharset()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodgetOperationData">nusoap_client::getOperationData()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodgetProxy">nusoap_client::getProxy()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodgetProxyClassCode">nusoap_client::getProxyClassCode()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodloadWSDL">nusoap_client::loadWSDL()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodparseResponse">nusoap_client::parseResponse()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodsend">nusoap_client::send()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodsetCookie">nusoap_client::setCookie()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodsetCredentials">nusoap_client::setCredentials()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodsetCurlOption">nusoap_client::setCurlOption()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodsetDefaultRpcParams">nusoap_client::setDefaultRpcParams()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodsetEndpoint">nusoap_client::setEndpoint()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodsetHeaders">nusoap_client::setHeaders()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodsetHTTPEncoding">nusoap_client::setHTTPEncoding()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodsetHTTPProxy">nusoap_client::setHTTPProxy()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodsetUseCURL">nusoap_client::setUseCURL()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methodUpdateCookies">nusoap_client::UpdateCookies()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#methoduseHTTPPersistentConnection">nusoap_client::useHTTPPersistentConnection()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_client.html#method_getProxyClassCode">nusoap_client::_getProxyClassCode()</a></span><br>
</blockquote>
<!-- =========== Summary =========== -->
<p>Inherited From <span class="classname"><a href="../nusoap/nusoap_base.html">nusoap_base</a></span></p>
<blockquote>
<img src="../media/images/Constructor.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodnusoap_base">nusoap_base::nusoap_base()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodappendDebug">nusoap_base::appendDebug()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodclearDebug">nusoap_base::clearDebug()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodcontractQname">nusoap_base::contractQname()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methoddebug">nusoap_base::debug()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodexpandEntities">nusoap_base::expandEntities()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodexpandQname">nusoap_base::expandQname()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodformatDump">nusoap_base::formatDump()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetDebug">nusoap_base::getDebug()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetDebugAsXMLComment">nusoap_base::getDebugAsXMLComment()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetDebugLevel">nusoap_base::getDebugLevel()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetError">nusoap_base::getError()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetGlobalDebugLevel">nusoap_base::getGlobalDebugLevel()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetLocalPart">nusoap_base::getLocalPart()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetmicrotime">nusoap_base::getmicrotime()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetNamespaceFromPrefix">nusoap_base::getNamespaceFromPrefix()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetPrefix">nusoap_base::getPrefix()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodgetPrefixFromNamespace">nusoap_base::getPrefixFromNamespace()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodisArraySimpleOrStruct">nusoap_base::isArraySimpleOrStruct()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodserializeEnvelope">nusoap_base::serializeEnvelope()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodserialize_val">nusoap_base::serialize_val()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodsetDebugLevel">nusoap_base::setDebugLevel()</a></span><br>
<img src="../media/images/PrivateMethod.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodsetError">nusoap_base::setError()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodsetGlobalDebugLevel">nusoap_base::setGlobalDebugLevel()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#methodvarDump">nusoap_base::varDump()</a></span><br>
<img src="../media/images/Method.png" alt=" "/>
<span class="method-name"><a href="../nusoap/nusoap_base.html#method__toString">nusoap_base::__toString()</a></span><br>
</blockquote>
</div>
</div>
<p class="notes" id="credit">
Documentation generated on Mon, 26 Apr 2010 16:17:10 -0400 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0RC3</a>
</p>

Some files were not shown because too many files have changed in this diff Show More