diff --git a/library/NGNPro/Records/DnsZones.php b/library/NGNPro/Records/DnsZones.php index 0432913..255d7e2 100644 --- a/library/NGNPro/Records/DnsZones.php +++ b/library/NGNPro/Records/DnsZones.php @@ -1,799 +1,863 @@ array('type'=>'integer', - 'help' => 'Zone owner') - ); - - var $Fields=array( - 'customer' => array('type'=>'integer', - 'help' => 'Zone owner' - ), - 'serial' => array('type'=>'integer', - 'help'=>'Serial number', - 'readonly' => 1 - ), - 'email' => array('type'=>'string', - 'help'=>'Administrator address' - ), - 'ttl' => array('type'=>'integer', - 'help'=>'Time to live of SOA record' - ), - 'minimum' => array('type'=>'integer', - 'help'=>'Default time to live period' - ), - 'retry' => array('type'=>'integer', - 'help'=>'Retry transfer period' - ), - 'expire' => array('type'=>'integer', - 'help'=>'Expire period' - ), - 'info' => array('type'=>'string', - 'help' =>'Zone description' - ) - ); + var $FieldsAdminOnly = array( + 'reseller' => array( + 'type'=>'integer', + 'help' => 'Zone owner' + ) + ); + + var $Fields = array( + 'customer' => array( + 'type' => 'integer', + 'help' => 'Zone owner' + ), + 'serial' => array( + 'type' => 'integer', + 'help' => 'Serial number', + 'readonly' => 1 + ), + 'email' => array( + 'type' => 'string', + 'help' => 'Administrator address' + ), + 'ttl' => array( + 'type' => 'integer', + 'help' => 'Time to live of SOA record' + ), + 'minimum' => array( + 'type' => 'integer', + 'help' => 'Default time to live period' + ), + 'retry' => array( + 'type' => 'integer', + 'help' => 'Retry transfer period' + ), + 'expire' => array( + 'type' => 'integer', + 'help' => 'Expire period' + ), + 'info' => array( + 'type' => 'string', + 'help' => 'Zone description' + ) + ); public function __construct($SoapEngine) { dprint("init DnsZones"); - $this->filters = array( - 'name' => trim($_REQUEST['name_filter']), - 'info' => trim($_REQUEST['info_filter']) -); + $this->filters = array( + 'name' => trim($_REQUEST['name_filter']), + 'info' => trim($_REQUEST['info_filter']) + ); parent::__construct($SoapEngine); - $this->sortElements=array('changeDate' => 'Change date', - 'name' => 'Name' + $this->sortElements = array( + 'changeDate' => 'Change date', + 'name' => 'Name' ); - $this->Fields['nameservers'] = array('type'=>'text', - 'name'=>'Name servers', - 'help'=>'Authoritative name servers' - ); - + $this->Fields['nameservers'] = array( + 'type'=>'text', + 'name'=>'Name servers', + 'help'=>'Authoritative name servers' + ); } - function showAfterEngineSelection () { + function showAfterEngineSelection() + { if ($this->SoapEngine->name_servers) { - //printf (" Available name servers: %s",$this->SoapEngine->name_servers); + //printf(" Available name servers: %s", $this->SoapEngine->name_servers); } } - function listRecords() { + function listRecords() + { $this->showSeachForm(); // Filter - $filter=array('name' => $this->filters['name'], - 'info' => $this->filters['info'], - 'customer' => intval($this->filters['customer']), - 'reseller' => intval($this->filters['reseller']) - ); + $filter = array( + 'name' => $this->filters['name'], + 'info' => $this->filters['info'], + 'customer' => intval($this->filters['customer']), + 'reseller' => intval($this->filters['reseller']) + ); // Range - $range=array('start' => intval($this->next), - 'count' => intval($this->maxrowsperpage) - ); + $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, + $Query = array('filter' => $filter, 'orderBy' => $orderBy, 'range' => $range ); $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getZones'); - $result = $this->SoapEngine->soapclient->getZones($Query); + $result = $this->SoapEngine->soapclient->getZones($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { - $this->rows = $result->total; if ($this->rows && $_REQUEST['action'] != 'PerformActions' && $_REQUEST['action'] != 'Delete') { $this->showActionsForm(); } - print " -
-
Id | -Owner | -Zone | -Administrator | -Info | -- | Serial | -Default TTL | -Change date | -Actions | -
---|
Id | +Owner | +Zone | +Administrator | +Info | ++ | Serial | +Default TTL | +Change date | +Actions | +
---|---|---|---|---|---|---|---|---|---|
%s | -%s.%s | -%s | -%s | -%s | -Records | -%s | -%s | -%s | -%s | -
%s | +%s.%s | +%s | +%s | +%s | +Records | +%s | +%s | +%s | +%s | +
Please press on Confirm to confirm the delete. "; return true; } if (!strlen($this->filters['name'])) { print "
Error: missing Dns zone name "; return false; } - $name=$this->filters['name']; + $name = $this->filters['name']; - $function=array('commit' => array('name' => 'deleteZone', - 'parameters' => array($name), - 'logs' => array('success' => sprintf('Dns zone %s has been deleted',$this->filters['name']) - ) - ) - ); + $function = array( + 'commit' => array( + 'name' => 'deleteZone', + 'parameters' => array($name), + 'logs' => array( + 'success' => sprintf('Dns zone %s has been deleted', $this->filters['name']) + ) + ) + ); unset($this->filters); - $result = $this->SoapEngine->execute($function,$this->html); + $result = $this->SoapEngine->execute($function, $this->html); if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } - } - function showAddForm() { + function showAddForm() + { if ($this->selectionActive) return; - printf ("
"; } - function addRecord($dictionary=array()) { + function addRecord($dictionary = array()) + { $name = trim($_REQUEST['name']); $info = trim($_REQUEST['info']); $name_servers = trim($_REQUEST['name_servers']); if ($_FILES['import_file']['tmp_name']) { - $content=fread(fopen($_FILES['import_file']['tmp_name'], "r"), $_FILES['import_file']['size']); + $content = fread(fopen($_FILES['import_file']['tmp_name'], "r"), $_FILES['import_file']['size']); //print_r($content); - if (!$imported_data=json_decode($content, true)) { - printf ("Error: reading imported data. "); + if (!$imported_data = json_decode($content, true)) { + printf("
Error: reading imported data. "); return false; } //print_r($imported_data); if (!in_array('dns_zones', array_keys($imported_data))) { - printf ("
Error: Missing zones in imported data. "); + printf("
Error: Missing zones in imported data. "); return false; } if (!in_array('dns_records', array_keys($imported_data))) { return false; - printf ("
Error: Missing records in imported data. "); + printf("
Error: Missing records in imported data. "); } - foreach($imported_data['customers'] as $customer) { + foreach ($imported_data['customers'] as $customer) { // Insert credetials $this->SoapEngine->soapclientCustomers->addHeader($this->SoapEngine->SoapAuth); $customer['credit'] = floatval($customer['credit']); $customer['balance'] = floatval($customer['balance']); // Call function $this->log_action('addAccount'); $result = $this->SoapEngine->soapclientCustomers->addAccount($customer); if ((new PEAR)->isError($result)) { $error_msg = $result->getMessage(); $error_fault= $result->getFault(); $error_code = $result->getCode(); if ($error_fault->detail->exception->errorcode == 5001) { $result = $this->SoapEngine->soapclientCustomers->updateCustomer($customer); if (!$this->checkLogSoapError($result, true, true)) { - printf('
Customer %s has been updated',$customer['id']); + printf('
Customer %s has been updated', $customer['id']); } } else { - $log=sprintf("SOAP request error from %s: %s (%s): %s",$this->SoapEngine->SOAPurl,$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + $log = sprintf("SOAP request error from %s: %s (%s): %s", $this->SoapEngine->SOAPurl, $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring); syslog(LOG_NOTICE, $log); - printf ("
Error: $log"); + printf("
Error: $log"); } } else { - printf('
Customer %s has been added',$customer['id']); + printf('
Customer %s has been added', $customer['id']); } - } $name_servers = array(); - foreach($imported_data['dns_zones'] as $zone) { + foreach ($imported_data['dns_zones'] as $zone) { flush(); $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('addZone'); $result = $this->SoapEngine->soapclient->addZone($zone); $name_servers[$zone['name']] = $zone['nameservers']; if ((new PEAR)->isError($result)) { $error_msg = $result->getMessage(); $error_fault= $result->getFault(); $error_code = $result->getCode(); if ($error_fault->detail->exception->errorcode == 7001) { $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('updateZone'); $result = $this->SoapEngine->soapclient->updateZone($zone); if (!$this->checkLogSoapError($result, true, true)) { - printf('
Zone %s has been updated',$zone['name']); - } + printf('
Zone %s has been updated', $zone['name']); + } } else { - $log=sprintf("SOAP request error from %s: %s (%s): %s",$this->SoapEngine->SOAPurl,$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + $log = sprintf("SOAP request error from %s: %s (%s): %s", $this->SoapEngine->SOAPurl, $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring); syslog(LOG_NOTICE, $log); - printf ("
Error: $log"); - + printf("
Error: $log"); } } else { - printf('
Zone %s has been added',$zone['name']); + printf('
Zone %s has been added', $zone['name']); } - } $added = 0; $updated = 0; - foreach($imported_data['dns_records'] as $record) { + foreach ($imported_data['dns_records'] as $record) { flush(); if (in_array($record['name'], $name_servers[$record['zone']]) && $record['type'] == "A") { continue; } $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('addRecord'); $result = $this->SoapEngine->soapclient->addRecord($record); if ((new PEAR)->isError($result)) { $error_msg = $result->getMessage(); $error_fault= $result->getFault(); $error_code = $result->getCode(); if ($error_fault->detail->exception->errorcode == 7003) { $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('updateRecord'); $result = $this->SoapEngine->soapclient->updateRecord($record); if (!$this->checkLogSoapError($result, true, true)) { $added += 1; } } else { - $log=sprintf("SOAP request error from %s: %s (%s): %s",$this->SoapEngine->SOAPurl,$error_msg, $error_fault->detail->exception->errorcode,$error_fault->detail->exception->errorstring); + $log = sprintf( + "SOAP request error from %s: %s (%s): %s", + $this->SoapEngine->SOAPurl, + $error_msg, + $error_fault->detail->exception->errorcode, + $error_fault->detail->exception->errorstring + ); syslog(LOG_NOTICE, $log); - printf ("
Error: $log"); + printf("
Error: $log"); } } else { - $added += 1; + $added += 1; } } - printf('
%d DNS records added and %d updated',$added, $updated); + printf('
%d DNS records added and %d updated', $added, $updated); return true; - - } else { if (isset($this->SoapEngine->allow_none_local_dns_zones)) { $allow_none_local_dns_zones = $this->SoapEngine->allow_none_local_dns_zones; } else { $allow_none_local_dns_zones = false; } if (!strlen($name)) { - printf ("
Error: Missing zone name.
"); + printf("Error: Missing zone name.
"); return false; } $lookup1 = dns_get_record($name); //dprint_r($lookup1); - $ns_array1=explode(" ",trim($this->SoapEngine->name_servers)); + $ns_array1=explode(" ", trim($this->SoapEngine->name_servers)); - if (empty($lookup1) || $allow_none_local_dns_zones){ + if (empty($lookup1) || $allow_none_local_dns_zones) { $valid = 1; } else { $valid = 0; - foreach($lookup1 as $lrecord){ + foreach ($lookup1 as $lrecord) { if ($lrecord['type'] == 'NS') { - if(in_array($lrecord['target'],$ns_array1)){ + if (in_array($lrecord['target'], $ns_array1)) { $valid = 1 ; } } } } - if ($valid==0){ - printf ("Error: DNS zone already exists on other server. Please contact our support if you plan to transfer this DNS zone to this system.
"); + if ($valid==0) { + printf("Error: DNS zone already exists on other server. Please contact our support if you plan to transfer this DNS zone to this system.
"); return false; } if (is_numeric($prefix)) { - printf ("Error: Numeric zone names are not allowed. Use ENUM port instead. "); + printf("
Error: Numeric zone names are not allowed. Use ENUM port instead. "); return false; } - list($customer,$reseller)=$this->customerFromLogin($dictionary); + list($customer, $reseller)=$this->customerFromLogin($dictionary); if (!trim($_REQUEST['ttl'])) { $ttl=3600; } else { - $ttl=intval(trim($_REQUEST['ttl'])); + $ttl = intval(trim($_REQUEST['ttl'])); } - if ($name_servers) { - $ns_array=explode(" ",trim($name_servers)); - } else if ($this->login_credentials['login_type'] != 'admin' && $this->SoapEngine->name_servers){ - $ns_array=explode(" ",trim($this->SoapEngine->name_servers)); + if ($name_servers) { + $ns_array = explode(" ", trim($name_servers)); + } elseif ($this->login_credentials['login_type'] != 'admin' && $this->SoapEngine->name_servers) { + $ns_array = explode(" ", trim($this->SoapEngine->name_servers)); } else { - $ns_array=array(); + $ns_array = array(); } - $zone=array( + $zone = array( 'name' => $name, 'ttl' => $ttl, 'info' => $info, 'customer' => intval($customer), 'reseller' => intval($reseller), 'nameservers' => $ns_array ); - $function=array('commit' => array('name' => 'addZone', + $function = array('commit' => array('name' => 'addZone', 'parameters' => array($zone), - 'logs' => array('success' => sprintf('DNS zone %s has been added',$name))) + 'logs' => array('success' => sprintf('DNS zone %s has been added', $name))) ); - $result = $this->SoapEngine->execute($function,$this->html); + $result = $this->SoapEngine->execute($function, $this->html); dprint_r($result); - if ($this->checkLogSoapError($result, true)) { + if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } } } - function showSeachFormCustom() { - printf ("
-
Updating zone %s...",$_REQUEST['name_filter']); + //dprintf(" Updating zone %s...", $_REQUEST['name_filter']);
- $filter=array('name' => $_REQUEST['name_filter']);
+ $filter = array('name' => $_REQUEST['name_filter']);
if (!$zone = $this->getRecord($filter)) {
return false;
}
- $zone_old=$zone;
+ $zone_old = $zone;
foreach (array_keys($this->Fields) as $item) {
- $var_name=$item.'_form';
- //printf ("
Number ", $_REQUEST['number_filter']);
printf(" Owner ", $this->filters['owner']);
}
function deleteRecord($dictionary = array())
{
if (!$dictionary['confirm'] && !$_REQUEST['confirm']) {
print "Please press on Confirm to confirm the delete. "; return true; } if ($dictionary['number']) { $number = $dictionary['number']; } else { $number = $this->filters['number']; } if ($dictionary['tld']) { $tld = $dictionary['tld']; } else { $tld = $this->filters['tld']; } if ($dictionary['mapto']) { $mapto = $dictionary['mapto']; } else { $mapto = $this->filters['mapto']; } if (!strlen($number) || !strlen($tld)) { print " Error: missing ENUM number or TLD "; return false; } $enum_id = array('number' => $number, 'tld' => $tld ); $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getNumber'); $result = $this->SoapEngine->soapclient->getNumber($enum_id); if (!(new PEAR)->isError($result)) { // the number exists and we make an update $result_new = $result; if (count($result->mappings) > 1) { foreach ($result->mappings as $_mapping) { if ($_mapping->mapto != $mapto) { $mappings_new[] = array('type' => $_mapping->type, 'mapto' => $_mapping->mapto, 'ttl' => $_mapping->ttl, 'priority' => $_mapping->priority, 'id' => $_mapping->id ); } } if (!is_array($mappings_new)) $mappings_new = array(); $result_new->mappings = $mappings_new; $function = array('commit' => array('name' => 'updateNumber', 'parameters' => array($result_new), 'logs' => array('success' => sprintf('ENUM mapping %s has been deleted',$mapto))) ); $result = $this->SoapEngine->execute($function, $this->html); if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } } else { $function = array('commit' => array('name' => 'deleteNumber', 'parameters' => array($enum_id), 'logs' => array('success' => sprintf('ENUM number +%s under %s has been deleted',$number, $tld))), ); $result = $this->SoapEngine->execute($function, $this->html); if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } } unset($this->filters); } else { return false; } } function showAddForm() { if ($this->selectionActive) return; //if ($this->adminonly && !$this->filters['reseller']) return; if (!count($this->ranges)) { //print " You must create at least one ENUM range before adding ENUM numbers"; return false; } printf("
";
if ($this->adminonly) {
printf(" ", $this->filters['reseller']);
}
print "
", $_ttl);
} else {
printf("");
}
printf(" ";
printf(" Number");
print "";
if ($_REQUEST['number']) {
printf("", $_REQUEST['number']);
} elseif ($_number = $this->getCustomerProperty('enum_numbers_last_number')) {
$_prefix = $_range['prefix'];
preg_match("/^$_prefix(.*)/", $_number, $m);
printf("", $m[1]);
} else {
printf("");
}
print " ";
printf("Map to");
print "
";
if ($_REQUEST['type']) {
$selected_naptr_service[$_REQUEST['type']]='selected';
} elseif ($_type = $this->getCustomerProperty('enum_numbers_last_type')) {
$selected_naptr_service[$_type]='selected';
}
printf(" ", $_REQUEST['mapto']);
print " ";
print "TTL";
print "";
if ($_REQUEST['ttl']) {
printf(" ", $_REQUEST['ttl']);
} elseif ($_ttl = $this->getCustomerProperty('enum_numbers_last_ttl')) {
printf("Owner ", $_REQUEST['owner']);
printf(" Info ", $_REQUEST['info']);
$this->printHiddenFormElements();
print "
Error: Missing TLD or number. "); return false; } if ($dictionary['ttl']) { $ttl = intval($dictionary['ttl']); } else { $ttl = intval(trim($_REQUEST['ttl'])); } if (!$ttl) $ttl=3600; if ($dictionary['priority']) { $priority = intval($dictionary['priority']); } else { $priority = intval(trim($_REQUEST['priority'])); } if ($dictionary['owner']) { $owner = intval($dictionary['owner']); } else { $owner = intval(trim($_REQUEST['owner'])); } if ($dictionary['info']) { $info = $dictionary['info']; } else { $info = trim($_REQUEST['info']); } if (!$priority) $priority=5; $enum_id = array('number' => $number, 'tld' => $tld); if ($dictionary['mapto']) { $mapto = $dictionary['mapto']; } else { $mapto = trim($_REQUEST['mapto']); } if ($dictionary['type']) { $type = $dictionary['type']; } else { $type = trim($_REQUEST['type']); } if (preg_match("/^([a-z0-9]+:\/\/)(.*)$/i", $mapto, $m)) { $_scheme = $m[1]; $_value = $m[2]; } elseif (preg_match("/^([a-z0-9]+:)(.*)$/i", $mapto, $m)) { $_scheme = $m[1]; $_value = $m[2]; } else { $_scheme = ''; $_value = $mapto; } if (!$_value) { $lastNumber = $this->getLastNumber(); foreach($lastNumber['mappings'] as $_mapping) { if ($_mapping->type == trim($type)) { if (preg_match("/^(.*)@(.*)$/", $_mapping->mapto, $m)) { $_value = $number.'@'.$m[2]; break; } } } } if (!$_scheme || !in_array($_scheme, $this->NAPTR_services[trim($type)]['schemas'])) { $_scheme = $this->NAPTR_services[trim($type)]['schemas'][0]; } $mapto = $_scheme.$_value; $enum_number = array('id' => $enum_id, 'owner' => $owner, 'info' => $info, 'mappings' => array(array('type' => $type, 'mapto' => $mapto, 'ttl' => $ttl, 'priority' => $priority ) ) ); if (!$this->skipSaveProperties = true) { $_p = array( array('name' => 'enum_numbers_last_range', 'category' => 'web', 'value' => $_REQUEST['range'], 'permission' => 'customer' ), array('name' => 'enum_numbers_last_type', 'category' => 'web', 'value' => "$type", 'permission' => 'customer' ), array('name' => 'enum_numbers_last_number', 'category' => 'web', 'value' => "$number", 'permission' => 'customer' ), array('name' => 'enum_numbers_last_ttl', 'category' => 'web', 'value' => "$ttl", 'permission' => 'customer' ) ); $this->setCustomerProperties($_p); } $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getNumber'); $result = $this->SoapEngine->soapclient->getNumber($enum_id); if ((new PEAR)->isError($result)) { $error_msg = $result->getMessage(); $error_fault = $result->getFault(); $error_code = $result->getCode(); if ($error_fault->detail->exception->errorcode == "3002") { $function = array('commit' => array('name' => 'addNumber', 'parameters' => array($enum_number), 'logs' => array('success' => sprintf('ENUM number +%s under %s has been added',$number, $tld))) ); $result = $this->SoapEngine->execute($function, $this->html); if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } } else { $log = sprintf("SOAP request error from %s: %s (%s): %s", $this->SoapEngine->SOAPurl, $error_msg, $error_fault->detail->exception->errorcode, $error_fault->detail->exception->errorstring); syslog(LOG_NOTICE, $log); return false; } } else { // the number exists and we make an update $result_new = $result; foreach ($result->mappings as $_mapping) { $mappings_new[] = array('type' => $_mapping->type, 'mapto' => $_mapping->mapto, 'ttl' => $_mapping->ttl, 'priority' => $_mapping->priority, 'id' => $_mapping->id ); if ($_mapping->mapto == $mapto) { printf(" Info: ENUM mapping %s for number %s already exists", $mapto, $number); return $result; } } $mappings_new[] = array('type' => trim($type), 'mapto' => $mapto, 'ttl' => intval(trim($_REQUEST['ttl'])), 'priority'=> intval(trim($_REQUEST['priority'])), ); // add mapping $result_new->mappings = $mappings_new; $function = array('commit' => array('name' => 'updateNumber', 'parameters' => array($result_new), 'logs' => array('success' => sprintf('ENUM number +%s under %s has been updated',$number, $tld))) ); $result = $this->SoapEngine->execute($function, $this->html); if ($this->checkLogSoapError($result, true)) { return false; } else { return true; } } } function getRecordKeys() { // Filter $filter = array('number' => $this->filters['number'], 'tld' => $this->filters['tld'], 'type' => $this->filters['type'], 'mapto' => $this->filters['mapto'], 'owner' => intval($this->filters['owner']), 'customer' => intval($this->filters['customer']), 'reseller' => intval($this->filters['reseller']) ); // Range $range = array('start' => 0, 'count' => 1000 ); // 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 ); // Insert credetials $this->SoapEngine->soapclient->addHeader($this->SoapEngine->SoapAuth); $this->log_action('getNumberss'); // Call function $result = $this->SoapEngine->soapclient->getNumbers($Query); if ($this->checkLogSoapError($result, true)) { return false; } else { foreach ($result->numbers as $number) { $this->selectionKeys[] = array('number' => $number->id->number, 'tld' => $number->id->tld); } return true; } } function showRecord($number) { print "
Updating number ...";
if (!$_REQUEST['number_filter'] || !$_REQUEST['tld_filter']) return;
$enumid = array('number' => $_REQUEST['number_filter'],
'tld' => $_REQUEST['tld_filter']
);
if (!$number = $this->getRecord($enumid)) {
return false;
}
$number_old = $number;
$new_mappings = array();
/*
foreach ($number->mappings as $_mapping) {
foreach (array_keys($this->mapping_fields) as $field) {
if ($this->mapping_fields[$field] == 'integer') {
$new_mapping[$field] = intval($_mapping->$field);
} else {
$new_mapping[$field] = $_mapping->$field;
}
}
$new_mappings[] = $new_mapping;
}
*/
$j=0;
while ($j< count($_REQUEST['mapping_type'])) {
$mapto = $_REQUEST['mapping_mapto'][$j];
$type = $_REQUEST['mapping_type'][$j];
$id = $_REQUEST['mapping_id'][$j];
$ttl = intval($_REQUEST['mapping_ttl'][$j]);
$priority = intval($_REQUEST['mapping_priority'][$j]);
if (!$ttl) $ttl = $this->default_ttl;
if (!$priority) $priority = $this->default_priority;
if (strlen($mapto)) {
if (preg_match("/^([a-z0-9]+:\/\/)(.*)$/i", $mapto, $m)) {
$_scheme = $m[1];
$_value = $m[2];
} elseif (preg_match("/^([a-z0-9]+:)(.*)$/i", $mapto, $m)) {
$_scheme = $m[1];
$_value = $m[2];
} else {
$_scheme = '';
$_value = $mapto;
}
reset($this->NAPTR_services);
if (!$_scheme || !in_array($_scheme, $this->NAPTR_services[trim($type)]['schemas'])) {
$_scheme = $this->NAPTR_services[trim($type)]['schemas'][0];
}
$mapto = $_scheme.$_value;
$new_mappings[] = array( 'type' => $type,
'ttl' => $ttl,
'id' => intval($id),
'mapto' => $mapto,
'priority' => $priority
);
}
$j++;
}
$number->mappings = $new_mappings;
if (!is_array($number->mappings)) $number->mappings = array();
foreach (array_keys($this->Fields) as $item) {
$var_name = $item.'_form';
//printf(" |