From 484b41793c40592c9658c8731b07bd561813433e Mon Sep 17 00:00:00 2001 From: mattf Date: Thu, 31 Dec 2015 14:45:45 +0000 Subject: [PATCH] Added agent_allowed_chat_groups to User Groups git-svn-id: svn://192.168.202.10@2451 3d104415-ff17-0410-8863-d5cf3c621b8a --- UPGRADE | 3 + extras/MySQL_AST_CREATE_tables.sql | 5 +- extras/upgrade_2.12.sql | 6 ++ www/agc/agc_agent_manager_chat_interface.php | 104 ++++++++++--------- www/agc/chat_db_query.php | 37 ++++--- www/vicidial/admin.php | 92 +++++++++++++--- www/vicidial/help.php | 6 ++ 7 files changed, 174 insertions(+), 79 deletions(-) diff --git a/UPGRADE b/UPGRADE index 2902f75e..189c6ce1 100644 --- a/UPGRADE +++ b/UPGRADE @@ -218,6 +218,9 @@ OTHER CHANGES: 54. Added campaign setting for manual_dial_timeout for manual dial agent screen calls only. +55. Added Agent Allowed Chat Groups to User Groups to allow restriction of only + agent to agent chatting by itself. + diff --git a/extras/MySQL_AST_CREATE_tables.sql b/extras/MySQL_AST_CREATE_tables.sql index 37a69eb3..98f62dc7 100644 --- a/extras/MySQL_AST_CREATE_tables.sql +++ b/extras/MySQL_AST_CREATE_tables.sql @@ -696,7 +696,8 @@ webphone_systemkey_override VARCHAR(100) default '', webphone_dialpad_override ENUM('DISABLED','Y','N','TOGGLE','TOGGLE_OFF') default 'DISABLED', admin_viewable_groups TEXT, admin_viewable_call_times TEXT, -allowed_custom_reports VARCHAR(2000) default '' +allowed_custom_reports VARCHAR(2000) default '', +agent_allowed_chat_groups TEXT ) ENGINE=MyISAM; CREATE TABLE vicidial_campaigns ( @@ -3672,4 +3673,4 @@ UPDATE vicidial_configuration set value='1766' where name='qc_database_version'; UPDATE system_settings set vdc_agent_api_active='1'; -UPDATE system_settings SET db_schema_version='1444',db_schema_update_date=NOW(),reload_timestamp=NOW(); +UPDATE system_settings SET db_schema_version='1445',db_schema_update_date=NOW(),reload_timestamp=NOW(); diff --git a/extras/upgrade_2.12.sql b/extras/upgrade_2.12.sql index 09d70eb2..64104ff0 100644 --- a/extras/upgrade_2.12.sql +++ b/extras/upgrade_2.12.sql @@ -440,3 +440,9 @@ UPDATE system_settings SET db_schema_version='1443',db_schema_update_date=NOW() ALTER TABLE vicidial_campaigns ADD manual_dial_timeout VARCHAR(3) default ''; UPDATE system_settings SET db_schema_version='1444',db_schema_update_date=NOW() where db_schema_version < 1444; + +ALTER TABLE vicidial_user_groups ADD agent_allowed_chat_groups TEXT; + +UPDATE vicidial_user_groups INNER JOIN system_settings ON system_settings.db_schema_version = 1444 SET agent_allowed_chat_groups=agent_status_viewable_groups; + +UPDATE system_settings SET db_schema_version='1445',db_schema_update_date=NOW() where db_schema_version < 1445; diff --git a/www/agc/agc_agent_manager_chat_interface.php b/www/agc/agc_agent_manager_chat_interface.php index 55970426..312257d5 100644 --- a/www/agc/agc_agent_manager_chat_interface.php +++ b/www/agc/agc_agent_manager_chat_interface.php @@ -9,10 +9,11 @@ # 141212-2245 - First Build # 151213-1108 - Added variable filtering # 151218-1141 - Added missing translation code and user auth, merged js code into file +# 151231-0842 - Added agent_allowed_chat_groups setting # -$admin_version = '2.12-3'; -$build = '151218-1141'; +$admin_version = '2.12-4'; +$build = '151231-0842'; $sh="managerchats"; @@ -637,53 +638,60 @@ echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; } + else + { + echo "\n"; + } } if ( ($LOGuser_level > 8) and ($LOGalter_admin_interface > 0) ) { @@ -28471,7 +28497,7 @@ if ($ADD==311111) echo "
"._QXZ("Select a live agent").":
\n"; - $stmt="SELECT user_group from vicidial_users where user='$user';"; - if ($non_latin > 0) {$rslt=mysql_to_mysqli("SET NAMES 'UTF8'", $link);} - $rslt=mysql_to_mysqli($stmt, $link); - if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00573',$user,$server_ip,$session_name,$one_mysql_log);} +$stmt="SELECT user_group from vicidial_users where user='$user';"; +if ($non_latin > 0) {$rslt=mysql_to_mysqli("SET NAMES 'UTF8'", $link);} +$rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00573',$user,$server_ip,$session_name,$one_mysql_log);} +$row=mysqli_fetch_row($rslt); +$VU_user_group = $row[0]; + +$stmt="SELECT campaign_id from vicidial_live_agents where user='$user';"; +if ($non_latin > 0) {$rslt=mysql_to_mysqli("SET NAMES 'UTF8'", $link);} +$rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);} +$row=mysqli_fetch_row($rslt); +$campaign_id = $row[0]; + +$agent_allowed_chat_groupsSQL=''; +### Gather timeclock and shift enforcement restriction settings +$stmt="SELECT agent_status_viewable_groups,agent_status_view_time,agent_allowed_chat_groups from vicidial_user_groups where user_group='$VU_user_group';"; +$rslt=mysql_to_mysqli($stmt, $link); +$row=mysqli_fetch_row($rslt); +$agent_allowed_chat_groups = $row[2]; +$agent_allowed_chat_groupsSQL = preg_replace('/\s\s/i','',$agent_allowed_chat_groups); +$agent_allowed_chat_groupsSQL = preg_replace('/\s/i',"','",$agent_allowed_chat_groupsSQL); +$agent_allowed_chat_groupsSQL = "user_group IN('$agent_allowed_chat_groupsSQL')"; +$agent_status_view = 0; +if (strlen($agent_allowed_chat_groups) > 2) + {$agent_status_view = 1;} +$agent_status_view_time=0; +if ($row[1] == 'Y') + {$agent_status_view_time=1;} +$andSQL=''; +if (preg_match("/ALL-GROUPS/",$agent_allowed_chat_groups)) + {$AGENTviewSQL = "";} +else + { + $AGENTviewSQL = "($agent_allowed_chat_groupsSQL)"; + + if (preg_match("/CAMPAIGN-AGENTS/",$agent_allowed_chat_groups)) + {$AGENTviewSQL = "($AGENTviewSQL or (campaign_id='$campaign_id'))";} + $AGENTviewSQL = "and $AGENTviewSQL"; + } + +$stmt="SELECT vla.user,vu.full_name from vicidial_live_agents vla,vicidial_users vu where vla.user=vu.user and vu.user!='$user' $AGENTviewSQL order by vu.full_name;"; +$rslt=mysql_to_mysqli($stmt, $link); +if ($rslt) {$agents_count = mysqli_num_rows($rslt);} +$loop_count=0; +echo "\n"; - echo "\n"; - while ($agents_count > $loop_count) - { - $row=mysqli_fetch_row($rslt); - echo "\n"; - $loop_count++; - } - echo ""; + echo "\n"; + $loop_count++; + } +echo ""; echo "
"._QXZ("Message").":
\n"; diff --git a/www/agc/chat_db_query.php b/www/agc/chat_db_query.php index 06e4e7c6..e2b3ac28 100644 --- a/www/agc/chat_db_query.php +++ b/www/agc/chat_db_query.php @@ -12,6 +12,7 @@ # Builds: # 150901-2348 - First build # 151218-1052 - Added missing translation code and user auth +# 151231-0841 - Added agent_allowed_chat_groups setting # require("dbconnect_mysqli.php"); @@ -146,10 +147,9 @@ if ($action=="CreateAgentToAgentChat" && $agent_manager && $agent_user && $manag $rslt=mysqli_query($link, $stmt); if (mysqli_num_rows($rslt)>0) { $row=mysqli_fetch_row($rslt); - - $user=$row[0]; - $user_group=$row[2]; - $campaign_id=$row[3]; + $user = $row[0]; + $user_group = $row[2]; + $campaign_id = $row[3]; $ins_stmt="insert into vicidial_manager_chats(chat_start_date, manager, selected_agents, selected_user_groups, selected_campaigns, allow_replies) VALUES(now(), '$agent_manager', '|$agent_user|', '|$user_group|', '|$campaign_id|', 'Y')"; $ins_rslt=mysqli_query($link, $ins_stmt); @@ -330,30 +330,37 @@ if ($action=="ReloadAgentNewChatSpan" && $user) { $row=mysqli_fetch_row($rslt); $VU_user_group = $row[0]; - $agent_status_viewable_groupsSQL=''; + $stmt="SELECT campaign_id from vicidial_live_agents where user='$user';"; + if ($non_latin > 0) {$rslt=mysql_to_mysqli("SET NAMES 'UTF8'", $link);} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);} + $row=mysqli_fetch_row($rslt); + $campaign_id = $row[0]; + + $agent_allowed_chat_groupsSQL=''; ### Gather timeclock and shift enforcement restriction settings - $stmt="SELECT agent_status_viewable_groups,agent_status_view_time from vicidial_user_groups where user_group='$VU_user_group';"; + $stmt="SELECT agent_status_viewable_groups,agent_status_view_time,agent_allowed_chat_groups from vicidial_user_groups where user_group='$VU_user_group';"; $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); - $agent_status_viewable_groups = $row[0]; - $agent_status_viewable_groupsSQL = preg_replace('/\s\s/i','',$agent_status_viewable_groups); - $agent_status_viewable_groupsSQL = preg_replace('/\s/i',"','",$agent_status_viewable_groupsSQL); - $agent_status_viewable_groupsSQL = "user_group IN('$agent_status_viewable_groupsSQL')"; + $agent_allowed_chat_groups = $row[2]; + $agent_allowed_chat_groupsSQL = preg_replace('/\s\s/i','',$agent_allowed_chat_groups); + $agent_allowed_chat_groupsSQL = preg_replace('/\s/i',"','",$agent_allowed_chat_groupsSQL); + $agent_allowed_chat_groupsSQL = "user_group IN('$agent_allowed_chat_groupsSQL')"; $agent_status_view = 0; - if (strlen($agent_status_viewable_groups) > 2) + if (strlen($agent_allowed_chat_groups) > 2) {$agent_status_view = 1;} $agent_status_view_time=0; if ($row[1] == 'Y') {$agent_status_view_time=1;} $andSQL=''; - if (preg_match("/ALL-GROUPS/",$agent_status_viewable_groups)) + if (preg_match("/ALL-GROUPS/",$agent_allowed_chat_groups)) {$AGENTviewSQL = "";} else { - $AGENTviewSQL = "($agent_status_viewable_groupsSQL)"; + $AGENTviewSQL = "($agent_allowed_chat_groupsSQL)"; - if (preg_match("/CAMPAIGN-AGENTS/",$agent_status_viewable_groups)) - {$AGENTviewSQL = "($AGENTviewSQL or (campaign_id='$campaign'))";} + if (preg_match("/CAMPAIGN-AGENTS/",$agent_allowed_chat_groups)) + {$AGENTviewSQL = "($AGENTviewSQL or (campaign_id='$campaign_id'))";} $AGENTviewSQL = "and $AGENTviewSQL"; } diff --git a/www/vicidial/admin.php b/www/vicidial/admin.php index 12802a51..de433114 100644 --- a/www/vicidial/admin.php +++ b/www/vicidial/admin.php @@ -2020,6 +2020,8 @@ if (isset($_GET["gather_asterisk_output"])) {$gather_asterisk_output=$_GET["g elseif (isset($_POST["gather_asterisk_output"])) {$gather_asterisk_output=$_POST["gather_asterisk_output"];} if (isset($_GET["manual_dial_timeout"])) {$manual_dial_timeout=$_GET["manual_dial_timeout"];} elseif (isset($_POST["manual_dial_timeout"])) {$manual_dial_timeout=$_POST["manual_dial_timeout"];} +if (isset($_GET["agent_allowed_chat_groups"])) {$agent_allowed_chat_groups=$_GET["agent_allowed_chat_groups"];} + elseif (isset($_POST["agent_allowed_chat_groups"])) {$agent_allowed_chat_groups=$_POST["agent_allowed_chat_groups"];} if (isset($script_id)) {$script_id= strtoupper($script_id);} @@ -3096,6 +3098,10 @@ if ($non_latin < 1) $queuemetrics_socket_url = preg_replace('/;/','',$queuemetrics_socket_url); $queuemetrics_socket_url = preg_replace('/\r/', '',$queuemetrics_socket_url); $queuemetrics_socket_url = preg_replace('/\'/', "\"",$queuemetrics_socket_url); + $agent_status_viewable_groups = preg_replace('/\\\\/', '',$agent_status_viewable_groups); + $agent_status_viewable_groups = preg_replace('/\\\\/', '',$agent_status_viewable_groups); + $agent_allowed_chat_groups = preg_replace('/\\\\/', '',$agent_allowed_chat_groups); + $agent_allowed_chat_groups = preg_replace('/\\\\/', '',$agent_allowed_chat_groups); ### VARIABLES TO BE mysql_real_escape_string ### # $web_form_address # $queuemetrics_url @@ -3673,12 +3679,13 @@ else # 151229-1653 - Added gather_asterisk_output server option # 151229-2258 - Added campaign setting for manual_dial_timeout # 151231-0009 - Fixed admin logging in several places +# 151231-0834 - Added agent_allowed_chat_groups to User Groups # # make sure you have added a user to the vicidial_users MySQL table with at least user_level 9 to access this page the first time -$admin_version = '2.12-529a'; -$build = '151231-0009'; +$admin_version = '2.12-530a'; +$build = '151231-0834'; $STARTtime = date("U"); $SQLdate = date("Y-m-d H:i:s"); @@ -14166,6 +14173,15 @@ if ($ADD==411111) $p++; } $p=0; + $VGROUP_chatgroups=' '; + $vgroup_chatgroups_ct = count($agent_allowed_chat_groups); + while ($p <= $vgroup_chatgroups_ct) + { + $agent_allowed_chat_groups[$p] = preg_replace('/[^- \_0-9a-zA-Z]/','',$agent_allowed_chat_groups[$p]); + $VGROUP_chatgroups .= "$agent_allowed_chat_groups[$p] "; + $p++; + } + $p=0; $Vadmin_viewable_groups=' '; $admin_viewable_groups_ct = count($admin_viewable_groups); while ($p <= $admin_viewable_groups_ct) @@ -14253,7 +14269,7 @@ if ($ADD==411111) } $custom_rpt_SQL=",allowed_custom_reports='$custom_report_str'"; } - $stmt="UPDATE vicidial_user_groups set user_group='$user_group', group_name='$group_name',allowed_campaigns='$campaigns_value',qc_allowed_campaigns='$qc_campaigns_value',qc_allowed_inbound_groups='$qc_groups_value',group_shifts='$GROUP_shifts',forced_timeclock_login='$forced_timeclock_login',shift_enforcement='$shift_enforcement',agent_status_viewable_groups='$VGROUP_vgroups',agent_status_view_time='$agent_status_view_time',agent_call_log_view='$agent_call_log_view',agent_xfer_consultative='$agent_xfer_consultative',agent_xfer_dial_override='$agent_xfer_dial_override',agent_xfer_vm_transfer='$agent_xfer_vm_transfer',agent_xfer_blind_transfer='$agent_xfer_blind_transfer',agent_xfer_dial_with_customer='$agent_xfer_dial_with_customer',agent_xfer_park_customer_dial='$agent_xfer_park_customer_dial',agent_fullscreen='$agent_fullscreen',allowed_reports='$allowed_reports'$custom_rpt_SQL,webphone_url_override='" . mysqli_real_escape_string($link, $webphone_url_override) . "',webphone_systemkey_override='$webphone_systemkey_override',webphone_dialpad_override='$webphone_dialpad_override',admin_viewable_groups='$Vadmin_viewable_groups',admin_viewable_call_times='$Vadmin_viewable_call_times' where user_group='$OLDuser_group';"; + $stmt="UPDATE vicidial_user_groups set user_group='$user_group', group_name='$group_name',allowed_campaigns='$campaigns_value',qc_allowed_campaigns='$qc_campaigns_value',qc_allowed_inbound_groups='$qc_groups_value',group_shifts='$GROUP_shifts',forced_timeclock_login='$forced_timeclock_login',shift_enforcement='$shift_enforcement',agent_status_viewable_groups='$VGROUP_vgroups',agent_status_view_time='$agent_status_view_time',agent_call_log_view='$agent_call_log_view',agent_xfer_consultative='$agent_xfer_consultative',agent_xfer_dial_override='$agent_xfer_dial_override',agent_xfer_vm_transfer='$agent_xfer_vm_transfer',agent_xfer_blind_transfer='$agent_xfer_blind_transfer',agent_xfer_dial_with_customer='$agent_xfer_dial_with_customer',agent_xfer_park_customer_dial='$agent_xfer_park_customer_dial',agent_fullscreen='$agent_fullscreen',allowed_reports='$allowed_reports'$custom_rpt_SQL,webphone_url_override='" . mysqli_real_escape_string($link, $webphone_url_override) . "',webphone_systemkey_override='$webphone_systemkey_override',webphone_dialpad_override='$webphone_dialpad_override',admin_viewable_groups='$Vadmin_viewable_groups',admin_viewable_call_times='$Vadmin_viewable_call_times',agent_allowed_chat_groups='$VGROUP_chatgroups' where user_group='$OLDuser_group';"; $rslt=mysql_to_mysqli($stmt, $link); echo "
"._QXZ("USER GROUP MODIFIED")."\n"; @@ -19051,6 +19067,16 @@ if ($ADD==3) echo "
"._QXZ("QC Finish").": $NWB#users-qc_finish$NWE
"._QXZ("QC Commit").": $NWB#users-qc_commit$NWE
"; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo "
\n"; - echo "\n"; - echo "\n"; + echo "\n"; - echo "\n"; + echo "\n"; - echo "\n"; + echo "\n"; - echo "\n"; + echo "\n"; - echo "\n"; + echo "\n"; - echo "\n"; + echo "\n"; - echo "\n"; + echo "\n"; - echo "\n"; + echo "\n"; - echo "\n"; + echo "\n"; + + echo "\n"; echo "
\n"; echo ""; - $stmt="SELECT user_group,group_name,allowed_campaigns,qc_allowed_campaigns,qc_allowed_inbound_groups,group_shifts,forced_timeclock_login,shift_enforcement,agent_status_viewable_groups,agent_status_view_time,agent_call_log_view,agent_xfer_consultative,agent_xfer_dial_override,agent_xfer_vm_transfer,agent_xfer_blind_transfer,agent_xfer_dial_with_customer,agent_xfer_park_customer_dial,agent_fullscreen,allowed_reports,webphone_url_override,webphone_systemkey_override,webphone_dialpad_override,admin_viewable_groups,admin_viewable_call_times from vicidial_user_groups where user_group='$user_group' $LOGadmin_viewable_groupsSQL;"; + $stmt="SELECT user_group,group_name,allowed_campaigns,qc_allowed_campaigns,qc_allowed_inbound_groups,group_shifts,forced_timeclock_login,shift_enforcement,agent_status_viewable_groups,agent_status_view_time,agent_call_log_view,agent_xfer_consultative,agent_xfer_dial_override,agent_xfer_vm_transfer,agent_xfer_blind_transfer,agent_xfer_dial_with_customer,agent_xfer_park_customer_dial,agent_fullscreen,allowed_reports,webphone_url_override,webphone_systemkey_override,webphone_dialpad_override,admin_viewable_groups,admin_viewable_call_times,agent_allowed_chat_groups from vicidial_user_groups where user_group='$user_group' $LOGadmin_viewable_groupsSQL;"; $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $user_group = $row[0]; @@ -28495,6 +28521,7 @@ if ($ADD==311111) $webphone_dialpad_override = $row[21]; $admin_viewable_groups = $row[22]; $admin_viewable_call_times = $row[23]; + $VGROUP_chatgroups = $row[24]; echo ""; @@ -28542,7 +28569,7 @@ if ($ADD==311111) echo "
 
"._QXZ("Agent Status Viewable Groups").":
$NWB#user_groups-agent_status_viewable_groups$NWE
\n"; + echo "
"._QXZ("Agent Status Viewable Groups").":
$NWB#user_groups-agent_status_viewable_groups$NWE
\n"; if ($admin_viewable_groupsALL > 0) { echo " 
"._QXZ("Agent Status View Time").": $NWB#user_groups-agent_status_view_time$NWE
"._QXZ("Agent Status View Time").": $NWB#user_groups-agent_status_view_time$NWE
"._QXZ("Agent Call Log View").": $NWB#user_groups-agent_call_log_view$NWE
"._QXZ("Agent Call Log View").": $NWB#user_groups-agent_call_log_view$NWE
"._QXZ("Agent Allow Consultative Xfer").": $NWB#user_groups-agent_xfer_options$NWE
"._QXZ("Agent Allow Consultative Xfer").": $NWB#user_groups-agent_xfer_options$NWE
"._QXZ("Agent Allow Dial Override Xfer").": $NWB#user_groups-agent_xfer_options$NWE
"._QXZ("Agent Allow Dial Override Xfer").": $NWB#user_groups-agent_xfer_options$NWE
"._QXZ("Agent Allow Voicemail Message Xfer").": $NWB#user_groups-agent_xfer_options$NWE
"._QXZ("Agent Allow Voicemail Message Xfer").": $NWB#user_groups-agent_xfer_options$NWE
"._QXZ("Agent Allow Blind Xfer").": $NWB#user_groups-agent_xfer_options$NWE
"._QXZ("Agent Allow Blind Xfer").": $NWB#user_groups-agent_xfer_options$NWE
"._QXZ("Agent Allow Dial With Customer Xfer").": $NWB#user_groups-agent_xfer_options$NWE
"._QXZ("Agent Allow Dial With Customer Xfer").": $NWB#user_groups-agent_xfer_options$NWE
"._QXZ("Agent Allow Park Customer Dial Xfer").": $NWB#user_groups-agent_xfer_options$NWE
"._QXZ("Agent Allow Park Customer Dial Xfer").": $NWB#user_groups-agent_xfer_options$NWE
"._QXZ("Agent Fullscreen").": $NWB#user_groups-agent_fullscreen$NWE
"._QXZ("Agent Fullscreen").": $NWB#user_groups-agent_fullscreen$NWE
"._QXZ("Agent Allowed Chat Groups").":
$NWB#user_groups-agent_allowed_chat_groups$NWE
\n"; + if ($admin_viewable_groupsALL > 0) + { + echo ""._QXZ("ALL-GROUPS")." - "._QXZ("All user groups in the system")."
\n"; + } + echo ""._QXZ("CAMPAIGN-AGENTS")." - "._QXZ("All users logged into the same campaign as the agent")."
\n"; + + $stmt="SELECT user_group,group_name from vicidial_user_groups $whereLOGadmin_viewable_groupsSQL order by user_group;"; + $rslt=mysql_to_mysqli($stmt, $link); + $view_chatgroups_to_print = mysqli_num_rows($rslt); + $o=0; + while ($view_chatgroups_to_print > $o) + { + $rowx=mysqli_fetch_row($rslt); + $chatgroups_id_value = $rowx[0]; + $chatgroups_name_value = $rowx[1]; + echo " $chatgroups_id_value - $chatgroups_name_value
\n"; + $o++; + } + echo "
 
"._QXZ("Allowed Reports").":