. // // Copyright (C) 2004 Greg MacLellan (greg@mtechsolutions.ca) // Copyright (C) 2005 Ron Hartmann (rhartmann@vercomsystems.com) // Copyright (C) 2004 Coalescent Systems Inc. (info@coalescentsystems.ca) // $display='routing'; $extdisplay=isset($_REQUEST['extdisplay'])?$_REQUEST['extdisplay']:''; $action = isset($_REQUEST['action'])?$_REQUEST['action']:''; $tabindex = 0; $repotrunkdirection = isset($_REQUEST['repotrunkdirection'])?$_REQUEST['repotrunkdirection']:''; $repotrunkkey = isset($_REQUEST['repotrunkkey'])?$_REQUEST['repotrunkkey']:''; $dialpattern = array(); if (isset($_REQUEST["dialpattern"])) { //$dialpattern = $_REQUEST["dialpattern"]; $dialpattern = explode("\n",$_REQUEST["dialpattern"]); if (!$dialpattern) { $dialpattern = array(); } foreach (array_keys($dialpattern) as $key) { //trim it $dialpattern[$key] = trim($dialpattern[$key]); // remove blanks if ($dialpattern[$key] == "") unset($dialpattern[$key]); // remove leading underscores (we do that on backend) if ($dialpattern[$key][0] == "_") $dialpattern[$key] = substr($dialpattern[$key],1); } // check for duplicates, and re-sequence $dialpattern = array_values(array_unique($dialpattern)); } if ( (isset($_REQUEST['reporoutedirection'])) && (isset($_REQUEST['reporoutekey']))) { $routepriority = core_routing_getroutenames(); $routepriority = core_routing_setroutepriority($routepriority, $_REQUEST['reporoutedirection'], $_REQUEST['reporoutekey']); } $trunkpriority = array(); if (isset($_REQUEST["trunkpriority"])) { $trunkpriority = $_REQUEST["trunkpriority"]; if (!$trunkpriority) { $trunkpriority = array(); } // delete blank entries and reorder foreach (array_keys($trunkpriority) as $key) { if (empty($trunkpriority[$key])) { // delete this empty unset($trunkpriority[$key]); } else if (($key==($repotrunkkey-1)) && ($repotrunkdirection=="up")) { // swap this one with the one before (move up) $temptrunk = $trunkpriority[$key]; $trunkpriority[ $key ] = $trunkpriority[ $key+1 ]; $trunkpriority[ $key+1 ] = $temptrunk; } else if (($key==($repotrunkkey)) && ($repotrunkdirection=="down")) { // swap this one with the one after (move down) $temptrunk = $trunkpriority[ $key+1 ]; $trunkpriority[ $key+1 ] = $trunkpriority[ $key ]; $trunkpriority[ $key ] = $temptrunk; } } unset($temptrunk); $trunkpriority = array_values($trunkpriority); // resequence our numbers $trunkpriority = array_unique($trunkpriority); // resequence our numbers } $routename = isset($_REQUEST["routename"]) ? $_REQUEST["routename"] : ""; $routepass = isset($_REQUEST["routepass"]) ? $_REQUEST["routepass"] : ""; $emergency = isset($_REQUEST["emergency"]) ? $_REQUEST["emergency"] : ""; $intracompany = isset($_REQUEST["intracompany"]) ? $_REQUEST["intracompany"] : ""; $mohsilence = isset($_REQUEST["mohsilence"]) ? $_REQUEST["mohsilence"] : ""; //if submitting form, update database switch ($action) { case "addroute": core_routing_add($routename, $dialpattern, $trunkpriority,"new", $routepass, $emergency, $intracompany, $mohsilence); needreload(); redirect_standard(); break; case "editroute": core_routing_edit($routename, $dialpattern, $trunkpriority, $routepass, $emergency, $intracompany, $mohsilence); needreload(); redirect_standard('extdisplay'); break; case "delroute": core_routing_del($extdisplay); // re-order the routes to make sure that there are no skipped numbers. // example if we have 001-test1, 002-test2, and 003-test3 then delete 002-test2 // we do not want to have our routes as 001-test1, 003-test3 we need to reorder them // so we are left with 001-test1, 002-test3 $routepriority = core_routing_getroutenames(); $routepriority = core_routing_setroutepriority($routepriority, '',''); needreload(); redirect_standard(); break; case 'renameroute': if (core_routing_rename($routename, $_REQUEST["newroutename"])) { needreload(); } else { echo ""; } $route_prefix=substr($routename,0,4); $extdisplay=$route_prefix.$_REQUEST["newroutename"]; break; case 'prioritizeroute': needreload(); break; case 'populatenpanxx': if (preg_match("/^([2-9]\d\d)-?([2-9]\d\d)$/", $_REQUEST["npanxx"], $matches)) { // first thing we do is grab the exch: $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, "http://www.localcallingguide.com/xmllocalprefix.php?npa=".$matches[1]."&nxx=".$matches[2]); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Linux; FreePBX Local Trunks Configuration)"); $str = curl_exec($ch); curl_close($ch); // quick 'n dirty - nabbed from PEAR require_once($amp_conf['AMPWEBROOT'] . '/admin/modules/core/XML_Parser.php'); require_once($amp_conf['AMPWEBROOT'] . '/admin/modules/core/XML_Unserializer.php'); $xml = new xml_unserializer; $xml->unserialize($str); $xmldata = $xml->getUnserializedData(); if (isset($xmldata['lca-data']['prefix'])) { // we do the loops separately so patterns are grouped together // match 1+NPA+NXX (dropping 1) foreach ($xmldata['lca-data']['prefix'] as $prefix) { $dialpattern[] = '1|'.$prefix['npa'].$prefix['nxx'].'XXXX'; } // match NPA+NXX foreach ($xmldata['lca-data']['prefix'] as $prefix) { $dialpattern[] = $prefix['npa'].$prefix['nxx'].'XXXX'; } // match 7-digits foreach ($xmldata['lca-data']['prefix'] as $prefix) { $dialpattern[] = $prefix['nxx'].'XXXX'; } // check for duplicates, and re-sequence $dialpattern = array_values(array_unique($dialpattern)); } else { $errormsg = _("Error fetching prefix list for: "). $_REQUEST["npanxx"]; } } else { // what a horrible error message... :p $errormsg = _("Invalid format for NPA-NXX code (must be format: NXXNXX)"); } if (isset($errormsg)) { echo ""; unset($errormsg); } break; } //get all rows from globals $sql = "SELECT * FROM globals"; $globals = $db->getAll($sql); if(DB::IsError($globals)) { die_freepbx($globals->getMessage()); } //create a set of variables that match the items in global[0] foreach ($globals as $global) { ${trim($global[0])} = htmlentities($global[1]); } ?>
"._("Edit Route").""; } else { echo "

"._("Add Route")."

"; } // build trunks associative array foreach (core_trunks_list() as $temp) { $trunks[$temp[0]] = $temp[1]; $trunkstate[$temp[0]] = $temp[2]; } if ($extdisplay) { // editing $tlabel = sprintf(_("Delete Route %s"),substr($extdisplay,4)); $label = ' '.$tlabel.''; ?>

');"> hookHtml; ?> $pattern) { ?> $trunk) { ?> 3) ? 3 : count($trunks))); for ($i=0; $i < $num_new_boxes; $i++) { ?>



:
" style="font-size:10px;" />
:
A numerical password, or the path to an Authenticate password file can be used.

Leave this field blank to not prompt for password.
")?>
")?>: tabindex=""/>
")?>: tabindex=""/>



X   
Z   
N   
[1237-9] 
.   
|   
 
">

" />


:

For Dial Patterns that match long distance numbers, for example, you'd want to pick the cheapest routes for long distance (ie, VoIP trunks first) followed by more expensive routes (POTS lines).")?>
   0) {?> <?php echo _(" style="float:none; margin-left:0px; margin-bottom:0px;" width="9" height="11"> <?php echo _(" style="float:none; margin-left:0px; margin-bottom:0px;" width="9" height="11">
 
">
">