[ * Added SOAP/XML management for LCR Adrian Georgescu **20070623101353] hunk ./debian/changelog 1 +cdrtool (5.1.7) unstable; urgency=low + + * Added SOAP/XML management for LCR + + -- Adrian Georgescu Sat, 23 Jun 2007 12:13:29 +0200 + hunk ./provisioning.phtml 56 + ), + 'gateways' => array('recordsClass' => 'Gateways', + 'soapClass' => 'WebService_NGNPro_NetworkPort' + ), + 'gwGroups' => array('recordsClass' => 'GatewayGroups', + 'soapClass' => 'WebService_NGNPro_NetworkPort' + ), + 'routes' => array('recordsClass' => 'Routes', + 'soapClass' => 'WebService_NGNPro_NetworkPort' hunk ./provisioning.phtml 758 + +} + +class GatewayGroups extends Records { + + var $sortElements=array( + 'name' => 'Name' + ); + + function GatewayGroups(&$SOAPEngine) { + $this->filters = array('name' => trim($_REQUEST['name_filter']) + ); + + $this->Records(&$SOAPEngine); + } + + function listRecords() { + + $this->showSeachForm(); + + // Insert credetials + $this->SOAPEngine->soapclient->addHeader($this->SOAPEngine->SoapAuth); + + // Filter + $filter=array('name' => $this->filters['name'] + ); + + // Range + $range=array('start' => intval($this->next), + 'count' => intval($this->maxrowsperpage) + ); + + // Order + if (!$this->filters['sortBy']) $this->filters['sortBy'] = 'name'; + if (!$this->filters['sortOrder']) $this->filters['sortOrder'] = 'ASC'; + + $orderBy = array('attribute' => $this->filters['sortBy'], + 'direction' => $this->filters['sortOrder'] + ); + + // Compose query + $Query=array('filter' => $filter, + 'orderBy' => $orderBy, + 'range' => $range + ); + + $this->url=sprintf("?sortBy=%s&sortOrder=%s",urlencode($this->filters['sortBy']),urlencode($this->filters['sortOrder'])); + + if (strlen($this->filters['name'])) $this->url .= sprintf("&name_filter=%s",urlencode($this->filters['name'])); + + // Call function + $result = $this->SOAPEngine->soapclient->getGatewayGroups($Query); + + if (PEAR::isError($result)) { + $error_msg = $result->getMessage(); + $error_fault= $result->getFault(); + $error_code = $result->getCode(); + printf ("

Error: %s (%s): %s",$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + return false; + } else { + + $this->rows = $result->total; + + print "

";
+            //print_r($result);
+            print "
"; + print " + + +
$this->rows records found
+

+ + + + + "; + + if (!$this->next) $this->next=0; + + if ($this->rows > $this->maxrowsperpage) { + $maxrows = $this->maxrowsperpage + $this->next; + if ($maxrows > $this->rows) $maxrows = $this->maxrowsperpage; + } else { + $maxrows=$this->rows; + } + + $i=0; + + if ($this->rows) { + while ($i < $this->maxrowsperpage) { + + if (!$result->groups[$i]) break; + + $group = $result->groups[$i]; + + $index=$this->next+$i+1; + + $rr=floor($index/2); + $mod=$index-$rr*2; + + if ($mod ==0) { + $bgcolor="lightgrey"; + } else { + $bgcolor="white"; + } + + $_url = $_SERVER['PHP_SELF'].sprintf("?service=%s&action=Delete&name_filter=%s", + urlencode($this->SOAPEngine->service), + urlencode($group) + ); + + if ($_REQUEST['action'] == 'Delete' && + $_REQUEST['name_filter'] == $group) { + $_url .= "&confirm=1"; + $actionText = "Confirm"; + } else { + $actionText = "Delete"; + } + + printf(" + + + + + ", + $bgcolor, + $index, + $group, + $_url, + $actionText + ); + + printf(" + + "); + + $i++; + + } + + } + + print "
Id + Name + Action
%s%s%s
"; + + $this->showPagination($maxrows); + + return true; + } + } + + function showAddForm() { + print " +

+ + + "; + printf ("",$_SERVER['PHP_SELF']); + print " + + + "; + printf("",$this->SOAPEngine->service); + print " + + +
+ "; + + print " + + "; + + printf (" Name: "); + + $this->SOAPEngine->soapclient->addHeader($this->SOAPEngine->SoapAuth); + $result = $this->SOAPEngine->soapclient->getGatewayGroups(); + + print " + + "; + print " +
+ "; + } + + function addRecord() { + $name = trim($_REQUEST['name']); + + if (!strlen($name)) { + printf ("

Error: Missing name. "); + return false; + } + + $this->SOAPEngine->soapclient->addHeader($this->SOAPEngine->SoapAuth); + + $result = $this->SOAPEngine->soapclient->addGatewayGroup($name); + + if (PEAR::isError($result)) { + $error_msg = $result->getMessage(); + $error_fault= $result->getFault(); + $error_code = $result->getCode(); + printf ("

Error: %s (%s): %s",$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + return false; + } else { + printf ("

Gateway group %s has been added. ",$name); + return 1; + } + } + + function deleteRecord() { + if (!$_REQUEST['confirm']) { + print "

Please press on Confirm to confirm the delete. "; + return 1; + } + + if (!strlen($this->filters['name'])) { + print "

Error: missing gateway name. "; + return 0; + } + + $this->SOAPEngine->soapclient->addHeader($this->SOAPEngine->SoapAuth); + + $result = $this->SOAPEngine->soapclient->deleteGatewayGroup($this->filters['name']); + + if (PEAR::isError($result)) { + $error_msg = $result->getMessage(); + $error_fault= $result->getFault(); + $error_code = $result->getCode(); + printf ("

Error: %s (%s): %s",$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + return false; + } else { + printf ("

Gateway %s has been deleted. ",$this->filters['name']); + unset($this->filters); + return 1; + } + } + + function showSeachFormCustom() { + printf (" Name: ",$this->filters['name']); + } + +} + +class Gateways extends Records { + + var $sortElements=array( + 'name' => 'Name', + 'group' => 'Group', + 'ip' => 'IP address', + 'prefix' => 'Prefix' + ); + + function Gateways(&$SOAPEngine) { + $this->filters = array('name' => trim($_REQUEST['name_filter']), + 'group' => trim($_REQUEST['group_filter']) + ); + + $this->Records(&$SOAPEngine); + } + + function listRecords() { + + $this->showSeachForm(); + + // Insert credetials + $this->SOAPEngine->soapclient->addHeader($this->SOAPEngine->SoapAuth); + + // Filter + $filter=array('name' => $this->filters['name'], + 'group' => $this->filters['group'] + ); + + // Range + $range=array('start' => intval($this->next), + 'count' => intval($this->maxrowsperpage) + ); + + // Order + if (!$this->filters['sortBy']) $this->filters['sortBy'] = 'name'; + if (!$this->filters['sortOrder']) $this->filters['sortOrder'] = 'ASC'; + + $orderBy = array('attribute' => $this->filters['sortBy'], + 'direction' => $this->filters['sortOrder'] + ); + + // Compose query + $Query=array('filter' => $filter, + 'orderBy' => $orderBy, + 'range' => $range + ); + + $this->url=sprintf("?sortBy=%s&sortOrder=%s",urlencode($this->filters['sortBy']),urlencode($this->filters['sortOrder'])); + + if (strlen($this->filters['name'])) $this->url .= sprintf("&name_filter=%s",urlencode($this->filters['name'])); + if (strlen($this->filters['group'])) $this->url .= sprintf("&group_filter=%s",urlencode($this->filters['group'])); + + // Call function + $result = $this->SOAPEngine->soapclient->getGateways($Query); + + if (PEAR::isError($result)) { + $error_msg = $result->getMessage(); + $error_fault= $result->getFault(); + $error_code = $result->getCode(); + printf ("

Error: %s (%s): %s",$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + return false; + } else { + + $this->rows = $result->total; + + print "

";
+            //print_r($result);
+            print "
"; + print " + + +
$this->rows records found
+

+ + + + + + + + + "; + + if (!$this->next) $this->next=0; + + if ($this->rows > $this->maxrowsperpage) { + $maxrows = $this->maxrowsperpage + $this->next; + if ($maxrows > $this->rows) $maxrows = $this->maxrowsperpage; + } else { + $maxrows=$this->rows; + } + + $i=0; + + if ($this->rows) { + while ($i < $this->maxrowsperpage) { + + if (!$result->gateways[$i]) break; + + $gateway = $result->gateways[$i]; + + $index=$this->next+$i+1; + + $rr=floor($index/2); + $mod=$index-$rr*2; + + if ($mod ==0) { + $bgcolor="lightgrey"; + } else { + $bgcolor="white"; + } + + $_url = $_SERVER['PHP_SELF'].sprintf("?service=%s&action=Delete&name_filter=%s", + urlencode($this->SOAPEngine->service), + urlencode($gateway->name) + ); + + if ($_REQUEST['action'] == 'Delete' && + $_REQUEST['name_filter'] == $gateway->name) { + $_url .= "&confirm=1"; + $actionText = "Confirm"; + } else { + $actionText = "Delete"; + } + + printf(" + + + + + + + + + ", + $bgcolor, + $index, + $gateway->name, + $gateway->group, + $gateway->transport, + $gateway->ip, + $gateway->port, + $gateway->strip, + $gateway->prefix, + $_url, + $actionText + ); + + printf(" + + "); + + $i++; + + } + + } + + print "
Id + Name + GroupAddressStripPrefixAction
%s%s%s%s://%s:%s%s%s%s
"; + + $this->showPagination($maxrows); + + return true; + } + } + + function showAddForm() { + print " +

+ + + "; + printf ("",$_SERVER['PHP_SELF']); + print " + + + "; + printf("",$this->SOAPEngine->service); + print " + + +
+ "; + + print " + + "; + + printf (" Name: "); + + $this->SOAPEngine->soapclient->addHeader($this->SOAPEngine->SoapAuth); + $result = $this->SOAPEngine->soapclient->getGatewayGroups(); + + printf (" Group: "); + + // Compose query + $Query=array('filter' => array('name'=>''), + 'orderBy' => array('attribute' => 'name', + 'direction' => 'ASC' + ), + 'range' => array('start' => 0, + 'count' => 1000) + ); + + $this->SOAPEngine->soapclient->addHeader($this->SOAPEngine->SoapAuth); + $result = $this->SOAPEngine->soapclient->getGatewayGroups($Query); + + if (PEAR::isError($result)) { + $error_msg = $result->getMessage(); + $error_fault= $result->getFault(); + $error_code = $result->getCode(); + printf ("

Error: %s (%s): %s",$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + return false; + } else { + print ""); + } + printf (" Address: "); + printf (" Strip: "; + printf (" Prefix: "); + + print " +

+ "; + print " +
+ "; + } + + function addRecord() { + $name = trim($_REQUEST['name']); + $group = trim($_REQUEST['group']); + $address = trim($_REQUEST['address']); + $strip = trim($_REQUEST['strip']); + $prefix = trim($_REQUEST['prefix']); + + if (!strlen($name) || !strlen($group) || !strlen($address)) { + printf ("

Error: Missing name, group or address. "); + return false; + } + + $address_els=explode(":",$address); + + if (count($address_els) == 1) { + $ip=$address_els[0]; + $transport='udp'; + $port='5060'; + } else if (count($address_els) == 2) { + $ip=$address_els[0]; + $port=$address_els[1]; + $transport='udp'; + } else if (count($address_els) == 3) { + $ip=$address_els[1]; + $port=intval($address_els[2]); + if ($address_els[0] == 'tcp' || $address_els[0] == 'tls' || $address_els[0] == 'udp') { + $transport=$address_els[0]; + } else { + $transport='udp'; + } + } + + $gateway=array( + 'name' => $name, + 'group' => $group, + 'ip' => $ip, + 'port' => intval($port), + 'uriScheme' => 'sip', + 'transport' => $transport, + 'strip' => intval($_REQUEST['strip']), + 'prefix' => $_REQUEST['prefix'] + ); + + $this->SOAPEngine->soapclient->addHeader($this->SOAPEngine->SoapAuth); + + $result = $this->SOAPEngine->soapclient->addGateway($gateway); + + if (PEAR::isError($result)) { + $error_msg = $result->getMessage(); + $error_fault= $result->getFault(); + $error_code = $result->getCode(); + printf ("

Error: %s (%s): %s",$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + return false; + } else { + printf ("

Gateway %s has been added. ",$address); + return 1; + } + } + + function deleteRecord() { + if (!$_REQUEST['confirm']) { + print "

Please press on Confirm to confirm the delete. "; + return 1; + } + + if (!strlen($this->filters['name'])) { + print "

Error: missing gateway name. "; + return 0; + } + + $this->SOAPEngine->soapclient->addHeader($this->SOAPEngine->SoapAuth); + + $result = $this->SOAPEngine->soapclient->deleteGateway($this->filters['name']); + + if (PEAR::isError($result)) { + $error_msg = $result->getMessage(); + $error_fault= $result->getFault(); + $error_code = $result->getCode(); + printf ("

Error: %s (%s): %s",$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + return false; + } else { + printf ("

Gateway %s has been deleted. ",$this->filters['address']); + unset($this->filters); + return 1; + } + } + + function showSeachFormCustom() { + printf (" Name: ",$this->filters['name']); + printf (" Group: ",$this->filters['group']); + } + +} + +class Routes extends Records { + + var $sortElements=array( + 'prefix' => 'Prefix', + 'from' => 'From', + 'gatewayGroup' => 'Gateway group', + 'priority' => 'Priority' + ); + + function Routes(&$SOAPEngine) { + $this->filters = array('prefix' => trim($_REQUEST['prefix_filter']), + 'gatewayGroup' => trim($_REQUEST['gatewayGroup_filter']), + 'from' => trim($_REQUEST['from_filter']), + 'priority' => trim($_REQUEST['priority_filter']) + ); + + $this->Records(&$SOAPEngine); + } + + function listRecords() { + + $this->showSeachForm(); + + // Insert credetials + $this->SOAPEngine->soapclient->addHeader($this->SOAPEngine->SoapAuth); + + // Filter + $filter=array('prefix' => $this->filters['prefix'], + 'gatewayGroup' => $this->filters['gatewayGroup'], + 'from' => $this->filters['from'] + ); + + // Range + $range=array('start' => intval($this->next), + 'count' => intval($this->maxrowsperpage) + ); + + // Order + if (!$this->filters['sortBy']) $this->filters['sortBy'] = 'prefix'; + if (!$this->filters['sortOrder']) $this->filters['sortOrder'] = 'ASC'; + + $orderBy = array('attribute' => $this->filters['sortBy'], + 'direction' => $this->filters['sortOrder'] + ); + + // Compose query + $Query=array('filter' => $filter, + 'orderBy' => $orderBy, + 'range' => $range + ); + + $this->url=sprintf("?sortBy=%s&sortOrder=%s",urlencode($this->filters['sortBy']),urlencode($this->filters['sortOrder'])); + + if (strlen($this->filters['prefix'])) $this->url .= sprintf("&prefix_filter=%s",urlencode($this->filters['prefix'])); + if (strlen($this->filters['gatewayGroup'])) $this->url .= sprintf("&gatewayGroup_filter=%s",urlencode($this->filters['gatewayGroup'])); + if (strlen($this->filters['from'])) $this->url .= sprintf("&from_filter=%s",urlencode($this->filters['from'])); + + // Call function + $result = $this->SOAPEngine->soapclient->getRoutes($Query); + + if (PEAR::isError($result)) { + $error_msg = $result->getMessage(); + $error_fault= $result->getFault(); + $error_code = $result->getCode(); + printf ("

Error: %s (%s): %s",$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + return false; + } else { + + $this->rows = $result->total; + + print "

";
+            //print_r($result);
+            print "
"; + print " + + +
$this->rows records found
+

+ + + + + + + + "; + + if (!$this->next) $this->next=0; + + if ($this->rows > $this->maxrowsperpage) { + $maxrows = $this->maxrowsperpage + $this->next; + if ($maxrows > $this->rows) $maxrows = $this->maxrowsperpage; + } else { + $maxrows=$this->rows; + } + + $i=0; + + if ($this->rows) { + while ($i < $this->maxrowsperpage) { + + if (!$result->routes[$i]) break; + + $route = $result->routes[$i]; + + $index=$this->next+$i+1; + + $rr=floor($index/2); + $mod=$index-$rr*2; + + if ($mod ==0) { + $bgcolor="lightgrey"; + } else { + $bgcolor="white"; + } + + $_url = $_SERVER['PHP_SELF'].sprintf("?service=%s&action=Delete&prefix_filter=%s&gatewayGroup_filter=%s&from_filter=%s&priority_filter=%s", + urlencode($this->SOAPEngine->service), + urlencode($route->prefix), + urlencode($route->gatewayGroup), + urlencode($route->fromURI), + urlencode($route->priority) + ); + + if ($_REQUEST['action'] == 'Delete' && + $_REQUEST['prefix_filter'] == $route->prefix && + $_REQUEST['gatewayGroup_filter'] == $route->gatewayGroup && + $_REQUEST['from_filter'] == $route->fromURI && + $_REQUEST['priority_filter'] == $route->priority) { + + $_url .= "&confirm=1"; + $actionText = "Confirm"; + } else { + $actionText = "Delete"; + } + + printf(" + + + + + + + + ", + $bgcolor, + $index, + $route->prefix, + $route->gatewayGroup, + $route->fromURI, + $route->priority, + $_url, + $actionText + ); + + printf(" + + "); + + $i++; + + } + + } + + print "
Id + Prefix + Gateway GroupFrom URIPriorityAction
%s%s%s%s%s%s
"; + + $this->showPagination($maxrows); + + return true; + } + } + + function showAddForm() { + print " +

+ + + "; + printf ("",$_SERVER['PHP_SELF']); + print " + + + "; + printf("",$this->SOAPEngine->service); + print " + + +
+ "; + + print " + + "; + + printf (" Prefix: "); + + printf (" Group: "); + + // Compose query + $Query=array('filter' => array('name'=>''), + 'orderBy' => array('attribute' => 'name', + 'direction' => 'ASC' + ), + 'range' => array('start' => 0, + 'count' => 1000) + ); + + $this->SOAPEngine->soapclient->addHeader($this->SOAPEngine->SoapAuth); + $result = $this->SOAPEngine->soapclient->getGatewayGroups($Query); + + if (PEAR::isError($result)) { + $error_msg = $result->getMessage(); + $error_fault= $result->getFault(); + $error_code = $result->getCode(); + printf ("

Error: %s (%s): %s",$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + return false; + } else { + print ""); + } + printf (" From: "); + printf (" Priority: "); + + print " +

+ "; + print " +
+ "; + } + + function addRecord() { + + $prefix = trim($_REQUEST['prefix']); + $gatewayGroup = trim($_REQUEST['gatewayGroup']); + $from = trim($_REQUEST['from']); + $priority = trim($_REQUEST['priority']); + + if (!strlen($prefix) || !strlen($gatewayGroup)) { + printf ("

Error: Missing prefix or gatewayGroup. "); + return false; + } + + $route=array( + 'prefix' => $prefix, + 'gatewayGroup' => $gatewayGroup, + 'fromURI' => $from, + 'priority' => intval($priority) + ); + + $routes=array($route); + + $this->SOAPEngine->soapclient->addHeader($this->SOAPEngine->SoapAuth); + + $result = $this->SOAPEngine->soapclient->addRoutes($routes); + + if (PEAR::isError($result)) { + $error_msg = $result->getMessage(); + $error_fault= $result->getFault(); + $error_code = $result->getCode(); + printf ("

Error: %s (%s): %s",$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + return false; + } else { + printf ("

Route %s has been added. ",$prefix); + return 1; + } + } + + function deleteRecord() { + if (!$_REQUEST['confirm']) { + print "

Please press on Confirm to confirm the delete. "; + return 1; + } + + if (!strlen($this->filters['prefix']) || !strlen($this->filters['gatewayGroup'])) { + print "

Error: missing route prefix or gatewayGroup. "; + return 0; + } + + $route=array( + 'prefix' => $this->filters['prefix'], + 'gatewayGroup' => $this->filters['gatewayGroup'], + 'fromURI' => $this->filters['from'], + 'priority' => intval($this->filters['priority']) + ); + + $routes=array($route); + + $this->SOAPEngine->soapclient->addHeader($this->SOAPEngine->SoapAuth); + + $result = $this->SOAPEngine->soapclient->deleteRoutes($routes); + + if (PEAR::isError($result)) { + $error_msg = $result->getMessage(); + $error_fault= $result->getFault(); + $error_code = $result->getCode(); + printf ("

Error: %s (%s): %s",$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + return false; + } else { + printf ("

Route %s has been deleted. ",$this->filters['prefix']); + unset($this->filters); + return 1; + } + } + + function showSeachFormCustom() { + printf (" Prefix: ",$this->filters['prefix']); + printf (" Gateway group: ",$this->filters['gatewayGroup']); + printf (" From: ",$this->filters['from']); + printf (" Priority: ",$this->filters['Priority']); + } hunk ./provisioning_lib.phtml 606 +} +class WebService_NGNPro_NetworkPort extends SOAP_Client +{ + function WebService_NGNPro_NetworkPort($url) +{ + $this->SOAP_Client($url, 0); + } + function &addGateway($gateway) { + // gateway is a ComplexType Gateway, + //refer to wsdl for more info + $gateway =& new SOAP_Value('gateway','{urn:AGProjects:NGNPro}Gateway',$gateway); + return $this->call("addGateway", + $v = array("gateway"=>$gateway), + array('namespace'=>'urn:AGProjects:NGNPro:Network', + 'soapaction'=>'', + 'style'=>'rpc', + 'use'=>'encoded' )); + } + function &deleteGateway($name) { + return $this->call("deleteGateway", + $v = array("name"=>$name), + array('namespace'=>'urn:AGProjects:NGNPro:Network', + 'soapaction'=>'', + 'style'=>'rpc', + 'use'=>'encoded' )); + } + function &getGateways($query) { + // query is a ComplexType GatewayQuery, + //refer to wsdl for more info + $query =& new SOAP_Value('query','{urn:AGProjects:NGNPro}GatewayQuery',$query); + return $this->call("getGateways", + $v = array("query"=>$query), + array('namespace'=>'urn:AGProjects:NGNPro:Network', + 'soapaction'=>'', + 'style'=>'rpc', + 'use'=>'encoded' )); + } + function &addGatewayGroup($group) { + return $this->call("addGatewayGroup", + $v = array("group"=>$group), + array('namespace'=>'urn:AGProjects:NGNPro:Network', + 'soapaction'=>'', + 'style'=>'rpc', + 'use'=>'encoded' )); + } + function &deleteGatewayGroup($name) { + return $this->call("deleteGatewayGroup", + $v = array("name"=>$name), + array('namespace'=>'urn:AGProjects:NGNPro:Network', + 'soapaction'=>'', + 'style'=>'rpc', + 'use'=>'encoded' )); + } + function &getGatewayGroups($query) { + // query is a ComplexType GatewayGroupQuery, + //refer to wsdl for more info + $query =& new SOAP_Value('query','{urn:AGProjects:NGNPro}GatewayGroupQuery',$query); + return $this->call("getGatewayGroups", + $v = array("query"=>$query), + array('namespace'=>'urn:AGProjects:NGNPro:Network', + 'soapaction'=>'', + 'style'=>'rpc', + 'use'=>'encoded' )); + } + function &addRoutes($routes) { + // routes is a ComplexType RouteArray, + //refer to wsdl for more info + $routes =& new SOAP_Value('routes','{urn:AGProjects:NGNPro}RouteArray',$routes); + return $this->call("addRoutes", + $v = array("routes"=>$routes), + array('namespace'=>'urn:AGProjects:NGNPro:Network', + 'soapaction'=>'', + 'style'=>'rpc', + 'use'=>'encoded' )); + } + function &deleteRoutes($routes) { + // routes is a ComplexType RouteArray, + //refer to wsdl for more info + $routes =& new SOAP_Value('routes','{urn:AGProjects:NGNPro}RouteArray',$routes); + return $this->call("deleteRoutes", + $v = array("routes"=>$routes), + array('namespace'=>'urn:AGProjects:NGNPro:Network', + 'soapaction'=>'', + 'style'=>'rpc', + 'use'=>'encoded' )); + } + function &getRoutes($query) { + // query is a ComplexType RouteQuery, + //refer to wsdl for more info + $query =& new SOAP_Value('query','{urn:AGProjects:NGNPro}RouteQuery',$query); + return $this->call("getRoutes", + $v = array("query"=>$query), + array('namespace'=>'urn:AGProjects:NGNPro:Network', + 'soapaction'=>'', + 'style'=>'rpc', + 'use'=>'encoded' )); + } hunk ./version 1 -5.1.6 +5.1.7