Changeset 2070

Show
Ignore:
Timestamp:
06/20/06 12:27:07 (7 years ago)
Author:
gregmac
Message:

Update prefix lookup to use localcallingguide.com XML interface (#887)
Added 7 and 10-digit option to lookup in trunks

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • freepbx/trunk/amp_conf/htdocs/admin/modules/core/page.routing.php

    r1962 r2070  
    131131      $ch = curl_init(); 
    132132      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    133       curl_setopt($ch, CURLOPT_URL, "http://members.dandy.net/~czg/lca_prefix.php?npa=".$matches[1]."&nxx=".$matches[2]."&ocn=&pastdays=0&nextdays=0"); 
    134       curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Linux; Amportal Local Trunks Configuration)"); 
     133      curl_setopt($ch, CURLOPT_URL, "http://www.localcallingguide.com/xmllocalprefix.php?npa=".$matches[1]."&nxx=".$matches[2]); 
     134      curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Linux; FreePBX Local Trunks Configuration)"); 
    135135      $str = curl_exec($ch); 
    136136      curl_close($ch); 
    137        
    138       if (preg_match("/exch=(\d+)/",$str, $matches)) { 
    139         $ch = curl_init(); 
    140         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    141         curl_setopt($ch, CURLOPT_URL, "http://members.dandy.net/~czg/lprefix.php?exch=".$matches[1]); 
    142         curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Linux; Amportal Local Trunks Configuration)"); 
    143         $str = curl_exec($ch); 
    144         curl_close($ch); 
    145          
    146         foreach (explode("\n", $str) as $line) { 
    147           if (preg_match("/^(\d{3});(\d{3})/", $line, $matches)) { 
    148             $dialpattern[] = "1".$matches[1].$matches[2]."XXXX"; 
    149             //$localprefixes[] = "1".$matches[1].$matches[2]; 
    150           } 
     137 
     138      // quick 'n dirty - nabbed from PEAR 
     139      require_once($amp_conf['AMPWEBROOT'] . '/admin/modules/core/XML_Parser.php'); 
     140      require_once($amp_conf['AMPWEBROOT'] . '/admin/modules/core/XML_Unserializer.php'); 
     141 
     142      $xml = new xml_unserializer; 
     143      $xml->unserialize($str); 
     144      $xmldata = $xml->getUnserializedData(); 
     145 
     146      if (isset($xmldata['lca-data']['prefix'])) { 
     147        foreach ($xmldata['lca-data']['prefix'] as $prefix) { 
     148          $dialpattern[] = $prefix['npa'].$prefix['nxx'].'XXXX'; 
    151149        } 
    152          
     150 
    153151        // check for duplicates, and re-sequence 
    154152        $dialpattern = array_values(array_unique($dialpattern)); 
  • freepbx/trunk/amp_conf/htdocs/admin/modules/core/page.trunks.php

    r2056 r2070  
    9090    $extdisplay = ''; // resets back to main screen 
    9191  break; 
    92   case "populatenpanxx":  
     92  case "populatenpanxx7":  
     93  case "populatenpanxx10":  
    9394    if (preg_match("/^([2-9]\d\d)-?([2-9]\d\d)$/", $_REQUEST["npanxx"], $matches)) { 
    9495      // first thing we do is grab the exch: 
    9596      $ch = curl_init(); 
    9697      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    97       curl_setopt($ch, CURLOPT_URL, "http://members.dandy.net/~czg/lca_prefix.php?npa=".$matches[1]."&nxx=".$matches[2]."&ocn=&pastdays=0&nextdays=0"); 
    98       curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Linux; Amportal Local Trunks Configuration)"); 
     98      curl_setopt($ch, CURLOPT_URL, "http://www.localcallingguide.com/xmllocalprefix.php?npa=".$matches[1]."&nxx=".$matches[2]); 
     99      curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Linux; FreePBX Local Trunks Configuration)"); 
    99100      $str = curl_exec($ch); 
    100101      curl_close($ch); 
    101        
    102       if (preg_match("/exch=(\d+)/",$str, $matches)) { 
    103         $ch = curl_init(); 
    104         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    105         curl_setopt($ch, CURLOPT_URL, "http://members.dandy.net/~czg/lprefix.php?exch=".$matches[1]); 
    106         curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Linux; Amportal Local Trunks Configuration)"); 
    107         $str = curl_exec($ch); 
    108         curl_close($ch); 
    109          
    110         foreach (explode("\n", $str) as $line) { 
    111           if (preg_match("/^(\d{3});(\d{3})/", $line, $matches)) { 
    112             $dialrules[] = "1".$matches[1]."|".$matches[2]."XXXX"; 
    113             //$localprefixes[] = "1".$matches[1].$matches[2]; 
     102 
     103      // quick 'n dirty - nabbed from PEAR 
     104      require_once($amp_conf['AMPWEBROOT'] . '/admin/modules/core/XML_Parser.php'); 
     105      require_once($amp_conf['AMPWEBROOT'] . '/admin/modules/core/XML_Unserializer.php'); 
     106 
     107      $xml = new xml_unserializer; 
     108      $xml->unserialize($str); 
     109      $xmldata = $xml->getUnserializedData(); 
     110 
     111      if (isset($xmldata['lca-data']['prefix'])) { 
     112        foreach ($xmldata['lca-data']['prefix'] as $prefix) { 
     113          if ($action == 'populatenpanxx10') { 
     114            // 10 digit dialing 
     115            $dialrules[] = '1|'.$prefix['npa'].$prefix['nxx'].'XXXX'; 
     116          } else { 
     117            $dialrules[] = '1'.$prefix['npa'].'|'.$prefix['nxx'].'XXXX'; 
    114118          } 
    115119        } 
    116          
     120 
    117121        // check for duplicates, and re-sequence 
    118122        $dialrules = array_values(array_unique($dialrules)); 
     
    120124        $errormsg = _("Error fetching prefix list for: "). $_REQUEST["npanxx"]; 
    121125      } 
    122        
     126 
    123127    } else { 
    124128      // what a horrible error message... :p 
     
    336340            <option value="always"><?php echo _("Always add prefix to local numbers")?></option> 
    337341            <option value="remove"><?php echo _("Remove prefix from local numbers")?></option> 
    338             <option value="lookup"><?php echo _("Lookup and remove local prefixes")?></option> 
     342            <option value="lookup7"><?php echo _("Lookup and remove local prefixes (7-digit dialing)")?></option> 
     343            <option value="lookup10"><?php echo _("Lookup and remove local prefixes (10-digit dialing)")?></option> 
    339344          </select> 
    340345        </td> 
     
    343348      <script language="javascript"> 
    344349       
    345       function populateLookup() { 
     350      function populateLookup(digits) { 
    346351<?php  
    347352  if (function_exists("curl_init")) { // curl is installed 
     
    354359         
    355360        document.getElementById('npanxx').value = npanxx; 
    356         trunkEdit.action.value = "populatenpanxx"; 
    357         trunkEdit.submit(); 
     361        if (digits == 10) { 
     362          document.trunkEdit.action.value = "populatenpanxx10"; 
     363        } else { 
     364          document.trunkEdit.action.value = "populatenpanxx7"; 
     365        } 
     366        document.trunkEdit.submit(); 
    358367<?php   
    359368  } else { // curl is not installed 
     
    409418            populateRemove(); 
    410419          break; 
    411           case "lookup": 
    412             populateLookup(); 
     420          case "lookup7": 
     421            populateLookup(7); 
     422          break; 
     423          case "lookup10": 
     424            populateLookup(10); 
    413425          break; 
    414426        } 
     
    634646  var msgInvalidOutboundDialPrefix = "<?php echo _('Invalid Outbound Dial Prefix'); ?>"; 
    635647  var msgInvalidTrunkName = "<?php echo _('Invalid Trunk Name entered'); ?>"; 
    636   var msgInvalidChannelName = "<?php echo _('Invalid Custom Dial String entered'); ?>"; 
    637648  var msgInvalidTrunkAndUserSame = "<?php echo _('Trunk Name and User Context cannot be set to the same value'); ?>"; 
    638649 
     
    644655    return warnInvalid(theForm.maxchans, msgInvalidMaxChans); 
    645656   
    646   if (!isDialrule(theForm.dialrules.value)) 
     657  if (!isDialpattern(theForm.dialrules.value)) 
    647658    return warnInvalid(theForm.dialrules, msgInvalidDialRules); 
    648659   
     
    650661    return warnInvalid(theForm.dialoutprefix, msgInvalidOutboundDialPrefix); 
    651662   
    652   <?php if ($tech != "enum" && $tech != "custom") { ?> 
     663  <?php if ($tech != "enum") { ?> 
    653664  defaultEmptyOK = true; 
    654665  if (isEmpty(theForm.channelid.value) || isWhitespace(theForm.channelid.value)) 
     
    657668  if (theForm.channelid.value == theForm.usercontext.value) 
    658669    return warnInvalid(theForm.usercontext, msgInvalidTrunkAndUserSame); 
    659   <?php } else if ($tech == "custom") { ?> 
    660   if (isEmpty(theForm.channelid.value) || isWhitespace(theForm.channelid.value)) 
    661     return warnInvalid(theForm.channelid, msgInvalidChannelName); 
    662    
    663   if (theForm.channelid.value == theForm.usercontext.value) 
    664     return warnInvalid(theForm.usercontext, msgInvalidTrunkAndUserSame); 
    665670  <?php } ?> 
    666671