From 35bb375be377c1a4f725a74304b9667accaf4776 Mon Sep 17 00:00:00 2001 From: sluther Date: Thu, 17 Sep 2009 00:00:23 -0700 Subject: [PATCH] Added support for Australian numbers. When importing Australian numbers, they should be in the following format: 61xxxxxxxxxx. NPA is first two digits after country code, NXX is next 4 digits, and Station is final 4 digits. --- modules/voip/voip.inc.php | 55 +++++++++++++++++++++++++---- modules/voip_pool/voip_pool.inc.php | 2 ++ 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/modules/voip/voip.inc.php b/modules/voip/voip.inc.php index dcbd9b58..1fede752 100644 --- a/modules/voip/voip.inc.php +++ b/modules/voip/voip.inc.php @@ -96,7 +96,19 @@ class didArea AND A.nxx = " . $db->qstr($this->data['nxx']) . " AND A.voip_did_plugin_id in (".join(",",$plugins).") AND A.site_id=".DEFAULT_SITE." - LIMIT 0,50"; + LIMIT 0,50"; + } elseif($this->data['country_code'] == 61) { + $sql = "select distinct A.country_code,A.npa,A.nxx,A.station + FROM {$p}voip_pool AS A + left join {$p}voip_npa_nxx AS B + on (A.npa=B.npa and A.nxx=B.nxx AND B.country_code='1') + WHERE (A.account_id IS NULL OR A.account_id = 0) + AND (A.date_reserved IS NULL OR A.date_reserved = 0) + AND A.npa = " . $db->qstr($this->data['npa']) . " + AND A.nxx = " . $db->qstr($this->data['nxx']) . " + AND A.voip_did_plugin_id in (".join(",",$plugins).") + AND A.site_id=".DEFAULT_SITE." + LIMIT 0,50"; } else { $sql = "select distinct A.country_code,A.areacode as npa,A.nxx,A.station FROM {$p}voip_pool AS A @@ -108,7 +120,7 @@ class didArea AND A.voip_did_plugin_id in (".join(",",$plugins).") AND A.site_id=".DEFAULT_SITE." LIMIT 0,50"; - $pre = "011"; + $pre = "011"; } #echo "document.write('".str_replace("'","\\'",str_replace("\n","",$sql))."');"; return; $rs = $db->Execute($sql); @@ -118,6 +130,9 @@ class didArea if ($rs->fields['country_code'] == '1') { $dids[$i][0] = $pre.$rs->fields['country_code'].$rs->fields['npa'].$rs->fields['nxx'].$rs->fields['station']; $dids[$i++][1] = $rs->fields['country_code']." ".$rs->fields['npa'].$rs->fields['nxx'].$rs->fields['station']; + } elseif($rs->fields['country_code'] == '61') { + $dids[$i][0] = $pre.$rs->fields['country_code'].$rs->fields['npa'].$rs->fields['nxx'].$rs->fields['station']; + $dids[$i++][1] = $rs->fields['country_code']." ".$rs->fields['npa'].$rs->fields['nxx'].$rs->fields['station']; } else { $dids[$i][0] = $pre.$rs->fields['country_code'].$rs->fields['station']; $dids[$i++][1] = $rs->fields['country_code']." ".$rs->fields['station']; @@ -140,7 +155,19 @@ class didAreas $this->cc = $cc; $p = AGILE_DB_PREFIX; $db =& DB(); - if($cc!=1) { + if($cc==61) { + $sql = "select distinct A.npa,A.nxx,B.locName + from {$p}voip_pool AS A + inner join {$p}voip_npa_nxx AS B + on (A.npa=B.npa and A.country_code=".$db->qstr($cc)." AND + B.country_code=".$db->qstr($cc).") + WHERE (A.account_id IS NULL OR A.account_id = 0) AND + (A.date_reserved IS NULL OR A.date_reserved = 0) AND "; + if(is_array($plugins)) + $sql .= "A.voip_did_plugin_id in (".join(",",$plugins).") AND "; + $sql .= "A.site_id=".DEFAULT_SITE." ORDER BY B.locName"; + } + elseif($cc!=1) { $sql = "select distinct A.areacode,B.locName from {$p}voip_pool AS A inner join {$p}voip_npa_nxx AS B @@ -493,6 +520,14 @@ class voip # USA Call without the country code selection $e164 = "+1".$number; } + /* Aus specific hack */ + if (!strncmp($number, "61", 2)) { + $e164 = "+011" . $number; + // print $e164; + $npa = substr($e164, 6, 2); + $nxx = substr($e164, 8, 4); + } + /* End Aus specific hack */ if ($e164 == "") { $e164 = "+".$number; } @@ -526,7 +561,6 @@ class voip $numdigs = 2; $d1 = substr($e164, 4, 1); $d2 = substr($e164, 5, 1); - switch ($d1) { case '1': case '7': @@ -1040,7 +1074,10 @@ class voip $js .= "menuAppendOption('voip_location', '', '-- Select A Location --');"; $count = 0; while($area = $areas->getArea()) { - if($cc!=1) { + if($cc==61) { + $js .= "menuAppendOption('voip_location', '{$cc}:".$area->getNpa()."-".$area->getNxx()."', '".$area->getName()." (".$area->getNpa()."-".$area->getNxx().")');"; + } + elseif($cc!=1) { $js .= "menuAppendOption('voip_location', '{$cc}:".$area->getAreacode()."', '".$area->getName()." (".$area->getAreacode().")');"; } else if($area->data['locState']==$VAR['state']) { $js .= "menuAppendOption('voip_location', '".$area->getNpa()."-".$area->getNxx()."', '".$area->getName()." (".$area->getNpa()."-".$area->getNxx().")');"; @@ -1068,7 +1105,13 @@ class voip if (strchr($l,':')) { $cn = explode(':', $l); $data['country_code'] = $cn[0]; - $data['areacode'] = $cn[1]; + if($cn[0] == '61') { + $cn = explode('-', $cn[1]); + $data['npa'] = $cn[0]; + $data['nxx'] = $cn[1]; + } else { + $data['areacode'] = $cn[1]; + } } else { $cn = explode('-', $l); $data['country_code'] = 1; diff --git a/modules/voip_pool/voip_pool.inc.php b/modules/voip_pool/voip_pool.inc.php index 28c50615..92f83a76 100644 --- a/modules/voip_pool/voip_pool.inc.php +++ b/modules/voip_pool/voip_pool.inc.php @@ -106,6 +106,8 @@ class voip_pool $fields['nxx'] = $nxx; if ($cc == '1') { $fields['station'] = substr($e164, 8); + } elseif($cc == "61") { + $fields['station'] = substr($e164, 12); } else { $fields['station'] = substr($e164, 4 + strlen($cc)); }