Portions created by the Initial Developer are Copyright (C) 2008-2019 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane Luis Daniel Lucio Quiroz */ //includes include "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; //check permissions if (permission_exists('operator_panel_view')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //set user status if (isset($_REQUEST['status']) && $_REQUEST['status'] != '') { //validate the user status $user_status = $_REQUEST['status']; switch ($user_status) { case "Available" : break; case "Available (On Demand)" : break; case "On Break" : break; case "Do Not Disturb" : break; case "Logged Out" : break; default : $user_status = ''; } //update the status if (permission_exists("user_setting_edit")) { //add the user_edit permission $p = new permissions; $p->add("user_edit", "temp"); //update the database user_status $array['users'][0]['user_uuid'] = $_SESSION['user']['user_uuid']; $array['users'][0]['domain_uuid'] = $_SESSION['user']['domain_uuid']; $array['users'][0]['user_status'] = $user_status; $database = new database; $database->app_name = 'operator_panel'; $database->app_uuid = 'dd3d173a-5d51-4231-ab22-b18c5b712bb2'; $database->save($array); //remove the temporary permission $p->delete("user_edit", "temp"); unset($array); } //if call center app is installed then update the user_status if (is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/call_centers')) { //get the call center agent uuid $sql = "select call_center_agent_uuid from v_call_center_agents "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and user_uuid = :user_uuid "; $parameters['domain_uuid'] = $_SESSION['user']['domain_uuid']; $parameters['user_uuid'] = $_SESSION['user']['user_uuid']; $database = new database; $call_center_agent_uuid = $database->select($sql, $parameters, 'column'); unset($sql, $parameters); //update the user_status if (is_uuid($call_center_agent_uuid)) { $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); $switch_cmd .= "callcenter_config agent set status ".$call_center_agent_uuid." '".$user_status."'"; $switch_result = event_socket_request($fp, 'api '.$switch_cmd); } //update the user state if (is_uuid($call_center_agent_uuid)) { $cmd = "api callcenter_config agent set state ".$call_center_agent_uuid." Waiting"; $response = event_socket_request($fp, $cmd); } //update do not disturb if ($user_status == "Do Not Disturb") { $x = 0; foreach($_SESSION['user']['extension'] as $row) { //build the array $array['extensions'][$x]['extension_uuid'] = $row['extension_uuid']; $array['extensions'][$x]['dial_string'] = '!USER_BUSY'; $array['extensions'][$x]['do_not_disturb'] = 'true'; //delete extension from the cache $cache = new cache; $cache->delete("directory:".$row['extension']."@".$_SESSION['user']['domain_name']); if(strlen($number_alias) > 0){ $cache->delete("directory:".$row['number_alias']."@".$_SESSION['user']['domain_name']); } //incrment $x++; } } else { $x = 0; foreach($_SESSION['user']['extension'] as $row) { //build the array $array['extensions'][$x]['extension_uuid'] = $row['extension_uuid']; $array['extensions'][$x]['dial_string'] = null; $array['extensions'][$x]['do_not_disturb'] = 'false'; //delete extension from the cache $cache = new cache; $cache->delete("directory:".$row['extension']."@".$_SESSION['user']['domain_name']); if(strlen($number_alias) > 0){ $cache->delete("directory:".$row['number_alias']."@".$_SESSION['user']['domain_name']); } //incrment $x++; } } //grant temporary permissions $p = new permissions; $p->add('extension_edit', 'temp'); //execute update $database = new database; $database->app_name = 'calls'; $database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d'; $database->save($array); unset($array); //revoke temporary permissions $p->delete('extension_edit', 'temp'); //delete extension from the cache $cache = new cache; $cache->delete("directory:".$extension."@".$this->domain_name); if(strlen($number_alias) > 0){ $cache->delete("directory:".$number_alias."@".$this->domain_name); } } //stop execution exit; } //set the title $document['title'] = $text['title-operator_panel']; //include the header require_once "resources/header.php"; ?>