import torrus 1.0.9
[freeside.git] / fs_selfservice / fri / modules / VmX.module
1 <?php
2
3 /**
4  * @file
5  * Functions for the interface to the call monitor recordings
6  */
7
8 /**
9   * Class for Followme
10   */
11 class VmX {
12
13   var $protocol_table;
14   var $protocol_config_files;
15
16   /*
17    * rank (for prioritizing modules)
18    */
19   function rank() {
20
21         $rank = 6;
22         return $rank;
23   }
24
25   /*
26    * init
27    */
28   function init() {
29
30   }
31
32   /*
33    * Adds menu item to nav menu
34    *
35    * @param $args
36    *   Common arguments
37    */
38         function navMenu($args) {
39                 
40                 global $SETTINGS_ALLOW_VMX_SETTINGS;
41                 global $ARI_ADMIN_USERNAME;
42                 
43                 $ret = "";
44
45                 // We are only going to show the menu 
46                 // if VmX is allowed
47                 if ($SETTINGS_ALLOW_VMX_SETTINGS) {
48
49                         $exten = $_SESSION['ari_user']['extension'];
50                         
51                         // and we are not logged in as admin
52                         if ($exten!=$ARI_ADMIN_USERNAME) {
53                         
54                                 $vmx_enabled    = $this->getVmxState($exten,'unavail');
55                                 
56                                 // and vmx is enabled for this user
57                                 if ($vmx_enabled !== false)
58                                         $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] .  "?m=VmX&f=display'>" . _("VmX&#8482 Locator") . "</a></small></small></p>";
59                         }
60                 }
61                 
62                 return $ret;
63         }
64
65   /*
66    * Acts on the user settings
67    *
68    * @param $args
69    *   Common arguments
70    * @param $a
71    *   action
72    */
73   function action($args) {
74
75         global $STANDALONE;
76         global $ARI_ADMIN_USERNAME;
77         global $SETTINGS_ALLOW_VMX_SETTINGS;
78
79         // args
80         $m = getArgument($args,'m');
81         $a = getArgument($args,'a');
82
83         $follow_me_disabled                             = getArgument($args,'follow_me_disabled');
84
85         $vmx_option_0_number                    = getArgument($args, 'vmx_option_0_number');
86         $vmx_option_0_system_default    = getArgument($args, 'vmx_option_0_system_default');
87         $vmx_option_1_number                    = getArgument($args, 'vmx_option_1_number');
88         $vmx_option_1_system_default    = getArgument($args, 'vmx_option_1_system_default');
89         $vmx_option_2_number                    = getArgument($args, 'vmx_option_2_number');
90         $vmx_unavail_enabled                    = getArgument($args, 'vmx_unavail_enabled');
91         $vmx_busy_enabled                               = getArgument($args, 'vmx_busy_enabled');
92         $vmx_play_instructions                  = getArgument($args, 'vmx_play_instructions');
93         $vmx_disabled                                   = getArgument($args, 'vmx_disabled');
94
95         $exten = $_SESSION['ari_user']['extension'];
96
97         // The action is 'update
98         if ($a=='update') {
99         
100                         $follow_me_disabled = ($this->getFollowMeListRingTime($exten) > 0)?0:1;
101                         
102                 
103                         $vmx_disabled = $this->getVmxState($exten,'unavail');
104                         if ($vmx_disabled === false) {
105                                 $vmx_disabled = true;
106                                 $SETTINGS_ALLOW_VMX_SETTINGS=false;
107                         } else {
108                                 $vmx_disabled = false;
109                         }
110                         if ($vmx_disabled) {
111                         
112                                 setcookie("ari_vmx_disabled", $vmx_disabled, time()+365*24*60*60);
113                                 $vmx_disabled_delayed = $vmx_disabled;
114                                 $_SESSION['ari_error'] = 
115                                 _("Your Premium VmX Locator service has been disabled, REFRESH your browser to remove this message") . "<br>" .
116                                 sprintf(_("Check with your Telephone System Administrator if you think there is a problem"));
117                         }
118                 
119                 if (! $vmx_disabled) {
120                 
121                         // set database
122                         $this->setVmxState($exten,'unavail',$vmx_unavail_enabled);
123                         $this->setVmxState($exten,'busy',$vmx_busy_enabled);
124                         $this->setVmxPlayInstructions($exten,'unavail',$vmx_play_instructions);
125                         $this->setVmxPlayInstructions($exten,'busy',$vmx_play_instructions);
126                         
127                         // store cookie
128                         setcookie("ari_vmx_unavail_enabled", $vmx_unavail_enabled, time()+365*24*60*60);
129                         setcookie("ari_vmx_busy_enabled", $vmx_busy_enabled, time()+365*24*60*60);
130                         setcookie("ari_vmx_play_instructions", $vmx_play_instructions, time()+365*24*60*60);
131                         
132                         $stripped_vmx_option_0_number = preg_replace('/-|\(|\)|\s/','',$vmx_option_0_number);
133                         
134                         if ($vmx_option_0_system_default) {
135                                 $this->setVmxOptionNumber($exten,'0','unavail',"");
136                                 $this->setVmxOptionNumber($exten,'0','busy',"");
137                                 setcookie("ari_vmx_option_0_system_default", $vmx_option_0_system_default, time()+365*24*60*60);
138                                 if (is_numeric($stripped_vmx_option_0_number) || !$stripped_vmx_option_0_number) {
139                                         $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_vmx_option_0_number']);
140                                         if ($vmx_option_0_number && $stripped!=$stripped_vmx_option_0_number) {
141                                                 setcookie("ari_vmx_option_0_number", $call_vmx_option_0_number, time()+365*24*60*60);
142                                         }
143                                 }
144                         } else {
145                                 if (!is_numeric($stripped_vmx_option_0_number) && $stripped_vmx_option_0_number) {
146                                         $_SESSION['ari_error'] = 
147                                         _("Option 0 not changed") . "<br>" .
148                                         sprintf(_("Number %s must contain dial numbers (characters like '(', '-', and ')' are ok)"),$vmx_option_0_number);
149                                 }
150                                 else {
151                                         
152                                         // set database
153                                         $this->setVmxOptionNumber($exten,'0','unavail',$stripped_vmx_option_0_number);
154                                         $this->setVmxOptionNumber($exten,'0','busy',$stripped_vmx_option_0_number);
155                                         
156                                         // store cookie
157                                         $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_vmx_option_0_number']);
158                                         if ($vmx_option_0_number && $stripped!=$stripped_vmx_option_0_number) {
159                                                 setcookie("ari_vmx_option_0_number", $call_vmx_option_0_number, time()+365*24*60*60);
160                                         }
161                                 }
162                         }
163                         
164                         $stripped_vmx_option_1_number = preg_replace('/-|\(|\)|\s/','',$vmx_option_1_number);
165                         if ($vmx_option_1_system_default && !$follow_me_disabled) {
166                                 $this->setVmxOptionFollowMe($exten,'1','unavail');
167                                 $this->setVmxOptionFollowMe($exten,'1','busy');
168                                 setcookie("ari_vmx_option_1_system_default", $vmx_option_1_system_default, time()+365*24*60*60);
169                                 if (is_numeric($stripped_vmx_option_1_number) || !$stripped_vmx_option_1_number) {
170                                         $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_vmx_option_1_number']);
171                                         if ($vmx_option_1_number && $stripped!=$stripped_vmx_option_1_number) {
172                                                 setcookie("ari_vmx_option_1_number", $call_vmx_option_1_number, time()+365*24*60*60);
173                                         }
174                                 }
175                         }
176                         else {
177                         
178                                 if (!is_numeric($stripped_vmx_option_1_number) && $stripped_vmx_option_1_number) {
179                                         $_SESSION['ari_error'] = 
180                                         _("Option 1 not changed") . "<br>" .
181                                         sprintf(_("Number %s must contain dial numbers (characters like '(', '-', and ')' are ok)"),$vmx_option_1_number);
182                                 }
183                                 else {
184                                         
185                                         // set database
186                                         $this->setVmxOptionNumber($exten,'1','unavail',$stripped_vmx_option_1_number);
187                                         $this->setVmxOptionNumber($exten,'1','busy',$stripped_vmx_option_1_number);
188                                         
189                                         // store cookie
190                                         $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_vmx_option_1_number']);
191                                         if ($vmx_option_1_number && $stripped!=$stripped_vmx_option_1_number) {
192                                                 setcookie("ari_vmx_option_1_number", $call_vmx_option_1_number, time()+365*24*60*60);
193                                         }
194                                 }
195                         }
196                         
197                         $stripped_vmx_option_2_number = preg_replace('/-|\(|\)|\s/','',$vmx_option_2_number);
198                         if (!is_numeric($stripped_vmx_option_2_number) && $stripped_vmx_option_2_number) {
199                                 $_SESSION['ari_error'] = 
200                                 _("Option 2 not changed") . "<br>" .
201                                 sprintf(_("Number %s must contain dial numbers (characters like '(', '-', and ')' are ok)"),$vmx_option_2_number);
202                         }
203                         else {
204                                 
205                                 // set database
206                                 $this->setVmxOptionNumber($exten,'2','unavail',$stripped_vmx_option_2_number);
207                                 $this->setVmxOptionNumber($exten,'2','busy',$stripped_vmx_option_2_number);
208                                 
209                                 // store cookie
210                                 $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_vmx_option_2_number']);
211                                 if ($vmx_option_2_number && $stripped!=$stripped_vmx_option_2_number) {
212                                         setcookie("ari_vmx_option_2_number", $call_vmx_option_2_number, time()+365*24*60*60);
213                                 }
214                         }
215                 } // vmx_disabled false
216         }
217
218         // redirect to see updated page
219         $ret .= "
220           <head>
221                 <script>
222                 <!--
223                   window.location = \"" . $_SESSION['ARI_ROOT'] . "?m=" . $m . "\"
224                 // -->
225                 </script>
226         </head>";
227   
228         return $ret;
229   }
230
231   /*
232    * Displays stats page
233    *
234    * @param $args
235    *   Common arguments
236    */
237   function display($args) {
238         global $SETTINGS_ALLOW_VMX_SETTINGS;
239
240         global $loaded_modules;
241
242         // args
243         $m              = getArgument($args,'m');
244         $q              = getArgument($args,'q');
245         $start  = getArgument($args,'start');
246         $span   = getArgument($args,'span');
247
248         $displayname    = $_SESSION['ari_user']['displayname'];
249         $exten                  = $_SESSION['ari_user']['extension'];
250
251         $display = new DisplaySearch();
252
253         $follow_me_listring_time = $this->getFollowMeListRingTime($exten);
254
255         //TODO: Set this better than this?
256         $follow_me_disabled = ($follow_me_listring_time > 0)?0:1;
257         setcookie("ari_follow_me_disabled", $follow_me_disabled, time()+365*24*60*60);
258
259
260         $vmx_unavail_enabled=$this->getVmxState($exten,'unavail');
261         if ($vmx_unavail_enabled === false) {
262                 $vmx_disabled = true;
263                 setcookie("ari_vmx_disabled", $vmx_disabled, time()+365*24*60*60);
264                 $SETTINGS_ALLOW_VMX_SETTINGS=false;
265         } else {
266                 $vmx_disabled = false;
267                 setcookie("ari_vmx_disabled", false, time()+365*24*60*60);
268                 $vmx_busy_enabled=$this->getVmxState($exten,'busy');
269                 $vmx_play_instructions=$this->getVmxPlayInstructions($exten);
270                 $vmx_option_0_number=$this->getVmxOptionNumber($exten,'0');;
271                 $vmx_option_1_number=$this->getVmxOptionNumber($exten,'1');;
272                 $vmx_option_2_number=$this->getVmxOptionNumber($exten,'2');;
273                 
274                 if (is_numeric($vmx_option_0_number)) {
275                         $vmx_option_0_system_default='';
276                         $vmx_option_0_number_text_box_options='';
277                 } else {
278                         $vmx_option_0_system_default='checked';
279                         $vmx_option_0_number_text_box_options="disabled style='background: #DDD;'";
280                 }
281                 
282                 // if follow-me is enabled then the options are a numberic value (dial a phone number)
283                 // or a followme target (FMnnn) which should not be displayed but means the box is checked
284                 // or otherwise blank (or garbage in which case blank it)
285                 //
286                 if (!$follow_me_disabled) {
287                         $vmx_option_1_system_default=$this->getVmxOptionFollowMe($exten,'1');
288                         if ($vmx_option_1_system_default) {
289                                 $vmx_option_1_number = '';
290                                 $vmx_option_1_number_text_box_options="disabled style='background: #DDD;'";
291                         }
292                 }
293         }
294                 
295         $set_vmx_text .= 
296                 "
297                 <br>
298                 <table class='settings'>
299                         <tr>
300                                 <td><a href='#' class='info'>" . _("Use When:") . "<span>" . _("Menu options below are available during your personal voicemail greeting playback. <br/><br/>Check both to use at all times.") . "<br></span></a></td> <td>
301                                         <input " . $vmx_unavail_enabled . " type=checkbox name='vmx_unavail_enabled' value='checked'>
302                                         <small>" . _("unavailable") . "</small>
303                                 </td>
304                                 <td>
305                                         <input " . $vmx_busy_enabled . " type=checkbox name='vmx_busy_enabled' value='checked'>
306                                         <small>" . _("busy") . "</small>
307                                 </td>
308                         </tr>
309                         <tr>
310                                 <td><a href='#' class='info'>" . _("Voicemail Instructions:") ."<span>" . _("Uncheck to play a beep after your personal voicemail greeting.") . "<br></span></a></td>
311                                 <td>
312                                         <input " . $vmx_play_instructions . " type=checkbox name='vmx_play_instructions' value='checked'>
313                                         <small>" . _("Standard voicemail prompts.") . "</small>
314                                 </td>
315                         </tr>
316                 </table>
317                 <br>
318                 <br>
319                 <table class='settings'>
320                         <tr>
321                                 <td><a href='#' class='info'>" . _("Press 0:") . "<span>" . _("Pressing 0 during your personal voicemail greeing goes to the Operator. 
322                                         Uncheck to enter another destination here.") . "<br></span></a>
323                                 </td>
324                                 <td>
325                                         <input " . $vmx_option_0_number_text_box_options . " name='vmx_option_0_number' type='text' size=24 value='" . $vmx_option_0_number . "'>
326                                 </td>
327                                 <td>
328                                         <input " . $vmx_option_0_system_default . " type=checkbox name='vmx_option_0_system_default' value='checked' OnClick=\"disable_fields(); return true;\">
329                                         <small>" . _("Go To Operator") . "</small>
330                                 </td>
331                         </tr>
332                         <tr>
333                                 <td><a href='#' class='info'>" . _("Press 1:") . "<span>";
334                         
335         if ($follow_me_disabled)
336                 $set_vmx_text .= _("The remaining options can have internal extensions, ringgroups, queues and external numbers that may be rung. It is often used to include your cell phone. You should run a test to make sure that the number is functional any time a change is made so you don't leave a caller stranded or receiving invalid number messages.");
337         else
338                 $set_vmx_text .= _("Enter an alternate number here, then change your personal voicemail greeting to let callers know to press 1 to reach that number. <br/><br/>If you'd like to use your Follow Me List, check \"Send to Follow Me\" and disable Follow Me above.");
339         
340         
341         $set_vmx_text .=  
342                 "                       <br></span></a>
343                                 </td>
344                                 <td>
345                                         <input " . $vmx_option_1_number_text_box_options . " name='vmx_option_1_number' type='text' size=24 value='" . $vmx_option_1_number . "'>
346                                 </td>
347                                 <td>";
348                                 
349                                 
350         if (!$follow_me_disabled)
351                 $set_vmx_text .=  "<input " . $vmx_option_1_system_default . " type=checkbox name='vmx_option_1_system_default' value='checked' OnClick=\"disable_fields(); return true;\"><small>" . _("Send to Follow-Me") . "</small>";
352                                         
353                                         
354         $set_vmx_text .=  
355                                 "       
356                                 </td>
357                         </tr>
358                         <tr>
359                                 <td><a href='#' class='info'>" . _("Press 2:") . "<span>" . _("Use any extensions, ringgroups, queues or external numbers. <br/><br/>Remember to re-record your personal voicemail greeting and include instructions. Run a test to make sure that the number is functional.") . "<br></span></a></td>
360                                 <td>
361                                         <input " . $vmx_option_2_number_text_box_options . " name='vmx_option_2_number' type='text' size=24 value='" . $vmx_option_2_number . "'>
362                                 </td>
363                         </tr>
364                 </table>
365                 <br>
366                 <br>            
367                 ";
368
369
370         // Now we should be ready to build the page
371         $ret .= checkErrorMessage();
372
373         $headerText = sprintf(_("VmX Locator&#8482; Settings for %s (%s)"),$displayname,$exten);
374
375         $ret .= $display->displayHeaderText($headerText);
376         $ret .= $display->displayLine();
377
378         $ret .= 
379                 "<SCRIPT LANGUAGE='JavaScript'>
380                         <!-- Begin
381                                 function disable_fields() {
382                                 
383                                         if (document.ari_settings.vmx_option_0_system_default.checked) {
384                                                 document.ari_settings.vmx_option_0_number.style.backgroundColor = '#DDD';
385                                                 document.ari_settings.vmx_option_0_number.disabled = true;
386                                         } 
387                                         else {
388                                                 document.ari_settings.vmx_option_0_number.style.backgroundColor = '#FFF';
389                                                 document.ari_settings.vmx_option_0_number.disabled = false;
390                                         }";
391                                         
392                                         if (!$follow_me_disabled) {
393                                                 $ret .= "
394                                                         if (document.ari_settings.vmx_option_1_system_default.checked) {
395                                                                 document.ari_settings.vmx_option_1_number.style.backgroundColor = '#DDD';
396                                                                 document.ari_settings.vmx_option_1_number.disabled = true;
397                                                         } 
398                                                         else {
399                                                                 document.ari_settings.vmx_option_1_number.style.backgroundColor = '#FFF';
400                                                                 document.ari_settings.vmx_option_1_number.disabled = false;
401                                                         }";
402                                         }
403                                         $ret .=  
404                                 "}
405                         // End -->
406                 </script>";
407
408         $ret .= 
409                 "<form class='settings' name='ari_settings' action='' method='GET'>
410                         <input type=hidden name=m value=" . $m . ">
411                         <input type=hidden name=f value='action'>
412                         <input type=hidden name=a value='update'>
413                         " . $set_vmx_text . "
414                         <br>
415                         <input name='submit' type='submit' value='" . _("Update") . "'>
416                 </form>";
417
418         return $ret;
419   }
420
421   /*
422    * Gets VMX option FollowMe
423    *
424    * @param $exten
425    *   Extension to get information about
426    * @param $digit
427    *   Option number to get
428    * @param $mode
429          *      Mode to get (unavail/busy)
430    * @return $response
431    *   checked if set to got to extesion's follow-me on this option
432    */
433   function getVmxOptionFollowMe($exten, $digit, $mode='unavail') {
434
435         global $asterisk_manager_interface;
436
437                 $digit = trim($digit);
438
439         $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/vmx/$mode/$digit/ext\r\n\r\n");
440         return (($response == 'FM'.$exten) ? 'checked':'');
441   }
442
443   /*
444    * Sets VMX option FollowMe
445    *
446    * @param $exten
447    *   Extension to set information about
448    * @param $digit
449    *   Option number to set
450    * @param $mode
451          *      Mode to set (unavail/busy)
452    * @param $context
453          *      Context to set ext to (default from-findmefollow)
454    * @param $priority
455          *      Priority to set ext to (default 1)
456    */
457   function setVmxOptionFollowMe($exten, $digit, $mode, $context='ext-findmefollow', $priority='1') {
458
459         global $asterisk_manager_interface;
460
461         $value_opt = "FM$exten";
462
463         $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/ext $value_opt\r\n\r\n");
464         $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/context $context\r\n\r\n");
465         $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/pri $priority\r\n\r\n");
466   }
467
468   /*
469    * Gets VMX option number
470    *
471    * @param $exten
472    *   Extension to get information about
473    * @param $digit
474    *   Option number to get
475    * @param $mode
476          *      Mode to get (unavail/busy)
477    * @return $number
478    *   Number to use or blank if disabled
479    */
480   function getVmxOptionNumber($exten, $digit, $mode='unavail') {
481
482         global $asterisk_manager_interface;
483
484         $number = '';
485                 $digit = trim($digit);
486
487         $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/vmx/$mode/$digit/ext\r\n\r\n");
488         if (is_numeric($response)) {
489           $number = $response;
490         }
491
492         $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE["ari_vmx_option_${digit}_number"]);
493         if ($stripped==$number) {
494           $number = $_COOKIE["ari_vmx_option_${digit}_number"];
495         }
496
497         return $number;
498   }
499
500   /*
501    * Sets VMX option number
502    *
503    * @param $exten
504    *   Extension to set information about
505    * @param $digit
506    *   Option number to set
507    * @param $mode
508          *      Mode to set (unavail/busy)
509    * @param $number
510          *      Number to set ext to (blank will delete it)
511    * @param $context
512          *      Context to set ext to (default from-internal)
513    * @param $priority
514          *      Priority to set ext to (default 1)
515    */
516   function setVmxOptionNumber($exten, $digit, $mode, $number, $context='from-internal', $priority='1') {
517
518         global $asterisk_manager_interface;
519
520         $value_opt = trim($number);
521
522                 if (is_numeric($value_opt)) {
523                 $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/ext $value_opt\r\n\r\n");
524                 $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/context $context\r\n\r\n");
525                 $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/pri $priority\r\n\r\n");
526                 } else {
527                 $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database deltree AMPUSER $exten/vmx/$mode/$digit\r\n\r\n");
528                 }
529   }
530
531   /*
532    * Sets VMX State
533    *
534    * @param $exten
535    *   Extension to modify
536    * @param $mode
537          *      Mode to set (unavail/busy)
538    * @param $vmx_state
539    *   enabled/disabled state based on check box value
540    */
541   function setVmxState($exten,$mode,$vmx_state) {
542
543         global $asterisk_manager_interface;
544
545         $value_opt = ($vmx_state)?'enabled':'disabled';
546
547         $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/state $value_opt\r\n\r\n");
548   }
549
550   /*
551    * Gets VMX State
552    *
553    * @param $exten
554    *   Extension to get information about
555    * @param $mode
556          *      Mode to get (unavail/busy)
557    * @return $data
558    *   state of variable (checked/blank) or false if no poper value
559    */
560   function getVmxState($exten, $mode='unavail') {
561
562         global $asterisk_manager_interface;
563
564         $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/vmx/$mode/state\r\n\r\n");
565
566         if (preg_match("/enabled/",$response)) {
567                         $response='checked';
568         } 
569         elseif (preg_match("/disabled/",$response)) {
570                         $response='';
571         }
572                 else {
573                         $response = false;
574                 }
575
576         //TODO: really need to check for a bogus response, see how other side does it
577         //
578         return $response;
579
580   }
581
582   /*
583    * Sets VMX Play Instructions
584    *
585    * @param $exten
586    *   Extension to modify
587    * @param $vmx_play_instructions
588    *   play instructions or just beep (checked, blank)
589    * @param $mode
590          *      Mode to set (unavail/busy)
591    */
592   function setVmxPlayInstructions($exten,$mode,$vmx_play_instructions) {
593
594         global $asterisk_manager_interface;
595
596         $value_opt = ($vmx_play_instructions)?'""':'s';
597
598         $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/vmxopts/timeout $value_opt\r\n\r\n");
599   }
600
601   /*
602    * Get VMX Play Instructions
603    *
604    * @param $exten
605    *   Extension to get information about
606    * @param $mode
607          *      Mode to get (unavail/busy)
608    * @return $data
609    *   state of variable (checked/blank) or false if no poper value
610    */
611   function getVmxPlayInstructions($exten, $mode='unavail') {
612
613         global $asterisk_manager_interface;
614
615         $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/vmx/$mode/vmxopts/timeout\r\n\r\n");
616
617         if (preg_match("/s/",$response)) {
618                         $response='';
619         } 
620                 else {
621                         $response='checked';
622                 }
623
624         //TODO: really need to check for a bogus response, see how other side does it
625         //
626         return $response;
627
628   }
629
630
631   /*
632    * Gets Follow Me List-Ring Time if set
633    *
634    * @param $exten
635    *   Extension to get information about
636    * @return $number
637    *   follow me list-ring time returned if set
638    */
639   function getFollowMeListRingTime($exten) {
640
641         global $asterisk_manager_interface;
642
643         $number = '';
644
645         $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/followme/grptime\r\n\r\n");
646         if (is_numeric($response)) {
647           $number = $response;
648         }
649
650         $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_follow_me_listring_time']);
651         if ($stripped==$number) {
652           $number = $_COOKIE['ari_follow_me_listring_time'];
653         }
654
655         return $number;
656   }
657
658
659 } // class
660
661 ?>