root/contributed_modules/modules/bulkextensions/functions.inc.php

Revision 7117, 14.1 kB (checked in by mickecarlsson, 5 years ago)

Fixed the include to be include_once otherwise systems will break

Line 
1 <?php
2 /* functions.inc.php - functions for BulkExtensions module. */
3 include_once("modules/voicemail/functions.inc.php");        // for using voicemail module functions to retrieve voicemail settings
4 include_once("modules/dictate/functions.inc.php");        // for using dictation services functions to retrieve dictation settings
5 include_once("modules/languages/functions.inc.php");        // for using languages functions to retrieve language setting
6 include_once("modules/findmefollow/functions.inc.php");    // for using findmefollow functions to retreive follow me settings
7
8 /* Verify existence of voicemail, dictate, languages and findmefollow functions. */
9 if (function_exists("voicemail_mailbox_get") && function_exists("voicemail_mailbox_add") && function_exists("voicemail_mailbox_del") && function_exists("voicemail_mailbox_remove") && class_exists("vmxObject")) {
10     $vm_exists    = TRUE;
11 } else {
12     $vm_exists    = FALSE;
13 }
14 if (function_exists("dictate_get") && function_exists("dictate_update") && function_exists("dictate_del")) {
15     $dict_exists    = TRUE;
16 } else {
17     $dict_exists    = FALSE;
18 }
19 if (function_exists("languages_user_get") && function_exists("languages_user_update") && function_exists("languages_user_del")) {
20     $lang_exists    = TRUE;
21 } else {
22     $lang_exists    = FALSE;
23 }
24 if (function_exists("findmefollow_get") && function_exists("findmefollow_add") && function_exists("findmefollow_del")) {
25     $findme_exists    = TRUE;
26 } else {
27     $findme_exists    = FALSE;
28 }
29
30 function exportextensions_allusers() {
31     global $db;
32     global $vm_exists;
33     global $dict_exists;
34     global $lang_exists;
35     global $findme_exists;
36     $action        = "edit";
37     $fname        = "bulkext__" .  (string) time() . $_SERVER["SERVER_NAME"] . ".csv";
38     $csv_header     = "action,extension,name,cid_masquerade,sipname,outboundcid,ringtimer,callwaiting,call_screen,password,emergency_cid,tech,hardware,devinfo_channel,devinfo_secret,devinfo_notransfer,devinfo_dtmfmode,devinfo_canreinvite,devinfo_context,devinfo_immediate,devinfo_signalling,devinfo_echocancel,devinfo_echocancelwhenbrdiged,devinfo_echotraining,devinfo_busydetect,devinfo_busycount,devinfo_callprogress,devinfo_host,devinfo_type,devinfo_nat,devinfo_port,devinfo_qualify,devinfo_callgroup,devinfo_pickupgroup,devinfo_disallow,devinfo_allow,devinfo_dial,devinfo_accoountcode,devinfo_mailbox,devicetype,deviceid,deviceuser,description,dictenabled,dictformat,dictemail,langcode,record_in,record_out,vm,vmpwd,email,pager,attach,saycid,envelope,delete,options,vmcontext,vmx_state,vmx_unavail_enabled,vmx_busy_enabled,vmx_play_instructions,vmx_option_0_sytem_default,vmx_option_0_number,vmx_option_1_system_default,vmx_option_1_number,vmx_option_2_number,account,ddial,pre_ring,strategy,grptime,grplist,annmsg_id,ringing,grppre,dring,needsconf,remotealert_id,toolate_id,postdest\n";
39     $data         = $csv_header;
40     $exts         = get_all_exts();
41
42     foreach ($exts as $ext) {
43         $e     = $ext[0];
44         $u_info = core_users_get($e);
45         $d_info = core_devices_get($e);
46         if ($vm_exists) {
47             $v_info    = voicemail_mailbox_get($e);
48         } else {
49             $v_info = NULL;
50         }
51         /* To properly obtain voicemail information, detect enabled/disabled vm value.   */
52         /* Parse extra voicemail options.                         */
53         if ($v_info == NULL) {
54             $v_enabled    = "disabled";
55         } else {
56             $v_enabled     = "enabled";
57             $v_options     = isset($v_info["options"])?$v_info["options"]:"";
58             $vm_other_opts     = "";
59             $i         = 0;
60             $first         = TRUE;
61             $c         = count($v_options);
62             reset($v_options);
63             while ($i < $c) {
64                 if ((key($v_options) != "attach") && (key($v_options) != "saycid") && (key($v_options) != "envelope") && (key($v_options) != "delete")) {
65                     if ($first) {
66                         $vm_other_opts    = key($v_options) . "=" . $v_options[key($v_options)];
67                         $first         = false;
68                     } else {
69                         $vm_other_opts .=  "|" . key($v_options) . "=" . $v_options[key($v_options)];
70                     }
71                 }
72                 $i++;
73                 next($v_options);
74             }
75         }
76         /* Obtain vmx settings. */
77         if ($vm_exists) {
78             $vmxobj        = new vmxObject($e);
79         } else {
80             $vmxobj        = NULL;
81         }
82         
83         if (is_object($vmxobj)) {
84             $vmx_state         = ($vmxobj->isEnabled())?"checked":"";
85             $vmx_unavail_enabled     = ($vmxobj->getState("unavail")=="enabled")?"checked":"";
86             $vmx_busy_enabled     = ($vmxobj->getState("busy")=="enabled")?"checked":"";
87             $vmx_play_instructions     = ($vmxobj->getVmPlay())?"checked":"";
88             $vmx_option_0_number     = $vmxobj->getMenuOpt(0);
89             if ($vmx_option_0_number == "") {
90                 $vmx_option_0_system_default = "checked";
91             } else {
92                 $vmx_option_0_system_default = "";
93             }
94             if (is_object($vmxobj)) {
95                 if ($vmxobj->hasFollowMe() && $vmxobj->isFollowMe()) {
96                     $vmx_option_1_system_default     = "checked";
97                     $vmx_option_1_number         = "";
98                 } else {
99                     $vmx_option_1_system_default     = "";
100                     $vmx_option_1_number         = $vmxobj->getMenuOpt(1);
101                 }
102                 $vmx_option_2_number             = $vmxobj->getMenuOpt(2);
103             }
104         }
105             
106         /* Obtain dictation services settings. */
107         if ($dict_exists) {
108             $dictate_settings = dictate_get($e);
109         }
110
111         /* Obtain language code. */
112         if ($lang_exists) {
113             $langcode = languages_user_get($e);
114         }
115
116         /* Obtain follow me settings. */
117         if ($findme_exists) {
118             $followme_settings = findmefollow_get($u_info["extension"], TRUE);
119         }
120         if (isset($followme_settings)) {
121             $account    = isset($followme_settings["grpnum"])?$followme_settings["grpnum"]:"";
122             $strategy    = isset($followme_settings["strategy"])?$followme_settings["strategy"]:"";
123             $grptime    = isset($followme_settings["grptime"])?$followme_settings["grptime"]:"";
124             $grppre        = isset($followme_settings["grppre"])?$followme_settings["grppre"]:"";
125             $grplist    = isset($followme_settings["grplist"])?$followme_settings["grplist"]:"";
126             $annmsg_id    = isset($followme_settings["annmsg_id"])?$followme_settings["annmsg_id"]:"";
127             $postdest    = isset($followme_settings["postdest"])?$followme_settings["postdest"]:"";
128             $dring         = isset($followme_settings["dring"])?$followme_settings["dring"]:"";
129             $needsconf     = isset($followme_settings["needsconf"])?$followme_settings["needsconf"]:"";
130             $remotealert_id = isset($followme_settings["remotealert_id"])?$followme_settings["remotealert_id"]:"";
131             $toolate_id     = isset($followme_settings["toolate_id"])?$followme_settings["toolate_id"]:"";
132             $ringing     = isset($followme_settings["ringing"])?$followme_settings["ringing"]:"";
133             $pre_ring     = isset($followme_settings["pre_ring"])?$followme_settings["pre_ring"]:"";
134             $ddial         = isset($followme_settings["ddial"])?$followme_settings["ddial"]:"";
135         }
136         $csv_line[0]     = $action;
137         $csv_line[1]     = isset($u_info["extension"])?$u_info["extension"]:"";
138         $csv_line[2]     = isset($u_info["name"])?$u_info["name"]:"";
139         $csv_line[3]     = isset($u_info["cid_masquerade"])?$u_info["cid_masquerade"]:"";
140         $csv_line[4]     = isset($u_info["sipname"])?$u_info["sipname"]:"";
141         $csv_line[5]     = isset($u_info["outboundcid"])?$u_info["outboundcid"]:"";
142         $csv_line[6]     = isset($u_info["ringtimer"])?$u_info["ringtimer"]:"";
143         $csv_line[7]    = isset($u_info["callwaiting"])?$u_info["callwaiting"]:"";
144         $csv_line[8]    = isset($u_info["call_screen"])?$u_info["call_screen"]:"0";
145         $csv_line[9]    = isset($u_info["password"])?$u_info["password"]:"";
146
147         $csv_line[10]    = isset($d_info["emergency_cid"])?$d_info["emergency_cid"]:"";
148         $csv_line[11]    = isset($d_info["tech"])?$d_info["tech"]:"";
149         $csv_line[12]    = "";     // hardware
150         $csv_line[13]    = isset($d_info["channel"])?$d_info["channel"]:"";
151         $csv_line[14]    = isset($d_info["secret"])?$d_info["secret"]:"";
152         $csv_line[15]    = isset($d_info["notransfer"])?$d_info["notransfer"]:"";
153         $csv_line[16]    = isset($d_info["dtmfmode"])?$d_info["dtmfmode"]:"";
154         $csv_line[17]    = isset($d_info["canreinvite"])?$d_info["canreinvite"]:"";
155         $csv_line[18]    = isset($d_info["context"])?$d_info["context"]:"";
156         $csv_line[19]    = isset($d_info["immediate"])?$d_info["immediate"]:"";
157         $csv_line[20]    = isset($d_info["signalling"])?$d_info["signalling"]:"";
158         $csv_line[21]    = isset($d_info["echocancel"])?$d_info["echocancel"]:"";
159         $csv_line[22]    = isset($d_info["echocancelwhenbridged"])?$d_info["echocancelwhenbridged"]:"";
160         $csv_line[23]    = isset($d_info["echotraining"])?$d_info["echotraining"]:"";
161         $csv_line[24]    = isset($d_info["busydetect"])?$d_info["busydetect"]:"";
162         $csv_line[25]    = isset($d_info["busycount"])?$d_info["busycount"]:"";
163         $csv_line[26]    = isset($d_info["callprogress"])?$d_info["callprogress"]:"";
164         $csv_line[27]    = isset($d_info["host"])?$d_info["host"]:"";
165         $csv_line[28]    = isset($d_info["type"])?$d_info["type"]:"";
166         $csv_line[29]    = isset($d_info["nat"])?$d_info["nat"]:"";
167         $csv_line[30]    = isset($d_info["port"])?$d_info["port"]:"";
168         $csv_line[31]    = isset($d_info["qualify"])?$d_info["qualify"]:"";
169         $csv_line[32]    = isset($d_info["callgroup"])?$d_info["callgroup"]:"";
170         $csv_line[33]    = isset($d_info["pickupgroup"])?$d_info["pickupgroup"]:"";
171         $csv_line[34]    = isset($d_info["disallow"])?$d_info["disallow"]:"";
172         $csv_line[35]    = isset($d_info["allow"])?$d_info["allow"]:"";
173         $csv_line[36]    = isset($d_info["dial"])?$d_info["dial"]:"";
174         $csv_line[37]    = isset($d_info["accountcode"])?$d_info["accountcode"]:"";
175         $csv_line[38]    = isset($d_info["mailbox"])?$d_info["mailbox"]:"";
176         $csv_line[39]    = isset($d_info["devicetype"])?$d_info["devicetype"]:"fixed";
177         $csv_line[40]    = (isset($d_info["deviceid"]) || ($d_info["deviceid"]==""))?$d_info["deviceid"]:(isset($u_info["extension"])?$u_info["extension"]:"");
178         $csv_line[41]    = (isset($d_info["deviceuser"]) && ($d_info["deviceuser"] != ""))?$d_info["deviceuser"]:(isset($u_info["extension"])?$u_info["extension"]:"none");
179         $csv_line[42]    = isset($d_info["description"])?$d_info["description"]:(isset($u_info["name"])?$u_info["name"]:"");
180
181         $csv_line[43]    = isset($dictate_settings["enabled"])?$dictate_settings["enabled"]:"disabled";    // dictenabled
182         $csv_line[44]    = isset($dictate_settings["format"])?$dictate_settings["format"]:"ogg";        // dictformat (ogg is default)
183         $csv_line[45]    = isset($dictate_settings["email"])?$dictate_settings["email"]:"";         // dictemail
184
185         $csv_line[46]    = isset($langcode)?$langcode:"";
186
187         $csv_line[47]    = isset($d_info["record_in"])?$d_info["record_in"]:"";
188         $csv_line[48]    = isset($d_info["record_out"])?$d_info["record_out"]:"";
189
190         $csv_line[49]    = $v_enabled; // vm
191         $csv_line[50]    = isset($v_info["pwd"])?$v_info["pwd"]:"";
192         $csv_line[51]    = isset($v_info["email"])?$v_info["email"]:"";
193         $csv_line[52]    = isset($v_info["pager"])?$v_info["pager"]:"";
194         $csv_line[53]    = isset($v_info["options"]["attach"])?("attach=" . $v_info["options"]["attach"]):"attach=no";
195         $csv_line[54]    = isset($v_info["options"]["saycid"])?("saycid=" . $v_info["options"]["saycid"]):"saycid=no";
196         $csv_line[55]    = isset($v_info["options"]["envelope"])?("envelope=" . $v_info["options"]["envelope"]):"envelope=no";
197         $csv_line[56]    = isset($v_info["options"]["delete"])?("delete=". $v_info["options"]["delete"]):"delete=no";
198         $csv_line[57]    = isset($vm_other_opts)?$vm_other_opts:""; // additional options
199         $csv_line[58]    = isset($v_info["vmcontext"])?$v_info["vmcontext"]:"";
200         $csv_line[59]    = isset($vmx_state)?$vmx_state:"";
201         $csv_line[60]    = isset($vmx_unavail_enabled)?$vmx_unavail_enabled:"";
202         $csv_line[61]    = isset($vmx_busy_enabled)?$vmx_busy_enabled:"";
203         $csv_line[62]    = isset($vmx_play_instructions)?$vmx_play_instructions:"";
204         $csv_line[63]    = isset($vmx_option_0_system_default)?$vmx_option_0_system_default:"";
205         $csv_line[64]    = isset($vmx_option_0_number)?$vmx_option_0_number:"";
206         $csv_line[65]    = isset($vmx_option_1_system_default)?$vmx_option_1_system_default:"";
207         $csv_line[66]    = isset($vmx_option_1_number)?$vmx_option_1_number:"";
208         $csv_line[67]    = isset($vmx_option_2_number)?$vmx_option_2_number:"";
209         $csv_line[68]    = isset($account)?$account:"";
210         $csv_line[69]    = isset($ddial)?$ddial:"";
211         $csv_line[70]    = isset($pre_ring)?$pre_ring:"";
212         $csv_line[71]    = isset($strategy)?$strategy:"";
213         $csv_line[72]    = isset($grptime)?$grptime:"";
214         $csv_line[73]    = isset($grplist)?$grplist:"";
215         $csv_line[74]    = isset($annmsg_id)?$annmsg_id:"";
216         $csv_line[75]    = isset($ringing)?$ringing:"";
217         $csv_line[76]    = isset($grppre)?$grppre:"";
218         $csv_line[77]    = isset($dring)?$dring:"";
219         $csv_line[78]    = isset($needsconf)?$needsconf:"";
220         $csv_line[79]    = isset($remotealert_id)?$remotealert_id:"";
221         $csv_line[80]    = isset($toolate_id)?$toolate_id:"";
222         $csv_line[81]    = isset($postdest)?$postdest:"";
223         for ($i = 0; $i < count($csv_line); $i++) {
224             /* If the string contains a comma, enclose it in double-quotes. */
225             if (strpos($csv_line[$i], ",") !== FALSE) {
226                 $csv_line[$i] = "\"" . $csv_line[$i] . "\"";
227             }
228             if ($i != count($csv_line) - 1) {
229                 $data = $data . $csv_line[$i] . ",";
230             } else {
231                 $data = $data . $csv_line[$i];
232             }
233         }
234         $data = $data . "\n";
235         unset($csv_line);
236     }
237     force_download($data, $fname);
238     return;
239 }
240
241 function get_all_exts() {
242     $sql     = "SELECT extension FROM users ORDER BY extension";
243     $extens = sql($sql,"getAll");
244     if (isset($extens)) {
245         return $extens;
246     } else {
247         return null;
248     }
249 }
250
251 function force_download ($data, $name, $mimetype="", $filesize=false) {
252     // File size not set?
253     if ($filesize == false OR !is_numeric($filesize)) {
254         $filesize = strlen($data);
255     }
256     // Mimetype not set?
257     if (empty($mimetype)) {
258         $mimetype = "application/octet-stream";
259     }
260     // Make sure there's not anything else left
261     ob_clean_all();
262     // Start sending headers
263     header("Pragma: public"); // required
264     header("Expires: 0");
265     header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
266     header("Cache-Control: private",false); // required for certain browsers
267     header("Content-Transfer-Encoding: binary");
268     header("Content-Type: " . $mimetype);
269     header("Content-Length: " . $filesize);
270     header("Content-Disposition: attachment; filename=\"" . $name . "\";" );
271     // Send data
272     echo $data;
273     die();
274 }
275
276 function ob_clean_all () {
277     $ob_active = ob_get_length () !== false;
278     while($ob_active) {
279         ob_end_clean();
280         $ob_active = ob_get_length () !== false;
281     }
282     return true;
283 }
284
285 function generate_table_rows() {
286     $fh = fopen("modules/bulkextensions/table.csv", "r");
287     if ($fh == NULL) {
288         return NULL;
289     }
290     $k = 0;
291     while (($csv_data = fgetcsv($fh, 1000, ",", "\"")) !== FALSE) {
292         $k++;
293         /* Name,Default,Allowed,On Extensions page,Details */
294         for ($i = 0; $i < 5; $i++) {
295             if (isset($csv_data[$i])) {
296                 $table[$k][$i] .= $csv_data[$i];
297             } else {
298                 $table[$k][$i] = "";
299             }
300         }
301     }
302     fclose($fh);
303     return $table;
304 }
305 ?>
306
Note: See TracBrowser for help on using the browser.