Changeset 3625
- Timestamp:
- 01/24/07 10:00:11 (2 years ago)
- Files:
-
- freepbx/trunk/amp_conf/astetc/extensions.conf (modified) (3 diffs)
- freepbx/trunk/amp_conf/htdocs/admin/modules/core/functions.inc.php (modified) (10 diffs)
- freepbx/trunk/amp_conf/htdocs/admin/modules/core/page.routing.php (modified) (4 diffs)
- freepbx/trunk/amp_conf/htdocs/admin/modules/core/page.trunks.php (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
freepbx/trunk/amp_conf/astetc/extensions.conf
r3622 r3625 312 312 exten => s,n,DBDel(FM/DND/${FMGRP}/${CHANNEL}) 313 313 314 exten => s,n(theend),Wait(2) 315 exten => s,n,Hangup 314 exten => s,n(theend),Hangup 316 315 317 316 [macro-faxreceive] … … 357 356 [macro-dialout-trunk] 358 357 exten => s,1,Set(DIAL_TRUNK=${ARG1}) 358 exten => s,n,GotoIf($["x${OUTDISABLE_${ARG1}}" = "xon"]?disabletrunk,1) 359 359 360 360 ; If NODEST is set, clear it. No point in remembering since dialout-trunk will just end in the … … 412 412 exten => s-CANCEL,3,Congestion(20) 413 413 414 exten => _s-.,1,NoOp(Dial failed due to ${DIALSTATUS} - failing through to other trunks) 414 exten => _s-.,1,GotoIf($["x${OUTFAIL_${ARG1}}" = "x"]?noreport) 415 exten => _s-.,n,DeadAGI(${OUTFAIL_${ARG1}}) 416 exten => _s-.,n(noreport),Noop(TRUNK Dial failed due to ${DIALSTATUS} - failing through to other trunks) 417 418 exten => disabletrunk,1,Noop(TRUNK: ${OUT_${DIAL_TRUNK}} DISABLED - falling through to next trunk) 415 419 416 420 exten => h,1,Macro(hangupcall) freepbx/trunk/amp_conf/htdocs/admin/modules/core/functions.inc.php
r3621 r3625 1276 1276 1277 1277 // we're adding ,don't require a $trunknum 1278 function core_trunks_add($tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid ) {1278 function core_trunks_add($tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid, $failtrunk, $disabletrunk) { 1279 1279 global $db; 1280 1280 … … 1287 1287 } 1288 1288 1289 core_trunks_backendAdd($trunknum, $tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid );1289 core_trunks_backendAdd($trunknum, $tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid, $failtrunk, $disabletrunk); 1290 1290 1291 1291 return $trunknum; … … 1300 1300 1301 1301 //delete from globals table 1302 sql("DELETE FROM globals WHERE variable LIKE '%OUT_$trunknum' OR variable IN ('OUTCID_$trunknum','OUTMAXCHANS_$trunknum','OUTPREFIX_$trunknum','OUTKEEPCID_$trunknum' )");1302 sql("DELETE FROM globals WHERE variable LIKE '%OUT_$trunknum' OR variable IN ('OUTCID_$trunknum','OUTMAXCHANS_$trunknum','OUTPREFIX_$trunknum','OUTKEEPCID_$trunknum','OUTFAIL_$trunknum','OUTDISABLE_$trunknum')"); 1303 1303 1304 1304 //write outids … … 1317 1317 } 1318 1318 1319 function core_trunks_edit($trunknum, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid ) {1319 function core_trunks_edit($trunknum, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid, $failtrunk, $disabletrunk) { 1320 1320 //echo "editTrunk($trunknum, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register)"; 1321 1321 $tech = core_trunks_getTrunkTech($trunknum); 1322 1322 core_trunks_del($trunknum, $tech); 1323 core_trunks_backendAdd($trunknum, $tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid );1323 core_trunks_backendAdd($trunknum, $tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid, $failtrunk, $disabletrunk); 1324 1324 } 1325 1325 1326 1326 // just used internally by addTrunk() and editTrunk() 1327 1327 //obsolete 1328 function core_trunks_backendAdd($trunknum, $tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid ) {1328 function core_trunks_backendAdd($trunknum, $tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid, $failtrunk, $disabletrunk) { 1329 1329 global $db; 1330 1330 … … 1343 1343 array('OUTCID_'.$trunknum, $outcid), 1344 1344 array('OUTKEEPCID_'.$trunknum, $keepcid), 1345 array('OUTFAIL_'.$trunknum, $failtrunk), 1346 array('OUTDISABLE_'.$trunknum, $disabletrunk), 1345 1347 ); 1346 1348 … … 1354 1356 1355 1357 core_trunks_writeoutids(); 1358 1359 $disable_flag = ($disabletrunk == "on")?1:0; 1356 1360 1357 1361 switch (strtolower($tech)) { 1358 1362 case "iax": 1359 1363 case "iax2": 1360 core_trunks_addSipOrIax($peerdetails,'iax',$channelid,$trunknum );1364 core_trunks_addSipOrIax($peerdetails,'iax',$channelid,$trunknum,$disable_flag); 1361 1365 if ($usercontext != ""){ 1362 core_trunks_addSipOrIax($userconfig,'iax',$usercontext,'9'.$trunknum );1366 core_trunks_addSipOrIax($userconfig,'iax',$usercontext,'9'.$trunknum,$disable_flag); 1363 1367 } 1364 1368 if ($register != ""){ 1365 core_trunks_addRegister($trunknum,'iax',$register );1369 core_trunks_addRegister($trunknum,'iax',$register,$disable_flag); 1366 1370 } 1367 1371 break; 1368 1372 case "sip": 1369 core_trunks_addSipOrIax($peerdetails,'sip',$channelid,$trunknum );1373 core_trunks_addSipOrIax($peerdetails,'sip',$channelid,$trunknum,$disable_flag); 1370 1374 if ($usercontext != ""){ 1371 core_trunks_addSipOrIax($userconfig,'sip',$usercontext,'9'.$trunknum );1375 core_trunks_addSipOrIax($userconfig,'sip',$usercontext,'9'.$trunknum,$disable_flag); 1372 1376 } 1373 1377 if ($register != ""){ 1374 core_trunks_addRegister($trunknum,'sip',$register );1378 core_trunks_addRegister($trunknum,'sip',$register,$disable_flag); 1375 1379 } 1376 1380 break; … … 1395 1399 1396 1400 //add trunk info to sip or iax table 1397 function core_trunks_addSipOrIax($config,$table,$channelid,$trunknum ) {1401 function core_trunks_addSipOrIax($config,$table,$channelid,$trunknum,$disable_flag=0) { 1398 1402 global $db; 1399 1403 … … 1416 1420 $dbconfitem[]=array($k,$v); 1417 1421 } 1418 $compiled = $db->prepare("INSERT INTO $table (id, keyword, data ) values ('9999$trunknum',?,?)");1422 $compiled = $db->prepare("INSERT INTO $table (id, keyword, data, flags) values ('9999$trunknum',?,?,'$disable_flag')"); 1419 1423 $result = $db->executeMultiple($compiled,$dbconfitem); 1420 1424 if(DB::IsError($result)) { 1421 die($result->getMessage()."<br><br>INSERT INTO $table (id, keyword, data ) values ('9999$trunknum',?,?)");1425 die($result->getMessage()."<br><br>INSERT INTO $table (id, keyword, data, flags) values ('9999$trunknum',?,?,'$disable_flag')"); 1422 1426 } 1423 1427 } … … 1432 1436 // TODO: sqlite work arround - diego 1433 1437 // need to reorder the trunks in PHP code 1434 $unique_trunks = sql("SELECT * FROM globals WHERE variable LIKE 'OUT_%' ORDER BY variable","getAll"); 1438 $sqlstr = "SELECT t.variable, t.value, d.value state FROM `globals` t "; 1439 $sqlstr .= "JOIN (SELECT x.variable, x.value FROM globals x WHERE x.variable LIKE 'OUTDISABLE\_%') d "; 1440 $sqlstr .= "ON substring(t.variable,5) = substring(d.variable,12) WHERE t.variable LIKE 'OUT\_%' "; 1441 $sqlstr .= "UNION ALL "; 1442 $sqlstr .= "SELECT v.variable, v.value, concat(substring(v.value,1,0),'off') state FROM `globals` v "; 1443 $sqlstr .= "WHERE v.variable LIKE 'OUT\_%' AND concat('OUTDISABLE_',substring(v.variable,5)) NOT IN "; 1444 $sqlstr .= " ( SELECT variable from globals WHERE variable LIKE 'OUTDISABLE\_%' ) "; 1445 $sqlstr .= "ORDER BY variable"; 1446 1447 //$unique_trunks = sql("SELECT * FROM globals WHERE variable LIKE 'OUT_%' ORDER BY variable","getAll"); 1448 $unique_trunks = sql($sqlstr,"getAll"); 1435 1449 } 1436 1450 else 1437 1451 { 1438 1452 // we have to escape _ for mysql: normally a wildcard 1439 $unique_trunks = sql("SELECT * FROM globals WHERE variable LIKE 'OUT\\\_%' ORDER BY RIGHT( variable, LENGTH( variable ) - 4 )+0","getAll"); 1453 $sqlstr = "SELECT t.variable, t.value, d.value state FROM `globals` t "; 1454 $sqlstr .= "JOIN (SELECT x.variable, x.value FROM globals x WHERE x.variable LIKE 'OUTDISABLE\\\_%') d "; 1455 $sqlstr .= "ON substring(t.variable,5) = substring(d.variable,12) WHERE t.variable LIKE 'OUT\\\_%' "; 1456 $sqlstr .= "UNION ALL "; 1457 $sqlstr .= "SELECT v.variable, v.value, concat(substring(v.value,1,0),'off') state FROM `globals` v "; 1458 $sqlstr .= "WHERE v.variable LIKE 'OUT\\\_%' AND concat('OUTDISABLE_',substring(v.variable,5)) NOT IN "; 1459 $sqlstr .= " ( SELECT variable from globals WHERE variable LIKE 'OUTDISABLE\\\_%' ) "; 1460 $sqlstr .= "ORDER BY RIGHT( variable, LENGTH( variable ) - 4 )+0"; 1461 1462 //$unique_trunks = sql("SELECT * FROM globals WHERE variable LIKE 'OUT\\\_%' ORDER BY RIGHT( variable, LENGTH( variable ) - 4 )+0","getAll"); 1463 $unique_trunks = sql($sqlstr,"getAll"); 1440 1464 } 1441 1465 … … 1476 1500 } 1477 1501 1478 function core_trunks_addRegister($trunknum,$tech,$reg ) {1479 sql("INSERT INTO $tech (id, keyword, data ) values ('9999999$trunknum','register','$reg')");1502 function core_trunks_addRegister($trunknum,$tech,$reg,$disable_flag=0) { 1503 sql("INSERT INTO $tech (id, keyword, data, flags) values ('9999999$trunknum','register','$reg','$disable_flag')"); 1480 1504 } 1481 1505 freepbx/trunk/amp_conf/htdocs/admin/modules/core/page.routing.php
r3621 r3625 268 268 foreach (core_trunks_list() as $temp) { 269 269 $trunks[$temp[0]] = $temp[1]; 270 $trunkstate[$temp[0]] = $temp[2]; 270 271 } 271 272 … … 506 507 </td> 507 508 <td> 508 <select id='trunkpri<?php echo $key ?>' name="trunkpriority[<?php echo $key ?>]">509 <option value="" ></option>509 <select id='trunkpri<?php echo $key ?>' name="trunkpriority[<?php echo $key ?>]" style="background: <?php echo $trunkstate[$trunk]=="off"?"#FFF":"#DDD" ?> ;" onChange="showDisable(<?php echo $key ?>); return true;"> 510 <option value="" style="background: #FFF;"></option> 510 511 <?php 511 512 foreach ($trunks as $name=>$display) { 512 echo "<option id=\"trunk".$key."\" value=\"".$name."\" ".($name == $trunk ? "selected" : "").">".(strpos($display,'AMP:')===0 ? substr($display,4) : $display)."</option>"; 513 if ($trunkstate[$name] == 'off') { 514 echo "<option id=\"trunk".$key."\" name=\"trunk".$key."\" value=\"".$name."\" style=\"background: #FFF;\" ".($name == $trunk ? "selected" : "").">".$display."</option>"; 515 } else { 516 echo "<option id=\"trunk".$key."\" name=\"trunk".$key."\" value=\"".$name."\" style=\"background: #DDD;\" ".($name == $trunk ? "selected" : "").">".$display."</option>"; 517 } 513 518 } 514 519 ?> … … 550 555 <?php 551 556 foreach ($trunks as $name=>$display) { 552 echo "<option value=\"".$name."\">".(strpos($display,'AMP:')===0 ? substr($display,4) : $display)."</option>"; 557 if ($trunkstate[$name] == 'off') { 558 echo "<option value=\"".$name."\">".ltrim($display,"AMP:")."</option>"; 559 } else { 560 echo "<option value=\"".$name."\" style=\"background: #DDD;\" >*".ltrim($display,"AMP:")."*</option>"; 561 } 553 562 } 554 563 ?> … … 586 595 } else { 587 596 theForm.routepass.focus(); 597 } 598 599 function showDisable(key) { 600 <?php 601 $bgmap = 'bgc = {'; 602 foreach ($trunks as $name=>$display) { 603 $bgmap .= " \"$name\":"; 604 $bgmap .= ($trunkstate[$name] == 'off')?'"#FFF",':'"#DDD",'; 605 } 606 echo rtrim($bgmap,',')." };\n"; 607 ?> 608 if (document.getElementById('trunkpri'+key).value =='') { 609 document.getElementById('trunkpri'+key).style.background = '#FFF'; 610 } else { 611 document.getElementById('trunkpri'+key).style.background = bgc[document.getElementById('trunkpri'+key).value]; 612 } 588 613 } 589 614 freepbx/trunk/amp_conf/htdocs/admin/modules/core/page.trunks.php
r3624 r3625 25 25 26 26 // populate some global variables from the request string 27 $set_globals = array("outcid","maxchans","dialoutprefix","channelid","peerdetails","usercontext","userconfig","register","keepcid" );27 $set_globals = array("outcid","maxchans","dialoutprefix","channelid","peerdetails","usercontext","userconfig","register","keepcid","failtrunk","disabletrunk"); 28 28 foreach ($set_globals as $var) { 29 29 if (isset($_REQUEST[$var])) { … … 35 35 if (!isset($keepcid)) { 36 36 $keepcid = "off"; 37 } 38 // ensure that failtrunk is set to something: 39 if (!isset($failtrunk)) { 40 $failtrunk = ""; 41 } 42 if (!isset($disabletrunk)) { 43 $disabletrunk = "off"; 37 44 } 38 45 … … 60 67 switch ($action) { 61 68 case "addtrunk": 62 $trunknum = core_trunks_add($tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid); 69 if (!isset($failtrunk)) 70 $failtrunk=""; 71 $trunknum = core_trunks_add($tech, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid, trim($failtrunk),$disabletrunk); 63 72 64 73 core_trunks_addDialRules($trunknum, $dialrules); … … 67 76 break; 68 77 case "edittrunk": 69 core_trunks_edit($trunknum, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid); 78 if (!isset($failtrunk)) 79 $failtrunk=""; 80 core_trunks_edit($trunknum, $channelid, $dialoutprefix, $maxchans, $outcid, $peerdetails, $usercontext, $userconfig, $register, $keepcid, trim($failtrunk), $disabletrunk); 70 81 71 82 /* //DIALRULES … … 184 195 185 196 foreach ($tresults as $tresult) { 186 echo "\t<li><a ".($extdisplay==$tresult[0] ? 'class="current"':'')." href=\"config.php?display=".urlencode($display)."&extdisplay=".urlencode($tresult[0])."\" title=\"".urlencode($tresult[1])."\">"._("Trunk")." ".(strpos($tresult[1],'AMP:')===0 ? substr($tresult[1],4,15) : substr($tresult[1],0,15))."</a></li>\n"; 197 $background = ($tresult[2] == 'on')?'#DDD':'#FFF'; 198 echo "\t<li><a ".($extdisplay==$tresult[0] ? 'class="current"':'')." href=\"config.php?display=".urlencode($display)."&extdisplay=".urlencode($tresult[0])."\" title=\"".urlencode($tresult[1])."\" style=\"background: $background;\" >"._("Trunk")." ".substr(ltrim($tresult[1],"AMP:"),0,15)."</a></li>\n"; 187 199 } 188 200 … … 214 226 $dialoutprefix = ${"OUTPREFIX_".$trunknum}; 215 227 $keepcid = isset(${"OUTKEEPCID_".$trunknum})?${"OUTKEEPCID_".$trunknum}:''; 228 $failtrunk = isset(${"OUTFAIL_".$trunknum})?${"OUTFAIL_".$trunknum}:''; 229 $failtrunk_enable = ($failtrunk == "")?'':'CHECKED'; 230 $disabletrunk = isset(${"OUTDISABLE_".$trunknum})?${"OUTDISABLE_".$trunknum}:''; 216 231 217 232 if ($tech!="enum") { … … 340 355 </td> 341 356 </tr> 357 358 <tr> 359 <td><a class="info" href="#"><?php echo _("Disable Trunk")?><span><?php echo _("Check this to disable this trunk in all routes where it is used.")?></span></a>: 360 </td> 361 <td> 362 <input type='checkbox' name='disabletrunk' id="disabletrunk" <?php if ($disabletrunk=="on") { echo 'CHECKED'; }?> OnClick='disable_verify(disabletrunk); return true;'><small><?php echo _("Disable")?></small> 363 </td> 364 </tr> 365 366 <tr> 367 <td><a class="info" href="#"><?php echo _("Monitor Trunk Failures")?><span><?php echo _("If checked, supply the name of a custom AGI Script that will be called to report, log, email or otherwise take some action on trunk failures that are not caused by either NOANSWER or CANCEL.")?></span></a>: 368 </td> 369 <td> 370 <input <?php if (!$failtrunk_enable) echo "disabled style='background: #DDD;'"?> type="text" size="20" name="failtrunk" value="<?php echo htmlspecialchars($failtrunk)?>"/> 371 <input type='checkbox' name='failtrunk_enable' id="failtrunk_enable" value='1' <?php if ($failtrunk_enable) { echo 'CHECKED'; }?> OnClick='disable_field(failtrunk,failtrunk_enable); return true;'><small><?php echo _("Enable")?></small> 372 </td> 373 </tr> 374 342 375 <tr> 343 376 <td colspan="2"> … … 388 421 <script language="javascript"> 389 422 423 function disable_field(field, field_enable) { 424 if (field_enable.checked) { 425 field.style.backgroundColor = '#FFF'; 426 field.disabled = false; 427 } 428 else { 429 field.style.backgroundColor = '#DDD'; 430 field.disabled = true; 431 } 432 } 433 434 function disable_verify(field) { 435 if (field.checked) { 436 var answer=confirm("Are you sure you want to disable this trunk in all routes it is used?"); 437 if (!answer) { 438 field.checked = false; 439 } 440 } 441 else { 442 alert("You have enabled this trunk in all routes it is used"); 443 } 444 } 445 390 446 function populateLookup(digits) { 391 447 <?php
