Changeset 6025

Show
Ignore:
Timestamp:
07/15/08 17:02:13 (6 months ago)
Author:
p_lindheimer
Message:

#2909: added DND hints per device for DND state and toggle, added update of DEVDND state so devices can have DND BLF that tracks the logged in user

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/branches/2.5/donotdisturb/functions.inc.php

    r5858 r6025  
    66        // This generates the dialplan 
    77        global $ext;   
     8        global $amp_conf; 
     9 
    810        switch($engine) { 
    911                case "asterisk": 
     
    3234                                } 
    3335                        } 
     36 
     37                        $fcc = new featurecode($modulename, 'dnd_toggle'); 
     38                        $dnd_code = $fcc->getCodeActive(); 
     39                        unset($fcc); 
     40 
     41                        // Create hints context for DND codes so a device can subscribe to the DND state 
     42                        // 
     43                        if ($amp_conf['USEDEVSTATE'] && $dnd_code != '') { 
     44                                $ext->addInclude('from-internal-additional','ext-dnd-hints'); 
     45                                $contextname = 'ext-dnd-hints'; 
     46                                $device_list = core_devices_list("all", false, true); 
     47                                foreach ($device_list as $device) { 
     48                                        $ext->add($contextname, $dnd_code.$device['id'], '', new ext_goto("1",$dnd_code,"app-dnd-toggle")); 
     49                                        $ext->addHint($contextname, $dnd_code.$device['id'], "Custom:DEVDND".$device['id']); 
     50                                } 
     51                        } 
     52 
    3453                break; 
    3554        } 
     
    4968        $ext->add($id, $c, '', new ext_setvar('DB(DND/${AMPUSER})', 'YES')); // $cmd,n,Set(...=YES) 
    5069        if ($amp_conf['USEDEVSTATE']) { 
    51                 $ext->add($id, $c, '', new ext_setvar('DEVSTATE(Custom:DND${AMPUSER})', 'BUSY')); // $cmd,n,Set(...=YES) 
     70                $ext->add($id, $c, '', new ext_setvar('STATE', 'BUSY')); 
     71                $ext->add($id, $c, '', new ext_gosub('1', 'sstate')); 
    5272        } 
    5373        $ext->add($id, $c, '', new ext_playback('do-not-disturb&activated')); // $cmd,n,Playback(...) 
    5474        $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid) 
     75        if ($amp_conf['USEDEVSTATE']) { 
     76                $c = 'sstate'; 
     77                $ext->add($id, $c, '', new ext_setvar('DEVSTATE(Custom:DND${AMPUSER})', '${STATE}')); 
     78                $ext->add($id, $c, '', new ext_dbget('DEVICES','AMPUSER/${AMPUSER}/device')); 
     79                $ext->add($id, $c, '', new ext_gotoif('$["${DEVICES}" = "" ]', 'return')); 
     80                $ext->add($id, $c, '', new ext_setvar('LOOPCNT', '${FIELDQTY(DEVICES,&)}')); 
     81                $ext->add($id, $c, '', new ext_setvar('ITER', '1')); 
     82                $ext->add($id, $c, 'begin', new ext_setvar('DEVSTATE(Custom:DEVDND${CUT(DEVICES,&,${ITER})})','${STATE}')); 
     83                $ext->add($id, $c, '', new ext_setvar('ITER', '$[${ITER} + 1]')); 
     84                $ext->add($id, $c, '', new ext_gotoif('$[${ITER} <= ${LOOPCNT}]', 'begin')); 
     85                $ext->add($id, $c, 'return', new ext_return()); 
     86        } 
    5587} 
    5688                 
     
    68100        $ext->add($id, $c, '', new ext_dbdel('DND/${AMPUSER}')); // $cmd,n,DBdel(..) 
    69101        if ($amp_conf['USEDEVSTATE']) { 
    70                 $ext->add($id, $c, '', new ext_setvar('DEVSTATE(Custom:DND${AMPUSER})', 'NOT_INUSE')); // $cmd,n,Set(...=YES) 
     102                $ext->add($id, $c, '', new ext_setvar('STATE', 'NOT_INUSE')); 
     103                $ext->add($id, $c, '', new ext_gosub('1', 'sstate')); 
    71104        } 
    72105        $ext->add($id, $c, '', new ext_playback('do-not-disturb&de-activated')); // $cmd,n,Playback(...) 
    73106        $ext->add($id, $c, '', new ext_macro('hangupcall')); // $cmd,n,Macro(user-callerid) 
     107        if ($amp_conf['USEDEVSTATE']) { 
     108                $c = 'sstate'; 
     109                $ext->add($id, $c, '', new ext_setvar('DEVSTATE(Custom:DND${AMPUSER})', '${STATE}')); 
     110                $ext->add($id, $c, '', new ext_dbget('DEVICES','AMPUSER/${AMPUSER}/device')); 
     111                $ext->add($id, $c, '', new ext_gotoif('$["${DEVICES}" = "" ]', 'return')); 
     112                $ext->add($id, $c, '', new ext_setvar('LOOPCNT', '${FIELDQTY(DEVICES,&)}')); 
     113                $ext->add($id, $c, '', new ext_setvar('ITER', '1')); 
     114                $ext->add($id, $c, 'begin', new ext_setvar('DEVSTATE(Custom:DEVDND${CUT(DEVICES,&,${ITER})})','${STATE}')); 
     115                $ext->add($id, $c, '', new ext_setvar('ITER', '$[${ITER} + 1]')); 
     116                $ext->add($id, $c, '', new ext_gotoif('$[${ITER} <= ${LOOPCNT}]', 'begin')); 
     117                $ext->add($id, $c, 'return', new ext_return()); 
     118        } 
    74119} 
    75120 
     
    89134        $ext->add($id, $c, 'activate', new ext_setvar('DB(DND/${AMPUSER})', 'YES')); 
    90135        if ($amp_conf['USEDEVSTATE']) { 
    91                 $ext->add($id, $c, '', new ext_setvar('DEVSTATE(Custom:DND${AMPUSER})', 'BUSY')); 
     136                $ext->add($id, $c, '', new ext_setvar('STATE', 'BUSY')); 
     137                $ext->add($id, $c, '', new ext_gosub('1', 'sstate')); 
    92138        } 
    93139        $ext->add($id, $c, '', new ext_playback('do-not-disturb&activated')); 
     
    96142        $ext->add($id, $c, 'deactivate', new ext_dbdel('DND/${AMPUSER}')); 
    97143        if ($amp_conf['USEDEVSTATE']) { 
    98                 $ext->add($id, $c, '', new ext_setvar('DEVSTATE(Custom:DND${AMPUSER})', 'NOT_INUSE')); 
     144                $ext->add($id, $c, '', new ext_setvar('STATE', 'NOT_INUSE')); 
     145                $ext->add($id, $c, '', new ext_gosub('1', 'sstate')); 
     146                //$ext->add($id, $c, '', new ext_setvar('DEVSTATE(Custom:DND${AMPUSER})', 'NOT_INUSE')); 
    99147        } 
    100148        $ext->add($id, $c, '', new ext_playback('do-not-disturb&de-activated')); 
    101149        $ext->add($id, $c, '', new ext_macro('hangupcall')); 
     150        if ($amp_conf['USEDEVSTATE']) { 
     151                $c = 'sstate'; 
     152                $ext->add($id, $c, '', new ext_setvar('DEVSTATE(Custom:DND${AMPUSER})', '${STATE}')); 
     153                $ext->add($id, $c, '', new ext_dbget('DEVICES','AMPUSER/${AMPUSER}/device')); 
     154                $ext->add($id, $c, '', new ext_gotoif('$["${DEVICES}" = "" ]', 'return')); 
     155                $ext->add($id, $c, '', new ext_setvar('LOOPCNT', '${FIELDQTY(DEVICES,&)}')); 
     156                $ext->add($id, $c, '', new ext_setvar('ITER', '1')); 
     157                $ext->add($id, $c, 'begin', new ext_setvar('DEVSTATE(Custom:DEVDND${CUT(DEVICES,&,${ITER})})','${STATE}')); 
     158                $ext->add($id, $c, '', new ext_setvar('ITER', '$[${ITER} + 1]')); 
     159                $ext->add($id, $c, '', new ext_gotoif('$[${ITER} <= ${LOOPCNT}]', 'begin')); 
     160                $ext->add($id, $c, 'return', new ext_return()); 
     161        } 
    102162} 
    103163