mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2026-01-03 18:33:49 +00:00
This should not have been in here, causes the footer to display outside of the bounds of where it should be.
216 lines
7.8 KiB
PHP
216 lines
7.8 KiB
PHP
<?php
|
|
/*
|
|
FusionPBX
|
|
Version: MPL 1.1
|
|
|
|
The contents of this file are subject to the Mozilla Public License Version
|
|
1.1 (the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
http://www.mozilla.org/MPL/
|
|
|
|
Software distributed under the License is distributed on an "AS IS" basis,
|
|
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
for the specific language governing rights and limitations under the
|
|
License.
|
|
|
|
The Original Code is FusionPBX
|
|
|
|
The Initial Developer of the Original Code is
|
|
Mark J Crane <markjcrane@fusionpbx.com>
|
|
Portions created by the Initial Developer are Copyright (C) 2017-2019
|
|
the Initial Developer. All Rights Reserved.
|
|
|
|
Contributor(s):
|
|
Mark J Crane <markjcrane@fusionpbx.com>
|
|
*/
|
|
|
|
//includes
|
|
require_once "root.php";
|
|
require_once "resources/require.php";
|
|
require_once "resources/check_auth.php";
|
|
require_once "resources/paging.php";
|
|
|
|
//check permissions
|
|
if (permission_exists('call_center_queue_view')) {
|
|
//access granted
|
|
}
|
|
else {
|
|
echo "access denied";
|
|
exit;
|
|
}
|
|
|
|
//add multi-lingual support
|
|
$language = new text;
|
|
$text = $language->get($_SESSION['domain']['language']['code'], 'app/call_centers');
|
|
|
|
//get http variables and set as php variables
|
|
$order_by = $_GET["order_by"];
|
|
$order = $_GET["order"];
|
|
|
|
//setup the event socket connection
|
|
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
|
|
|
//get the http post values and set them as php variables
|
|
if (count($_POST) > 0) {
|
|
foreach ($_POST['agents'] as $row) {
|
|
if (strlen($row['agent_status']) > 0) {
|
|
|
|
//agent set status
|
|
if ($fp) {
|
|
//set the user_status
|
|
$sql = "update v_users set ";
|
|
$sql .= "user_status = :user_status ";
|
|
$sql .= "where domain_uuid = :domain_uuid ";
|
|
$sql .= "and username = :username ";
|
|
$parameters['user_status'] = $row['agent_status'];
|
|
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
|
$parameters['username'] = $row['agent_name'];
|
|
|
|
//set the agent status to available and assign the agent to the queue with the tier
|
|
if ($row['agent_status'] == 'Available') {
|
|
//set the call center status
|
|
//$cmd = "api callcenter_config agent set status ".$row['agent_name']."@".$_SESSION['domain_name']." '".$row['agent_status']."'";
|
|
//$response = event_socket_request($fp, $cmd);
|
|
|
|
//assign the agent to the queue
|
|
$cmd = "api callcenter_config tier add ".$row['queue_name']."@".$_SESSION['domain_name']." ".$row['agent_name']."@".$_SESSION['domain_name']." 1 1";
|
|
$response = event_socket_request($fp, $cmd);
|
|
}
|
|
|
|
//un-assign the agent from the queue
|
|
if ($row['agent_status'] == 'Logged Out') {
|
|
$cmd = "api callcenter_config tier del ".$row['queue_name']."@".$_SESSION['domain_name']." ".$row['agent_name']."@".$_SESSION['domain_name'];
|
|
$response = event_socket_request($fp, $cmd);
|
|
}
|
|
|
|
usleep(200);
|
|
unset($parameters);
|
|
}
|
|
}
|
|
}
|
|
|
|
//set message
|
|
//...
|
|
|
|
//redirect
|
|
header('Location: '.PROJECT_PATH.'/core/user_settings/user_dashboard.php');
|
|
exit;
|
|
}
|
|
|
|
//get the agent list from event socket
|
|
$switch_cmd = 'callcenter_config tier list';
|
|
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
|
|
$call_center_tiers = csv_to_named_array($event_socket_str, '|');
|
|
|
|
//get the call center queues from the database
|
|
$sql = "select * from v_call_center_queues ";
|
|
$sql .= "where domain_uuid = :domain_uuid ";
|
|
$sql .= "order by queue_name asc ";
|
|
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
|
$database = new database;
|
|
$call_center_queues = $database->select($sql, $parameters, 'all');
|
|
$num_rows = !is_array($call_center_queues) ? 0 : @sizeof($call_center_queues);
|
|
unset($sql, $parameters);
|
|
|
|
//get the agents from the database
|
|
$sql = "select * from v_call_center_agents ";
|
|
$sql .= "where user_uuid = :user_uuid ";
|
|
$sql .= "and domain_uuid = :domain_uuid ";
|
|
$parameters['user_uuid'] = $_SESSION['user_uuid'];
|
|
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
|
$database = new database;
|
|
$agent = $database->select($sql, $parameters, 'all');
|
|
unset($sql, $parameters);
|
|
|
|
//update the queue status
|
|
$x = 0;
|
|
foreach ($call_center_queues as $queue) {
|
|
$call_center_queues[$x]['queue_status'] = 'Logged Out';
|
|
foreach ($call_center_tiers as $tier) {
|
|
if (
|
|
$queue['queue_name'] .'@'. $_SESSION['domain_name'] == $tier['queue']
|
|
&& $agent['agent_name'] .'@'. $_SESSION['domain_name'] == $tier['agent']
|
|
) {
|
|
$call_center_queues[$x]['queue_status'] = 'Available';
|
|
}
|
|
}
|
|
$x++;
|
|
}
|
|
|
|
//includes the header
|
|
require_once "resources/header.php";
|
|
|
|
//radio button cycle script
|
|
echo "<script>\n";
|
|
echo " function get_selected(radio_group) {\n";
|
|
echo " for (var i = 0; i < radio_group.length; i++) {\n";
|
|
echo " if (radio_group[i].checked) { return i; }\n";
|
|
echo " }\n";
|
|
echo " return 0;\n";
|
|
echo " }\n";
|
|
|
|
echo " function cycle(radio_group_name) {\n";
|
|
echo " var radios = document.getElementsByName(radio_group_name);\n";
|
|
echo " var i = get_selected(radios);\n";
|
|
echo " if (i+1 == radios.length) {\n";
|
|
echo " radios[0].checked = true;\n";
|
|
echo " }\n";
|
|
echo " else {\n";
|
|
echo " radios[i+1].checked = true;\n";
|
|
echo " }\n";
|
|
echo " }\n";
|
|
echo "</script>\n";
|
|
|
|
//show the content
|
|
echo "<div class='action_bar sub'>\n";
|
|
echo " <div class='heading'><b>".$text['header-call_center_queues'].($agent['agent_name'] != '' ? " </b> Agent: <strong>".$agent['agent_name']."</strong>" : "</b>")."</div>\n";
|
|
echo " <div class='actions'>\n";
|
|
echo button::create(['type'=>'button','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'collapse'=>false,'onclick'=>"list_form_submit('form_list_call_center_agent_dashboard');"]);
|
|
echo " </div>\n";
|
|
echo " <div style='clear: both;'></div>\n";
|
|
echo "</div>\n";
|
|
|
|
echo "<form id='form_list_call_center_agent_dashboard' method='post'>\n";
|
|
|
|
echo "<table class='list'>\n";
|
|
echo "<tr class='list-header'>\n";
|
|
echo " <th>".$text['label-queue_name']."</th>\n";
|
|
echo " <th class='shrink'>".$text['label-status']."</th>\n";
|
|
// echo " <th>".$text['label-options']."</th>\n";
|
|
echo "</tr>\n";
|
|
|
|
if (is_array($call_center_queues) && @sizeof($call_center_queues) != 0) {
|
|
$x = 0;
|
|
foreach ($call_center_queues as $row) {
|
|
$onclick = "onclick=\"cycle('agents[".$x."][agent_status]');\"";
|
|
echo "<tr class='list-row'>\n";
|
|
echo " <td ".$onclick.">".escape($row['queue_name'])."</td>\n";
|
|
// echo " <td>";
|
|
// if ($row['queue_status'] == "Available") {
|
|
// echo $text['option-available'];
|
|
// }
|
|
// if ($row['queue_status'] == "Logged Out") {
|
|
// echo $text['option-logged_out'];
|
|
// }
|
|
// echo " </td>\n";
|
|
echo " <td class='no-wrap right'>\n";
|
|
echo " <input type='hidden' name='agents[".$x."][queue_name]' value='".escape($row['queue_name'])."'>\n";
|
|
echo " <input type='hidden' name='agents[".$x."][agent_name]' value='".escape($agent['agent_name'])."'>\n";
|
|
echo " <input type='hidden' name='agents[".$x."][id]' value='".escape($agent['call_center_agent_uuid'])."'>\n";
|
|
echo " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Available' ".($row['queue_status'] == 'Available' ? "checked='checked'" : null)."> ".$text['option-available']."</label>\n";
|
|
echo " <label style='margin: 0; cursor: pointer;'><input type='radio' name='agents[".$x."][agent_status]' value='Logged Out' ".($row['queue_status'] == 'Logged Out' ? "checked='checked'" : null)."> ".$text['option-logged_out']."</label>\n";
|
|
echo " </td>\n";
|
|
echo "</tr>\n";
|
|
$x++;
|
|
|
|
}
|
|
unset($call_center_queues);
|
|
}
|
|
|
|
echo "</table>\n";
|
|
echo "<br />\n";
|
|
echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
|
|
echo "</form>\n";
|
|
|
|
?>
|