summaryrefslogtreecommitdiff
path: root/fs_selfservice/fri/modules
diff options
context:
space:
mode:
Diffstat (limited to 'fs_selfservice/fri/modules')
-rw-r--r--fs_selfservice/fri/modules/VmX.module661
-rw-r--r--fs_selfservice/fri/modules/billing.module250
-rw-r--r--fs_selfservice/fri/modules/callmonitor.module675
-rw-r--r--fs_selfservice/fri/modules/dashboard.module166
-rw-r--r--fs_selfservice/fri/modules/featurecodes.module152
-rw-r--r--fs_selfservice/fri/modules/followme.module678
-rw-r--r--fs_selfservice/fri/modules/myaccount.module109
-rw-r--r--fs_selfservice/fri/modules/phonefeatures.module342
-rw-r--r--fs_selfservice/fri/modules/settings.module813
-rw-r--r--fs_selfservice/fri/modules/voicemail.module805
10 files changed, 0 insertions, 4651 deletions
diff --git a/fs_selfservice/fri/modules/VmX.module b/fs_selfservice/fri/modules/VmX.module
deleted file mode 100644
index 61ef653a2..000000000
--- a/fs_selfservice/fri/modules/VmX.module
+++ /dev/null
@@ -1,661 +0,0 @@
-<?php
-
-/**
- * @file
- * Functions for the interface to the call monitor recordings
- */
-
-/**
- * Class for Followme
- */
-class VmX {
-
- var $protocol_table;
- var $protocol_config_files;
-
- /*
- * rank (for prioritizing modules)
- */
- function rank() {
-
- $rank = 6;
- return $rank;
- }
-
- /*
- * init
- */
- function init() {
-
- }
-
- /*
- * Adds menu item to nav menu
- *
- * @param $args
- * Common arguments
- */
- function navMenu($args) {
-
- global $SETTINGS_ALLOW_VMX_SETTINGS;
- global $ARI_ADMIN_USERNAME;
-
- $ret = "";
-
- // We are only going to show the menu
- // if VmX is allowed
- if ($SETTINGS_ALLOW_VMX_SETTINGS) {
-
- $exten = $_SESSION['ari_user']['extension'];
-
- // and we are not logged in as admin
- if ($exten!=$ARI_ADMIN_USERNAME) {
-
- $vmx_enabled = $this->getVmxState($exten,'unavail');
-
- // and vmx is enabled for this user
- if ($vmx_enabled !== false)
- $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=VmX&f=display'>" . _("VmX&#8482 Locator") . "</a></small></small></p>";
- }
- }
-
- return $ret;
- }
-
- /*
- * Acts on the user settings
- *
- * @param $args
- * Common arguments
- * @param $a
- * action
- */
- function action($args) {
-
- global $STANDALONE;
- global $ARI_ADMIN_USERNAME;
- global $SETTINGS_ALLOW_VMX_SETTINGS;
-
- // args
- $m = getArgument($args,'m');
- $a = getArgument($args,'a');
-
- $follow_me_disabled = getArgument($args,'follow_me_disabled');
-
- $vmx_option_0_number = getArgument($args, 'vmx_option_0_number');
- $vmx_option_0_system_default = getArgument($args, 'vmx_option_0_system_default');
- $vmx_option_1_number = getArgument($args, 'vmx_option_1_number');
- $vmx_option_1_system_default = getArgument($args, 'vmx_option_1_system_default');
- $vmx_option_2_number = getArgument($args, 'vmx_option_2_number');
- $vmx_unavail_enabled = getArgument($args, 'vmx_unavail_enabled');
- $vmx_busy_enabled = getArgument($args, 'vmx_busy_enabled');
- $vmx_play_instructions = getArgument($args, 'vmx_play_instructions');
- $vmx_disabled = getArgument($args, 'vmx_disabled');
-
- $exten = $_SESSION['ari_user']['extension'];
-
- // The action is 'update
- if ($a=='update') {
-
- $follow_me_disabled = ($this->getFollowMeListRingTime($exten) > 0)?0:1;
-
-
- $vmx_disabled = $this->getVmxState($exten,'unavail');
- if ($vmx_disabled === false) {
- $vmx_disabled = true;
- $SETTINGS_ALLOW_VMX_SETTINGS=false;
- } else {
- $vmx_disabled = false;
- }
- if ($vmx_disabled) {
-
- setcookie("ari_vmx_disabled", $vmx_disabled, time()+365*24*60*60);
- $vmx_disabled_delayed = $vmx_disabled;
- $_SESSION['ari_error'] =
- _("Your Premium VmX Locator service has been disabled, REFRESH your browser to remove this message") . "<br>" .
- sprintf(_("Check with your Telephone System Administrator if you think there is a problem"));
- }
-
- if (! $vmx_disabled) {
-
- // set database
- $this->setVmxState($exten,'unavail',$vmx_unavail_enabled);
- $this->setVmxState($exten,'busy',$vmx_busy_enabled);
- $this->setVmxPlayInstructions($exten,'unavail',$vmx_play_instructions);
- $this->setVmxPlayInstructions($exten,'busy',$vmx_play_instructions);
-
- // store cookie
- setcookie("ari_vmx_unavail_enabled", $vmx_unavail_enabled, time()+365*24*60*60);
- setcookie("ari_vmx_busy_enabled", $vmx_busy_enabled, time()+365*24*60*60);
- setcookie("ari_vmx_play_instructions", $vmx_play_instructions, time()+365*24*60*60);
-
- $stripped_vmx_option_0_number = preg_replace('/-|\(|\)|\s/','',$vmx_option_0_number);
-
- if ($vmx_option_0_system_default) {
- $this->setVmxOptionNumber($exten,'0','unavail',"");
- $this->setVmxOptionNumber($exten,'0','busy',"");
- setcookie("ari_vmx_option_0_system_default", $vmx_option_0_system_default, time()+365*24*60*60);
- if (is_numeric($stripped_vmx_option_0_number) || !$stripped_vmx_option_0_number) {
- $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_vmx_option_0_number']);
- if ($vmx_option_0_number && $stripped!=$stripped_vmx_option_0_number) {
- setcookie("ari_vmx_option_0_number", $call_vmx_option_0_number, time()+365*24*60*60);
- }
- }
- } else {
- if (!is_numeric($stripped_vmx_option_0_number) && $stripped_vmx_option_0_number) {
- $_SESSION['ari_error'] =
- _("Option 0 not changed") . "<br>" .
- sprintf(_("Number %s must contain dial numbers (characters like '(', '-', and ')' are ok)"),$vmx_option_0_number);
- }
- else {
-
- // set database
- $this->setVmxOptionNumber($exten,'0','unavail',$stripped_vmx_option_0_number);
- $this->setVmxOptionNumber($exten,'0','busy',$stripped_vmx_option_0_number);
-
- // store cookie
- $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_vmx_option_0_number']);
- if ($vmx_option_0_number && $stripped!=$stripped_vmx_option_0_number) {
- setcookie("ari_vmx_option_0_number", $call_vmx_option_0_number, time()+365*24*60*60);
- }
- }
- }
-
- $stripped_vmx_option_1_number = preg_replace('/-|\(|\)|\s/','',$vmx_option_1_number);
- if ($vmx_option_1_system_default && !$follow_me_disabled) {
- $this->setVmxOptionFollowMe($exten,'1','unavail');
- $this->setVmxOptionFollowMe($exten,'1','busy');
- setcookie("ari_vmx_option_1_system_default", $vmx_option_1_system_default, time()+365*24*60*60);
- if (is_numeric($stripped_vmx_option_1_number) || !$stripped_vmx_option_1_number) {
- $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_vmx_option_1_number']);
- if ($vmx_option_1_number && $stripped!=$stripped_vmx_option_1_number) {
- setcookie("ari_vmx_option_1_number", $call_vmx_option_1_number, time()+365*24*60*60);
- }
- }
- }
- else {
-
- if (!is_numeric($stripped_vmx_option_1_number) && $stripped_vmx_option_1_number) {
- $_SESSION['ari_error'] =
- _("Option 1 not changed") . "<br>" .
- sprintf(_("Number %s must contain dial numbers (characters like '(', '-', and ')' are ok)"),$vmx_option_1_number);
- }
- else {
-
- // set database
- $this->setVmxOptionNumber($exten,'1','unavail',$stripped_vmx_option_1_number);
- $this->setVmxOptionNumber($exten,'1','busy',$stripped_vmx_option_1_number);
-
- // store cookie
- $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_vmx_option_1_number']);
- if ($vmx_option_1_number && $stripped!=$stripped_vmx_option_1_number) {
- setcookie("ari_vmx_option_1_number", $call_vmx_option_1_number, time()+365*24*60*60);
- }
- }
- }
-
- $stripped_vmx_option_2_number = preg_replace('/-|\(|\)|\s/','',$vmx_option_2_number);
- if (!is_numeric($stripped_vmx_option_2_number) && $stripped_vmx_option_2_number) {
- $_SESSION['ari_error'] =
- _("Option 2 not changed") . "<br>" .
- sprintf(_("Number %s must contain dial numbers (characters like '(', '-', and ')' are ok)"),$vmx_option_2_number);
- }
- else {
-
- // set database
- $this->setVmxOptionNumber($exten,'2','unavail',$stripped_vmx_option_2_number);
- $this->setVmxOptionNumber($exten,'2','busy',$stripped_vmx_option_2_number);
-
- // store cookie
- $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_vmx_option_2_number']);
- if ($vmx_option_2_number && $stripped!=$stripped_vmx_option_2_number) {
- setcookie("ari_vmx_option_2_number", $call_vmx_option_2_number, time()+365*24*60*60);
- }
- }
- } // vmx_disabled false
- }
-
- // redirect to see updated page
- $ret .= "
- <head>
- <script>
- <!--
- window.location = \"" . $_SESSION['ARI_ROOT'] . "?m=" . $m . "\"
- // -->
- </script>
- </head>";
-
- return $ret;
- }
-
- /*
- * Displays stats page
- *
- * @param $args
- * Common arguments
- */
- function display($args) {
- global $SETTINGS_ALLOW_VMX_SETTINGS;
-
- global $loaded_modules;
-
- // args
- $m = getArgument($args,'m');
- $q = getArgument($args,'q');
- $start = getArgument($args,'start');
- $span = getArgument($args,'span');
-
- $displayname = $_SESSION['ari_user']['displayname'];
- $exten = $_SESSION['ari_user']['extension'];
-
- $display = new DisplaySearch();
-
- $follow_me_listring_time = $this->getFollowMeListRingTime($exten);
-
- //TODO: Set this better than this?
- $follow_me_disabled = ($follow_me_listring_time > 0)?0:1;
- setcookie("ari_follow_me_disabled", $follow_me_disabled, time()+365*24*60*60);
-
-
- $vmx_unavail_enabled=$this->getVmxState($exten,'unavail');
- if ($vmx_unavail_enabled === false) {
- $vmx_disabled = true;
- setcookie("ari_vmx_disabled", $vmx_disabled, time()+365*24*60*60);
- $SETTINGS_ALLOW_VMX_SETTINGS=false;
- } else {
- $vmx_disabled = false;
- setcookie("ari_vmx_disabled", false, time()+365*24*60*60);
- $vmx_busy_enabled=$this->getVmxState($exten,'busy');
- $vmx_play_instructions=$this->getVmxPlayInstructions($exten);
- $vmx_option_0_number=$this->getVmxOptionNumber($exten,'0');;
- $vmx_option_1_number=$this->getVmxOptionNumber($exten,'1');;
- $vmx_option_2_number=$this->getVmxOptionNumber($exten,'2');;
-
- if (is_numeric($vmx_option_0_number)) {
- $vmx_option_0_system_default='';
- $vmx_option_0_number_text_box_options='';
- } else {
- $vmx_option_0_system_default='checked';
- $vmx_option_0_number_text_box_options="disabled style='background: #DDD;'";
- }
-
- // if follow-me is enabled then the options are a numberic value (dial a phone number)
- // or a followme target (FMnnn) which should not be displayed but means the box is checked
- // or otherwise blank (or garbage in which case blank it)
- //
- if (!$follow_me_disabled) {
- $vmx_option_1_system_default=$this->getVmxOptionFollowMe($exten,'1');
- if ($vmx_option_1_system_default) {
- $vmx_option_1_number = '';
- $vmx_option_1_number_text_box_options="disabled style='background: #DDD;'";
- }
- }
- }
-
- $set_vmx_text .=
- "
- <br>
- <table class='settings'>
- <tr>
- <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>
- <input " . $vmx_unavail_enabled . " type=checkbox name='vmx_unavail_enabled' value='checked'>
- <small>" . _("unavailable") . "</small>
- </td>
- <td>
- <input " . $vmx_busy_enabled . " type=checkbox name='vmx_busy_enabled' value='checked'>
- <small>" . _("busy") . "</small>
- </td>
- </tr>
- <tr>
- <td><a href='#' class='info'>" . _("Voicemail Instructions:") ."<span>" . _("Uncheck to play a beep after your personal voicemail greeting.") . "<br></span></a></td>
- <td>
- <input " . $vmx_play_instructions . " type=checkbox name='vmx_play_instructions' value='checked'>
- <small>" . _("Standard voicemail prompts.") . "</small>
- </td>
- </tr>
- </table>
- <br>
- <br>
- <table class='settings'>
- <tr>
- <td><a href='#' class='info'>" . _("Press 0:") . "<span>" . _("Pressing 0 during your personal voicemail greeing goes to the Operator.
- Uncheck to enter another destination here.") . "<br></span></a>
- </td>
- <td>
- <input " . $vmx_option_0_number_text_box_options . " name='vmx_option_0_number' type='text' size=24 value='" . $vmx_option_0_number . "'>
- </td>
- <td>
- <input " . $vmx_option_0_system_default . " type=checkbox name='vmx_option_0_system_default' value='checked' OnClick=\"disable_fields(); return true;\">
- <small>" . _("Go To Operator") . "</small>
- </td>
- </tr>
- <tr>
- <td><a href='#' class='info'>" . _("Press 1:") . "<span>";
-
- if ($follow_me_disabled)
- $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.");
- else
- $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.");
-
-
- $set_vmx_text .=
- " <br></span></a>
- </td>
- <td>
- <input " . $vmx_option_1_number_text_box_options . " name='vmx_option_1_number' type='text' size=24 value='" . $vmx_option_1_number . "'>
- </td>
- <td>";
-
-
- if (!$follow_me_disabled)
- $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>";
-
-
- $set_vmx_text .=
- "
- </td>
- </tr>
- <tr>
- <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>
- <td>
- <input " . $vmx_option_2_number_text_box_options . " name='vmx_option_2_number' type='text' size=24 value='" . $vmx_option_2_number . "'>
- </td>
- </tr>
- </table>
- <br>
- <br>
- ";
-
-
- // Now we should be ready to build the page
- $ret .= checkErrorMessage();
-
- $headerText = sprintf(_("VmX Locator&#8482; Settings for %s (%s)"),$displayname,$exten);
-
- $ret .= $display->displayHeaderText($headerText);
- $ret .= $display->displayLine();
-
- $ret .=
- "<SCRIPT LANGUAGE='JavaScript'>
- <!-- Begin
- function disable_fields() {
-
- if (document.ari_settings.vmx_option_0_system_default.checked) {
- document.ari_settings.vmx_option_0_number.style.backgroundColor = '#DDD';
- document.ari_settings.vmx_option_0_number.disabled = true;
- }
- else {
- document.ari_settings.vmx_option_0_number.style.backgroundColor = '#FFF';
- document.ari_settings.vmx_option_0_number.disabled = false;
- }";
-
- if (!$follow_me_disabled) {
- $ret .= "
- if (document.ari_settings.vmx_option_1_system_default.checked) {
- document.ari_settings.vmx_option_1_number.style.backgroundColor = '#DDD';
- document.ari_settings.vmx_option_1_number.disabled = true;
- }
- else {
- document.ari_settings.vmx_option_1_number.style.backgroundColor = '#FFF';
- document.ari_settings.vmx_option_1_number.disabled = false;
- }";
- }
- $ret .=
- "}
- // End -->
- </script>";
-
- $ret .=
- "<form class='settings' name='ari_settings' action='' method='GET'>
- <input type=hidden name=m value=" . $m . ">
- <input type=hidden name=f value='action'>
- <input type=hidden name=a value='update'>
- " . $set_vmx_text . "
- <br>
- <input name='submit' type='submit' value='" . _("Update") . "'>
- </form>";
-
- return $ret;
- }
-
- /*
- * Gets VMX option FollowMe
- *
- * @param $exten
- * Extension to get information about
- * @param $digit
- * Option number to get
- * @param $mode
- * Mode to get (unavail/busy)
- * @return $response
- * checked if set to got to extesion's follow-me on this option
- */
- function getVmxOptionFollowMe($exten, $digit, $mode='unavail') {
-
- global $asterisk_manager_interface;
-
- $digit = trim($digit);
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/vmx/$mode/$digit/ext\r\n\r\n");
- return (($response == 'FM'.$exten) ? 'checked':'');
- }
-
- /*
- * Sets VMX option FollowMe
- *
- * @param $exten
- * Extension to set information about
- * @param $digit
- * Option number to set
- * @param $mode
- * Mode to set (unavail/busy)
- * @param $context
- * Context to set ext to (default from-findmefollow)
- * @param $priority
- * Priority to set ext to (default 1)
- */
- function setVmxOptionFollowMe($exten, $digit, $mode, $context='ext-findmefollow', $priority='1') {
-
- global $asterisk_manager_interface;
-
- $value_opt = "FM$exten";
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/ext $value_opt\r\n\r\n");
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/context $context\r\n\r\n");
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/pri $priority\r\n\r\n");
- }
-
- /*
- * Gets VMX option number
- *
- * @param $exten
- * Extension to get information about
- * @param $digit
- * Option number to get
- * @param $mode
- * Mode to get (unavail/busy)
- * @return $number
- * Number to use or blank if disabled
- */
- function getVmxOptionNumber($exten, $digit, $mode='unavail') {
-
- global $asterisk_manager_interface;
-
- $number = '';
- $digit = trim($digit);
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/vmx/$mode/$digit/ext\r\n\r\n");
- if (is_numeric($response)) {
- $number = $response;
- }
-
- $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE["ari_vmx_option_${digit}_number"]);
- if ($stripped==$number) {
- $number = $_COOKIE["ari_vmx_option_${digit}_number"];
- }
-
- return $number;
- }
-
- /*
- * Sets VMX option number
- *
- * @param $exten
- * Extension to set information about
- * @param $digit
- * Option number to set
- * @param $mode
- * Mode to set (unavail/busy)
- * @param $number
- * Number to set ext to (blank will delete it)
- * @param $context
- * Context to set ext to (default from-internal)
- * @param $priority
- * Priority to set ext to (default 1)
- */
- function setVmxOptionNumber($exten, $digit, $mode, $number, $context='from-internal', $priority='1') {
-
- global $asterisk_manager_interface;
-
- $value_opt = trim($number);
-
- if (is_numeric($value_opt)) {
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/ext $value_opt\r\n\r\n");
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/context $context\r\n\r\n");
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/pri $priority\r\n\r\n");
- } else {
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database deltree AMPUSER $exten/vmx/$mode/$digit\r\n\r\n");
- }
- }
-
- /*
- * Sets VMX State
- *
- * @param $exten
- * Extension to modify
- * @param $mode
- * Mode to set (unavail/busy)
- * @param $vmx_state
- * enabled/disabled state based on check box value
- */
- function setVmxState($exten,$mode,$vmx_state) {
-
- global $asterisk_manager_interface;
-
- $value_opt = ($vmx_state)?'enabled':'disabled';
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/state $value_opt\r\n\r\n");
- }
-
- /*
- * Gets VMX State
- *
- * @param $exten
- * Extension to get information about
- * @param $mode
- * Mode to get (unavail/busy)
- * @return $data
- * state of variable (checked/blank) or false if no poper value
- */
- function getVmxState($exten, $mode='unavail') {
-
- global $asterisk_manager_interface;
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/vmx/$mode/state\r\n\r\n");
-
- if (preg_match("/enabled/",$response)) {
- $response='checked';
- }
- elseif (preg_match("/disabled/",$response)) {
- $response='';
- }
- else {
- $response = false;
- }
-
- //TODO: really need to check for a bogus response, see how other side does it
- //
- return $response;
-
- }
-
- /*
- * Sets VMX Play Instructions
- *
- * @param $exten
- * Extension to modify
- * @param $vmx_play_instructions
- * play instructions or just beep (checked, blank)
- * @param $mode
- * Mode to set (unavail/busy)
- */
- function setVmxPlayInstructions($exten,$mode,$vmx_play_instructions) {
-
- global $asterisk_manager_interface;
-
- $value_opt = ($vmx_play_instructions)?'""':'s';
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/vmxopts/timeout $value_opt\r\n\r\n");
- }
-
- /*
- * Get VMX Play Instructions
- *
- * @param $exten
- * Extension to get information about
- * @param $mode
- * Mode to get (unavail/busy)
- * @return $data
- * state of variable (checked/blank) or false if no poper value
- */
- function getVmxPlayInstructions($exten, $mode='unavail') {
-
- global $asterisk_manager_interface;
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/vmx/$mode/vmxopts/timeout\r\n\r\n");
-
- if (preg_match("/s/",$response)) {
- $response='';
- }
- else {
- $response='checked';
- }
-
- //TODO: really need to check for a bogus response, see how other side does it
- //
- return $response;
-
- }
-
-
- /*
- * Gets Follow Me List-Ring Time if set
- *
- * @param $exten
- * Extension to get information about
- * @return $number
- * follow me list-ring time returned if set
- */
- function getFollowMeListRingTime($exten) {
-
- global $asterisk_manager_interface;
-
- $number = '';
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/followme/grptime\r\n\r\n");
- if (is_numeric($response)) {
- $number = $response;
- }
-
- $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_follow_me_listring_time']);
- if ($stripped==$number) {
- $number = $_COOKIE['ari_follow_me_listring_time'];
- }
-
- return $number;
- }
-
-
-} // class
-
-?>
diff --git a/fs_selfservice/fri/modules/billing.module b/fs_selfservice/fri/modules/billing.module
deleted file mode 100644
index 6ef16e57d..000000000
--- a/fs_selfservice/fri/modules/billing.module
+++ /dev/null
@@ -1,250 +0,0 @@
-<?php
-
-/**
- * @file
- * Functions for the interface to the help page
- */
-
-/**
- * Class for help
- */
-class billing {
-
- /*
- * rank (for prioritizing modules)
- */
- function rank() {
-
- $rank = -2;
- return $rank;
- }
-
- /*
- * init
- */
- function init() {
- }
-
- /*
- * Adds menu item to nav menu
- *
- * @param $args
- * Common arguments
- */
- function navMenu($args) {
-
- $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=billing&f=display'>" . _("Billing") . "</a></small></small></p><br>";
-
- return $ret;
- }
-
- /*
- * Displays stats page
- *
- * @param $args
- * Common arguments
- */
- function display($args) {
-
- $display = new Display();
-
- // args
- $m = getArgument($args,'m');
- $q = getArgument($args,'q');
-
- $displayname = $_SESSION['ari_user']['displayname'];
- $extension = $_SESSION['ari_user']['extension'];
-
- // build page content
- $ret .= checkErrorMessage();
-
- $header_text = _("Billing");
- if (!$_SESSION['ari_user']['admin_help']) {
- $header_text .= sprintf(_(" for %s (%s)"), $displayname, $extension);
- }
-
- // build page content
- $ret .= checkErrorMessage();
-
- $ret .= $display->displayHeaderText($header_text);
- $ret .= $display->displayLine();
-
-
- $freeside = new FreesideSelfService();
-
- $fs_info = $freeside->customer_info( array(
- 'session_id' => $_SESSION['freeside_session_id'],
- ) );
- $error = $fs_info['error'];
- if ( $error ) {
- //$_SESSION['ari_error'] = _("Incorrect Username or Password");
- $_SESSION['ari_error'] = $error; #// XXX report as ari_error???!
- }
-
- //$ret .= $fs_info['small_custview'];
- //$ret .= '<BR>';
-
- $ret .= 'Balance: <b>$'. $fs_info['balance']. '</b><BR><BR>';
-
- if ( $fs_info['balance'] > 0 ) {
-
- #$ret .= '<B><A HREF="'. $_SESSION['ARI_ROOT'].
- # '?m=billing&f=make_payment">Make a payment</A></B><BR><BR>';
- $ret .= '<B><A HREF="/selfservice/selfservice.cgi?session='.
- $_SESSION['freeside_session_id'].
- ';action=make_payment">Make a payment</A></B><BR><BR>';
-
- }
-
- // XXX count() ???
- if ( count($fs_info['open_invoices']) ) {
-
- $ret .= '<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2 BGCOLOR="#eeeeee">'.
- '<TR><TH BGCOLOR="#ff6666" COLSPAN=5>Open Invoices</TH></TR>';
- $link = '<A HREF="'. $_SESSION['ARI_ROOT'].
- '?m=billing&f=view_invoice&invnum=';
-
- $col1 = "eeeeee";
- $col2 = "cccccc";
- $col = $col1;
-
- while ( $i = each($fs_info['open_invoices']) ) {
-
- $invoice = $i[value];
-
- $td = '<TD BGCOLOR="#'. $col. '">';
- $a = $link. $invoice['invnum']. '">';
- $ret .=
- "<TR>$td$a". 'Invoice #'. $invoice['invnum']. "</A></TD>$td</TD>".
- "$td$a". $invoice['date']. "</A></TD>$td</TD>".
- '<TD BGCOLOR="#'. $col. '" ALIGN="right">'. $a. '$'. $invoice['owed'].
- '</A></TD>'.
- '</TR>';
-
- if ( $col == $col1 ) {
- $col = $col2;
- } else {
- $col = $col1;
- }
-
- }
-
- $ret .= '</TABLE><BR>';
- } else {
- $ret .= 'You have no outstanding invoices.<BR><BR>';
- }
-
- #$fs_info = $freeside->customer_info( array(
- # 'session_id' => $_SESSION['freeside_session_id'],
- #) );
- #$error = $fs_info['error'];
- #if ( $error ) {
- # //$_SESSION['ari_error'] = _("Incorrect Username or Password");
- # $_SESSION['ari_error'] = $error; #// XXX report as ari_error???!
- #}
-
- // $ret .= 'Billing goes here';
- // XXX navigate to make payment, view invoice,
- // & myaccount change payment info
-
- $ret .= '<B><A HREF="/selfservice/selfservice.cgi?session='.
- $_SESSION['freeside_session_id'].
- ';action=make_payment">Make a credit card payment</A></B><BR><BR>';
- $ret .= '<B><A HREF="/selfservice/selfservice.cgi?session='.
- $_SESSION['freeside_session_id'].
- ';action=make_payment">Make an electronic check payment</A></B><BR><BR>';
- $ret .= '<B><A HREF="/selfservice/selfservice.cgi?session='.
- $_SESSION['freeside_session_id'].
- ';action=make_payment">Use a prepaid card</A></B><BR><BR>';
-
- return $ret;
-
- }
-
- function make_payment($args) {
-
- $display = new Display();
-
- // args
- $m = getArgument($args,'m');
- $q = getArgument($args,'q');
-
- $displayname = $_SESSION['ari_user']['displayname'];
- $extension = $_SESSION['ari_user']['extension'];
-
- // build page content
- $ret .= checkErrorMessage();
-
- $header_text = _("Billing");
- if (!$_SESSION['ari_user']['admin_help']) {
- $header_text .= sprintf(_(" for %s (%s)"), $displayname, $extension);
- }
-
- // build page content
- $ret .= checkErrorMessage();
-
- $ret .= $display->displayHeaderText($header_text);
- $ret .= $display->displayLine();
-
-
- #$freeside = new FreesideSelfService();
-
- $ret .= 'Make payment goes here';
-
- return $ret;
-
- }
-
- function view_invoice($args) {
-
- $display = new Display();
-
- // args
- $m = getArgument($args,'m');
- $q = getArgument($args,'q');
-
- $displayname = $_SESSION['ari_user']['displayname'];
- $extension = $_SESSION['ari_user']['extension'];
-
- // build page content
- $ret .= checkErrorMessage();
-
- $header_text = _("Billing");
- if (!$_SESSION['ari_user']['admin_help']) {
- $header_text .= sprintf(_(" for %s (%s)"), $displayname, $extension);
- }
-
- // build page content
- $ret .= checkErrorMessage();
-
- $ret .= $display->displayHeaderText($header_text);
- #$ret .= $display->displayLine();
-
- $invnum = getArgument($args, 'invnum');
-
- $freeside = new FreesideSelfService();
- $invoice = $freeside->invoice( array(
- 'session_id' => $_SESSION['freeside_session_id'],
- 'invnum' => $invnum,
- ) );
- $error = $invoice['error'];
- if ( $error ) {
- //$_SESSION['ari_error'] = _("Incorrect Username or Password");
- $_SESSION['ari_error'] = $error; // XXX report as ari_error???!
- }
-
- $html = $invoice['invoice_html']->scalar;
- $html = str_replace( "\xA0", '&nbsp;', $html); // XX doh
- error_log($html);
-
- $ret .= '<TABLE BGCOLOR="#000000" BORDER=0><TR><TD>'.
- $html.
- '</TD></TR></TABLE>';
-
- return $ret;
-
- }
-
-}
-
-?>
diff --git a/fs_selfservice/fri/modules/callmonitor.module b/fs_selfservice/fri/modules/callmonitor.module
deleted file mode 100644
index 36f5f285a..000000000
--- a/fs_selfservice/fri/modules/callmonitor.module
+++ /dev/null
@@ -1,675 +0,0 @@
-<?php
-
-/**
- * @file
- * Functions for the interface to the call monitor recordings
- */
-
-/**
- * Class for Callmonitor
- */
-class Callmonitor {
-
- /*
- * rank (for prioritizing modules)
- */
- function rank() {
-
- $rank = 2;
- return $rank;
- }
-
- /*
- * init
- */
- function init() {
- }
-
- /*
- * Adds menu item to nav menu
- *
- * @param $args
- * Common arguments
- */
- function navMenu($args) {
-
- $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=Callmonitor&f=display'>" . _("Call History") . "</a></small></small></p><br>";
-
- return $ret;
- }
-
- /*
- * Acts on the selected call monitor recordings in the method indicated by the action and updates page
- *
- * @param $args
- * Common arguments
- */
- function recAction($args) {
-
- // args
- $m = getArgument($args,'m');
- $a = getArgument($args,'a');
- $q = getArgument($args,'q');
- $start = getArgument($args,'start');
- $span = getArgument($args,'span');
- $order = getArgument($args,'order');
- $sort = getArgument($args,'sort');
- $duration_filter = getArgument($args,'duration_filter');
-
- // get files
- $files = array();
- foreach($_REQUEST as $key => $value) {
- if (preg_match('/selected/',$key)) {
- array_push($files, $value);
- }
- }
-
- if ($a=='delete') {
- $this->deleteRecData($files);
- }
-
- if ($a=='ignore') {
-
- $start = 0;
-
- setcookie("ari_duration_filter", $duration_filter, time()+365*24*60*60);
- }
-
- // redirect to see updated page
- $ret .= "
- <head>
- <script>
- <!--
- window.location = \"" . $_SESSION['ARI_ROOT'] . "?m=" . $m . "&q=" . $q . "&start=" . $start . "&span=" . $span . "&order=" . $order . "&sort=" . $sort . "&duration_filter=" . $duration_filter . "\"
- // -->
- </script>
- </head>";
-
- return $ret;
- }
-
- /*
- * Displays stats page
- *
- * @param $args
- * Common arguments
- */
- function display($args) {
-
- global $ASTERISK_CALLMONITOR_PATH;
- global $CALLMONITOR_ALLOW_DELETE;
- global $AJAX_PAGE_REFRESH_ENABLE;
-
- $display = new DisplaySearch();
-
- // get the search string
- $m = getArgument($args,'m');
- $f = getArgument($args,'f');
- $q = getArgument($args,'q');
- $start = getArgument($args,'start');
- $span = getArgument($args,'span');
- $order = getArgument($args,'order');
- $sort = getArgument($args,'sort');
- $duration_filter = getArgument($args,'duration_filter');
-
- $start = $start=='' ? 0 : $start;
- $span = $span=='' ? 15 : $span;
- $order = $order=='' ? 'calldate' : $order;
- $sort = $sort=='' ? 'desc' : $sort;
-
- $displayname = $_SESSION['ari_user']['displayname'];
- $extension = $_SESSION['ari_user']['extension'];
-
- // get data
- $record_count = $this->getCdrCount($q,$duration_filter);
- $data = $this->getCdrData($q,$duration_filter,$start,$span,$order,$sort);
-
- // get the call monitor recording files
- $paths = split(';',$ASTERISK_CALLMONITOR_PATH);
- foreach($paths as $key => $path) {
- if (!is_dir($path)) {
- $_SESSION['ari_error'] .= sprintf(_("Path is not a directory: %s"),$path) . "<br>";
- }
- }
- $recordings = $this->getRecordings($ASTERISK_CALLMONITOR_PATH,$data);
-
- // build controls
- if ($CALLMONITOR_ALLOW_DELETE) {
- $controls .= "
- <button class='infobar' type='submit' onclick=\"document.callmonitor_form.a.value='delete'\">
- " . _("delete") . "
- </button>
- &nbsp;";
- }
-
- $controls .= "
- <small>" . _("duration") . "</small>
- <input name='duration_filter' type='text' size=4 maxlength=8 value='" . $_COOKIE['ari_duration_filter'] . "'>
- <button class='infobar' type='submit' onclick=\"document.callmonitor_form.a.value='ignore'\">
- " . _("ignore") . "
- </button>";
-
- // table header
- if ($CALLMONITOR_ALLOW_DELETE) {
- $recording_delete_header = "<th></th>";
- }
-
- $fields[0]['field'] = "calldate";
- $fields[0]['text'] = _("Date");
- $fields[1]['field'] = "calldate";
- $fields[1]['text'] = _("Time");
- $fields[2]['field'] = "clid";
- $fields[2]['text'] = _("Caller ID");
- $fields[3]['field'] = "src";
- $fields[3]['text'] = _("Source");
- $fields[4]['field'] = "dst";
- $fields[4]['text'] = _("Destination");
- $fields[5]['field'] = "dcontext";
- $fields[5]['text'] = _("Context");
- $fields[6]['field'] = "duration";
- $fields[6]['text'] = _("Duration");
-
- $i = 0;
- while ($fields[$i]) {
-
- $field = $fields[$i]['field'];
- $text = $fields[$i]['text'];
- if ($order==$field) {
- if ($sort=='asc') {
- $currentSort = 'desc';
- $arrowImg = "<img src='theme/images/arrow-asc.gif' alt='sort'>";
- }
- else {
- $currentSort = 'asc';
- $arrowImg = "<img src='theme/images/arrow-desc.gif' alt='sort'>";
- }
-
- if ($i==1) {
- $arrowImg = '';
- }
- }
- else {
- $arrowImg = '';
- $currentSort = 'desc';
- }
-
- $unicode_q = urlencode($q);
- $recording_header .= "<th><a href=" . $_SESSION['ARI_ROOT'] . "?m=" . $m . "&f=" . $f . "&q=" . $unicode_q . "&order=" . $field . "&sort=" . $currentSort . ">" . $text . $arrowImg . "</a></th>";
-
- $i++;
- }
- $recording_header .= "<th>" . _("Monitor") . "</th>";
-
- // table body
- foreach($data as $key=>$value) {
-
- // recording file
- $recording = $recordings[$value['uniqueid'] . $value['calldate']];
-
- // date and time
- $buf = split(' ', $value[calldate]);
- $date = $buf[0];
- $time = $buf[1];
-
- // recording delete checkbox
- if ($CALLMONITOR_ALLOW_DELETE) {
- $recording_delete_checkbox = "<td class='checkbox'><input type=checkbox name='selected" . ++$i . "' value=" . $recording . "></td>";
- }
-
- $recordingLink = '';
- if (is_file($recordings[$value['uniqueid'] . $value['calldate']])) {
- $recordingLink = "<a href='#' onClick=\"javascript:popUp('misc/recording_popup.php?recording=" . $recording . "&date=" . $date . "&time=" . $time . "'); return false;\">" . _("play") . "</a>";
- }
-
- $recording_body .= "<tr>
- " . $recording_delete_checkbox . "
- <td width=70>" . $date . "</td>
- <td>" . $time . "</td>
- <td>" . $value[clid] . "</td>
- <td>" . $value[src] . "</td>
- <td>" . $value[dst] . "</td>
- <td>" . $value[dcontext] . "</td>
- <td width=90>" . $value[duration] . " sec</td>
- <td>" . $recordingLink . "</td>
- </tr>";
- }
- if (!count($data)) {
- $recording_body .= "<tr></tr>";
- }
-
- // options
- $url_opts = array();
- $url_opts['sort'] = $sort;
- $url_opts['order'] = $order;
- $url_opts['duration_filter'] = $duration_filter;
-
- // build page content
- $ret .= checkErrorMessage();
-
- // ajax page refresh script
- if ($AJAX_PAGE_REFRESH_ENABLE) {
- // $ret .= ajaxRefreshScript($args);
- }
-
- // header
- if ($_SESSION['ari_user']['admin_callmonitor']) {
- $header_text = _("Call History");
- } else {
- $header_text = sprintf(_("Call History for %s (%s)"),$displayname,$extension);
- }
- $ret .= $display->displayHeaderText($header_text);
- $ret .= $display->displaySearchBlock('left',$m,$q,$url_opts,true);
-
- // start form
- if ($CALLMONITOR_ALLOW_DELETE) {
-
- $ret .= "
- <form name='callmonitor_form' action='" . $_SESSION['ARI_ROOT'] . "' method='GET'>
- <input type=hidden name=m value=" . $m . ">
- <input type=hidden name=f value=recAction>
- <input type=hidden name=a value=''>
- <input type=hidden name=q value=" . $q . ">
- <input type=hidden name=start value=" . $start . ">
- <input type=hidden name=span value=" . $span . ">
- <input type=hidden name=order value=" . $order . ">
- <input type=hidden name=sort value=" . $sort . ">";
- }
-
- $ret .= $display->displayInfoBarBlock($controls,$q,$start,$span,$record_count);
-
- // javascript for popup and message actions
- $ret .= "
- <SCRIPT LANGUAGE='JavaScript'>
- <!-- Begin
- function popUp(URL) {
- eval(\"page = window.open(URL, 'play', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=324,height=110');\");
- }
-
- function checkAll(form,set) {
- var elem = 0;
- var i = 0;
- while (elem = form.elements[i]) {
- if (set) {
- elem.checked = true;
- } else {
- elem.checked = false;
- }
- i++;
- }
- return true;
- }
- // End -->
- </script>";
-
- // call monitor delete recording controls
- if ($CALLMONITOR_ALLOW_DELETE) {
- $ret .= "
- <table>
- <tr>
- <td>
- <small>" . _("select") . ": </small>
- <small><a href='' OnClick=\"checkAll(document.callmonitor_form,true); return false;\">" . _("all") . "</a></small>
- <small><a href='' OnClick=\"checkAll(document.callmonitor_form,false); return false;\">" . _("none") . "</a></small>
- </td>
- </tr>
- </table>";
- }
- else {
- $ret .= "<br>";
- }
-
- // table
- $ret .= "
- <table class='callmonitor'>
- <tr>
- " . $recording_delete_header . "
- " . $recording_header . "
- </tr>
- " . $recording_body . "
- </table>";
-
- $start = getArgument($args,'start');
- $span = getArgument($args,'span');
- $order = getArgument($args,'order');
- $sort = getArgument($args,'sort');
-
- // end form
- if ($CALLMONITOR_ALLOW_DELETE) {
- $ret .= "</form>";
- }
-
- $ret .= $display->displaySearchBlock('center',$m,$q,$url_opts,false);
- $ret .= $display->displayNavigationBlock($m,$q,$url_opts,$start,$span,$record_count);
-
- return $ret;
- }
-
- /*
- * Checks for a recording file
- *
- * @param $asterisk_callmonitor_path
- * path call monitor recording directory on the asterisk server
- * @param $data
- * current call monitor recordings on the asterisk server
- * @return $recording
- * returns an array of $recording file names if found
- */
- function getRecordings($asterisk_callmonitor_path,$data) {
-
- global $CALLMONITOR_ONLY_EXACT_MATCHING;
- global $CALLMONITOR_AGGRESSIVE_MATCHING;
-
- $recordings = array();
-
- $extension = $_SESSION['ari_user']['extension'];
-
- $paths = split(';',$asterisk_callmonitor_path);
- foreach($paths as $key => $path) {
- $paths[$key] = fixPathSlash($paths[$key]);
- }
-
- $files = array();
- if (!$CALLMONITOR_ONLY_EXACT_MATCHING) {
- $filter = '';
- $recursiveMax = 6;
- $recursiveCount = 0;
- foreach($paths as $key => $path) {
- $path_files = getFiles($path,$filter,$recursiveMax,$recursiveCount);
- if ($path_files) {
- $files = array_merge($files,$path_files);
- }
- }
- rsort($files);
- }
-
- foreach($data as $data_key => $data_value) {
-
- $recording='';
-
- $calldate = $data_value['calldate'];
- $duration = $data_value['duration'];
- $lastdata = $data_value['lastdata'];
- $uniqueid = $data_value['uniqueid'];
- $userfield = $data_value['userfield'];
-
- // timestamps
- $st = trim(strtotime($calldate));
- $et = trim(strtotime($calldate) + $duration); // for on-demand call recordings
-
- // unique file key
- if ($uniqueid) {
- $buf = preg_replace('/\-|\:/', '', $calldate);
- $calldate_key = preg_replace('/\s+/', '-', $buf);
- $unique_file_key = $calldate_key . "-" . $uniqueid;
- }
- if ($unique_file_key=='') {
- $buf = preg_split("/\|/", $lastdata);
- $unique_file_key = $buf[1];
- }
-
- $recordingLink = '';
- foreach($paths as $callmonitor_key => $path) {
-
- // try to find an exact match using the uniqueid
- if (isset($uniqueid)) {
-
- $check_files = array();
- array_push($check_files,$path . $uniqueid . ".WAV");
- array_push($check_files,$path . $uniqueid . ".wav");
- array_push($check_files,$path . $uniqueid . ".gsm");
-
- array_push($check_files,$path . $unique_file_key . ".WAV");
- array_push($check_files,$path . $unique_file_key . ".wav");
- array_push($check_files,$path . $unique_file_key . ".gsm");
-
- array_push($check_files,$path . "g" . $extension . "-" . $unique_file_key . ".WAV");
- array_push($check_files,$path . "g" . $extension . "-" . $unique_file_key . ".wav");
- array_push($check_files,$path . "g" . $extension . "-" . $unique_file_key . ".gsm");
-
- array_push($check_files,$path . "q" . $extension . "-" . $unique_file_key . ".WAV");
- array_push($check_files,$path . "q" . $extension . "-" . $unique_file_key . ".wav");
- array_push($check_files,$path . "q" . $extension . "-" . $unique_file_key . ".gsm");
-
- array_push($check_files,$path . "OUT" . $extension . "-" . $unique_file_key . ".WAV");
- array_push($check_files,$path . "OUT" . $extension . "-" . $unique_file_key . ".wav");
- array_push($check_files,$path . "OUT" . $extension . "-" . $unique_file_key . ".gsm");
-
- array_push($check_files,$path . $userfield);
-
- // try to match
- foreach($check_files as $check_file) {
- if (is_file($check_file)) {
- $recording = $check_file;
- break;
- }
- }
- }
-
- // if found do not need to check the rest of the paths
- if ($recording!='') {
- break;
- }
- }
-
- // get all the callmonitor recordings on server and try to find a non-exact match for this log entry
- if (!$CALLMONITOR_ONLY_EXACT_MATCHING) {
-
- // try to find a file using the uniqueid
- if (!$recording) {
-
- // try and match the unique id
- if (!$recording) {
- foreach($files as $key => $path) {
- if (strlen($uniqueid)>1 && strpos($path,$uniqueid)!==FALSE) {
- $recording = $path;
- $files[$key] = ''; // remove it from the recording files so it will not be matched twice
- break;
- }
- }
- }
- }
-
- // try and match a file using the calldate (if no unique number from database)
- if (!$recording) {
-
- foreach($files as $key => $path) {
- $parts = split("-", $path);
- if (strlen($st)>1 &&
- (strpos($path,$st)!==FALSE) ||
- (strpos($path,"auto")!==FALSE && $parts[1] >= $st && $parts[1] <= $et)) {
- $recording = $path;
- $files[$key] = ''; // remove it from the recording files so it will not be matched twice
- break;
- }
- }
- }
-
- if ($CALLMONITOR_AGGRESSIVE_MATCHING) {
-
- // one last stab at finding a recording by adding one or two seconds to the call time
- if (!$recording) {
- $st_1 = trim($st+1);
- $st_2 = trim($st+2);
- $et_1 = trim($et+1);
- $et_2 = trim($et+2);
- foreach($files as $key => $path) {
- $split = explode("-", $path);
- if (strlen($st)>1
- && ((strpos($path,$st_1)!==FALSE) ||
- (strpos($path,$st_2)!==FALSE) ||
- (strpos($path,"auto")!==FALSE && $parts[1] >= $st_1 && $parts[1] <= $et_1) ||
- (strpos($path,"auto")!==FALSE && $parts[1] >= $st_2 && $parts[1] <= $et_2))) {
- $recording = $path;
- $files[$key] = ''; // remove it from the recording files so it will not be matched twice
- break;
- }
- }
- }
- }
- }
-
- // add to array to be returned
- if ($recording) {
- $recordings[$uniqueid . $calldate] = $recording;
- }
- }
-
- return $recordings;
- }
-
- /*
- * Deletes selected call monitor recordings
- *
- * @param $files
- * Array of files to delete
- */
- function deleteRecData($files) {
-
- foreach($files as $key => $file) {
- if (is_writable($file)) {
- unlink($file);
- } else {
- $_SESSION['ari_error'] = _("Only deletes recording files, not cdr log");
- }
- }
- }
-
- /*
- * Gets cdr record count
- *
- * @param $q
- * query text
- */
- function getSearchText($q,$duration_filter) {
-
- // search text
- if ($q!='*' && $q!=NULL) {
- $searchText .= "WHERE ";
- $tok = strtok($q," \n\t");
- while ($tok) {
- $searchText .= " (calldate regexp '" . $tok . "'
- OR clid regexp '" . $tok . "'
- OR src regexp '" . $tok . "'
- OR dst regexp '" . $tok . "'
- OR dstchannel regexp '" . $tok . "'
- OR dcontext regexp '" . $tok . "'
- OR duration regexp '" . $tok . "'
- OR disposition regexp '" . $tok . "'
- OR uniqueid regexp '" . $tok . "'
- OR userfield regexp '" . $tok . "'
- )";
- $tok = strtok(" \n\t");
- if ($tok) {
- $searchText .= " AND";
- }
- }
- }
-
- // duration_filter
- if ($duration_filter) {
- if (!$searchText) {
- $searchText .= "WHERE ";
- } else {
- $searchText .= "AND ";
- }
- $searchText .= "duration>" . $duration_filter . " ";
- }
-
- // admin
- if (!$_SESSION['ari_user']['admin_callmonitor']) {
- if (!$searchText) {
- $searchText .= "WHERE ";
- } else {
- $searchText .= "AND ";
- }
-
- // allow entries to be viewed with users extension
- $searchText .= "(src = '" . $_SESSION['ari_user']['extension'] . "'
- OR dst = '" . $_SESSION['ari_user']['extension'] . "'
-
- OR channel LIKE 'IAX2/" . $_SESSION['ari_user']['extension'] ."-%'
- OR dstchannel LIKE 'IAX2/" . $_SESSION['ari_user']['extension'] ."-%'
-
- OR channel LIKE 'SIP/" . $_SESSION['ari_user']['extension'] ."-%'
- OR dstchannel LIKE 'SIP/" . $_SESSION['ari_user']['extension'] ."-%')";
-
- // allow entries to be viewed with users outbound CID
- if (isset($_SESSION['ari_user']['outboundCID']) && trim($_SESSION['ari_user']['outboundCID']) != '') {
- $searchText .= "OR (src = '" . $_SESSION['ari_user']['outboundCID'] . "'
- OR dst = '" . $_SESSION['ari_user']['outboundCID'] . "')";
- }
- }
-
- return $searchText;
- }
-
- /*
- * Gets cdr record count
- *
- * @param $q
- * query text
- * @return $count
- * Number of cdr records counted
- */
- function getCdrCount($q,$duration_filter) {
-
- global $ASTERISKCDR_DBTABLE;
-
- $searchText = $this->getSearchText($q,$duration_filter);
-
- $dbh = $_SESSION['dbh_cdr'];
- $sql = "SELECT count(*)
- FROM " . $ASTERISKCDR_DBTABLE . "
- " . $searchText;
-
- $result = $dbh->getAll($sql);
- if (DB::isError($result)) {
- $_SESSION['ari_error'] = $result->getMessage();
- return;
- }
- $count = $result[0][0];
-
- return $count;
- }
-
- /*
- * Gets cdr data
- *
- * @param $q
- * query text
- * @param $start
- * start record
- * @param $span
- * number of records to return
- * @return $data
- * cdr data to be returned
- */
- function getCdrData($q,$duration_filter,$start,$span,$order,$sort) {
-
- global $ASTERISKCDR_DBTABLE;
-
- $data = array();
-
- $searchText = $this->getSearchText($q,$duration_filter);
-
- $dbh = $_SESSION['dbh_cdr'];
- $sql = "SELECT *
- FROM " . $ASTERISKCDR_DBTABLE . "
- " . $searchText . "
- ORDER BY " . $order . " " . $sort . "
- LIMIT " . $start . "," . $span;
- $result = $dbh->getAll($sql,DB_FETCHMODE_ASSOC);
- if (DB::isError($result)) {
- $_SESSION['ari_error'] = $result->getMessage();
- return;
- }
- $data = $result;
-
- return $data;
- }
-
-
-}
-
-
-?>
diff --git a/fs_selfservice/fri/modules/dashboard.module b/fs_selfservice/fri/modules/dashboard.module
deleted file mode 100644
index 62d6de46a..000000000
--- a/fs_selfservice/fri/modules/dashboard.module
+++ /dev/null
@@ -1,166 +0,0 @@
-<?php
-
-/**
- * @file
- * Functions for the interface to the help page
- */
-
-/**
- * Class for help
- */
-class dashboard {
-
- /*
- * rank (for prioritizing modules)
- */
- function rank() {
-
- $rank = -4;
- return $rank;
- }
-
- /*
- * init
- */
- function init() {
- }
-
- /*
- * Adds menu item to nav menu
- *
- * @param $args
- * Common arguments
- */
- function navMenu($args) {
-
- $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=dashboard&f=display'>" . _("Dashboard") . "</a></small></small></p><br>";
-
- return $ret;
- }
-
- /*
- * Displays stats page
- *
- * @param $args
- * Common arguments
- */
- function display($args) {
-
- $display = new Display();
-
- // args
- $m = getArgument($args,'m');
- $q = getArgument($args,'q');
-
- $displayname = $_SESSION['ari_user']['displayname'];
- $extension = $_SESSION['ari_user']['extension'];
-
- // build page content
- $ret .= checkErrorMessage();
-
- $header_text = _("Dashboard");
- if (!$_SESSION['ari_user']['admin_help']) {
- $header_text .= sprintf(_(" for %s (%s)"), $displayname, $extension);
- }
-
- // build page content
- $ret .= checkErrorMessage();
-
- $ret .= $display->displayHeaderText($header_text);
- $ret .= $display->displayLine();
-
- $freeside = new FreesideSelfService();
- $fs_info = $freeside->customer_info( array(
- 'session_id' => $_SESSION['freeside_session_id'],
- ) );
- $error = $fs_info['error'];
- if ( $error ) {
- //$_SESSION['ari_error'] = _("Incorrect Username or Password");
- $_SESSION['ari_error'] = $error; #// XXX report as ari_error???!
- }
-
- $ret .= $fs_info['small_custview'];
- $ret .= '<BR>';
-
- if ( $fs_info['balance'] > 0 ) {
-
- #$ret .= '<B><A HREF="'. $_SESSION['ARI_ROOT'].
- # '?m=billing&f=make_payment">Make a payment</A></B><BR><BR>';
- $ret .= '<B><A HREF="/selfservice/selfservice.cgi?session='.
- $_SESSION['freeside_session_id'].
- ';action=make_payment">Make a payment</A></B><BR><BR>';
-
- }
-
- // XXX count() ???
- if ( count($fs_info['open_invoices']) ) {
-
- $ret .= '<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2 BGCOLOR="#eeeeee">'.
- '<TR><TH BGCOLOR="#ff6666" COLSPAN=5>Open Invoices</TH></TR>';
- $link = '<A HREF="'. $_SESSION['ARI_ROOT'].
- '?m=billing&f=view_invoice&invnum=';
-
- $col1 = "eeeeee";
- $col2 = "cccccc";
- $col = $col1;
-
- while ( $i = each($fs_info['open_invoices']) ) {
-
- $invoice = $i[value];
-
- $td = '<TD BGCOLOR="#'. $col. '">';
- $a = $link. $invoice['invnum']. '">';
- $ret .=
- "<TR>$td$a". 'Invoice #'. $invoice['invnum']. "</A></TD>$td</TD>".
- "$td$a". $invoice['date']. "</A></TD>$td</TD>".
- '<TD BGCOLOR="#'. $col. '" ALIGN="right">'. $a. '$'. $invoice['owed'].
- '</A></TD>'.
- '</TR>';
-
- if ( $col == $col1 ) {
- $col = $col2;
- } else {
- $col = $col1;
- }
-
- }
-
- $ret .= '</TABLE><BR>';
- } else {
- $ret .= 'You have no outstanding invoices.<BR><BR>';
- }
-
- #$ret .= 'Received calls (10)<br><br>';
- #$ret .= 'Placed calls (10)';
-
-// if ( @tickets ) {
-// $OUT .= '<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2 BGCOLOR="#eeeeee">'.
-// '<TR><TH BGCOLOR="#ff6666" COLSPAN=5>Open Tickets</TH></TR>'.
-// '<TR><TH>#</TH><TH>Subject</TH><TH>Priority</TH><TH>Queue</TH>'.
-// '<TH>Status</TH></TR>';
-// my $col1 = "ffffff";
-// my $col2 = "dddddd";
-// my $col = $col1;
-//
-// foreach my $ticket ( @tickets ) {
-// my $td = qq!<TD BGCOLOR="#$col">!;
-// $OUT .=
-// "<TR>$td". $ticket->{'id'}. "</TD>".
-// $td. $ticket->{'subject'}. "</TD>".
-// $td. ($ticket->{'content'} || $ticket->{'priority'}). "</TD>".
-// $td. $ticket->{'name'}. "</TD>".
-// $td. $ticket->{'status'}. "</TD>".
-// '</TR>';
-// $col = $col eq $col1 ? $col2 : $col1;
-// }
-// $OUT .= '</TABLE>';
-// } else {
-// $OUT .= '';
-// }
-
- return $ret;
- }
-
-}
-
-?>
diff --git a/fs_selfservice/fri/modules/featurecodes.module b/fs_selfservice/fri/modules/featurecodes.module
deleted file mode 100644
index 75d1d5c4e..000000000
--- a/fs_selfservice/fri/modules/featurecodes.module
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-
-/**
- * @file
- * Functions for the interface to the help page
- */
-
-/**
- * Class for help
- */
-class featurecodes {
-
- /*
- * rank (for prioritizing modules)
- */
- function rank() {
-
- $rank = 7;
- return $rank;
- }
-
- /*
- * init
- */
- function init() {
- }
-
- /*
- * Adds menu item to nav menu
- *
- * @param $args
- * Common arguments
- */
- function navMenu($args) {
-
- $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=featurecodes&f=display'>" . _("Feature Codes") . "</a></small></small></p><br>";
-
- return $ret;
- }
-
- /*
- * Displays stats page
- *
- * @param $args
- * Common arguments
- */
- function display($args) {
-
- global $ARI_HELP_FEATURE_CODES;
-
- $display = new Display();
-
- // args
- $m = getArgument($args,'m');
- $q = getArgument($args,'q');
-
- $displayname = $_SESSION['ari_user']['displayname'];
- $extension = $_SESSION['ari_user']['extension'];
-
- // build page content
- $ret .= checkErrorMessage();
-
- $header_text = _("Feature Codes");
- if (!$_SESSION['ari_user']['admin_help']) {
- $header_text .= sprintf(_(" for %s (%s)"), $displayname, $extension);
- }
-
- // handset feature code header
- $handset_feature_codes_header =
- "<tr>
- <th class='feature_codes'>
- " . _("Handset Feature Code") . "
- </th>
- <th>
- " . _("Action") . "
- </th>
- </tr>";
-
- // handset feature code body
- if (isset($_SESSION['dbh_asterisk'])) {
-
- $sql = "
- SELECT keycode, description
- FROM (
- SELECT modulename, description, defaultcode keycode
- FROM featurecodes
- WHERE customcode IS NULL
- AND enabled = '1'
- UNION ALL SELECT modulename, description, customcode keycode
- FROM featurecodes
- WHERE customcode IS NOT NULL
- AND enabled = '1'
- )c
- WHERE modulename NOT
- IN ( 'core', 'recordings', 'infoservices', 'polycomreassign')
- ORDER BY modulename, keycode
- ";
-
- $results = $_SESSION['dbh_asterisk']->getAll($sql, DB_FETCHMODE_ASSOC);
- if(DB::IsError($results)) {
- $_SESSION['ari_error'] = $results->getMessage();
- }
- else {
- foreach ($results as $item ) {
- $handset_feature_codes_body .=
- "<tr>
- <td class='feature_codes'>
- " . $item['keycode'] . "
- </td>
- <td>
- " . $item['description'] . "
- </td>
- </tr>";
- }
- }
- }
- else {
-
- // handset feature code body
- foreach($ARI_HELP_FEATURE_CODES as $key => $feature_code) {
-
- $handset_feature_codes_body .=
- "<tr>
- <td class='feature_codes'>
- " . $key . "
- </td>
- <td>
- " . $feature_code . "
- </td>
- </tr>";
- }
- }
-
- // build page content
- $ret .= checkErrorMessage();
-
- $ret .= $display->displayHeaderText($header_text);
- $ret .= $display->displayLine();
-
- // table
- $ret .= "
- <table class='help'>
- " . $handset_feature_codes_header . "
- " . $handset_feature_codes_body . "
- </table>";
-
- return $ret;
- }
-
-}
-
-?>
diff --git a/fs_selfservice/fri/modules/followme.module b/fs_selfservice/fri/modules/followme.module
deleted file mode 100644
index 85a1f3776..000000000
--- a/fs_selfservice/fri/modules/followme.module
+++ /dev/null
@@ -1,678 +0,0 @@
-<?php
-
-/**
- * @file
- * Functions for the interface to the call monitor recordings
- */
-
-/**
- * Class for Followme
- */
-class followme {
-
- var $protocol_table;
- var $protocol_config_files;
-
- /*
- * rank (for prioritizing modules)
- */
- function rank() {
-
- $rank = 5;
- return $rank;
- }
-
- /*
- * init
- */
- function init() {
-
- }
-
- /*
- * Adds menu item to nav menu
- *
- * @param $args
- * Common arguments
- */
- function navMenu($args) {
- global $ARI_ADMIN_USERNAME;
-
- $exten = $_SESSION['ari_user']['extension'];
- if ($exten!=$ARI_ADMIN_USERNAME) {
- $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=followme&f=display'>" . _("Follow Me") . "</a></small></small></p>";
- }
-
- return $ret;
- }
-
- /*
- * Acts on the user settings
- *
- * @param $args
- * Common arguments
- * @param $a
- * action
- */
- function action($args) {
-
- global $STANDALONE;
- global $ARI_ADMIN_USERNAME;
- global $SETTINGS_ALLOW_VMX_SETTINGS;
-
- // args
- $m = getArgument($args,'m');
- $a = getArgument($args,'a');
-
- $lang_code = getArgument($args,'lang_code');
-
- $follow_me_prering_time = getArgument($args,'follow_me_prering_time');
- $follow_me_listring_time = getArgument($args,'follow_me_listring_time');
- $follow_me_list = getArgument($args,'follow_me_list');
- $follow_me_confirm = getArgument($args,'follow_me_confirm');
- $follow_me_ddial = getArgument($args,'follow_me_ddial');
- $follow_me_disabled = getArgument($args,'follow_me_disabled');
-
- $language = new Language();
-
- // Lets see if we can make heads or tails of this code?!?
-
- // The action is 'update
- if ($a=='update') {
-
- // Get the extension and make sure we are not in
- // admin mode
- $exten = $_SESSION['ari_user']['extension'];
- if ($exten!=$ARI_ADMIN_USERNAME) {
-
-
- // Make sure Follow-Me setup has not been deleted for this user since the last refresh
- $follow_me_disabled_delayed = $_COOKIE['ari_follow_me_disabled'];
- if (! $_COOKIE['ari_follow_me_disabled']) {
-
- $follow_me_disabled = ($this->getFollowMeListRingTime($exten) > 0)?0:1;
-
- if ($follow_me_disabled) {
-
- setcookie("ari_follow_me_disabled", $follow_me_disabled, time()+365*24*60*60);
- $follow_me_disabled_delayed = $follow_me_disabled;
- $_SESSION['ari_error'] =
- _("Your Follow-Me has been disabled, REFRESH your browser to remove this message") . "<br>" .
- sprintf(_("Check with your Telephone System Administrator if you think there is a problem"));
- }
- }
-
-
-
- if (! $follow_me_disabled_delayed) {
-
- // assume no errors, don't update SQL if errors occured
- $follow_me_update_succeeded=1;
-
- // update follow me pre-ring time
- if (!$STANDALONE['use']) {
-
- $stripped_follow_me_prering_time = preg_replace('/-|\s/','',$follow_me_prering_time);
- if (!is_numeric($stripped_follow_me_prering_time)) {
- $_SESSION['ari_error'] =
- _("Follow-Me pre-ring time not changed") . "<br>" .
- sprintf(_("Number %s must be an interger number of seconds"),$follow_me_prering_time);
- $follow_me_update_succeeded=0;
- }
- else {
-
- // set database
- $this->setFollowMePreRingTime($exten,$stripped_follow_me_prering_time);
-
- // store cookie
- $stripped = preg_replace('/-|\s/','',$_COOKIE['ari_follow_me_prering_time']);
- if ($follow_me_prering_time && $stripped!=$stripped_follow_me_prering_time) {
- setcookie("ari_follow_me_prering_time", $follow_me_prering_time, time()+365*24*60*60);
- }
- }
- }
-
- // update follow me list ring time
- if (!$STANDALONE['use']) {
-
- $stripped_follow_me_listring_time = preg_replace('/-|\s/','',$follow_me_listring_time);
- if (!is_numeric($stripped_follow_me_listring_time)) {
- $_SESSION['ari_error'] =
- _("Follow-Me list ring time not changed") . "<br>" .
- sprintf(_("Number %s must be an interger number of seconds"),$follow_me_listring_time);
- $follow_me_update_succeeded=0;
- }
- else {
-
- // set database
- $this->setFollowMeListRingTime($exten,$stripped_follow_me_listring_time);
-
- // store cookie
- $stripped = preg_replace('/-|\s/','',$_COOKIE['ari_follow_me_listring_time']);
- if ($follow_me_listring_time && $stripped!=$stripped_follow_me_listring_time) {
- setcookie("ari_follow_me_listring_time", $follow_me_listring_time, time()+365*24*60*60);
- }
- }
- }
-
- // update follow me list
- if (!$STANDALONE['use']) {
-
- $grplist = explode("\n", $follow_me_list);
-
- if (!$grplist) {
- $grplist = null;
- }
-
- foreach (array_keys($grplist) as $key) {
- //trim it
- $grplist[$key] = trim($grplist[$key]);
-
- // Lookup the extension and append hash if not a user, and remove invalid chars
- $grplist[$key] = $this->lookupSetExtensionFormat($grplist[$key]);
-
- // remove blanks
- if ($grplist[$key] == "") unset($grplist[$key]);
- }
-
- // check for duplicates, and re-sequence
- $grplist = array_values(array_unique($grplist));
-
- $stripped_follow_me_list = implode("-",$grplist);
-
- if ($stripped_follow_me_list == "") {
- $_SESSION['ari_error'] =
- _("Follow-Me list must contain at least one valid number") . "<br>" .
- sprintf(_("The following: %s is not valid"),$follow_me_list);
- $follow_me_update_succeeded=0;
- }
- else {
-
- // set database
- $this->setFollowMeList($exten,$stripped_follow_me_list);
-
- // store cookie
- $stripped = preg_replace('/|\(|\)|\s/','',$_COOKIE['ari_follow_me_list']);
- if ($follow_me_list && $stripped!=$stripped_follow_me_list) {
- setcookie("ari_follow_me_list", $follow_me_list, time()+365*24*60*60);
- }
- }
- }
-
- // update follow me confirm
- if (!$STANDALONE['use']) {
-
- // set database
- $this->setFollowMeConfirm($exten,$follow_me_confirm);
- $this->setFollowMeDDial($exten,$follow_me_ddial);
-
- // store cookie
- setcookie("ari_follow_me_confirm", $follow_me_confirm, time()+365*24*60*60);
- setcookie("ari_follow_me_ddial", $follow_me_ddial, time()+365*24*60*60);
- }
-
- //If no errors than update the SQL table to keep in sync
- if ($follow_me_update_succeeded) {
- $this->setFollowMeMySQL($exten, $follow_me_prering_time, $follow_me_listring_time, $follow_me_list, $follow_me_confirm);
- }
-
- } //if !follow_me_disabled
- }
- }
-
- // redirect to see updated page
- $ret .= "
- <head>
- <script>
- <!--
- window.location = \"" . $_SESSION['ARI_ROOT'] . "?m=" . $m . "\"
- // -->
- </script>
- </head>";
-
- return $ret;
- }
-
- /*
- * Displays stats page
- *
- * @param $args
- * Common arguments
- */
- function display($args) {
-
- global $STANDALONE;
- global $ARI_ADMIN_USERNAME;
- global $SETTINGS_PRERING_LOW;
- global $SETTINGS_PRERING_HIGH;
- global $SETTINGS_LISTRING_LOW;
- global $SETTINGS_LISTRING_HIGH;
-
- global $SETTINGS_FOLLOW_ME_LIST_MAX;
-
- global $loaded_modules;
-
- // args
- $m = getArgument($args,'m');
- $q = getArgument($args,'q');
- $start = getArgument($args,'start');
- $span = getArgument($args,'span');
-
- $displayname = $_SESSION['ari_user']['displayname'];
- $exten = $_SESSION['ari_user']['extension'];
-
- $language = new Language();
- $display = new DisplaySearch();
-
- // build controls
- if ($exten!=$ARI_ADMIN_USERNAME) {
-
- // call forward settings
- if (!$STANDALONE['use']) {
-
- $follow_me_prering_time = $this->getFollowMePreRingTime($exten);
- $follow_me_listring_time = $this->getFollowMeListRingTime($exten);
- $follow_me_list = explode("-", $this->getFollowMeList($exten) );
- $follow_me_confirm = $this->getFollowMeConfirm($exten);
- $follow_me_ddial = $this->getFollowMeDDial($exten);
-
- $FOLLOW_ME_LIST_MAX = (count($follow_me_list) > $SETTINGS_FOLLOW_ME_LIST_MAX) ? count($follow_me_list):$SETTINGS_FOLLOW_ME_LIST_MAX;
-
- //TODO: Set this better than this?
- $follow_me_disabled = ($follow_me_listring_time > 0)?0:1;
- setcookie("ari_follow_me_disabled", $follow_me_disabled, time()+365*24*60*60);
-
- $followme_text.= "<table class='settings'>";
-
- if (!$follow_me_disabled) {
- // $followme_text .= "<tr><td><h3><br>" . _("Follow Me") . "</h3></td></tr>";
- $followme_text .= "<tr><td>&nbsp;</td></tr>"; // Blank Line
-
- $followme_text .= "<tr><td><a href='#' class='info'>" . _("Enable") . "<span>";
- $followme_text .= _( "Dial-by-name Directory, IVR, and internal
- calls will ring the numbers in the FollowMe
- List. Any FreePBX routes that directly
- reference a FollowMe are unaffected by this
- enable/disable setting.");
- $followme_text .= "<br></span></a></td>";
-
- $followme_text .= "<td><input " . $follow_me_ddial . " type=checkbox name='follow_me_ddial' value='checked'></td></tr>";
-
- $followme_text .= "<tr><td>&nbsp;</td></tr>"; // Blank Line
- $followme_text .= "<tr><td valign='top'><a href='#' class='info'>" . _("Follow Me List:");
- $followme_text .= "<span>" . sprintf(_("Extensions and outside numbers to ring next.")) ."<br/><br/>";
- $followme_text .= sprintf(_("Include %s to keep it ringing."),"<strong>".$exten."</strong>") . "<br></span></a></td>";
- $followme_text .= "<td><textarea " . $follow_me_list_options . " id='follow_me_list' name='follow_me_list' type='text' cols='20' rows='".$FOLLOW_ME_LIST_MAX."' value='' onKeyUp='rowCounter(this.form.follow_me_list, ".$FOLLOW_ME_LIST_MAX.");' onKeyDown='rowCounter(this.form.follow_me_list, ".$FOLLOW_ME_LIST_MAX.");'>".implode("\n",$follow_me_list)."</textarea>";
- $followme_text .= "</td></tr>";
-
- $followme_text .= "<tr><td>&nbsp;</td></tr>"; // Blank Line
- $followme_text .= "<tr><td><a href='#' class='info'>";
- $followme_text .= sprintf(_("Ring %s First For:"), $exten);
- $followme_text .= "<span>" . sprintf( _("Time to ring extension %s before ringing the %s Follow Me List %s"), "<strong>".$exten."</strong>","<strong>","</strong>");
- $followme_text .= "<br></span></a></td><td>";
-
- $followme_text .= "<select " . $follow_me_prering_time_text_box_options . " name='follow_me_prering_time'/>";
- $default_prering = $follow_me_prering_time;
- for ($i=$SETTINGS_PRERING_LOW; $i <= $SETTINGS_PRERING_HIGH; $i++) {
- $followme_text .= '<option value="'.$i.'" '.($i == $default_prering ? 'SELECTED' : '').'>'.$i.'</option>';
- }
- $followme_text .= "</select>";
-
- $followme_text .= "<small>" . _("seconds") . "</small>";
- $followme_text .= "</td></tr>";
-
- $followme_text .= "<tr><td><a href='#' class='info'>" . _("Ring Followme List for:") . "<span>" . _("Time to ring the Follow Me List.") . "<br></span></a></td>";
- $followme_text .= "<td>";
-
- $followme_text .= "<select " . $follow_me_listring_time_text_box_options . " name='follow_me_listring_time'/>";
- $default_listring = $follow_me_listring_time;
- for ($i=$SETTINGS_LISTRING_LOW; $i <= $SETTINGS_LISTRING_HIGH; $i++) {
- $followme_text .= '<option value="'.$i.'" '.($i == $default_listring ? 'SELECTED' : '').'>'.$i.'</option>';
- }
- $followme_text .= "</select>";
-
- $followme_text .= "<small>" . _("seconds") . "</small></td></tr>";
-
-
- $followme_text .= "<tr><td>&nbsp;</td></tr>"; // Blank Line
-
- $followme_text .= "<tr><td><a href='#' class='info'>" . _("Use Confirmation:") . "<span>". _("Outside lines that are part of the Follow Me List will be called and offered a menu:<br/><br/> \"You have an incoming call. Press 1 to accept or 2 to decline.\"<br/><br/> This keeps calls from ending up in external voicemail. Make sure that the List Ring Time is long enough to allow for you to hear and react to this message.");
- $followme_text .= "<br></span></a></td><td>";
- $followme_text .= "<input " . $follow_me_confirm . " type=checkbox name='follow_me_confirm' value='checked'>";
- $followme_text .= "<small>" . _("Enable") . "</small></td></tr>";
- $followme_text .= "<tr><td>&nbsp;</td></tr>"; // Blank Line
- $followme_text .= "</table>";
- }
- }
-
- }
-
- // build page content
- $ret .= checkErrorMessage();
-
- if ($_SESSION['ari_user']['admin_settings']) {
- $headerText = _("Followme Settings");
- } else {
- $headerText = sprintf(_("Followme Settings for %s (%s)"),$displayname,$exten);
- }
-
- $ret .= $display->displayHeaderText($headerText);
- $ret .= $display->displayLine();
-
- $ret .=
- "\n<SCRIPT LANGUAGE='JavaScript'>
- <!-- Begin
- function rowCounter(field, maxlimit) {
- temp = field.value.split('\u000A',maxlimit+1)
- field.value = temp.join('\u000A')
- if (temp.length == maxlimit+1) {
- field.value = field.value.substring(0, field.value.length-1)
- }
- }
- // End -->
- </script>\n";
-
- $ret .=
- "<form class='settings' name='ari_settings' action='' method='GET'>
- <input type=hidden name=m value=" . $m . ">
- <input type=hidden name=f value='action'>
- <input type=hidden name=a value='update'>
- " . $followme_text . "
- <br>
- <input name='submit' type='submit' value='" . _("Update") . "'>
- </form>";
-
- return $ret;
- }
-
-
- /*
- * Sets Follow Me Pre-Ring Time
- *
- * @param $exten
- * Extension to modify
- * @param $follow_me_prering_time
- * Pre-Ring Time to ring
- */
- function setFollowMePreRingTime($exten,$follow_me_prering_time) {
-
- global $asterisk_manager_interface;
-
- $value_opt = $follow_me_prering_time;
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/followme/prering $value_opt\r\n\r\n");
- }
-
- /*
- * Gets Follow Me Pre-Ring Time if set
- *
- * @param $exten
- * Extension to get information about
- * @return $number
- * follow me pre-ring time returned if set
- */
- function getFollowMePreRingTime($exten) {
-
- global $asterisk_manager_interface;
-
- $number = '';
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/followme/prering\r\n\r\n");
- if (is_numeric($response)) {
- $number = $response;
- }
-
- $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_follow_me_prering_time']);
- if ($stripped==$number) {
- $number = $_COOKIE['ari_follow_me_prering_time'];
- }
-
- return $number;
- }
-
- /*
- * Sets Follow Me List Ring Time
- *
- * @param $exten
- * Extension to modify
- * @param $follow_me_listring_time
- * List Ring Time to ring
- */
- function setFollowMeListRingTime($exten,$follow_me_listring_time) {
-
- global $asterisk_manager_interface;
-
- $value_opt = $follow_me_listring_time;
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/followme/grptime $value_opt\r\n\r\n");
- }
-
- /*
- * Gets Follow Me List-Ring Time if set
- *
- * @param $exten
- * Extension to get information about
- * @return $number
- * follow me list-ring time returned if set
- */
- function getFollowMeListRingTime($exten) {
-
- global $asterisk_manager_interface;
-
- $number = '';
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/followme/grptime\r\n\r\n");
- if (is_numeric($response)) {
- $number = $response;
- }
-
- $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_follow_me_listring_time']);
- if ($stripped==$number) {
- $number = $_COOKIE['ari_follow_me_listring_time'];
- }
-
- return $number;
- }
-
- /*
- * Sets Follow Me List
- *
- * @param $exten
- * Extension to modify
- * @param $follow_me_list
- * Follow Me List
- */
- function setFollowMeList($exten,$follow_me_list) {
-
- global $asterisk_manager_interface;
-
- $value_opt = $follow_me_list;
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/followme/grplist $value_opt\r\n\r\n");
- }
-
- /*
- * Gets Follow Me List if set
- *
- * @param $exten
- * Extension to get information about
- * @return $data
- * follow me list if set
- */
- function getFollowMeList($exten) {
-
- global $asterisk_manager_interface;
-
- $number = '';
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/followme/grplist\r\n\r\n");
-
- //TODO: really need to check for a bogus response, see how other side does it
- //
- return preg_replace("/[^0-9*\-]/", "", $response);
- }
-
- /*
- * Sets Follow Confirmation Setting
- *
- * @param $exten
- * Extension to modify
- * @param $follow_me_cofirm
- * Follow Me Confirm Setting
- */
- function setFollowMeConfirm($exten,$follow_me_confirm) {
-
- global $asterisk_manager_interface;
-
- $value_opt = ($follow_me_confirm)?'ENABLED':'DISABLED';
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/followme/grpconf $value_opt\r\n\r\n");
- }
-
- /*
- * Gets Follow Me Confirmation Setting
- *
- * @param $exten
- * Extension to get information about
- * @return $data
- * follow me confirm setting
- */
- function getFollowMeConfirm($exten) {
-
- global $asterisk_manager_interface;
-
- $number = '';
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/followme/grpconf\r\n\r\n");
-
- if (preg_match("/ENABLED/",$response)) {
- $response='checked';
- }
- else {
- $response='';
- }
-
- //TODO: really need to check for a bogus response, see how other side does it
- //
- return $response;
-
- }
-
- /*
- * Sets Follow Ddial Setting
- *
- * @param $exten
- * Extension to modify
- * @param $follow_me_ddial
- * Follow Me Ddial Setting
- */
- function setFollowMeDDial($exten,$follow_me_ddial) {
-
- global $asterisk_manager_interface;
-
- $value_opt = ($follow_me_ddial)?'DIRECT':'EXTENSION';
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/followme/ddial $value_opt\r\n\r\n");
- }
-
- /*
- * Gets Follow Me Ddial Setting
- *
- * @param $exten
- * Extension to get information about
- * @return $data
- * follow me ddial setting
- */
- function getFollowMeDDial($exten) {
-
- global $asterisk_manager_interface;
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/followme/ddial\r\n\r\n");
-
- if (preg_match("/EXTENSION/",$response)) {
- $response='';
- }
- else {
- $response='checked';
- }
-
- //TODO: really need to check for a bogus response, see how other side does it
- //
- return $response;
-
- }
-
-
-
-
-
- /*
- * Gets FreePBX Version
- */
- function getFreePBXVersion() {
-
- if (isset($_SESSION['dbh_asterisk'])) {
- $sql = "SELECT * FROM admin WHERE variable = 'version'";
- $results = $_SESSION['dbh_asterisk']->getAll($sql);
- if(DB::IsError($results)) {
- $_SESSION['ari_error'] = $results->getMessage();
- }
-
- return $results[0][1];
- }
- }
-
- /*
- * Sets Follow-Me Settings in FreePBX MySQL Database
- *
- * @param $exten
- * Extension to modify
- * @param $follow_me_prering_time
- * Pre-Ring Time to ring
- * @param $follow_me_listring_time
- * List Ring Time to ring
- * @param $follow_me_list
- * Follow Me List
- * @param $follow_me_list
- * Follow Me Confirm Setting
- *
- */
- function setFollowMeMySQL($exten, $follow_me_prering_time, $follow_me_listring_time, $follow_me_list, $follow_me_confirm) {
-
- if (isset($_SESSION['dbh_asterisk'])) {
-
- //format for SQL database
- $follow_me_confirm = ($follow_me_confirm)?'CHECKED':'';
-
- $sql = "UPDATE findmefollow SET grptime = '" . $follow_me_listring_time . "', grplist = '".
- str_replace("'", "''", trim($follow_me_list)) . "', pre_ring = '" . $follow_me_prering_time .
- "', needsconf = '" . $follow_me_confirm . "' WHERE grpnum = $exten LIMIT 1";
- $results = $_SESSION['dbh_asterisk']->query($sql);
-
- if(DB::IsError($results)) {
- $_SESSION['ari_error'] = $results->getMessage();
- }
-
- return 1;
- }
- }
-
- function lookupSetExtensionFormat($exten) {
-
- if (trim($exten) == "") return $exten;
-
- $exten = preg_replace("/[^0-9*]/", "", $exten);
-
- $sql = "SELECT extension FROM users WHERE extension = '".$exten."'";
- $asa = $_SESSION['dbh_asterisk']->getrow($sql, DB_FETCHMODE_ASSOC);
- if (!is_array($asa)) {
- return $exten.'#';
- } else {
- return $exten;
- }
- }
-
-
-} // class
-
-?>
diff --git a/fs_selfservice/fri/modules/myaccount.module b/fs_selfservice/fri/modules/myaccount.module
deleted file mode 100644
index 6b7cb839b..000000000
--- a/fs_selfservice/fri/modules/myaccount.module
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-
-/**
- * @file
- * Functions for the interface to the help page
- */
-
-/**
- * Class for help
- */
-class myaccount {
-
- /*
- * rank (for prioritizing modules)
- */
- function rank() {
-
- $rank = 9;
- return $rank;
- }
-
- /*
- * init
- */
- function init() {
- }
-
- /*
- * Adds menu item to nav menu
- *
- * @param $args
- * Common arguments
- */
- function navMenu($args) {
-
- $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=myaccount&f=display'>" . _("My Account") . "</a></small></small></p><br>";
-
- return $ret;
- }
-
- /*
- * Displays stats page
- *
- * @param $args
- * Common arguments
- */
- function display($args) {
-
- global $ARI_HELP_FEATURE_CODES;
-
- $display = new Display();
-
- // args
- $m = getArgument($args,'m');
- $q = getArgument($args,'q');
-
- $displayname = $_SESSION['ari_user']['displayname'];
- $extension = $_SESSION['ari_user']['extension'];
-
- // build page content
- $ret .= checkErrorMessage();
-
- $header_text = _("My Account");
- if (!$_SESSION['ari_user']['admin_help']) {
- $header_text .= sprintf(_(" for %s (%s)"), $displayname, $extension);
- }
-
- // build page content
- $ret .= checkErrorMessage();
-
- $ret .= $display->displayHeaderText($header_text);
- $ret .= $display->displayLine();
-
- $freeside = new FreesideSelfService();
- $fs_info = $freeside->customer_info( array(
- 'session_id' => $_SESSION['freeside_session_id'],
- ) );
- $error = $fs_info['error'];
- if ( $error ) {
- //$_SESSION['ari_error'] = _("Incorrect Username or Password");
- $_SESSION['ari_error'] = $error; #// XXX report as ari_error???!
- }
-
- $ret .= $fs_info['small_custview'];
- $ret .= '<BR>';
-
-
- $ret .= '<B><A HREF="/selfservice/selfservice.cgi?session='.
- $_SESSION['freeside_session_id'].
- ';action=change_bill">Change billing address</A></B>';
-
- $ret .= '&nbsp;&nbsp;|&nbsp;&nbsp;';
-
- $ret .= '<B><A HREF="/selfservice/selfservice.cgi?session='.
- $_SESSION['freeside_session_id'].
- ';action=change_ship">Change service address</A></B>';
-
- $ret .= '<BR><BR>';
-
- $ret .= '<B><A HREF="/selfservice/selfservice.cgi?session='.
- $_SESSION['freeside_session_id'].
- ';action=change_pay">Change payment information</A></B><BR><BR>';
-
- return $ret;
- }
-
-}
-
-?>
diff --git a/fs_selfservice/fri/modules/phonefeatures.module b/fs_selfservice/fri/modules/phonefeatures.module
deleted file mode 100644
index 89dc903bf..000000000
--- a/fs_selfservice/fri/modules/phonefeatures.module
+++ /dev/null
@@ -1,342 +0,0 @@
-<?php
-//*****************************************************************************
-class PhoneFeatures {
-//*****************************************************************************
- function rank() {
-
- $rank = 4;
- return $rank;
- }
-
-//*****************************************************************************
- function init() {
- }
-//*****************************************************************************
- function navMenu($args) {
-
- global $ARI_NO_LOGIN;
- global $SETTINGS_ALLOW_PHONE_SETTINGS;
- global $SETTINGS_ALLOW_CALLFORWARD_SETTINGS;
-
- // If we're not allowing call forwarding AND PHONE SETTINGS get out of here
- if (!$SETTINGS_ALLOW_PHONE_SETTINGS && !$SETTINGS_ALLOW_CALLFORWARD_SETTINGS) return "";
-
- $ret .= "
- <p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=PhoneFeatures&f=display'>" . _("Phone Features") . "</a></small></small></p>";
-
- return $ret;
- }
-//*****************************************************************************
- function action($args) {
-
- global $ARI_ADMIN_USERNAME;
- global $SETTINGS_ALLOW_PHONE_SETTINGS;
- global $SETTINGS_ALLOW_CALLFORWARD_SETTINGS;
-
- // args
- $m = getArgument($args,'m');
- $a = getArgument($args,'a');
- $lang_code = getArgument( $args,'lang_code');
- $exten = $_SESSION['ari_user']['extension'];
-
- if ($a=='update') {
-
- if ($SETTINGS_ALLOW_PHONE_SETTINGS) {
- if ($exten!=$ARI_ADMIN_USERNAME) {
- $this->storePhoneSetting( $args, $exten, 'call_waiting', 'CW', 'ENABLED');
- $this->storePhoneSetting( $args, $exten, 'do_not_disturb', 'DND', 'YES');
- }
- }
-
- if ($SETTINGS_ALLOW_CALLFORWARD_SETTINGS) {
- if ($exten!=$ARI_ADMIN_USERNAME) {
- $this->storeCallForwardNumber( $args, $exten, 'call_forward', 'CF');
- $this->storeCallForwardNumber( $args, $exten, 'call_forward_busy', 'CFB');
- $this->storeCallForwardNumber( $args, $exten, 'call_forward_unavailable', 'CFU');
- }
- }
- }
-
- // redirect to see updated page
- $ret .= "
- <head>
- <script>
- <!--
- window.location = \"" . $_SESSION['ARI_ROOT'] . "?m=" . $m . "\"
- // -->
- </script>
- </head>";
-
- return $ret;
- }
-//*****************************************************************************
-function display($args) {
-
- global $STANDALONE;
- global $ARI_ADMIN_USERNAME;
- global $SETTINGS_ALLOW_PHONE_SETTINGS;
- global $SETTINGS_ALLOW_CALLFORWARD_SETTINGS;
-
- // args
- $m = getArgument($args,'m');
- $a = getArgument($args,'a');
- $lang_code = getArgument( $args,'lang_code');
- $exten = $_SESSION['ari_user']['extension'];
-
- $displayname = $_SESSION['ari_user']['displayname'];
- $exten = $_SESSION['ari_user']['extension'];
-
- $display = new DisplaySearch();
-
- // build controls
- if ($exten!=$ARI_ADMIN_USERNAME) {
-
- if ($SETTINGS_ALLOW_PHONE_SETTINGS) {
- $dnd_cw_text = "<table class='settings'>";
- $dnd_cw_text.= "<tr><td><h3>" . _("Phone Features") . "</h3></td></tr>";
-
- $dnd_cw_text.= $this->displayPhoneControls( $exten, 'call_waiting', 'CW', "Call Waiting");
- $dnd_cw_text.= $this->displayPhoneControls( $exten, 'do_not_disturb', 'DND', "Do Not Disturb");
-
- $dnd_cw_text .= "</table>";
- }
-
- if ($SETTINGS_ALLOW_CALLFORWARD_SETTINGS) {
-
- $set_call_forward_text .= "<SCRIPT LANGUAGE='JavaScript'>
- <!-- Begin
- function rowCounter(field, maxlimit) {
- temp = field.value.split('\u000A',maxlimit+1)
- field.value = temp.join('\u000A')
- if (temp.length == maxlimit+1) {
- field.value = field.value.substring(0, field.value.length-1)
- }
- }
-
- function disable_fields() {
-
- if (document.ari_settings.call_forward_enable.checked) {
- document.ari_settings.call_forward_number.style.backgroundColor = '#FFF';
- document.ari_settings.call_forward_number.disabled = false;
- }
- else {
- document.ari_settings.call_forward_number.style.backgroundColor = '#DDD';
- document.ari_settings.call_forward_number.disabled = true;
- }
-
- if (document.ari_settings.call_forward_busy_enable.checked) {
- document.ari_settings.call_forward_busy_number.style.backgroundColor = '#FFF';
- document.ari_settings.call_forward_busy_number.disabled = false;
- }
- else {
- document.ari_settings.call_forward_busy_number.style.backgroundColor = '#DDD';
- document.ari_settings.call_forward_busy_number.disabled = true;
- }
-
- if (document.ari_settings.call_forward_unavailable_enable.checked) {
- document.ari_settings.call_forward_unavailable_number.style.backgroundColor = '#FFF';
- document.ari_settings.call_forward_unavailable_number.disabled = false;
- }
- else {
- document.ari_settings.call_forward_unavailable_number.style.backgroundColor = '#DDD';
- document.ari_settings.call_forward_unavailable_number.disabled = true;
- }
- }
- // End -->
- </script>";
-
- $set_call_forward_text.= "<table class='settings'>";
- $set_call_forward_text.= "<tr><td><h3>" . _("Call Forwarding") . "</h3></td></tr>";
-
- $set_call_forward_text.= $this->displayCallForwardControls( $exten, 'call_forward', 'CF', "Unconditional:");
- $set_call_forward_text.= $this->displayCallForwardControls( $exten, 'call_forward_unavailable', 'CFU', "Unavailable:");
- $set_call_forward_text.= $this->displayCallForwardControls( $exten, 'call_forward_busy', 'CFB', "Busy:");
-
- $set_call_forward_text .= "</table>";
- }
- }
-
- // build page content
- $ret .= checkErrorMessage();
-
- if ($_SESSION['ari_user']['admin_settings']) {
- $headerText = _("Phone Features");
- } else {
- $headerText = sprintf(_("Phone Features for %s (%s)"),$displayname,$exten);
- }
-
- $ret .= $display->displayHeaderText($headerText);
- $ret .= $display->displayLine();
- $ret .= "
- <form class='settings' name='ari_settings' action='' method='GET'>
- <input type=hidden name=m value=" . $m . ">
- <input type=hidden name=f value='action'>
- <input type=hidden name=a value='update'>
- <br>
- " . $dnd_cw_text . "
- <br>
- " . $set_call_forward_text . "
- <br>
- <input name='submit' type='submit' value='" . _("Update") . "'>
- </form>";
-
-return $ret;
-}
-//*****************************************************************************
- function setPhoneSetting( $databaseCallFwdType, $exten, $state_value) {
-
- global $asterisk_manager_interface;
-
- $type_opt = ($state_value != "") ? "put":"del";
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database $type_opt $databaseCallFwdType $exten $state_value\r\n\r\n");
- }
-
-//*****************************************************************************
- function getPhoneSetting($exten, $databaseCallFwdType) {
-
- global $asterisk_manager_interface;
- $number = '';
-
- $result = false;
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get $databaseCallFwdType $exten\r\n\r\n");
- if (stristr($response, 'ENABLED')) {
- $result = true;
- }
- elseif (stristr($response, 'YES')) {
- $result = true;
- }
-
- return $result;
- }
-//*****************************************************************************
- function storePhoneSetting( $args, $exten, $settingType, $databaseCallFwdType, $state_value)
- {
- $setting_enable = getArgument( $args, $settingType . '_enable');
-
- $this->setPhoneSetting( $databaseCallFwdType, $exten, ($setting_enable == 'checked')?$state_value:"");
- }
-
-//*****************************************************************************
- function displayPhoneControls( $exten, $callFwdType, $databaseCallFwdType, $title)
- {
-
- $phone_setting_enable = ($this->getPhoneSetting($exten, $databaseCallFwdType)) ? 'checked':'';
-
- $ret = "\n<tr>";
- $ret.= "<td>";
- $ret.= "<label><input " . $phone_setting_enable . " type=checkbox name='" . $callFwdType . "_enable' value='checked' >";
- $ret.= "<small>" . _($title) . "</small></label>";
- $ret.= "</td>";
- $ret.= "</tr>\n";
-
- return $ret;
- }
-//*****************************************************************************
- /*
- * Sets Asterisk call forward setting
- *
- * @param $exten
- * Extension to modify
- * @param $state
- * Call forward enable or disable
- * @param $call_forward_number
- * Call forward number
- * @param $variable_opt
- * Call forward type (CF, CFU, CFB)
- */
- function setCallForward($exten,$state,$call_forward_number, $variable_opt = "CF") {
-
- global $asterisk_manager_interface;
-
- if ($state) {
- $type_opt = "put";
- $value_opt = $call_forward_number;
- }
- else {
- $type_opt = "del";
- }
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database $type_opt $variable_opt $exten $value_opt\r\n\r\n");
- }
-
- /*
- * Gets call forward number if set
- *
- * @param $exten
- * Extension to get information about
- * @return $number
- * call forward number returned if set
- * @param $variable_opt
- * Call forward type (CF, CFU, CFB)
- */
- function getCallForwardNumber($exten, $variable_opt = "CF") {
-
- global $asterisk_manager_interface;
-
- $number = '';
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get $variable_opt $exten\r\n\r\n");
- if (is_numeric($response)) {
- $number = $response;
- }
-
- $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_call_forward_number']);
- if ($stripped==$number) {
- $number = $_COOKIE['ari_call_forward_number'];
- }
-
- return $number;
- }
-
-
- function storeCallForwardNumber( $args, $exten, $callFwdType, $databaseCallFwdType)
- {
- $call_forward_enable = getArgument($args, $callFwdType . '_enable');
- $call_forward_number = getArgument($args, $callFwdType . '_number');
-
- $stripped_call_forward_number = preg_replace('/-|\(|\)|\s/','',$call_forward_number);
-
- if ($call_forward_enable && !is_numeric($stripped_call_forward_number)) {
- $_SESSION['ari_error'] = _("Call forward number not changed") . "<br>" .
- sprintf(_("Number %s must contain dial numbers (characters like '(', '-', and ')' are ok)"), $call_forward_number);
- }
- else {
- $this->setCallForward( $exten, $call_forward_enable, $stripped_call_forward_number, $databaseCallFwdType);
-
- // store cookie
- $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_' . $callFwdType]);
- if ($call_forward_number && $stripped!=$stripped_call_forward_number) {
- setcookie('ari_' . $callFwdType, $call_forward_number, time()+365*24*60*60);
- }
- }
- }
-
- function displayCallForwardControls( $exten, $callFwdType, $databaseCallFwdType, $title)
- {
- $call_forward_number = $this->getCallForwardNumber($exten, $databaseCallFwdType);
-
- // If we have a value, we want the item checked
- if ($call_forward_number) {
- $call_forward_enable = 'checked';
- }
- else {
- $call_forward_number = $_COOKIE['ari_' . $callFwdType ];
- $call_forward_text_box_options = "disabled style='background: #DDD;'";
- }
-
- $ret = "\n<tr>";
- $ret.= "<td>" . _($title) . "</td>";
- $ret.= "<td>";
- $ret.= "<input " . $call_forward_text_box_options . " name='" . $callFwdType . "_number' type='text' size=24 value='" . $call_forward_number . "'>";
- $ret.= "</td>";
- $ret.= "<td>";
- $ret.= "<input " . $call_forward_enable . " type=checkbox name='" . $callFwdType . "_enable' value='checked' OnClick=\"disable_fields(); return true;\">";
- $ret.= "<small>" . _("Enable") . "</small>";
- $ret.= "</td>";
- $ret.= "</tr>\n";
-
- return $ret;
- }
-} // class
-?>
diff --git a/fs_selfservice/fri/modules/settings.module b/fs_selfservice/fri/modules/settings.module
deleted file mode 100644
index f20eb0253..000000000
--- a/fs_selfservice/fri/modules/settings.module
+++ /dev/null
@@ -1,813 +0,0 @@
-<?php
-
-/**
- * @file
- * Functions for the interface to the call monitor recordings
- */
-
-/**
- * Class for settings
- */
-class Settings {
-
- var $protocol_table;
- var $protocol_config_files;
-
- /*
- * rank (for prioritizing modules)
- */
- function rank() {
-
- $rank = 9;
- return $rank;
- }
-
- /*
- * init
- */
- function init() {
-
- // determine what protocol user is using
- global $ASTERISK_PROTOCOLS;
-
- foreach ($ASTERISK_PROTOCOLS as $protocol => $value) {
- $data = $this->getProtocolRecordSettings($value['table'],$_SESSION['ari_user']['extension']);
- if (count($data)) {
- $this->protocol_table = $value['table'];
- $this->protocol_config_files = $value['config_files'];
- break;
- }
- }
- }
-
- /*
- * Adds menu item to nav menu
- *
- * @param $args
- * Common arguments
- */
- function navMenu($args) {
-
- $ret = "";
- $exten = $_SESSION['ari_user']['extension'];
-
- // and we are not logged in as admin
- if ($exten!=$ARI_ADMIN_USERNAME) {
- $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=Settings&f=display'>" . _("Phone Settings") . "</a></small></small></p><br>";
- }
-
- return $ret;
- }
-
- /*
- * Acts on the user settings
- *
- * @param $args
- * Common arguments
- * @param $a
- * action
- */
- function action($args) {
-
- global $ARI_ADMIN_USERNAME;
- global $ASTERISK_VOICEMAIL_CONF;
- global $SETTINGS_ALLOW_VOICEMAIL_SETTINGS;
- global $SETTINGS_ALLOW_VOICEMAIL_PASSWORD_SET;
- global $SETTINGS_VOICEMAIL_PASSWORD_LENGTH;
- global $SETTINGS_VOICEMAIL_PASSWORD_EXACT;
- global $SETTINGS_ALLOW_CALL_RECORDING_SET;
-
- // args
- $m = getArgument($args,'m');
- $a = getArgument($args,'a');
-
- $voicemail_password = getArgument($args,'voicemail_password');
- $voicemail_password_confirm = getArgument($args,'voicemail_password_confirm');
- $voicemail_email_address = getArgument($args,'voicemail_email_address');
- $voicemail_pager_address = getArgument($args,'voicemail_pager_address');
- $voicemail_email_enable = getArgument($args,'voicemail_email_enable');
- $voicemail_audio_format = getArgument($args,'voicemail_audio_format');
- $record_in = getArgument($args,'record_in');
- $record_out = getArgument($args,'record_out');
-
- if (isset($_SESSION['ari_user']['voicemail_email'])) {
- foreach (array_keys($_SESSION['ari_user']['voicemail_email']) as $key) {
- $var = "voicemail_email_$key";
- $$var = getArgument($args,$var);
- }
- }
-
- if ($a=='update') {
-
- $exten = $_SESSION['ari_user']['extension'];
- if ($exten!=$ARI_ADMIN_USERNAME) {
-
- // Make sure Follow-Me setup has not been deleted for this user since the last refresh
- $follow_me_disabled_delayed = $_COOKIE['ari_follow_me_disabled'];
-
- // voicemail settings
- if ($SETTINGS_ALLOW_VOICEMAIL_SETTINGS && $_SESSION['ari_user']['voicemail_enabled']==1) {
-
-
- // update voicemail password
- if ($SETTINGS_ALLOW_VOICEMAIL_PASSWORD_SET) {
-
- // update voicemail password
- if ($voicemail_password=='' || $voicemail_password_confirm=='') {
- $_SESSION['ari_error'] =
- _("Voicemail password not changed") . "<br>" .
- _("Password and password confirm must not be blank");
- }
- else if ((strlen($voicemail_password)<$SETTINGS_VOICEMAIL_PASSWORD_LENGTH) || !is_numeric($voicemail_password)) {
- $_SESSION['ari_error'] =
- _("Voicemail password not changed") . "<br>" .
- sprintf(_("Passwords must be all numbers and greater than %d digits"),$SETTINGS_VOICEMAIL_PASSWORD_LENGTH);
- }
- else if (strlen($voicemail_password)!=$SETTINGS_VOICEMAIL_PASSWORD_LENGTH && $SETTINGS_VOICEMAIL_PASSWORD_EXACT || !is_numeric($voicemail_password)) {
- $_SESSION['ari_error'] =
- _("Voicemail password not changed") . "<br>" .
- sprintf(_("Passwords must be all numbers and only %d digits"),$SETTINGS_VOICEMAIL_PASSWORD_LENGTH);
- }
- else if ($voicemail_password!=$voicemail_password_confirm) {
- $_SESSION['ari_error'] =
- _("Voicemail password not changed") . "<br>" .
- _("Password and password confirm do not match");
- }
- else {
-
- // check for writable the files
- $temp_file = $ASTERISK_VOICEMAIL_CONF . ".tmp";
- $fp = fopen($temp_file, "w");
- if (!$fp) {
- $_SESSION['ari_error'] =
- _("Voicemail password not changed") . "<br>" .
- sprintf(_("%s does not exist or is not writable"),$temp_file);
- }
- else if (!is_writable($ASTERISK_VOICEMAIL_CONF)) {
- $_SESSION['ari_error'] =
- _("Voicemail password not changed") . "<br>" .
- sprintf(_("%s does not exist or is not writable"),$ASTERISK_VOICEMAIL_CONF);
- }
- else {
-
- // update session
- $_SESSION['ari_user']['voicemail_password'] = $voicemail_password;
-
- // save password
- $lines = file($ASTERISK_VOICEMAIL_CONF);
- foreach ($lines as $key => $line) {
- unset($value);
- list($var,$value) = split('=>',$line);
- $var = trim($var);
- if ($var==$exten && $value) {
-
- // write out line with password change
- $buf = split(',',$value);
- $buf[0] = $voicemail_password;
- $line = $var . " => " . join(',', $buf);
-
- fwrite($fp, $line);
- }
- else {
- // write out original line with no changes
- fwrite($fp, $line);
- }
- }
- fclose($fp);
- unlink($ASTERISK_VOICEMAIL_CONF);
- rename($temp_file,$ASTERISK_VOICEMAIL_CONF);
-
- $voicemail_reload = 1;
- }
- }
-
- // voicemail email address
- if ($voicemail_email_enable &&
- ($voicemail_email_address && !preg_match('/@/',$voicemail_email_address) ||
- ($voicemail_pager_address && !preg_match('/@/',$voicemail_pager_address)))) {
- $_SESSION['ari_error'] =
- _("Voicemail email and pager address not changed") . "<br>" .
- ("'$voicemail_email_address' and '$voicemail_pager_address' must be a valid email addresses");
- }
- else {
-
- // check for writable the files
- $temp_file = $ASTERISK_VOICEMAIL_CONF . ".tmp";
- $fp = fopen($temp_file, "w");
- if (!$fp) {
- $_SESSION['ari_error'] =
- _("Voicemail email settings not changed") . "<br>" .
- sprintf(_("%s does not exist or is not writable"),$temp_file);
- }
- else if (!is_writable($ASTERISK_VOICEMAIL_CONF)) {
- $_SESSION['ari_error'] =
- _("Voicemail email settings not changed") . "<br>" .
- sprintf(_("%s does not exist or is not writable"),$ASTERISK_VOICEMAIL_CONF);
- }
- else {
-
- // store cookie
- if ($voicemail_email_enable) {
- setcookie("ari_voicemail_email_address", $voicemail_email_address, time()+365*24*60*60);
- setcookie("ari_voicemail_pager_address", $voicemail_pager_address, time()+365*24*60*60);
- foreach (array_keys($_SESSION['ari_user']['voicemail_email']) as $key) {
- $var = "voicemail_email_$key";
- $var_cookie = "ari_" . $var;
- setcookie("$var_cookie", $$var, time()+365*24*60*60);
- }
- }
-
- // update session
- $_SESSION['ari_user']['voicemail_email_enable'] = $voicemail_email_enable;
- if ($voicemail_email_enable) {
- $_SESSION['ari_user']['voicemail_email_address'] = $voicemail_email_address;
- $_SESSION['ari_user']['voicemail_pager_address'] = $voicemail_pager_address;
- foreach (array_keys($_SESSION['ari_user']['voicemail_email']) as $key) {
- $option = "voicemail_email_$key";
- $_SESSION['ari_user']['voicemail_email'][$key] = $$option;
- }
- }
-
- // save settings
- if (!$voicemail_email_enable) {
- $voicemail_email_address = '';
- $voicemail_pager_address = '';
- }
-
- $lines = file($ASTERISK_VOICEMAIL_CONF);
- foreach ($lines as $key => $line) {
- unset($value);
- list($var,$value) = split('=>',$line);
- $var = trim($var);
- if ($var==$exten && $value) {
-
- // write out line with voicemail email change
- $buf = split(',',$value);
- $buf[2] = $voicemail_email_address;
- $buf[3] = $voicemail_pager_address;
-
- foreach ($_SESSION['ari_user']['voicemail_email'] as $key => $value) {
- $option = "voicemail_email_$key";
- if ($$option && $key) {
- $options .= $key . "=" . $value;
- }
- else {
- $options .= $key . "=no";
- }
- $options .= "|";
- }
- $buf[4] = substr($options, 0, -1);
-
- $line = $var . " =>" . join(',', $buf);
- if (substr($line, 0, -1)!="\n") {
- $line .= "\n";
- }
-
- fwrite($fp, $line);
- }
- else {
-
- // write out original line with no changes
- fwrite($fp, $line);
- }
- }
- fclose($fp);
- unlink($ASTERISK_VOICEMAIL_CONF);
- rename($temp_file,$ASTERISK_VOICEMAIL_CONF);
-
- $voicemail_reload = 1;
- }
- }
-
- // reload asterisk voicemail
- if ($voicemail_reload) {
- $this->reloadAsteriskVoicemail();
- }
- }
-
- // update voicemail audio format setting
- setcookie("ari_voicemail_audio_format", $voicemail_audio_format, time()+365*24*60*60);
- }
-
- // update call monitor record setting
- if ($SETTINGS_ALLOW_CALL_RECORDING_SET) {
- if ($record_in && $record_out) {
- $this->setRecordSettings($exten,$record_in,$record_out);
- }
- }
- }
- }
-
- // redirect to see updated page
- $ret .= "
- <head>
- <script>
- <!--
- window.location = \"" . $_SESSION['ARI_ROOT'] . "?m=" . $m . "\"
- // -->
- </script>
- </head>";
-
- return $ret;
- }
-
- /*
- * Displays stats page
- *
- * @param $args
- * Common arguments
- */
- function display($args) {
- global $SETTINGS_ALLOW_VOICEMAIL_SETTINGS;
- global $SETTINGS_ALLOW_VOICEMAIL_PASSWORD_SET;
- global $SETTINGS_VOICEMAIL_PASSWORD_LENGTH;
- global $SETTINGS_VOICEMAIL_EMAIL_OPTION_DESCRIPTIONS;
- global $ARI_VOICEMAIL_AUDIO_FORMAT_DEFAULT;
- global $SETTINGS_ALLOW_CALL_RECORDING_SET;
-
- global $loaded_modules;
-
- // args
- $m = getArgument($args,'m');
- $q = getArgument($args,'q');
- $start = getArgument($args,'start');
- $span = getArgument($args,'span');
-
- $displayname = $_SESSION['ari_user']['displayname'];
- $exten = $_SESSION['ari_user']['extension'];
-
- $language = new Language();
- $display = new DisplaySearch();
-
- // get data
- $data = $this->getRecordSettings($_SESSION['ari_user']['extension']);
-
- // lang setting options
- if (extension_loaded('gettext')) {
- $setLangText = "<p class='lang'>" . _("Language:") . " " . $language->GetForm() . "</p>";
- }
-
-
- // voicemail settings
- if ($SETTINGS_ALLOW_VOICEMAIL_SETTINGS && $_SESSION['ari_user']['voicemail_enabled']==1 &&
- in_array('voicemail',array_keys($loaded_modules))) {
- if ($SETTINGS_ALLOW_VOICEMAIL_PASSWORD_SET) {
-
- if ($SETTINGS_VOICEMAIL_PASSWORD_EXACT) {
- $voicemail_password_length_message = sprintf(_("Passwords must be all numbers and only %s digits"),$SETTINGS_VOICEMAIL_PASSWORD_LENGTH);
- }
- else {
- $voicemail_password_length_message = sprintf(_("Passwords must be all numbers and at least %s digits"),$SETTINGS_VOICEMAIL_PASSWORD_LENGTH);
- }
-
- $set_voicemail_password_text = "
- <tr>
- <td>" . _("Voicemail Password:") . "</td>
- <td>
- <input name='voicemail_password' type='password' size=16 value=" . $_SESSION['ari_user']['voicemail_password'] . ">
- </td>
- </tr>
- <tr>
- <td>" . _("Enter again to confirm:") . "</td>
- <td>
- <input name='voicemail_password_confirm' type='password' size=16 value=" . $_SESSION['ari_user']['voicemail_password'] . ">
- </td>
- </tr>
- <tr>
- <td class='note' colspan=2><small>" . $voicemail_password_length_message . "</small></td>
- </tr>";
- }
-
- if (isset($_SESSION['ari_user']['voicemail_email'])) {
-
- if ($_SESSION['ari_user']['voicemail_email_enable']) {
- $voicemail_email_address = $_SESSION['ari_user']['voicemail_email_address'];
- $voicemail_pager_address = $_SESSION['ari_user']['voicemail_pager_address'];
- $voicemail_email_enable = 'checked';
-
- foreach (array_keys($_SESSION['ari_user']['voicemail_email']) as $key) {
- $var = "voicemail_email_$key";
- $var_enable = $var . "enable";
- if ($_SESSION['ari_user']['voicemail_email'][$key]=='yes') {
- $$var_enable = 'checked';
- }
- }
- }
- else {
-
- $voicemail_email_address = $_COOKIE['ari_voicemail_email_address'];
- $voicemail_email_text_box_options = "disabled style='background: #DDD;'";
- $voicemail_pager_address = $_COOKIE['ari_voicemail_pager_address'];
- $voicemail_pager_text_box_options = "disabled style='background: #DDD;'";
-
- foreach ($_SESSION['ari_user']['voicemail_email'] as $key => $value) {
- $var = "voicemail_email_$key";
- $var_cookie = "ari_" . $var;
- $var_enable = $var . "enable";
- $var_text_box_options = $var . "text_box_options";
-
- $$var_text_box_options = "disabled";
- if ($_COOKIE[$var_cookie]=='yes') {
- $$var_enable = 'checked';
- }
- }
- }
-
- $set_voicemail_email_text = "
-
- <tr>
- <td> " . _("Email Notification") . " <input " . $voicemail_email_enable . " type=checkbox name='voicemail_email_enable' value='1' OnClick=\"disable_fields(); return true;\">
- <small> " ._("Enable") . " </small>
- </td>
- </tr><tr>
- <td><a href='#' class='info'>" . _("Email Voicemail To:") . "<span>" . ("Email a notification, including audio file if indicated below.") . " </span></a></td>
- <td>
- <input " . $voicemail_email_text_box_options . " name='voicemail_email_address' type='text' size=48 value='" . $voicemail_email_address . "'>
- </td>
- </tr>
- <tr>
- <td><a href='#' class='info'>" . _("Pager Email Notification To:") . "<span>" . ("Email a short notification") . " </span></a></td>
- <td>
- <input " . $voicemail_pager_text_box_options . " name='voicemail_pager_address' type='text' size=48 value='" . $voicemail_pager_address . "'>
- </td>
- </tr>
- <tr>
- <td></td>
- </tr>";
-
- foreach ($_SESSION['ari_user']['voicemail_email'] as $key => $value) {
-
- $var = "voicemail_email_$key";
- $var_enable = $var . "enable";
- $var_text_box_options = $var . "text_box_options";
- if ($SETTINGS_VOICEMAIL_EMAIL_OPTION_DESCRIPTIONS[$key]) {
- $var_text = $SETTINGS_VOICEMAIL_EMAIL_OPTION_DESCRIPTIONS[$key];
- }
- else {
- $var_text = $key;
- }
-
- if ($value != 'yes' && $value != 'no' && $value !='') {
-
- $size = strlen($value) - 1;
- $set_voicemail_email_text .= "
- <tr>
- <td></td>
- <td>
- <input type=text size='" . $size . "' name='" . $var . "' value='" . $value . "' OnClick=\"disable_fields(); return true;\">
- <small>" . $var_text . "</small>
- </td>
- </tr>";
- }
- else {
-
- $set_voicemail_email_text .= "
- <tr>
- <td></td>
- <td>
- <input " . $$var_enable . " " . $$var_text_box_options . " type=checkbox name='" . $var . "' value='yes' OnClick=\"disable_fields(); return true;\">
- <small>" . $var_text . "</small>
- </td>
- </tr>";
- }
- }
- }
-
- $wav_enable = 'selected';
- if ($_COOKIE['ari_voicemail_audio_format']=='.gsm'||
- ($_COOKIE['ari_voicemail_audio_format']=='' && $ARI_VOICEMAIL_AUDIO_FORMAT_DEFAULT='.gsm')) {
- $wav_enable = '';
- $gsm_enable = 'selected';
- }
-
- $set_voicemail_audio_format_text = "
- <tr>
- <td>" . _("Audio Format:") . "</td>
- <td>
- <select name='voicemail_audio_format'>
- <option value='.wav' " . $wav_enable . ">" . _("Best Quality") . " (.wav)</option>
- <option value='.gsm' " . $gsm_enable . ">" . _("Smallest Download") . " (.gsm)</option>
- </select>
- </td>
- </tr>";
-
- $set_voicemail_text = "
- <table class='settings'>
- <tr>
- <td><h3>" . _("Voicemail Settings") . "</h3></td>
- </tr>
- " . $set_voicemail_password_text . "
- " . $set_voicemail_email_text . "
- " . $set_voicemail_audio_format_text . "
- </table>";
- }
-
- // call monitor settings
- if ($this->getFreePBXVersion() &&
- $SETTINGS_ALLOW_CALL_RECORDING_SET &&
- in_array('callmonitor',array_keys($loaded_modules))) {
-
- foreach($data as $key=>$value) {
- if ($key=='record_in') {
- if ($value=='Always') {
- $ri_always = 'checked=checked';
- }
- elseif ($value=='Never') {
- $ri_never = 'checked=checked';
- }
- elseif ($value=='Adhoc') {
- $ri_on_demand = 'checked=checked';
- }
- }
- if ($key=='record_out') {
- if ($value=='Always') {
- $ro_always = 'checked=checked';
- }
- elseif ($value=='Never') {
- $ro_never = 'checked=checked';
- }
- elseif ($value=='Adhoc') {
- $ro_on_demand = 'checked=checked';
- }
- }
- }
-
- $set_callmonitor_text = "
- <table class='settings'>
- <tr>
- <td><h3>" . _("Call Monitor Settings") . "</h3></td>
- </tr>
- <tr>
- <td>" . _("Record INCOMING:") . " </td>
- <td>
- <input type='radio' name='record_in' value='Always' " . $ri_always . "/> " . _("Always") . "
- <input type='radio' name='record_in' value='Never' " . $ri_never . "/> " . _("Never") . "
- <input type='radio' name='record_in' value='Adhoc' " . $ri_on_demand . "/> " . _("On-Demand") . "
- </td>
- </tr>
- <tr>
- <td>" . _("Record OUTGOING:") . " </td>
- <td>
- <input type='radio' name='record_out' value='Always' " . $ro_always . "/> " . _("Always") . "
- <input type='radio' name='record_out' value='Never' " . $ro_never . "/> " . _("Never") . "
- <input type='radio' name='record_out' value='Adhoc' " . $ro_on_demand . "/> " . _("On-Demand") . "
- </td>
- </tr>
- </table>";
- }
-
- // javascript enable options
- if (isset($_SESSION['ari_user']['voicemail_email']) &&
- in_array('voicemail',array_keys($loaded_modules))) {
- foreach ($_SESSION['ari_user']['voicemail_email'] as $key => $value) {
- $var = "voicemail_email_$key";
- $js_voicemail_email_disable .= "
- document.ari_settings.$var.disabled = false;";
- $js_voicemail_email_enable .= "
- document.ari_settings.$var.disabled = true;";
- }
-
- $js_voicemail_script = "
- if (document.ari_settings.voicemail_email_enable.checked) {
- document.ari_settings.voicemail_email_address.style.backgroundColor = '#FFF';
- document.ari_settings.voicemail_email_address.disabled = false;
- document.ari_settings.voicemail_email_address.value='" . $voicemail_email_address . "';
- document.ari_settings.voicemail_pager_address.style.backgroundColor = '#FFF';
- document.ari_settings.voicemail_pager_address.disabled = false;
- document.ari_settings.voicemail_pager_address.value='" . $voicemail_pager_address . "';
- " . $js_voicemail_email_disable . "
- }
- else {
- document.ari_settings.voicemail_email_address.style.backgroundColor = '#DDD';
- document.ari_settings.voicemail_email_address.disabled = true;
- document.ari_settings.voicemail_pager_address.style.backgroundColor = '#DDD';
- document.ari_settings.voicemail_pager_address.disabled = true;
- " . $js_voicemail_email_enable . "
- }";
- }
-
- // build page content
- $ret .= checkErrorMessage();
-
- $headerText = sprintf(_("Phone Settings for %s (%s)"),$displayname,$exten);
-
- $ret .= $display->displayHeaderText($headerText);
- $ret .= $display->displayLine();
-
- $ret .= "
- <SCRIPT LANGUAGE='JavaScript'>
- <!-- Begin
- function rowCounter(field, maxlimit) {
- temp = field.value.split('\u000A',maxlimit+1)
- field.value = temp.join('\u000A')
- if (temp.length == maxlimit+1) {
- field.value = field.value.substring(0, field.value.length-1)
- }
- }
-
- function disable_fields() {";
- $ret .= $js_voicemail_script . "
- }
- // End -->
- </script>";
-
- $ret .= "
- " . $setLangText . "
- <form class='settings' name='ari_settings' action='' method='GET'>
- <input type=hidden name=m value=" . $m . ">
- <input type=hidden name=f value='action'>
- <input type=hidden name=a value='update'>
- <br>
- " . $set_voicemail_text . "
- <br>
- " . $set_callmonitor_text . "
- <br>
- <input name='submit' type='submit' value='" . _("Update") . "'>
- </form>";
-
- return $ret;
- }
-
-
-
-
-
-
- /*
- * Sets Asterisk call recording setting
- *
- * @param $exten
- * Extension to modify
- * @param $direction
- * Call direction
- * @param $state
- * State to set to
- */
- function setRecordSettings($exten,$state_in,$state_out) {
-
- global $asterisk_manager_interface;
-
- if (version_compare($this->getFreePBXVersion(), '1.10', '<')) {
-
- if ($state_in=="Always") {
- $type_opt = "put";
- $value_opt = " " . "ENABLED";
- }
- elseif ($state_in=="Never") {
- $type_opt = "put";
- $value_opt = " " . "DISABLED";
- }
- else {
- $type_opt = "del";
- $value_opt = "";
- }
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database $type_opt RECORD-IN $exten $value_opt\r\n\r\n");
-
- if ($state_out=="Always") {
- $type_opt = "put";
- $value_opt = " " . "ENABLED";
- }
- elseif ($state_out=="Never") {
- $type_opt = "put";
- $value_opt = " " . "DISABLED";
- }
- else {
- $type_opt = "del";
- $value_opt = "";
- }
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database $type_opt RECORD-OUT $exten $value_opt\r\n\r\n");
- }
- else {
-
- $value_opt= "out=".$state_out."|in=".$state_in;
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/recording $value_opt\r\n\r\n");
- }
- }
-
- /*
- * Gets record settings for a protocol
- *
- * @param $table
- * Table to pull information from
- * @param $exten
- * Extension to get information about
- * @return $data
- * call monitor record settings
- */
- function getProtocolRecordSettings($table,$exten) {
-
- global $asterisk_manager_interface;
-
- $data = array();
-
- if (version_compare($this->getFreePBXVersion(), '1.10', '<')) {
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get RECORD-IN $exten\r\n\r\n");
- if (preg_match("/ENABLED/",$response)) {
- $data['record_in'] = 'Always';
- }
- elseif (preg_match("/DISABLED/",$response)) {
- $data['record_in'] = 'Never';
- }
- else {
- $data['record_in'] = 'Adhoc';
- }
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get RECORD-OUT $exten\r\n\r\n");
- if (preg_match("/ENABLED/",$response)) {
- $data['record_out'] = 'Always';
- }
- elseif (preg_match("/DISABLED/",$response)) {
- $data['record_out'] = 'Never';
- }
- else {
- $data['record_out'] = 'Adhoc';
- }
- }
- else {
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/recording\r\n\r\n");
- if (strstr($response,"in=Always")) {
- $data['record_in'] = 'Always';
- }
- elseif (strstr($response,"in=Never")) {
- $data['record_in'] = 'Never';
- }
- else {
- $data['record_in'] = 'Adhoc';
- }
- if (strstr($response,"out=Always")) {
- $data['record_out'] = 'Always';
- }
- elseif (strstr($response,"out=Never")) {
- $data['record_out'] = 'Never';
- }
- else {
- $data['record_out'] = 'Adhoc';
- }
- }
-
- return $data;
- }
-
- /*
- * Gets record settings
- *
- * @param $exten
- * Extension to get information about
- * @param $data
- * Reference to the variable to store the data in
- */
- function getRecordSettings($exten) {
-
- // check protocol tables first
- $data = $this->getProtocolRecordSettings($this->protocol_table,$exten);
-
- return $data;
- }
-
- /*
- * Reloads Asterisk Configuration
- */
- function reloadAsteriskVoicemail() {
-
- global $asterisk_manager_interface;
-
- $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: Reload app_voicemail.so\r\n\r\n");
- }
-
- /*
- * Gets FreePBX Version
- */
- function getFreePBXVersion() {
-
- if (isset($_SESSION['dbh_asterisk'])) {
- $sql = "SELECT * FROM admin WHERE variable = 'version'";
- $results = $_SESSION['dbh_asterisk']->getAll($sql);
- if(DB::IsError($results)) {
- $_SESSION['ari_error'] = $results->getMessage();
- }
-
- return $results[0][1];
- }
- }
-
- function lookupSetExtensionFormat($exten) {
-
- if (trim($exten) == "") return $exten;
-
- $exten = preg_replace("/[^0-9*]/", "", $exten);
-
- $sql = "SELECT extension FROM users WHERE extension = '".$exten."'";
- $asa = $_SESSION['dbh_asterisk']->getrow($sql, DB_FETCHMODE_ASSOC);
- if (!is_array($asa)) {
- return $exten.'#';
- } else {
- return $exten;
- }
- }
-
-
-} // class
-
-?>
diff --git a/fs_selfservice/fri/modules/voicemail.module b/fs_selfservice/fri/modules/voicemail.module
deleted file mode 100644
index aad14564f..000000000
--- a/fs_selfservice/fri/modules/voicemail.module
+++ /dev/null
@@ -1,805 +0,0 @@
-<?php
-
-/**
- * @file
- * Functions for the interface to the voicemail recordings
- */
-
-/**
- * Class for voicemail
- */
-class Voicemail {
-
- /*
- * rank (for prioritizing modules)
- */
- function rank() {
-
- $rank = 1;
- return $rank;
- }
-
- /*
- * init
- */
- function init() {
- }
-
- /*
- * Adds menu item to nav menu
- *
- * @param $args
- * Common arguments
- */
- function navMenu($args) {
-
- global $ARI_NO_LOGIN;
-
- // check logout
- if ($_SESSION['ari_user'] && !$ARI_NO_LOGIN) {
- $logout = 1;
- }
-
- if ($logout!='') {
- $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=Voicemail&f=display'>" . _("Voicemail") . "</a></small></small></p>";
- }
-
- return $ret;
- }
-
- /*
- * Deletes selected voicemails and updates page
- *
- * @param $args
- * Common arguments
- */
- function navSubMenu($args) {
-
- global $ASTERISK_VOICEMAIL_PATH;
- global $ASTERISK_VOICEMAIL_FOLDERS;
-
- // args
- $m = getArgument($args,'m');
- $q = getArgument($args,'q');
- $current_folder = getArgument($args,'folder');
-
- $context = $_SESSION['ari_user']['context'];
- $extension = $_SESSION['ari_user']['extension'];
-
- // check for voicemail enabled or admin
- if ($_SESSION['ari_user']['voicemail_enabled']!=1 ||
- $extension=='admin') {
- return;
- }
-
- // make folder list
- $paths = split(';',$ASTERISK_VOICEMAIL_PATH);
- $i = 0;
- while ($ASTERISK_VOICEMAIL_FOLDERS[$i]) {
-
- $f = $ASTERISK_VOICEMAIL_FOLDERS[$i]['folder'];
- $fn = $ASTERISK_VOICEMAIL_FOLDERS[$i]['name'];
-
- foreach($paths as $key => $path) {
-
- $path = appendPath($path,$context);
- $path = appendPath($path,$extension);
-
- if (is_dir($path) && is_readable($path)) {
- $dh = opendir($path);
- while (false!== ($folder = readdir($dh))) {
-
- $folder_path = AppendPath($path,$folder);
-
- if($folder!="." && $folder!=".." &&
- filetype($folder_path)=='dir') {
-
- if ($f==$folder) {
-
- // get message count
- $indexes = $this->getVoicemailIndex($folder_path,$q,$order,$sort);
- $record_count = 0;
- $record_count += $this->getVoicemailCount($indexes);
-
- // set current folder color
- $class='';
- if ($current_folder==$folder ||
- ($current_folder=='' && $ASTERISK_VOICEMAIL_FOLDERS[0]['folder']==$folder)) {
- $class = "class='current'";
- }
-
- // add folder to list
- $ret .= "<p><small><small>
- <a " . $class . " href='" . $_SESSION['ARI_ROOT'] . "?m=Voicemail&q=" . $q . "&folder=" . $f. "'>
- " . $fn . " (" . $record_count . ")" . "
- </a>
- </small></small></p>";
- }
- }
- }
- }
- }
- $i++;
- }
-
- return $ret;
- }
-
- /*
- * Acts on the selected voicemails in the method indicated by the action and updates page
- *
- * @param $args
- * Common arguments
- */
- function msgAction($args) {
-
- global $ASTERISK_VOICEMAIL_FOLDERS;
-
- // args
- $m = getArgument($args,'m');
- $a = getArgument($args,'a');
- $folder = getArgument($args,'folder');
- $q = getArgument($args,'q');
- $start = getArgument($args,'start');
- $span = getArgument($args,'span');
- $order = getArgument($args,'order');
- $sort = getArgument($args,'sort');
-
- // get files
- $files = array();
- foreach($_REQUEST as $key => $value) {
- if (preg_match('/selected/',$key)) {
- array_push($files, $value);
- }
- }
-
- if ($a=='delete') {
- $this->deleteVoicemailData($files);
- }
- else if ($a=='move_to') {
- $folder_rx = getArgument($args,'folder_rx');
- if ($folder_rx=='') {
- $_SESSION['ari_error']
- = _("A folder must be selected before the message can be moved.");
- }
- else {
- $context = $_SESSION['ari_user']['context'];
- $extension = $_SESSION['ari_user']['extension'];
- $this->moveVoicemailData($files, $context, $extension, $folder_rx);
- }
- }
- else if ($a=='forward_to') {
-
- $mailbox_rx = getArgument($args,'mailbox_rx');
- list($context_rx,$extension_rx) = split('/',$mailbox_rx);
- if ($extension_rx=='') {
- $_SESSION['ari_error']
- = _("An extension must be selected before the message can be forwarded.");
- }
- else {
- $folder_rx = $ASTERISK_VOICEMAIL_FOLDERS[0]['folder'];
- $this->moveVoicemailData($files, $context_rx, $extension_rx, $folder_rx);
- }
- }
-
- // redirect to see updated page
- $ret .= "
- <head>
- <script>
- <!--
- window.location = \"" . $_SESSION['ARI_ROOT'] . "?m=" . $m . "&folder=" . $folder . "&q=" . $q . "&start=" . $start . "&span=" . $span . "&order=" . $order . "&sort=" . $sort . "\"
- // -->
- </script>
- </head>";
-
- return $ret;
- }
-
- /*
- * Displays stats page
- *
- * @param $args
- * Common arguments
- */
- function display($args) {
-
- global $ASTERISK_VOICEMAIL_CONF;
- global $ASTERISK_VOICEMAIL_PATH;
- global $ASTERISK_VOICEMAIL_FOLDERS;
- global $AJAX_PAGE_REFRESH_ENABLE;
-
- $voicemail_audio_format = $_COOKIE['ari_voicemail_audio_format'];
-
- $display = new DisplaySearch();
-
- // args
- $m = getArgument($args,'m');
- $f = getArgument($args,'f');
- $q = getArgument($args,'q');
- $start = getArgument($args,'start');
- $span = getArgument($args,'span');
- $order = getArgument($args,'order');
- $sort = getArgument($args,'sort');
-
- $start = $start=='' ? 0 : $start;
- $span = $span=='' ? 15 : $span;
- $order = $order=='' ? 'calldate' : $order;
- $sort = $sort=='' ? 'desc' : $sort;
-
- $paths = split(';',$ASTERISK_VOICEMAIL_PATH);
-
- $displayname = $_SESSION['ari_user']['displayname'];
- $extension = $_SESSION['ari_user']['extension'];
- $context = $_SESSION['ari_user']['context'];
- $folder = getArgument($args,'folder');
- if (!$folder) {
- $folder = $ASTERISK_VOICEMAIL_FOLDERS[0]['folder'];
- }
-
- // get data
- $data = array();
- foreach($paths as $key => $path) {
- $path = fixPathSlash($path);
- $vm_path = $path . "$context/$extension/$folder";
- $indexes = $this->getVoicemailIndex($vm_path,$q,$order,$sort);
- $record_count += $this->getVoicemailCount($indexes);
- $data = array_merge($data,$this->getVoicemailData($indexes,$start,$span));
- }
-
- // build controls
-
- // get the recordings from the asterisk server
- $filter = '';
- $recursiveMax = 1;
- $recursiveCount = 0;
- $files = array();
- foreach($paths as $key => $path) {
- $path_files = GetFiles($path,$filter,$recursiveMax,$recursiveCount);
- $files = array_merge($files,$path_files);
- }
-
- // move options
- $i=0;
- while ($ASTERISK_VOICEMAIL_FOLDERS[$i]) {
- $cf = $ASTERISK_VOICEMAIL_FOLDERS[$i]['folder'];
- $fn = $ASTERISK_VOICEMAIL_FOLDERS[$i]['name'];
- if ($cf!=$folder) {
- $move_options .= "<option VALUE='" . $cf . "'>&nbsp;&nbsp;&nbsp;&nbsp;" . $fn;
- }
- $i++;
- }
-
- // forward options
- if (is_readable($ASTERISK_VOICEMAIL_CONF)) {
- $lines = file($ASTERISK_VOICEMAIL_CONF);
- $ext_array = array();
- foreach ($lines as $key => $line) {
-
- // get context for forward to mailbox
- if (preg_match("/\[.*\]/i",$line)) {
- $forwardContext = trim(preg_replace('/\[|\]/', '', $line));
- }
-
- // get username and add to options
- if (preg_match("/\=\>/i",$line)) {
- list($username,$value) = split('=>',$line);
- $username = trim($username);
- if ($username!=$_SESSION['ari_user']['extension']) {
- //$ext_array[] = $username . "|" . $forwardContext;
- list(,$real_name,) = split(",",$value,3);
- $ext_array[] = $real_name . "|" . $username . "|" . $forwardContext;
- }
- }
- } //foreach
- //sort the array
- sort($ext_array);
-
- //get the size of the array
- $array_size = count($ext_array) - 1;
-
- //loop through the array and build the drop down list
- foreach ($ext_array as $item)
- {
- //split the values apart
- list($real_name,$username,$context) = explode("|",$item);
-
- //add it to the drop down
- $forward_options .= "<option VALUE='" . $context . "/" . $username . "'>" . substr($real_name,0,15) . " <" . $username . ">";
- }
- }
- else {
- $_SESSION['ari_error'] = "File not readable: " . $ASTERISK_VOICEMAIL_CONF;
- return;
- }
-
- // table controls
- $controls = "
- <button class='infobar' type='submit' onclick=\"document.voicemail_form.a.value='delete'\">
- " . _("delete") . "
- </button>
- <button class='infobar' type='submit' onclick=\"document.voicemail_form.a.value='move_to'\">
- " . _("move_to") . "
- </button>
- <select name='folder_rx' style='width:124px;'>
- <option VALUE=''>" . _("Folder") . "
- " . $move_options . "
- </select>
- <button class='infobar' type='submit' onclick=\"document.voicemail_form.a.value='forward_to'\">
- " . _("forward_to") . "
- </button>
- <select name='mailbox_rx'>
- <option VALUE=''>
- " . $forward_options . "
- </select>";
-
- // table header
- $recording_delete_header = "<th></th>";
-
- $fields[0]['field'] = "calldate";
- $fields[0]['text'] = _("Date");
- $fields[1]['field'] = "calldate";
- $fields[1]['text'] = _("Time");
- $fields[2]['field'] = "clid";
- $fields[2]['text'] = _("Caller ID");
- $fields[3]['field'] = "priority";
- $fields[3]['text'] = _("Priority");
- $fields[4]['field'] = "origmailbox";
- $fields[4]['text'] = _("Orig Mailbox");
- $fields[5]['field'] = "duration";
- $fields[5]['text'] = _("Duration");
- $i = 0;
- while ($fields[$i]) {
-
- $field = $fields[$i]['field'];
- $text = $fields[$i]['text'];
- if ($order==$field) {
- if ($sort=='asc') {
- $currentSort = 'desc';
- $arrowImg = "<img src='theme/images/arrow-asc.gif' alt='sort'>";
- }
- else {
- $currentSort = 'asc';
- $arrowImg = "<img src='theme/images/arrow-desc.gif' alt='sort'>";
- }
-
- if ($i==1) {
- $arrowImg = '';
- }
- }
- else {
- $arrowImg = '';
- $currentSort = 'desc';
- }
-
- $unicode_q = urlencode($q);
- $recording_header .= "<th><a href=" . $_SESSION['ARI_ROOT'] . "?m=" . $m . "&f=" . $f . "&q=" . $unicode_q . "&order=" . $field . "&sort=" . $currentSort . ">" . $text . $arrowImg . "</a></th>";
-
- $i++;
- }
- $recording_header .= "<th>" . _("Message") . "</th>";
-
- // table body
- if (isset($data)) {
- foreach($data as $file=>$value) {
-
- // recording popup link
- $voicemail_audio_format = $voicemail_audio_format=='' ? '.wav' : $voicemail_audio_format;
- $recording = preg_replace('/.txt/', $voicemail_audio_format, $file);
- if (is_file($recording)) {
- $recordingLink = "<a href='#' onClick=\"javascript:popUp('misc/recording_popup.php?recording=" . $recording . "&date=" . $date . "&time=" . $time . "'); return false;\">
- " . _("play") . "
- </a>";
- }
- else {
- $_SESSION['ari_error'] = _("Voicemail recording(s) was not found.") . "<br>" .
- sprintf(_("On settings page, change voicemail audio format. It is currently set to %s"),$voicemail_audio_format);
- }
-
- $tableText .= "
- <tr>
- <td class='checkbox'><input type=checkbox name='selected" . ++$i . "' value=" . $file . "></td>
- <td width=68>" . GetDateFormat($value['origtime']) . "</td>
- <td>" . GetTimeFormat($value['origtime']) . "</td>
- <td width=100>" . $value[callerid] . "</td>
- <td>" . $value[priority] . "</td>
- <td width=90>" . $value[origmailbox] . "</td>
- <td>" . $value[duration] . " sec</td>
- <td>" . $recordingLink . "</td>
- </tr>";
- }
- }
-
- // options
- $url_opts = array();
- $url_opts['folder'] = $folder;
- $url_opts['sort'] = $sort;
- $url_opts['order'] = $order;
-
- $error = 0;
-
- // check for voicemail enabled
- if ($_SESSION['ari_user']['voicemail_enabled']!=1) {
- $_SESSION['ari_error'] = _("Voicemail Login not found.") . "<br>" .
- _("No access to voicemail");
- $error = 1;
- }
-
- // check admin
- if ($extension=='admin') {
- $_SESSION['ari_error'] = _("No Voicemail Recordings for Admin");
- $error = 1;
- }
-
- // build page content
- $ret .= checkErrorMessage();
- if ($error) {
- return $ret;
- }
-
- // ajax page refresh script
- if ($AJAX_PAGE_REFRESH_ENABLE) {
-// $ret .= ajaxRefreshScript($args);
- }
-
- // header
- $ret .= $display->displayHeaderText(sprintf(_("Voicemail for %s (%s)"),$displayname,$extension));
- $ret .= $display->displaySearchBlock('left',$m,$q,$url_opts,true);
-
- // start form
- $ret .= "
- <form name='voicemail_form' action='" . $_SESSION['ARI_ROOT'] . "' method='GET'>
- <input type=hidden name=m value=" . $m . ">
- <input type=hidden name=f value=msgAction>
- <input type=hidden name=a value=''>
- <input type=hidden name=q value=" . $q . ">
- <input type=hidden name=folder value=" . $folder . ">
- <input type=hidden name=start value=" . $start . ">
- <input type=hidden name=span value=" . $span . ">
- <input type=hidden name=order value=" . $order . ">
- <input type=hidden name=sort value=" . $sort . ">";
-
- $ret .= $display->displayInfoBarBlock($controls,$q,$start,$span,$record_count);
-
- // add javascript for popup and message actions
- $ret .= "
- <SCRIPT LANGUAGE='JavaScript'>
- <!-- Begin
- function popUp(URL) {
- popup = window.open(URL, 'play', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=324,height=110');
- }
-
- function checkAll(form,set) {
- var elem = 0;
- var i = 0;
- while (elem = form.elements[i]) {
- if (set) {
- elem.checked = true;
- } else {
- elem.checked = false;
- }
- i++;
- }
- return true;
- }
- // End -->
- </script>";
-
- // voicemail delete recording controls
- $ret .= "
- <table>
- <tr>
- <td>
- <small>" . _("select") . ": </small>
- <small><a href='' OnClick=\"checkAll(document.voicemail_form,true); return false;\">" . _("all") . "</a></small>
- <small><a href='' OnClick=\"checkAll(document.voicemail_form,false); return false;\">" . _("none") . "</a></small>
- </td>
- </tr>
- </table>";
-
- // table
- $ret .= "
- <table class='voicemail'>
- <tr>
- " . $recording_delete_header . "
- " . $recording_header . "
- </tr>
- " . $tableText . "
- </table>";
-
- // end form
- $ret .= "</form>";
-
- $ret .= $display->displaySearchBlock('center',$m,$q,$url_opts,false);
- $ret .= $display->displayNavigationBlock($m,$q,$url_opts,$start,$span,$record_count);
-
- return $ret;
- }
-
- /*
- * Gets voicemail data
- *
- * @param $data
- * Reference to the variable to store the data in
- * @param $q
- * search string
- */
- function getVoicemailIndex($path,$q,$order,$sort) {
-
- $indexes = array();
-
- $filter = '.txt';
- $recursiveMax = 0;
- $recursiveCount = 0;
- $files = getFiles($path,$filter,$recursiveMax,$recursiveCount);
-
- if (isset($files)) {
-
- // ugly, but sorts array by time stamp
- foreach ($files as $file) {
-
- if (is_file($file)) {
-
- $lines = file($file);
- foreach ($lines as $key => $line) {
- unset($value);
- list($key,$value) = split('=',$line);
- if ($value) {
-
- if ($key=="origtime") {
- $calldate = $value;
- $date = GetDateFormat($value);
- $time = GetTimeFormat($value);
- }
- if ($key=="callerid") {
- $callerid = $value;
- }
- if ($key=="priority") {
- $priority = $value;
- }
- if ($key=="origmailbox") {
- $origmailbox = $value;
- }
- if ($key=="duration") {
- $duration = (int)$value;
- }
- }
- }
-
- // search filter
- $found = 1;
- if ($q) {
-
- $found = 0;
-
- if (preg_match("/" . $q . "/", $origmailbox) ||
- preg_match("/" . $q . "/", $callerid) ||
- preg_match("/" . $q . "/", $date) ||
- preg_match("/" . $q . "/", $time)) {
- $found = 1;
- }
- }
- }
-
- // add to index
- if ($found) {
- $indexes[$file] = $$order;
- }
- }
-
- if (count($indexes)) {
- if ($sort=='desc') {
- arsort($indexes);
- }
- else {
- asort($indexes);
- }
- }
- }
-
- return $indexes;
- }
-
- /*
- * Deletes selected voicemails
- *
- * @param $files
- * Array of files to delete
- */
- function deleteVoicemailData($files) {
-
- foreach($files as $key => $path) {
-
- // get file parts for search
- $path_parts = pathinfo($path);
- $path = fixPathSlash($path_parts['dirname']);
-
- list($name,$ext) = split("\.",$path_parts['basename']);
-
- // delete all related files using a wildcard
- if (is_dir($path)) {
- $hdl = opendir($path);
- while ($fn = readdir($hdl)) {
- if (preg_match("/" . $name ."/",$fn)) {
- $file = $path . $fn;
- unlink($file);
- }
- }
- closedir($hdl);
- }
- }
- }
-
- /*
- * Moves selected voicemails to a specified folder
- *
- * @param $files
- * Array of files to delete
- * @param $extension_rx
- * Mailbox to move message to
- * @param $folder_rx
- * Folder to move the messages to
- */
- function moveVoicemailData($files,$context_rx,$extension_rx,$folder_rx) {
-
- global $ASTERISK_VOICEMAIL_PATH;
-
- $perm = fileperms($ASTERISK_VOICEMAIL_PATH);
- $uid = fileowner($ASTERISK_VOICEMAIL_PATH);
- $gid = filegroup($ASTERISK_VOICEMAIL_PATH);
-
- // recieving path
- $paths = split(';',$ASTERISK_VOICEMAIL_PATH);
- $path_rx = appendPath($paths[0],$context_rx);
- if (!is_dir($path_rx)) {
- mkdir($path_rx, $perm);
- chown($path_rx,intval($uid));
- chgrp($path_rx,intval($gid));
- }
- $path_rx = appendPath($path_rx,$extension_rx);
- if (!is_dir($path_rx)) {
- mkdir($path_rx, $perm);
- chown($path_rx,intval($uid));
- chgrp($path_rx,intval($gid));
- }
- $path_rx = appendPath($path_rx,$folder_rx);
- if (!is_dir($path_rx)) {
- mkdir($path_rx, $perm);
- chown($path_rx,intval($uid));
- chgrp($path_rx,intval($gid));
- }
-
- // get recieving folder last message number
- if (is_dir($path_rx)) {
-
- $lastNum = -1;
- $lastNumLen = 4;
-
- $dh = opendir($path_rx);
- while (false != ($filename = readdir($dh))) {
- if($filename!="." && $filename!="..") {
-
- $msg_path = $path_rx;
- $msg_path = appendPath($msg_path,$filename);
- if (is_file($msg_path)) {
- $path_parts = pathinfo($msg_path);
- $num = preg_replace("/[a-zA-Z]|\./",'', $path_parts['basename']);
- if ($num > $lastNum) {
- $lastNum = $num;
- $lastNumLen = strlen($lastNum);
- }
- }
- }
- }
- }
- else {
- $_SESSION['ari_error'] = sprintf(_("Could not create mailbox folder %s on the server"),$folder_rx);
- return;
- }
-
- // copy files to new location, incrementing each message number
- asort($files);
- foreach($files as $key => $path) {
-
- // get file parts for search
- $path_parts = pathinfo($path);
- $path = $path_parts['dirname'];
- $path = fixPathSlash($path);
- list($name,$ext) = split("\.",$path_parts['basename']);
- if (is_dir($path)) {
-
- $lastNum++;
- $hdl = opendir($path);
- while ($fn = readdir($hdl)) {
- if (preg_match("/" . $name . "/",$fn)) {
- $src = $path . $fn;
- $path_parts = pathinfo($src);
- $folder_rx = preg_replace("/\d+/",sprintf("%0" . $lastNumLen . "d",$lastNum),$path_parts['basename']);
- $dst = appendPath($path_rx,$folder_rx);
- if (is_writable($src) && is_writable($path_rx)) {
-
- $perm = fileperms($src);
- $uid = fileowner($src);
- $gid = filegroup($src);
-
- copy($src,$dst);
-
- if (is_writable($dst)) {
- chmod($dst, $perm);
- chown($dst,intval($uid));
- chgrp($dst,intval($gid));
- }
-
- unlink($src);
- }
- else {
- $_SESSION['ari_error'] = sprintf(_("Permission denied on folder %s or %s"),$src,$path_rx);
- return;
- }
- }
- }
- closedir($hdl);
- }
- }
- }
-
- /*
- * Gets voicemail record count
- *
- * @param $indexes
- * array of files to be counted
- * @return $count
- * number of cdr records counted
- */
- function getVoicemailCount($indexes) {
-
- $count = count($indexes);
-
- return $count;
- }
-
- /*
- * Gets voicemail data
- *
- * @param $indexes
- * array of voicemail files
- * @param $start
- * message number to start page with
- * @param $span
- * number of messages to display on page
- * @param $data
- * Reference to the variable to store the data in
- */
- function getVoicemailData($indexes,$start,$span) {
-
- $data = array();
-
- if (!isset($indexes)) {
- return;
- }
-
- // populate array
- $i = 0;
- foreach ($indexes as $file => $index) {
- if ($i>$start-1+$span) {
- return $data;
- }
- elseif ($i>$start-1 && $i<$start+$span) {
- $lines = file($file);
- foreach ($lines as $key => $line) {
- unset($value);
- list($key,$value) = split('=',$line);
- if ($value) {
- $data[$file][$key] = $value;
- }
- }
- }
- $i++;
- }
-
- return $data;
- }
-
-}
-
-
-?> \ No newline at end of file