root/modules/branches/2.4/disa/functions.inc.php

Revision 6431, 5.6 kB (checked in by p_lindheimer, 4 years ago)

Auto Check-in of any outstanding patches

  • Property svn:mime-type set to text/html
  • Property svn:eol-style set to native
Line 
1 <?php
2 /* $Id */
3
4
5 // This is the hook for 'destinations'
6 function disa_destinations() {
7         $results = disa_list();
8         // return an associative array with destination and description
9         if (isset($results)) {
10                 foreach($results as $result){
11                                 $extens[] = array('destination' => 'disa,'.$result['disa_id'].',1', 'description' => $result['displayname']);
12                 }
13                 return $extens;
14         } else {
15                 return null;
16         }
17 }
18
19 function disa_getdest($exten) {
20   return array('disa,'.$exten.',1');
21 }
22
23 function disa_getdestinfo($dest) {
24   global $active_modules;
25
26   if (substr(trim($dest),0,5) == 'disa,') {
27     $exten = explode(',',$dest);
28     $exten = $exten[1];
29     $thisexten = disa_get($exten);
30     if (empty($thisexten)) {
31       return array();
32     } else {
33       //$type = isset($active_modules['announcement']['type'])?$active_modules['announcement']['type']:'setup';
34       return array('description' => 'DISA : '.$thisexten['displayname'],
35                    'edit_url' => 'config.php?display=disa&itemid='.urlencode($exten),
36                   );
37     }
38   } else {
39     return false;
40   }
41 }
42
43 // This actually generates the dialplan
44 function disa_get_config($engine) {
45         global $ext;
46         switch($engine) {
47                 case "asterisk":
48                         $disalist = disa_list();
49                         if(is_array($disalist)) {
50                                 foreach($disalist as $item) {
51           $nopass = false;
52           
53           if (isset($item['pin']) && !empty($item['pin']) && (strtolower($item['pin']) != 'no-password')) {
54             // Create the disa-$id.conf file
55             $filename = "/etc/asterisk/disa-".$item['disa_id'].".conf";
56             $fh = fopen($filename, "w+");
57             $pinarr = explode(',' , $item['pin'] );
58             foreach($pinarr as $pin) {
59             
60               // Don't support remote MWI, too easy for users to break.
61               fwrite($fh, "$pin|".$item['context']."|".$item['cid']."\n");
62             }
63             fclose($fh);
64             chmod($filename, 0660);
65           } else {
66             $nopass = true;
67           }
68                                         
69           $thisitem = disa_get(ltrim($item['disa_id']));
70                                         // add dialplan
71
72           if ($thisitem['needconf'] == 'CHECKED') {
73             $ext->add('disa', $item['disa_id'], '', new ext_setvar('RESCOUNT', '1'));
74             $ext->add('disa', $item['disa_id'], 'loop',  new ext_gotoif('$[ ${RESCOUNT} > 5]', 'end'));
75             $ext->add('disa', $item['disa_id'], '',  new ext_read('RRES', 'press-1', '1', ',1,3'));
76             $ext->add('disa', $item['disa_id'], '', new ext_setvar('RESCOUNT', '$[${RESCOUNT}+1]'));
77             $ext->add('disa', $item['disa_id'], '', new ext_gotoif('$["x${RRES}"="x"]', 'loop'));
78           }
79           $ext->add('disa', $item['disa_id'], '', new ext_setvar('TIMEOUT(digit)', $thisitem['digittimeout']));
80           $ext->add('disa', $item['disa_id'], '', new ext_setvar('TIMEOUT(response)', $thisitem['resptimeout']));
81           $ext->add('disa', $item['disa_id'], '', new ext_setvar('__KEEPCID', 'TRUE'));
82           
83           if ($nopass) {
84             if ($item['cid']) {
85               $ext->add('disa', $item['disa_id'], '', new ext_setvar('CALLERID(all)', $item['cid']));
86             }
87             $ext->add('disa', $item['disa_id'], '', new ext_disa('no-password,'.$item['context']));
88           } else {
89             $ext->add('disa', $item['disa_id'], '', new ext_playback('enter-password'));
90             $ext->add('disa', $item['disa_id'], '', new ext_disa('/etc/asterisk/disa-'.$item['disa_id'].'.conf'));
91           }
92           
93           $ext->add('disa', $item['disa_id'], 'end', new ext_hangup(''));
94                                 }
95                         }
96                 break;
97         }
98 }
99
100
101 function disa_list() {
102        $results = sql("SELECT * FROM disa","getAll",DB_FETCHMODE_ASSOC);
103         if(is_array($results)){
104                 foreach($results as $result){
105                         // check to see if we have a dept match for the current AMP User.
106                         if (!isset($results['deptname']) || checkDept($result['deptname'])){
107                                 // return this item's dialplan destination, and the description
108                                 $allowed[] = $result;
109                         }
110                 }
111         }
112         if (isset($allowed)) {
113                 return $allowed;
114         } else {
115                 return null;
116         }
117 }
118
119 function disa_get($id){
120         //get all the variables for the meetme
121         $results = sql("SELECT * FROM disa WHERE disa_id = '$id'","getRow",DB_FETCHMODE_ASSOC);
122         return $results;
123 }
124
125 function disa_chk($post) {
126   return true;
127 }
128
129 function disa_add($post) {
130         if(!disa_chk($post))
131                 return null;
132         extract($post);
133   if (!isset($needconf))
134     $needconf = '';
135     if(empty($displayname)) {
136       $displayname = "unnamed";
137     }
138     $results = sql("INSERT INTO disa (displayname,pin,cid,context,resptimeout,digittimeout,needconf) values ('".addslashes($displayname)."','".addslashes($pin)."','".addslashes($cid)."','".addslashes($context)."', '".addslashes($resptimeout)."', '".addslashes($digittimeout)."', '$needconf')");
139 }
140
141 function disa_del($id) {
142   $results = sql("DELETE FROM disa WHERE disa_id = \"$id\"","query");
143   unlink("/etc/asterisk/disa-{$id}.conf");
144 }
145
146 function disa_edit($id, $post) {
147   if (!disa_chk($post))
148     return null;
149   extract($post);
150   if (!isset($needconf)) {
151     $needconf = '';
152   }
153   if(empty($displayname)) {
154     $displayname = "unnamed";
155   }
156   $results = sql("UPDATE disa  set displayname = '".addslashes($displayname)."', pin = '".addslashes($pin)."', cid = '".addslashes($cid)."', context = '".addslashes($context)."', resptimeout = '".addslashes($resptimeout)."', digittimeout = '".addslashes($digittimeout)."', needconf = \"$needconf\" where disa_id = '$id'");
157 }
158 ?>
Note: See TracBrowser for help on using the browser.