diff --git a/library/NGNPro/Records/GatewayRules.php b/library/NGNPro/Records/GatewayRules.php index ff29a10..a2850be 100644 --- a/library/NGNPro/Records/GatewayRules.php +++ b/library/NGNPro/Records/GatewayRules.php @@ -1,572 +1,589 @@ <?php class GatewayRules extends Records { var $carriers = array(); var $FieldsReadOnly = array( 'reseller', 'changeDate' ); var $Fields = array( 'id' => array('type'=>'integer','readonly' => true), 'gateway_id' => array('type'=>'integer','name' => 'Gateway'), 'prefix' => array('type'=>'string'), 'strip' => array('type'=>'integer'), 'prepend' => array('type'=>'string'), 'minLength' => array('type'=>'integer'), 'maxLength' => array('type'=>'integer') ); public function __construct($SoapEngine) { $this->filters = array( 'id' => trim($_REQUEST['id_filter']), 'gateway_id' => trim($_REQUEST['gateway_id_filter']), 'carrier_id' => trim($_REQUEST['carrier_id_filter']), 'prefix' => trim($_REQUEST['prefix_filter']), ); $this->sortElements = array( 'changeDate' => 'Change date', 'gateway' => 'Gateway', 'carrier' => 'Carrier', 'prefix' => 'Prefix' ); parent::__construct($SoapEngine); } function listRecords() { $this->getCarriers(); $this->showSeachForm(); // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); // Filter $filter = array( 'id' => intval($this->filters['id']), 'gateway_id' => intval($this->filters['gateway_id']), 'carrier_id' => intval($this->filters['carrier_id']), 'prefix' => $this->filters['prefix'], 'customer' => intval($this->filters['customer']), 'reseller' => intval($this->filters['reseller']) ); // Range $range = array( 'start' => intval($this->next), 'count' => intval($this->maxrowsperpage) ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'changeDate'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'ASC'; $orderBy = array( 'attribute' => $this->sorting['sortBy'], 'direction' => $this->sorting['sortOrder'] ); // Compose query $Query = array( 'filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); $this->log_action('getGatewayRules'); $result = $this->SoapEngine->soapclient->getGatewayRules($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { $this->rows = $result->total; print " <div class = \"alert alert-success\"><center>$this->rows records found</center></div> <p> <table class='table table-striped table-condensed' width=100%> "; print " <thead> <tr> <th></th> <th>Owner</th> <th>Rule</th> <th>Carrier</th> <th>Gateway</th> <th>Prefix</th> <th>Strip</th> <th>Prepend</th> <th>MinLength</th> <th>MaxLength</th> <th>Change date</th> <th>Actions</th> </tr> </thead> "; 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 < $maxrows) { if (!$result->gateway_rules[$i]) break; $gateway_rule = $result->gateway_rules[$i]; $index = $this->next+$i+1; $base_url_data = array( 'service' => $this->SoapEngine->service, 'id_filter' => $gateway_rule->id, 'reseller_filter' => $gateway_rule->reseller ); $delete_url_data = array_merge( $base_url_data, array( 'action' => 'Delete', ) ); $customer_url_data = array( 'service' => sprintf('customers@%s', $this->SoapEngine->customer_engine), 'customer_filter' => $gateway_rule->reseller ); $carrier_url_data = array_merge( $base_url_data, array( 'service' => sprintf('pstn_carriers@%s', $this->SoapEngine->soapEngine), 'id_filter' => $gateway_rule->carrier_id, ) ); $gateway_url_data = array_merge( $base_url_data, array( 'service' => sprintf('pstn_gateways@%s', $this->SoapEngine->soapEngine), 'id_filter' => $gateway_rule->gateway_id, ) ); if ($_REQUEST['action'] == 'Delete' && $_REQUEST['id_filter'] == $gateway_rule->id) { $delete_url_data['confirm'] = 1; $actionText = "<font color=red>Confirm</font>"; } else { $actionText = "Delete"; } $_delete_url = $this->buildUrl($delete_url_data); $_url = $this->buildUrl($base_url_data); $_customer_url = $this->buildUrl($customer_url_data); $_carrier_url = $this->buildUrl($carrier_url_data); $_gateway_url = $this->buildUrl($gateway_url_data); printf( " <tr> <td valign=top>%s</td> <td valign=top><a href=%s>%s</a></td> <td valign=top><a href=%s>%s</a></td> <td valign=top><a href=%s>%s</a> (%d)</td> <td valign=top><a href=%s>%s (%d)</a></td> <td valign=top>%s</td> <td valign=top>%s</td> <td valign=top>%s</td> <td valign=top>%s</td> <td valign=top>%s</td> <td valign=top>%s</td> <td valign=top><a class='btn-small btn-danger' href=%s>%s</a></td> </tr> ", $index, $_customer_url, $gateway_rule->reseller, $_url, $gateway_rule->id, $_carrier_url, $gateway_rule->carrier, $gateway_rule->carrier_id, $_gateway_url, $gateway_rule->gateway, $gateway_rule->gateway_id, $gateway_rule->prefix, $gateway_rule->strip, $gateway_rule->prepend, $gateway_rule->minLength, $gateway_rule->maxLength, $gateway_rule->changeDate, $_delete_url, $actionText ); print "</tr>"; $i++; } } print "</table>"; if ($this->rows == 1) { $this->showRecord($gateway_rule); } else { $this->showPagination($maxrows); } return true; } } function showAddForm() { //if ($this->selectionActive) return; $this->getGateways(); if (!count($this->gateways)) { print "<p>Create a gateway first</p>"; return false; } printf("<form class=form-inline method=post name=addform action=%s>", $_SERVER['PHP_SELF']); print <<< END <div class='well well-small'> <input class='btn btn-warning' type=submit name=action value=Add> <input type=hidden name=sortBy value=changeDate> <div class='input-prepend'> <span class='add-on'>Gateway</span> <select class=span3 name=gateway_id> END; foreach (array_keys($this->gateways) as $_gateway) { printf("<option value='%s'>%s", $_gateway, $this->gateways[$_gateway]); } print <<< END </select> </div> <div class='input-prepend'><span class='add-on'>Prefix</span><input class=span1 type=text size=15 name=prefix></div> <div class='input-prepend'><span class='add-on'>Strip</span><input class=span1 type=text size=5 name=strip></div> <div class='input-prepend'> <span class='add-on'>Prepend</span><input class=span1 type=text size=15 name=prepend> </div> <div class='input-prepend'> <span class='add-on'>Min length</span><input class=span1 type=text size=5 name=minLength> </div> <div class='input-prepend'> <span class='add-on'>Max length</span><input class=span1 type=text size=5 name=maxLength> </div> END; $this->printHiddenFormElements(); print <<< END </div> </form> END; } function addRecord($dictionary = array()) { if ($dictionary['gateway_id']) { $gateway_id = $dictionary['gateway_id']; } else { $gateway_id = trim($_REQUEST['gateway_id']); } if ($dictionary['prefix']) { $prefix = $dictionary['prefix']; } else { $prefix = trim($_REQUEST['prefix']); } if ($dictionary['strip']) { $strip = $dictionary['strip']; } else { $strip = trim($_REQUEST['strip']); } if ($dictionary['prepend']) { $prepend = $dictionary['prepend']; } else { $prepend = trim($_REQUEST['prepend']); } if ($dictionary['minLength']) { $minLength = $dictionary['minLength']; } else { $minLength = trim($_REQUEST['minLength']); } if ($dictionary['maxLength']) { $maxLength = $dictionary['maxLength']; } else { $maxLength = trim($_REQUEST['maxLength']); } if (!strlen($gateway_id)) { printf("<p><font color=red>Error: Missing gateway id</font>"); return false; } $rule = array( 'gateway_id' => intval($gateway_id), 'prefix' => $prefix, 'prepend' => $prepend, 'strip' => intval($strip), 'minLength' => intval($minLength), 'maxLength' => intval($maxLength) ); $function = array( 'commit' => array( 'name' => 'addGatewayRule', 'parameters' => array($rule), 'logs' => array('success' => sprintf('Gateway rule has been added')) ) ); unset($this->filters); return $this->SoapEngine->execute($function, $this->html); } function deleteRecord($dictionary = array()) { if (!$dictionary['confirm'] && !$_REQUEST['confirm']) { print "<p><font color=red>Please press on Confirm to confirm the delete.</font></p>"; return true; } if ($dictionary['id']) { $id = $dictionary['id']; } else { $id = trim($this->filters['id']); } if (!strlen($id)) { print "<p><font color=red>Error: missing rule id </font>"; return false; } $function = array( 'commit' => array( 'name' => 'deleteGatewayRule', 'parameters' => array(intval($id)), 'logs' => array('success' => sprintf('Gateway rule %d has been deleted', $id)) ) ); unset($this->filters); return $this->SoapEngine->execute($function, $this->html); } function showSeachFormCustom() { printf( " <div class='input-prepend'> <span class='add-on'>Rule</span><input class=span2 type=text size=15 name=id_filter value='%s'> </div> ", $this->filters['id'] ); - print <<< END - <select class=span2 name=carrier_id_filter> - <option value=''>Carrier -END; - $selected_carrier[$this->filters['carrier_id']]='selected'; - foreach (array_keys($this->carriers) as $_carrier) { - printf("<option value='%s' %s>%s", $_carrier, $selected_carrier[$_carrier], $this->carriers[$_carrier]); + if (count($this->carriers) > 250) { + printf( + " + <div class='input-prepend'> + <span class='add-on'>Carrier</span><input class=span2 type=text size=15 name=carrier_id_filter value='%s'> + </div> + ", + $this->filters['carrier_id'] + ); + } else { + print <<< END + <select class=span2 name=carrier_id_filter> + <option value=''>Carrier +END; + $selected_carrier[$this->filters['carrier_id']] = 'selected'; + foreach (array_keys($this->carriers) as $_carrier) { + printf( + "<option value='%s' %s>%s (%s)</option>", + $_carrier, + $selected_carrier[$_carrier], + $this->carriers[$_carrier], + $_carrier + ); + } + print "</select>"; } - print "</select>"; printf( " <div class='input-prepend'> <span class='add-on'>Gateway</span><input class=span2 type=text size=15 name=gateway_id_filter value='%s'> </div> ", $this->filters['gateway_id'] ); printf( " <div class='input-prepend'> <span class='add-on'>Prefix</span><input class=span1 type=text size=15 name=prefix_filter value='%s'> </div> ", $this->filters['prefix'] ); } function showCustomerForm($name = 'customer_filter') { } function showTextBeforeCustomerSelection() { print "Owner"; } function showRecord($rule) { $this->getGateways(); print "<h3>Rule</h3>"; printf("<form class=form-horizontal method=post name=addform action=%s>", $_SERVER['PHP_SELF']); print "<input type=hidden name=action value=Update>"; foreach (array_keys($this->Fields) as $item) { if ($this->Fields[$item]['name']) { $item_name = $this->Fields[$item]['name']; } else { $item_name=ucfirst($item); } printf( " <div class='control-group'> <label class=control-label>%s</label> ", $item_name ); if ($this->Fields[$item]['readonly']) { printf( " <div class=controls style='padding-top:5px'> <input name=%s_form type=hidden value='%s'> %s </div> ", $item, $rule->$item, $rule->$item ); } else { if ($item == 'gateway_id') { printf("<div class=controls><select class=span2 name=%s_form>", $item); $selected_gateway[$rule->$item]='selected'; foreach (array_keys($this->gateways) as $_gateway) { printf( "<option value='%s' %s>%s", $_gateway, $selected_gateway[$_gateway], $this->gateways[$_gateway] ); } print "</select></div>"; } else { printf( "<div class=controls><input class=span2 name=%s_form size=30 type=text value='%s'></div>", $item, $rule->$item ); } } print " </div>"; } printf("<input type=hidden name=reseller_filter value='%s'>", $rule->reseller); $this->printFiltersToForm(); $this->printHiddenFormElements(); print <<< END <div class="form-actions"> <input class='btn btn-warning' type=submit value=Update> </div> </form> END; } function updateRecord() { //print "<p>Updating rule ..."; if (!$_REQUEST['id_form'] || !strlen($_REQUEST['reseller_filter'])) { return; } if (!$rule = $this->getRecord($_REQUEST['id_form'])) { return false; } foreach (array_keys($this->Fields) as $item) { $var_name = $item.'_form'; if ($this->Fields[$item]['type'] == 'integer') { $rule->$item = intval($_REQUEST[$var_name]); } else { $rule->$item = trim($_REQUEST[$var_name]); } } $function = array('commit' => array('name' => 'updateGatewayRule', 'parameters' => array($rule), 'logs' => array('success' => sprintf('Rule %d has been updated', $_REQUEST['id_form']))) ); $result = $this->SoapEngine->execute($function, $this->html); dprint_r($result); return (bool)$result; } function getRecord($id) { // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); // Filter $filter = array('id' => intval($id)); // Range $range = array('start' => 0, 'count' => 1 ); // Order $this->sorting['sortBy'] = 'gateway'; $this->sorting['sortOrder'] = 'ASC'; $orderBy = array('attribute' => $this->sorting['sortBy'], 'direction' => $this->sorting['sortOrder'] ); // Compose query $Query = array('filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); // Call function $this->log_action('getGatewayRules'); $result = $this->SoapEngine->soapclient->getGatewayRules($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { if ($result->gateway_rules[0]) { return $result->gateway_rules[0]; } else { return false; } } } } diff --git a/library/NGNPro/Records/Gateways.php b/library/NGNPro/Records/Gateways.php index 7641477..4092c8e 100644 --- a/library/NGNPro/Records/Gateways.php +++ b/library/NGNPro/Records/Gateways.php @@ -1,564 +1,580 @@ <?php class Gateways extends Records { var $carriers = array(); var $FieldsReadOnly = array( 'reseller', 'changeDate' ); var $Fields = array( 'id' => array('type'=>'integer', 'readonly' => true), 'name' => array('type'=>'string'), 'carrier_id' => array('type'=>'integer'), 'transport' => array('type'=>'string'), 'ip' => array('name'=>'IP or hostname', 'type'=>'string'), 'port' => array('type'=>'integer') ); //var $transports = array('udp','tcp','tls'); var $transports = array('udp'); public function __construct($SoapEngine) { $this->filters = array( 'id' => trim($_REQUEST['id_filter']), 'name' => trim($_REQUEST['name_filter']), 'carrier_id' => trim($_REQUEST['carrier_id_filter']) ); $this->sortElements = array( 'changeDate' => 'Change date', 'name' => 'Gateway', 'carrier_id' => 'Carrier', 'ip' => 'Address' ); parent::__construct($SoapEngine); } function listRecords() { $this->getCarriers(); $this->showSeachForm(); // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); // Filter $filter = array( 'id' => intval($this->filters['id']), 'name' => $this->filters['name'], 'carrier_id'=> intval($this->filters['carrier_id']), 'customer' => intval($this->filters['customer']), 'reseller' => intval($this->filters['reseller']) ); // Range $range = array( 'start' => intval($this->next), 'count' => intval($this->maxrowsperpage) ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'changeDate'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'DESC'; $orderBy = array( 'attribute' => $this->sorting['sortBy'], 'direction' => $this->sorting['sortOrder'] ); // Compose query $Query = array( 'filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); // Call function $this->log_action('getGateways'); $result = $this->SoapEngine->soapclient->getGateways($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { $this->rows = $result->total; print <<< END <div class="alert alert-success"><center>$this->rows records found</center></div> <p> <table class='table table-striped table-condensed' width=100%> <thead> <tr> <th>Id</th> <th>Owner</th> <th>Gateway</th> <th>Carrier</th> <th>Name</th> <th>Address</th> <th>Rules</th> <th>Change date</th> <th>Actions</th> </tr> </thead> END; 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 < $maxrows) { if (!$result->gateways[$i]) break; $gateway = $result->gateways[$i]; $index = $this->next + $i + 1; $base_url_data = array( 'service' => $this->SoapEngine->service, 'id_filter' => $gateway->id, ); $delete_url_data = array_merge( $base_url_data, array( 'action' => 'Delete', ) ); $customer_url_data = array( 'service' => sprintf('customers@%s', $this->SoapEngine->customer_engine), 'customer_filter' => $gateway->reseller ); $carrier_url_data = array_merge( $base_url_data, array( 'service' => sprintf('pstn_carriers@%s', $this->SoapEngine->soapEngine), 'id_filter' => $gateway->carrier_id, 'reseller_filter' => $gateway->reseller, ) ); $rules_url_data = array( 'service' => sprintf('gateway_rules@%s', $this->SoapEngine->soapEngine), 'gateway_id_filter' => $gateway->id, 'reseller_filter' => $gateway->reseller ); if ($_REQUEST['action'] == 'Delete' && $_REQUEST['id_filter'] == $gateway->id) { $delete_url_data['confirm'] = 1; $actionText = "<font color=red>Confirm</font>"; } else { $actionText = "Delete"; } $_delete_url = $this->buildUrl($delete_url_data); $_url = $this->buildUrl($base_url_data); $_customer_url = $this->buildUrl($customer_url_data); $_carrier_url = $this->buildUrl($carrier_url_data); $_rules_url = $this->buildUrl($rules_url_data); printf( " <tr> <td valign=top>%s</td> <td valign=top><a href=%s>%s</a></td> <td valign=top><a href=%s>%s</a></td> <td valign=top><a href=%s>%s</a></td> <td valign=top>%s</td> <td valign=top>%s:%s:%s</td> <td valign=top><a href=%s>Rules</a></td> <td valign=top>%s</td> <td valign=top><a class='btn-small btn-danger' href=%s>%s</a></td> </tr> ", $index, $_customer_url, $gateway->reseller, $_url, $gateway->id, $_carrier_url, $gateway->carrier, $gateway->name, $gateway->transport, $gateway->ip, $gateway->port, $_rules_url, $gateway->changeDate, $_delete_url, $actionText ); printf(" </tr> "); $i++; } } print "</table>"; if ($this->rows == 1) { $this->showRecord($gateway); } else { $this->showPagination($maxrows); } return true; } } function showAddForm() { //if ($this->selectionActive) return; $this->getCarriers(); if (!count($this->carriers)) { print "<p>Create a carrier first"; return false; } printf("<form class='form-inline' method=post name=addform action=%s>", $_SERVER['PHP_SELF']); print <<< END <div class='well well-small'> <input class='btn btn-warning' type=submit name=action value=Add> Carrier <select name=carrier_id> END; foreach (array_keys($this->carriers) as $_carrier) { printf("<option value='%s'>%s", $_carrier, $this->carriers[$_carrier]); } print <<< END </select> <div class=input-prepend><span class="add-on">Name</span><input class=span2 type=text size=20 name=name></div> <div class=input-prepend><span class="add-on">Transport</span> <select class=span1 name=transport> END; foreach ($this->transports as $_transport) { printf("<option value='%s'>%s", $_transport, $_transport); } print <<< END </select> </div> <div class=input-prepend> <span class="add-on">Address</span><input class=span2 type=text size=25 name=address> </div> END; $this->printHiddenFormElements(); print "</div> </form> "; } function addRecord($dictionary = array()) { if ($dictionary['name']) { $name = $dictionary['name']; } else { $name = trim($_REQUEST['name']); } if ($dictionary['carrier_id']) { $carrier_id = $dictionary['carrier_id']; } else { $carrier_id = trim($_REQUEST['carrier_id']); } if ($dictionary['address']) { $address = $dictionary['address']; } else { $address = trim($_REQUEST['address']); } if ($dictionary['transport']) { $transport = $dictionary['transport']; } else { $transport = trim($_REQUEST['transport']); } if (!strlen($name) || !strlen($carrier_id) || !strlen($address)) { printf("<p><font color=red>Error: Missing gateway name, carrier_id or address</font>"); return false; } $address_els = explode(':', $address); if (count($address_els) == 1) { $ip = $address_els[0]; $port ='5060'; } elseif (count($address_els) == 2) { $ip = $address_els[0]; $port = $address_els[1]; } if (!$port) $port = 5060; if (!in_array($transport, $this->transports)) { $transport=$this->transports[0]; } $gateway = array( 'name' => $name, 'carrier_id' => intval($carrier_id), 'ip' => $ip, 'port' => intval($port), 'transport' => $transport ); $function = array( 'commit' => array( 'name' => 'addGateway', 'parameters' => array($gateway), 'logs' => array('success' => sprintf('Gateway %s has been added', $name)) ) ); unset($this->filters); return $this->SoapEngine->execute($function, $this->html); } function deleteRecord($dictionary = array()) { if (!$dictionary['confirm'] && !$_REQUEST['confirm']) { print "<p><font color=red>Please press on Confirm to confirm the delete. </font>"; return true; } if ($dictionary['id']) { $id = $dictionary['id']; } else { $id = trim($this->filters['id']); } if (!strlen($id)) { print "<p><font color=red>Error: missing gateway id.</font>"; return false; } $function = array( 'commit' => array( 'name' => 'deleteGateway', 'parameters' => array(intval($id)), 'logs' => array('success' => sprintf('Gateway %d has been deleted', $id)) ) ); unset($this->filters); return $this->SoapEngine->execute($function, $this->html); } function showSeachFormCustom() { printf( " <div class=input-prepend> <span class=\"add-on\">Gateway</span> <input class=2 type=text size=10 name=id_filter value='%s'> </div> ", $this->filters['id'] ); - print " - <select name=carrier_id_filter> - <option value=''>Carrier"; - - $selected_carrier[$this->filters['carrier_id']]='selected'; - - foreach (array_keys($this->carriers) as $_carrier) { - printf("<option value='%s' %s>%s", $_carrier, $selected_carrier[$_carrier], $this->carriers[$_carrier]); + if (count($this->carriers) > 250) { + printf( + " + <div class='input-prepend'> + <span class='add-on'>Carrier</span><input class=span2 type=text size=15 name=carrier_id_filter value='%s'> + </div> + ", + $this->filters['carrier_id'] + ); + } else { + print <<< END + <select class=span2 name=carrier_id_filter> + <option value=''>Carrier +END; + $selected_carrier[$this->filters['carrier_id']] = 'selected'; + foreach (array_keys($this->carriers) as $_carrier) { + printf( + "<option value='%s' %s>%s (%s)</option>", + $_carrier, + $selected_carrier[$_carrier], + $this->carriers[$_carrier], + $_carrier + ); + } + print "</select>"; } - print "</select>"; printf( " <div class=input-prepend> <span class=\"add-on\">Name</span><input type=text size=20 name=name_filter value='%s'> </div> ", $this->filters['name'] ); } function showCustomerForm($name = 'customer_filter') { } function showTextBeforeCustomerSelection() { print "Owner"; } function showRecord($gateway) { print "<h3>Gateway</h3>"; printf("<form class=form-horizontal method=post name=addform action=%s>", $_SERVER['PHP_SELF']); print "<input type=hidden name=action value=Update>"; foreach (array_keys($this->Fields) as $item) { if ($this->Fields[$item]['name']) { $item_name=$this->Fields[$item]['name']; } else { $item_name = ucfirst($item); } printf( "<div class=control-group><label class=control-label>%s</label>", $item_name ); if ($this->Fields[$item]['readonly']) { printf( "<div class=controls style='padding-top:5px'><input name=%s_form type=hidden value='%s'>%s</div>", $item, $gateway->$item, $gateway->$item ); } else { if ($item == 'carrier_id') { printf("<div class=controls><select class=span2 name=%s_form>", $item); $selected_carrier[$gateway->$item]='selected'; foreach (array_keys($this->carriers) as $_carrier) { printf( "<option value='%s' %s>%s", $_carrier, $selected_carrier[$_carrier], $this->carriers[$_carrier] ); } print "</select></div>"; } elseif ($item == 'transport') { printf("<div class=controls><select class=span2 name=%s_form>", $item); $selected_transport[$gateway->$item]='selected'; foreach ($this->transports as $_transport) { printf("<option value='%s' %s>%s", $_transport, $selected_transport[$_transport], $_transport); } print "</select></div>"; } else { printf( "<div class=controls><input class=span2 name=%s_form size=30 type=text value='%s'></div>", $item, $gateway->$item ); } } print "</div>"; } printf("<input type=hidden name=id_filter value='%s'>", $gateway->id); $this->printFiltersToForm(); $this->printHiddenFormElements(); print " <div class=form-actions> <input class='btn btn-warning' type=submit value=Update> </div> "; print "</form>"; } function updateRecord() { //print "<p>Updating gateway ..."; if (!$_REQUEST['id_filter']) return; if (!$gateway = $this->getRecord($_REQUEST['id_filter'])) { return false; } foreach (array_keys($this->Fields) as $item) { $var_name=$item.'_form'; if ($this->Fields[$item]['type'] == 'integer') { $gateway->$item = intval($_REQUEST[$var_name]); } else { $gateway->$item = trim($_REQUEST[$var_name]); } } if (!in_array($gateway->transport, $this->transports)) { printf("<font color=red>Invalid transport '%s'</font>", $gateway->transport); return false; } $function = array( 'commit' => array( 'name' => 'updateGateway', 'parameters' => array($gateway), 'logs' => array( 'success' => sprintf('Gateway %s has been updated', $_REQUEST['name_filter']))) ); $result = $this->SoapEngine->execute($function, $this->html); dprint_r($result); return (bool)$result; } function getRecord($id) { // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); // Filter $filter = array('id' => intval($id)); // Range $range = array( 'start' => 0, 'count' => 1 ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'name'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'ASC'; $orderBy = array( 'attribute' => $this->sorting['sortBy'], 'direction' => $this->sorting['sortOrder'] ); // Compose query $Query = array( 'filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); // Call function $this->log_action('getGateways'); $result = $this->SoapEngine->soapclient->getGateways($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { if ($result->gateways[0]) { return $result->gateways[0]; } else { return false; } } } } diff --git a/library/NGNPro/Records/Routes.php b/library/NGNPro/Records/Routes.php index d5522c5d..8691089 100644 --- a/library/NGNPro/Records/Routes.php +++ b/library/NGNPro/Records/Routes.php @@ -1,528 +1,544 @@ <?php class Routes extends Records { var $carriers = array(); var $Fields = array( 'id' => array( 'type'=>'integer', 'readonly' => true ), 'carrier_id' => array('type'=>'integer','name'=>'Carrier'), 'prefix' => array('type'=>'string'), 'originator' => array('type'=>'string'), 'priority' => array('type'=>'integer') ); var $sortElements = array( 'prefix' => 'Prefix', 'priority' => 'Priority' ); public function __construct($SoapEngine) { $this->filters = array( 'prefix' => trim($_REQUEST['prefix_filter']), 'priority' => trim($_REQUEST['priority_filter']), 'carrier_id'=> trim($_REQUEST['carrier_id_filter']), 'reseller' => trim($_REQUEST['reseller_filter']), 'id' => trim($_REQUEST['id_filter']) ); parent::__construct($SoapEngine); } function listRecords() { $this->getCarriers(); $this->showSeachForm(); // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); // Filter $filter = array( 'prefix' => $this->filters['prefix'], 'carrier_id' => intval($this->filters['carrier_id']), 'reseller' => intval($this->filters['reseller']), 'id' => intval($this->filters['id']) ); // Range $range = array( 'start' => intval($this->next), 'count' => intval($this->maxrowsperpage) ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'prefix'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'ASC'; $orderBy = array( 'attribute' => $this->sorting['sortBy'], 'direction' => $this->sorting['sortOrder'] ); // Compose query $Query = array( 'filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); // Call function $this->log_action('getRoutes'); $result = $this->SoapEngine->soapclient->getRoutes($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { $this->rows = $result->total; print <<< END <div class="alert alert-success"><center>$this->rows records found</center></div> <p> <table class='table table-condensed table-striped'width=100%> <thead> <tr> <th><b>Id</b></th> <th><b>Owner</b></th> <th><b>Route</b></th> <th><b>Carrier</b></th> <th><b>Gateways</b></th> <th><b>Prefix</b></th> <th><b>Originator</b></th> <th><b>Priority</b></th> <th><b>Change date</b></th> <th><b>Actions</b></th> </tr> </thead> END; 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 < $maxrows) { if (!$result->routes[$i]) break; $route = $result->routes[$i]; $index = $this->next+$i+1; $base_url_data = array( 'service' => $this->SoapEngine->service, 'id_filter' => $route->id, ); $delete_url_data = array_merge( $base_url_data, array( 'action' => 'Delete', ) ); $customer_url_data = array( 'service' => sprintf('customers@%s', $this->SoapEngine->customer_engine), 'customer_filter' => $route->reseller ); $carrier_url_data = array_merge( $base_url_data, array( 'service' => sprintf('pstn_carriers@%s', $this->SoapEngine->soapEngine), 'id_filter' => $route->carrier_id, ) ); $gateway_url_data = array( 'service' => sprintf('pstn_gateways@%s', $this->SoapEngine->soapEngine), 'carrier_id_filter' => $route->carrier_id, 'reseller_filter' => $route->reseller ); if ($_REQUEST['action'] == 'Delete' && $_REQUEST['id_filter'] == $route->id) { $delete_url_data['confirm'] = 1; $actionText = "<font color=red>Confirm</font>"; } else { $actionText = "Delete"; } $_delete_url = $this->buildUrl($delete_url_data); $_url = $this->buildUrl($base_url_data); $_customer_url = $this->buildUrl($customer_url_data); $_carrier_url = $this->buildUrl($carrier_url_data); $_gateway_url = $this->buildUrl($gateway_url_data); printf( " <tr> <td>%s</td> <td><a href=%s>%s</a></td> <td><a href=%s>%s</a></td> <td><a href=%s>%s</a></td> <td><a href=%s>Gateways</a></td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> <td><a class='btn-small btn-danger' href=%s>%s</a></td> </tr> ", $index, $_customer_url, $route->reseller, $_url, $route->id, $_carrier_url, $route->carrier, $_gateway_url, $route->prefix, $route->originator, $route->priority, $route->changeDate, $_delete_url, $actionText ); print "</tr>"; $i++; } } print "</table>"; if ($this->rows == 1) { $this->showRecord($route); } else { $this->showPagination($maxrows); } return true; } } function showAddForm() { //if ($this->selectionActive) return; if (!count($this->carriers)) { print "<p>Create a carrier first"; return false; } printf( "<form class=form-inline method=post name=addform action=%s><div class='well well-small'>", $_SERVER['PHP_SELF'] ); print <<< END <input class='btn btn-warning' type=submit name=action value=Add> <div class='input-prepend'> <span class='add-on'>Carrier</span> <select class=span2 name=carrier_id> END; foreach (array_keys($this->carriers) as $_carrier) { printf("<option value='%s'>%s", $_carrier, $this->carriers[$_carrier]); } print <<< END </select> </div> <div class='input-prepend'><span class='add-on'>Prefix</span><input type=text size=20 name=prefix></div> <div class='input-prepend'><span class='add-on'>Originator</span><input type=text size=20 name=originator></div> <div class='input-prepend'><span class='add-on'>Priority</span><input type=text size=5 name=priority></div> END; $this->printHiddenFormElements(); print "</div> </form> "; } function addRecord($dictionary = array()) { if ($dictionary['prefix']) { $prefix = $dictionary['prefix']; } else { $prefix = trim($_REQUEST['prefix']); } if ($dictionary['carrier_id']) { $carrier_id = $dictionary['carrier_id']; } else { $carrier_id = trim($_REQUEST['carrier_id']); } if ($dictionary['originator']) { $originator = $dictionary['originator']; } else { $originator = trim($_REQUEST['originator']); } if ($dictionary['priority']) { $priority = $dictionary['priority']; } else { $priority = trim($_REQUEST['priority']); } if (!strlen($carrier_id)) { printf("<p><font color=red>Error: Missing carrier id. </font>"); return false; } $route = array( 'prefix' => $prefix, 'originator' => $originator, 'carrier_id' => intval($carrier_id), 'priority' => intval($priority) ); $routes = array($route); $function = array( 'commit' => array( 'name' => 'addRoutes', 'parameters' => array($routes), 'logs' => array('success' => sprintf('Route %s has been added', $prefix)) ) ); unset($this->filters); return $this->SoapEngine->execute($function, $this->html); } function deleteRecord($dictionary = array()) { if (!$dictionary['confirm'] && !$_REQUEST['confirm']) { print "<p><font color=red>Please press on Confirm to confirm the delete. </font>"; return true; } if ($dictionary['id']) { $id = $dictionary['id']; } else { $id = trim($this->filters['id']); } if (!strlen($id)) { print "<p><font color=red>Error: missing route id. </font>"; return false; } $route = array('id'=> intval($id)); $routes = array($route); $function = array( 'commit' => array( 'name' => 'deleteRoutes', 'parameters' => array($routes), 'logs' => array('success' => sprintf('Route %s has been deleted', $id)) ) ); unset($this->filters); return $this->SoapEngine->execute($function, $this->html); } function showSeachFormCustom() { - printf( " <div class='input-prepend'> <span class='add-on'>Route</span><input type=text size=10 name=id_filter value='%s'> </div> ", $this->filters['id'] ); - print <<< END - <select name=carrier_id_filter> - <option value=''>Carrier -END; - $selected_carrier[$this->filters['carrier_id']]='selected'; - foreach (array_keys($this->carriers) as $_carrier) { - printf("<option value='%s' %s>%s", $_carrier, $selected_carrier[$_carrier], $this->carriers[$_carrier]); + if (count($this->carriers) > 250) { + printf( + " + <div class='input-prepend'> + <span class='add-on'>Carrier</span><input class=span2 type=text size=15 name=carrier_id_filter value='%s'> + </div> + ", + $this->filters['carrier_id'] + ); + } else { + print <<< END + <select class=span2 name=carrier_id_filter> + <option value=''>Carrier +END; + $selected_carrier[$this->filters['carrier_id']] = 'selected'; + foreach (array_keys($this->carriers) as $_carrier) { + printf( + "<option value='%s' %s>%s (%s)</option>", + $_carrier, + $selected_carrier[$_carrier], + $this->carriers[$_carrier], + $_carrier + ); + } + print "</select>"; } - print "</select>"; printf( " <div class='input-prepend'> <span class='add-on'>Prefix</span><input type=text size=15 name=prefix_filter value='%s'> </div> ", $this->filters['prefix'] ); } function showCustomerTextBox() { print "Owner"; $this->showResellerForm('reseller'); } function showCustomerForm($name = 'customer_filter') { } function showTextBeforeCustomerSelection() { print "Owner"; } function getRecord($id) { // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); // Filter $filter = array('id' => intval($id)); // Range $range = array( 'start' => 0, 'count' => 1 ); // Order if (!$this->sorting['sortBy']) $this->sorting['sortBy'] = 'prefix'; if (!$this->sorting['sortOrder']) $this->sorting['sortOrder'] = 'ASC'; $orderBy = array( 'attribute' => $this->sorting['sortBy'], 'direction' => $this->sorting['sortOrder'] ); // Compose query $Query = array( 'filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); // Call function $this->log_action('getRoutes'); $result = $this->SoapEngine->soapclient->getRoutes($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { if ($result->routes[0]) { return $result->routes[0]; } else { return false; } } } function showRecord($route) { print "<h3>Route</h3>"; printf("<form class = form-horizontal method=post name=addform action=%s>", $_SERVER['PHP_SELF']); print "<input type=hidden name=action value=Update>"; foreach (array_keys($this->Fields) as $item) { if ($this->Fields[$item]['name']) { $item_name = $this->Fields[$item]['name']; } else { $item_name = ucfirst($item); } printf( " <div class=control-group> <label class=control-label>%s</label> ", $item_name ); if ($this->Fields[$item]['readonly']) { printf( "<div class=controls style='padding-top:5px'><input name=%s_form type=hidden value='%s'>%s</div>", $item, $route->$item, $route->$item ); } else { if ($item == 'carrier_id') { printf("<div class=controls><select name=%s_form>", $item); $selected_carrier[$route->$item] = 'selected'; foreach (array_keys($this->carriers) as $_carrier) { printf( "<option value='%s' %s>%s", $_carrier, $selected_carrier[$_carrier], $this->carriers[$_carrier] ); } print "</select></div>"; } else { printf( "<div class=controls><input name=%s_form type=text value='%s'></div>", $item, $route->$item ); } } print "</div>"; } printf("<input type=hidden name=id_filter value='%s'>", $route->id); $this->printFiltersToForm(); $this->printHiddenFormElements(); print " <div class='form-actions'> <input class='btn btn-warning' type=submit value=Update> </div> "; print "</form>"; } function updateRecord() { //print "<p>Updating route ..."; if (!$_REQUEST['id_filter']) return; if (!$route = $this->getRecord($_REQUEST['id_filter'])) { return false; } foreach (array_keys($this->Fields) as $item) { $var_name = $item.'_form'; if ($this->Fields[$item]['type'] == 'integer') { $route->$item = intval($_REQUEST[$var_name]); } else { $route->$item = trim($_REQUEST[$var_name]); } } $routes = array($route); $function = array( 'commit' => array( 'name' => 'updateRoutes', 'parameters' => array($routes), 'logs' => array('success' => sprintf('Route %d has been updated', $_REQUEST['id_filter'])) ) ); return (bool)$this->SoapEngine->execute($function, $this->html); } }