diff --git a/app/calls/call_edit.php b/app/calls/call_edit.php index 1b97b0def8..692b743412 100644 --- a/app/calls/call_edit.php +++ b/app/calls/call_edit.php @@ -213,10 +213,11 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { if (permission_exists('call_forward')) { $call_forward = new call_forward; $call_forward->domain_uuid = $_SESSION['domain_uuid']; + $call_forward->domain_name = $_SESSION['domain_name']; $call_forward->extension_uuid = $extension_uuid; $call_forward->forward_all_destination = $forward_all_destination; $call_forward->forward_all_enabled = $forward_all_enabled; - $call_forward->update(); + $call_forward->set(); unset($call_forward); } @@ -224,6 +225,8 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { if (permission_exists('follow_me')) { $follow_me = new follow_me; $follow_me->domain_uuid = $_SESSION['domain_uuid']; + $follow_me->domain_name = $_SESSION['domain_name']; + $follow_me->extension_uuid = $extension_uuid; $follow_me->db_type = $db_type; $follow_me->follow_me_enabled = $follow_me_enabled; @@ -270,8 +273,8 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { } if ($follow_me_action == "update") { $follow_me->follow_me_uuid = $follow_me_uuid; - $follow_me->follow_me_update(); $follow_me->set(); + $follow_me->follow_me_update(); } unset($follow_me); } @@ -281,7 +284,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $dnd = new do_not_disturb; $dnd->domain_uuid = $_SESSION['domain_uuid']; $dnd->domain_name = $_SESSION['domain_name']; - $dnd->extension = $extension; + $dnd->extension_uuid = $extension_uuid; $dnd->enabled = $dnd_enabled; $dnd->set(); $dnd->user_status(); @@ -417,7 +420,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { echo "\n"; echo "\n"; echo "\n"; - echo " ".$text['description']." $extension.

\n"; + echo " ".$text['description']." $extension.

\n"; echo "\n"; echo "\n"; @@ -444,8 +447,6 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { } unset($on_click); echo "
\n"; - echo "
\n"; - //echo "Enable or disable call forward.\n"; echo "\n"; echo "\n"; @@ -456,7 +457,6 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { echo "\n"; echo " \n"; echo "
\n"; - //echo "Enter the call forward number.\n"; echo "\n"; echo "\n"; @@ -472,7 +472,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { echo "\n"; echo "\n"; $on_click = "document.getElementById('forward_all_enabled').checked=true;"; - $on_click .= "document.getElementById('call_forward_disabled').checked=true;"; + $on_click .= "document.getElementById('forward_all_disabled').checked=true;"; $on_click .= "document.getElementById('dnd_enabled').checked=false;"; $on_click .= "document.getElementById('dnd_disabled').checked=true;"; if ($follow_me_enabled == "true") { @@ -582,7 +582,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { echo "\n"; echo "\n"; $on_click = "document.getElementById('forward_all_enabled').checked=true;"; - $on_click .= "document.getElementById('call_forward_disabled').checked=true;"; + $on_click .= "document.getElementById('forward_all_disabled').checked=true;"; $on_click .= "document.getElementById('follow_me_enabled').checked=true;"; $on_click .= "document.getElementById('follow_me_disabled').checked=true;"; if ($dnd_enabled == "true") { diff --git a/app/calls/resources/classes/switch_call_forward.php b/app/calls/resources/classes/switch_call_forward.php index 3bf00f62c5..593264500d 100644 --- a/app/calls/resources/classes/switch_call_forward.php +++ b/app/calls/resources/classes/switch_call_forward.php @@ -27,22 +27,77 @@ include "root.php"; //define the call_forward class class call_forward { + public $debug; public $domain_uuid; + public $domain_name; public $extension_uuid; + private $extension; public $forward_all_destination; public $forward_all_enabled; + private $dial_string; + private $dial_string_update = false; - public function update() { - global $db; - $sql = "update v_extensions set "; - $sql .= "forward_all_destination = '$this->forward_all_destination', "; - $sql .= "forward_all_enabled = '$this->forward_all_enabled' "; - $sql .= "where domain_uuid = '$this->domain_uuid' "; - $sql .= "and extension_uuid = '$this->extension_uuid' "; - $db->exec(check_sql($sql)); - unset($sql); - } //end function + public function set() { + //set the global variable + global $db; - } + //set the dial string + if ($this->forward_all_enabled == "true") { + $this->dial_string = "loopback/".$this->forward_all_destination; + } + else { + $this->dial_string = ''; + } + + //determine whether to update the dial string + $sql = "select * from v_extensions "; + $sql .= "where domain_uuid = '".$this->domain_uuid."' "; + $sql .= "and extension_uuid = '".$this->extension_uuid."' "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + if (count($result) > 0) { + foreach ($result as &$row) { + $this->extension = $row["extension"]; + if ($this->forward_all_enabled == "false" && $row["forward_all_enabled"] == "true") { + $this->dial_string_update = true; + } + } + } + unset ($prep_statement); + if ($this->forward_all_enabled == "true") { + $this->dial_string_update = true; + } + + //update the extension + $sql = "update v_extensions set "; + $sql .= "forward_all_destination = '$this->forward_all_destination', "; + if ($this->dial_string_update) { + $sql .= "dial_string = '".$this->dial_string."', "; + } + $sql .= "forward_all_enabled = '$this->forward_all_enabled' "; + $sql .= "where domain_uuid = '$this->domain_uuid' "; + $sql .= "and extension_uuid = '$this->extension_uuid' "; + if ($this->debug) { + echo $sql; + } + $db->exec(check_sql($sql)); + unset($sql); + + //delete extension from memcache + if ($this->dial_string_update) { + $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); + if ($fp) { + $switch_cmd .= "memcache delete ".$this->extension."@".$this->domain_name; + $switch_result = event_socket_request($fp, 'api '.$switch_cmd); + } + } + + //syncrhonize configuration + if ($this->dial_string_update) { + save_extension_xml(); + } + } //function + } //class ?> \ No newline at end of file diff --git a/app/calls/resources/classes/switch_do_not_disturb.php b/app/calls/resources/classes/switch_do_not_disturb.php index f428df2bef..0c362ac9c3 100644 --- a/app/calls/resources/classes/switch_do_not_disturb.php +++ b/app/calls/resources/classes/switch_do_not_disturb.php @@ -27,60 +27,103 @@ include "root.php"; //define the dnd class class do_not_disturb { + public $debug; public $domain_uuid; public $domain_name; - public $extension; + public $extension_uuid; + private $extension; public $enabled; private $dial_string; + private $dial_string_update = false; //update the user_status public function user_status() { - global $db; - if ($this->enabled == "true") { - //update the call center status - $user_status = "Logged Out"; - $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); - if ($fp) { - $switch_cmd .= "callcenter_config agent set status ".$_SESSION['username']."@".$this->domain_name." '".$user_status."'"; - $switch_result = event_socket_request($fp, 'api '.$switch_cmd); - } + //set the global variable + global $db; - //update the database user_status - $user_status = "Do Not Disturb"; - $sql = "update v_users set "; - $sql .= "user_status = '$user_status' "; - $sql .= "where domain_uuid = '".$this->domain_uuid."' "; - $sql .= "and username = '".$_SESSION['username']."' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - } + //update the status + if ($this->enabled == "true") { + //update the call center status + $user_status = "Logged Out"; + $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); + if ($fp) { + $switch_cmd .= "callcenter_config agent set status ".$_SESSION['username']."@".$this->domain_name." '".$user_status."'"; + $switch_result = event_socket_request($fp, 'api '.$switch_cmd); + } + + //update the database user_status + $user_status = "Do Not Disturb"; + $sql = "update v_users set "; + $sql .= "user_status = '$user_status' "; + $sql .= "where domain_uuid = '".$this->domain_uuid."' "; + $sql .= "and username = '".$_SESSION['username']."' "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + } } public function set() { - global $db; - //update the extension + //set the global variable + global $db; + + //determine whether to update the dial string + $sql = "select * from v_extensions "; + $sql .= "where domain_uuid = '".$this->domain_uuid."' "; + $sql .= "and extension_uuid = '".$this->extension_uuid."' "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + if (count($result) > 0) { + foreach ($result as &$row) { + $this->extension = $row["extension"]; + if ($this->enabled == "false" && $row["do_not_disturb"] == "true") { + $this->dial_string_update = true; + } + } + } + unset ($prep_statement); + if ($this->enabled == "true") { + $this->dial_string_update = true; + } + + //set the dial string if ($this->enabled == "true") { $this->dial_string = "loopback/*99".$this->extension; } else { - $this->dial_string = ""; + $this->dial_string = ''; } + + //update the extension $sql = "update v_extensions set "; - $sql .= "do_not_disturb = '".$this->enabled."', "; -// $sql .= "dial_string = '".$this->dial_string."', "; - $sql .= "dial_domain = '".$this->domain_name."' "; + if ($this->dial_string_update) { + $sql .= "dial_string = '".$this->dial_string."', "; + } + //$sql .= "dial_domain = '".$this->domain_name."', "; + $sql .= "do_not_disturb = '".$this->enabled."' "; $sql .= "where domain_uuid = '".$this->domain_uuid."' "; - $sql .= "and extension = '".$this->extension."' "; + $sql .= "and extension_uuid = '".$this->extension_uuid."' "; if ($this->debug) { echo $sql."
"; } + $db->exec(check_sql($sql)); unset($sql); - //syncrhonize configuration - save_extension_xml(); - } //function + //delete extension from memcache + if ($this->dial_string_update) { + $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); + if ($fp) { + $switch_cmd .= "memcache delete ".$this->extension."@".$this->domain_name; + $switch_result = event_socket_request($fp, 'api '.$switch_cmd); + } + } + //syncrhonize configuration + if ($this->dial_string_update) { + save_extension_xml(); + } + } //function } //class ?> \ No newline at end of file diff --git a/app/calls/resources/classes/switch_follow_me.php b/app/calls/resources/classes/switch_follow_me.php index f8ec286c71..f6d3e1c520 100644 --- a/app/calls/resources/classes/switch_follow_me.php +++ b/app/calls/resources/classes/switch_follow_me.php @@ -31,6 +31,8 @@ include "root.php"; public $db_type; public $follow_me_uuid; public $follow_me_enabled; + private $extension; + private $dial_string_update = false; public $destination_data_1; public $destination_type_1; @@ -61,42 +63,46 @@ include "root.php"; public $destination_order = 1; public function follow_me_add() { - global $db; + //set the global variable + global $db; - $sql = "insert into v_follow_me "; - $sql .= "("; - $sql .= "domain_uuid, "; - $sql .= "follow_me_uuid, "; - $sql .= "follow_me_enabled "; - $sql .= ")"; - $sql .= "values "; - $sql .= "("; - $sql .= "'$this->domain_uuid', "; - $sql .= "'$this->follow_me_uuid', "; - $sql .= "'$this->follow_me_enabled' "; - $sql .= ")"; - if ($v_debug) { - echo $sql."
"; - } - $db->exec(check_sql($sql)); - unset($sql); - $this->follow_me_destinations(); + //add a new follow me + $sql = "insert into v_follow_me "; + $sql .= "("; + $sql .= "domain_uuid, "; + $sql .= "follow_me_uuid, "; + $sql .= "follow_me_enabled "; + $sql .= ")"; + $sql .= "values "; + $sql .= "("; + $sql .= "'$this->domain_uuid', "; + $sql .= "'$this->follow_me_uuid', "; + $sql .= "'$this->follow_me_enabled' "; + $sql .= ")"; + if ($v_debug) { + echo $sql."
"; + } + $db->exec(check_sql($sql)); + unset($sql); + $this->follow_me_destinations(); } //end function public function follow_me_update() { - global $db; - - $sql = "update follow_me set "; - $sql .= "follow_me_enabled = '$this->follow_me_enabled' "; - $sql .= "where domain_uuid = '$this->domain_uuid' "; - $sql .= "and follow_me_uuid = '$this->follow_me_uuid' "; - $db->exec(check_sql($sql)); - unset($sql); - $this->follow_me_destinations(); + //set the global variable + global $db; + //update follow me table + $sql = "update v_follow_me set "; + $sql .= "follow_me_enabled = '$this->follow_me_enabled' "; + $sql .= "where domain_uuid = '$this->domain_uuid' "; + $sql .= "and follow_me_uuid = '$this->follow_me_uuid' "; + $db->exec(check_sql($sql)); + unset($sql); + $this->follow_me_destinations(); } //end function public function follow_me_destinations() { - global $db; + //set the global variable + global $db; //delete related follow me destinations $sql = "delete from v_follow_me_destinations where follow_me_uuid = '$this->follow_me_uuid' "; @@ -231,11 +237,45 @@ include "root.php"; } //function public function set() { - global $db; + //set the global variable + global $db; + + //determine whether to update the dial string + $sql = "select * from v_extensions "; + $sql .= "where domain_uuid = '".$this->domain_uuid."' "; + $sql .= "and extension_uuid = '".$this->extension_uuid."' "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + if (count($result) > 0) { + foreach ($result as &$row) { + $this->extension = $row["extension"]; + } + } + + //determine whether to update the dial string + $sql = "select * from v_follow_me "; + $sql .= "where domain_uuid = '".$this->domain_uuid."' "; + $sql .= "and follow_me_uuid = '".$this->follow_me_uuid."' "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + if (count($result) > 0) { + foreach ($result as &$row) { + if ($this->follow_me_enabled == "false" && $row["follow_me_enabled"] == "true") { + $this->dial_string_update = true; + } + } + } + unset ($prep_statement); + if ($this->follow_me_enabled == "true") { + $this->dial_string_update = true; + } + //update the extension if ($this->follow_me_enabled == "true") { $sql = "select * from v_follow_me_destinations "; - $sql .= "where follow_me_uuid = '$this->follow_me_uuid' "; + $sql .= "where follow_me_uuid = '".$this->follow_me_uuid."' "; $sql .= "order by follow_me_order asc "; $prep_statement_2 = $db->prepare(check_sql($sql)); $prep_statement_2->execute(); @@ -255,11 +295,12 @@ include "root.php"; $this->dial_string = trim($dial_string, ","); } else { -// $this->dial_string = ""; + $this->dial_string = ''; } $sql = "update v_extensions set "; - $sql .= "do_not_disturb = 'false', "; - $sql .= "dial_string = '".$this->dial_string."', "; + if ($this->dial_string_update) { + $sql .= "dial_string = '".$this->dial_string."', "; + } $sql .= "dial_domain = '".$_SESSION['domain_name']."' "; $sql .= "where domain_uuid = '".$this->domain_uuid."' "; $sql .= "and follow_me_uuid = '".$this->follow_me_uuid."' "; @@ -269,8 +310,19 @@ include "root.php"; $db->exec($sql); unset($sql); + //delete extension from memcache + if ($this->dial_string_update) { + $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); + if ($fp) { + $switch_cmd .= "memcache delete ".$this->extension."@".$this->domain_name; + $switch_result = event_socket_request($fp, 'api '.$switch_cmd); + } + } + //syncrhonize configuration - save_extension_xml(); + if ($this->dial_string_update) { + save_extension_xml(); + } } } //class