Changeset 8785
- Timestamp:
- 02/07/10 16:54:30 (7 months ago)
- Files:
-
- modules/branches/2.7/queues/functions.inc.php (modified) (8 diffs)
- modules/branches/2.7/queues/module.xml (modified) (2 diffs)
- modules/branches/2.7/queues/page.queues.php (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
modules/branches/2.7/queues/functions.inc.php
r8461 r8785 486 486 $ext->add($context, $exten, '', new ext_gotoif('$["${ARG3}" = "EXTEN" & ${DB_EXISTS(AMPUSER/${CALLBACKNUM}/cidname)} = 0]', 'invalid')); 487 487 488 // If this is a restricted dynamic agent queue then check to make sure they are allowed 489 // 490 $ext->add($context, $exten, '', new ext_gotoif('$["${DB(QPENALTY/${ARG1}/dynmemberonly)}" = "yes" & ${DB_EXISTS(QPENALTY/${ARG1}/agents/${CALLBACKNUM})} != 1]', 'invalid')); 491 488 492 $ext->add($context, $exten, '', new ext_execif('$["${QREGEX}" != ""]', 'GotoIf', '$["${REGEX("${QREGEX}" ${CALLBACKNUM})}" = "0"]?invalid')); 489 493 $ext->add($context, $exten, '', new ext_execif('$["${ARG2}" != ""]', 'Authenticate', '${ARG2}')); … … 491 495 492 496 if ($amp_conf['USEQUEUESTATE']) { 493 $ext->add($context, $exten, '', new ext_execif('$[${DB_EXISTS(AMPUSER/${CALLBACKNUM}/cidname)} = 1]', 'AddQueueMember', '${ARG1},Local/${CALLBACKNUM}@from-queue/n, 0,,${DB(AMPUSER/${CALLBACKNUM}/cidname)},HINT:${CALLBACKNUM}@ext-local'));494 $ext->add($context, $exten, '', new ext_execif('$[${DB_EXISTS(AMPUSER/${CALLBACKNUM}/cidname)} = 0]', 'AddQueueMember', '${ARG1},Local/${CALLBACKNUM}@from-queue/n '));497 $ext->add($context, $exten, '', new ext_execif('$[${DB_EXISTS(AMPUSER/${CALLBACKNUM}/cidname)} = 1]', 'AddQueueMember', '${ARG1},Local/${CALLBACKNUM}@from-queue/n,${DB(QPENALTY/${ARG1}/agents/${CALLBACKNUM})},,${DB(AMPUSER/${CALLBACKNUM}/cidname)},HINT:${CALLBACKNUM}@ext-local')); 498 $ext->add($context, $exten, '', new ext_execif('$[${DB_EXISTS(AMPUSER/${CALLBACKNUM}/cidname)} = 0]', 'AddQueueMember', '${ARG1},Local/${CALLBACKNUM}@from-queue/n,${DB(QPENALTY/${ARG1}/agents/${CALLBACKNUM})}')); 495 499 } else { 496 $ext->add($context, $exten, 'a9', new ext_addqueuemember('${ARG1}', 'Local/${CALLBACKNUM}@from-queue/n '));500 $ext->add($context, $exten, 'a9', new ext_addqueuemember('${ARG1}', 'Local/${CALLBACKNUM}@from-queue/n,${DB(QPENALTY/${ARG1}/agents/${CALLBACKNUM})}')); 497 501 } 498 502 $ext->add($context, $exten, '', new ext_userevent('Agentlogin', 'Agent: ${CALLBACKNUM}')); … … 557 561 } 558 562 559 function queues_add($account,$name,$password,$prefix,$goto,$agentannounce_id,$members,$joinannounce_id,$maxwait,$alertinfo='',$cwignore='0',$qregex='',$queuewait='0', $use_queue_context='0' ) {560 global $db;563 function queues_add($account,$name,$password,$prefix,$goto,$agentannounce_id,$members,$joinannounce_id,$maxwait,$alertinfo='',$cwignore='0',$qregex='',$queuewait='0', $use_queue_context='0', $dynmembers = '', $dynmemberonly = '') { 564 global $db,$astman,$amp_conf; 561 565 562 566 if (trim($account) == '') { … … 636 640 VALUES ('$extension', '$descr', '$grppre', '$alertinfo', '$joinannounce_id', '$ringing', '$agentannounce_id', '$maxwait', '$password', '$ivr_id', '$dest', '$cwignore', '$qregex', '$queuewait', '$use_queue_context') "; 637 641 $results = sql($sql); 642 643 // store dynamic member data in astDB 644 if ($astman) { 645 foreach($dynmembers as $member){ 646 $mem=explode(',',$member); 647 $astman->database_put('QPENALTY/'.$account.'/agents',$mem[0],$mem[1]); 648 } 649 $astman->database_put('QPENALTY/'.$account,'dynmemberonly',$dynmemberonly); 650 } else { 651 fatal("Cannot connect to Asterisk Manager with ".$amp_conf["AMPMGRUSER"]."/".$amp_conf["AMPMGRPASS"]); 652 } 653 638 654 return true; 639 655 } 640 656 641 657 function queues_del($account) { 642 global $db ;658 global $db,$astman,$amp_conf; 643 659 644 660 $sql = "DELETE FROM queues_details WHERE id = '$account'"; … … 652 668 die_freepbx($result->getMessage().$sql); 653 669 } 654 670 671 //remove dynamic memebers from astDB 672 if ($astman) { 673 $astman->database_deltree('QPENALTY/'.$account); 674 } else { 675 fatal("Cannot connect to Asterisk Manager with ".$amp_conf["AMPMGRUSER"]."/".$amp_conf["AMPMGRPASS"]); 676 } 655 677 } 656 678 … … 773 795 774 796 function queues_get($account, $queues_conf_only=false) { 775 global $db ;797 global $db,$astman,$amp_conf; 776 798 777 799 if ($account == "") … … 855 877 } 856 878 } 857 879 // TODO: why the str_replace? 880 // 881 if ($astman) { 882 $account=str_replace("'",'',$account); 883 //get dynamic members priority from astDB 884 $get=$astman->database_show('QPENALTY/'.$account.'/agents'); 885 if($get){ 886 foreach($get as $key => $value){ 887 $key=explode('/',$key); 888 $mem[$key[3]]=$value; 889 } 890 foreach($mem as $mem => $pnlty){ 891 $dynmem[]=$mem.','.$pnlty; 892 } 893 } 894 $results['dynmembers']=implode("\n",$dynmem); 895 $results['dynmeberonly'] = $astman->database_get('QPENALTY/'.$account,'dynmemberonly'); 896 } else { 897 fatal("Cannot connect to Asterisk Manager with ".$amp_conf["AMPMGRUSER"]."/".$amp_conf["AMPMGRPASS"]); 898 } 858 899 return $results; 859 900 } … … 929 970 $ext->add($id, $c, '', new ext_setvar('CALLBACKNUM','${AMPUSER}')); 930 971 972 $ext->add($id, $c, '', new ext_gotoif('$["${DB(QPENALTY/${QUEUENO}/dynmemberonly)}" = "yes" & ${DB_EXISTS(QPENALTY/${QUEUENO}/agents/${CALLBACKNUM})} != 1]', 'invalid')); 931 973 // I think that when using this it will always be a user, but just in case... 932 974 // 933 975 if ($amp_conf['USEQUEUESTATE']) { 934 $ext->add($id, $c, '', new ext_execif('$[${DB_EXISTS(AMPUSER/${CALLBACKNUM}/cidname)} = 1]', 'AddQueueMember', '${QUEUENO},Local/${CALLBACKNUM}@from-queue/n, 0,,${DB(AMPUSER/${CALLBACKNUM}/cidname)},HINT:${CALLBACKNUM}@ext-local'));935 $ext->add($id, $c, '', new ext_execif('$[${DB_EXISTS(AMPUSER/${CALLBACKNUM}/cidname)} = 0]', 'AddQueueMember', '${QUEUENO},Local/${CALLBACKNUM}@from-queue/n '));976 $ext->add($id, $c, '', new ext_execif('$[${DB_EXISTS(AMPUSER/${CALLBACKNUM}/cidname)} = 1]', 'AddQueueMember', '${QUEUENO},Local/${CALLBACKNUM}@from-queue/n,${DB(QPENALTY/${QUEUENO}/agents/${CALLBACKNUM})},,${DB(AMPUSER/${CALLBACKNUM}/cidname)},HINT:${CALLBACKNUM}@ext-local')); 977 $ext->add($id, $c, '', new ext_execif('$[${DB_EXISTS(AMPUSER/${CALLBACKNUM}/cidname)} = 0]', 'AddQueueMember', '${QUEUENO},Local/${CALLBACKNUM}@from-queue/n,${DB(QPENALTY/${QUEUENO}/agents/${CALLBACKNUM})}')); 936 978 } else { 937 $ext->add($id, $c, '', new ext_addqueuemember('${QUEUENO}','Local/${CALLBACKNUM}@from-queue/n '));979 $ext->add($id, $c, '', new ext_addqueuemember('${QUEUENO}','Local/${CALLBACKNUM}@from-queue/n,${DB(QPENALTY/${QUEUENO}/agents/${CALLBACKNUM})}')); 938 980 } 939 981 940 982 $ext->add($id, $c, '', new ext_userevent('AgentLogin','Agent: ${CALLBACKNUM}')); 983 $ext->add($id, $c, '', new ext_macroexit()); 984 $ext->add($id, $c, 'invalid', new ext_playback('pbx-invalid')); 941 985 $ext->add($id, $c, '', new ext_macroexit()); 942 986 } modules/branches/2.7/queues/module.xml
r8724 r8785 11 11 </description> 12 12 <changelog> 13 *2.7.0beta1.1* #2085 13 14 *2.7.0beta1.0* #3594 14 15 *2.6.0.3* #3945,#3984 … … 51 52 </depends> 52 53 <menuitems> 53 <queues >Queues</queues>54 <queues needsenginedb="yes">Queues</queues> 54 55 </menuitems> 55 56 <location>release/2.7/queues-2.7.0beta1.0.tgz</location> modules/branches/2.7/queues/page.queues.php
r8768 r8785 32 32 $weight = isset($_REQUEST['weight'])?$_REQUEST['weight']:'0'; 33 33 $autofill = isset($_REQUEST['autofill'])?$_REQUEST['autofill']:'no'; 34 34 $dynmemberonly = isset($_REQUEST['dynmemberonly'])?$_REQUEST['dynmemberonly']:'no'; 35 35 $use_queue_context = isset($_REQUEST['use_queue_context'])?$_REQUEST['use_queue_context']:'0'; 36 36 $exten_context = "from-queue"; … … 88 88 // $members = array_values(array_unique($members)); 89 89 } 90 91 if (isset($_REQUEST["dynmembers"])) { 92 $dynmembers=explode("\n",$_REQUEST["dynmembers"]); 93 if (!$dynmembers) { 94 $dynmembers = null; 95 } 96 } 97 90 98 91 99 // do if we are submitting a form … … 104 112 $conflict_url = framework_display_extension_usage_alert($usage_arr); 105 113 } else { 106 queues_add($account,$name,$password,$prefix,$goto,$agentannounce_id,$members,$joinannounce_id,$maxwait,$alertinfo,$cwignore,$qregex,$queuewait,$use_queue_context );114 queues_add($account,$name,$password,$prefix,$goto,$agentannounce_id,$members,$joinannounce_id,$maxwait,$alertinfo,$cwignore,$qregex,$queuewait,$use_queue_context,$dynmembers,$dynmemberonly); 107 115 needreload(); 108 116 redirect_standard(); … … 116 124 case "edit": //just delete and re-add 117 125 queues_del($account); 118 queues_add($account,$name,$password,$prefix,$goto,$agentannounce_id,$members,$joinannounce_id,$maxwait,$alertinfo,$cwignore,$qregex,$queuewait,$use_queue_context );126 queues_add($account,$name,$password,$prefix,$goto,$agentannounce_id,$members,$joinannounce_id,$maxwait,$alertinfo,$cwignore,$qregex,$queuewait,$use_queue_context,$dynmembers,$dynmemberonly); 119 127 needreload(); 120 128 redirect_standard('extdisplay'); … … 257 265 ?> 258 266 </select> 267 </td> 268 </tr> 269 270 <tr> 271 <td valign="top"><a href="#" class="info"><?php echo _('Dynamic Member Penalty') ?>:<span><br><?php echo _("Dynamic Members are extensions that can log in and out of the queue. When a member logges in to a queue, their penalty in the queue will be as specified here. Extensions included here will NOT be automaticlay logged in to the queue.") ?><br><br></span></a></td> 272 <td valign="top"> 273 <textarea id="dynmembers" cols="15" rows="<?php $rows = count($dynmembers)+1; echo (($rows < 5) ? 5 : (($rows > 20) ? 20 : $rows) ); ?>" name="dynmembers" tabindex="<?php echo ++$tabindex;?>"><?php echo $dynmembers; ?></textarea> 274 </td> 275 </tr> 276 277 <tr> 278 <td> 279 <a href=# class="info"><?php echo _("Extension Quick Pick")?> 280 <span> 281 <?php echo _("Choose an extension to append to the end of the dynamic memebers list above.")?> 282 </span> 283 </a> 284 </td> 285 <td> 286 <select onChange="insertExten('dyn');" id="dyninsexten" tabindex="<?php echo ++$tabindex;?>"> 287 <option value=""><?php echo _("(pick extension)")?></option> 288 <?php 289 $results = core_users_list(); 290 foreach ($results as $result) { 291 echo "<option value='".$result[0]."'>".$result[0]." (".$result[1].")</option>\n"; 292 } 293 ?> 294 </select> 295 </td> 296 </tr> 297 298 <tr> 299 <td><a href="#" class="info"><?php echo _("Allow only these?")?><span><?php echo _('Restrict dynamic queue memeber logins to only thoes listed in previous option. When set to yes, members not listed will be DENIED ACCESS to the queue.')?></span></a></td> 300 <td><input type="radio" name="dynmemberonly" value="yes" <?php echo ($dynmemberonly=='yes'?'checked':'');?>><?php echo _('Yes')?><input type="radio" name="dynmemberonly" value="yes" <?php echo ($dynmemberonly!='yes'?'checked':'');?> ><?php echo _('No')?> 259 301 </td> 260 302 </tr>
