summaryrefslogtreecommitdiff
path: root/fs_selfservice/fri/modules/followme.module
diff options
context:
space:
mode:
Diffstat (limited to 'fs_selfservice/fri/modules/followme.module')
-rw-r--r--fs_selfservice/fri/modules/followme.module678
1 files changed, 0 insertions, 678 deletions
diff --git a/fs_selfservice/fri/modules/followme.module b/fs_selfservice/fri/modules/followme.module
deleted file mode 100644
index 85a1f37..0000000
--- 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
-
-?>