Added feature to Call Menus to allow copying of previous option
Fixed some javascript and PHP7 issues. git-svn-id: svn://192.168.202.10@3244 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
@@ -4661,12 +4661,13 @@ else
|
|||||||
# 200407-1030 - Added browser_call_alerts system setting
|
# 200407-1030 - Added browser_call_alerts system setting
|
||||||
# 200409-1719 - Reorganized Inbound admin section
|
# 200409-1719 - Reorganized Inbound admin section
|
||||||
# 200425-0949 - Added 2nd option for agentcall_manual to disable FAST DIAL
|
# 200425-0949 - Added 2nd option for agentcall_manual to disable FAST DIAL
|
||||||
|
# 200508-1024 - Added feature to Call Menus to allow copying of previous option
|
||||||
#
|
#
|
||||||
|
|
||||||
# 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
|
# 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.14-751a';
|
$admin_version = '2.14-752a';
|
||||||
$build = '200425-0949';
|
$build = '200508-1024';
|
||||||
|
|
||||||
$STARTtime = date("U");
|
$STARTtime = date("U");
|
||||||
$SQLdate = date("Y-m-d H:i:s");
|
$SQLdate = date("Y-m-d H:i:s");
|
||||||
@@ -33142,7 +33143,10 @@ if ($ADD==3511)
|
|||||||
$modify_url = "$PHP_SELF?ADD=3511&menu_id=$menu_id";
|
$modify_url = "$PHP_SELF?ADD=3511&menu_id=$menu_id";
|
||||||
$modify_footer_refresh=1;
|
$modify_footer_refresh=1;
|
||||||
}
|
}
|
||||||
echo "<TABLE><TR><TD>\n";
|
$temp_section_width = $section_width;
|
||||||
|
if ($temp_section_width < 850) {$temp_section_width = 850;}
|
||||||
|
$temp_main_section_width = ($temp_section_width + 50);
|
||||||
|
echo "<TABLE WIDTH=$temp_main_section_width><TR><TD>\n";
|
||||||
echo "<FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=2>";
|
echo "<FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=2>";
|
||||||
|
|
||||||
$stmt="SELECT menu_name,menu_prompt,menu_timeout,menu_timeout_prompt,menu_invalid_prompt,menu_repeat,menu_time_check,call_time_id,track_in_vdac,custom_dialplan_entry,tracking_group,dtmf_log,dtmf_field,user_group,qualify_sql,alt_dtmf_log,question from vicidial_call_menu where menu_id='$menu_id' $LOGadmin_viewable_groupsSQL;";
|
$stmt="SELECT menu_name,menu_prompt,menu_timeout,menu_timeout_prompt,menu_invalid_prompt,menu_repeat,menu_time_check,call_time_id,track_in_vdac,custom_dialplan_entry,tracking_group,dtmf_log,dtmf_field,user_group,qualify_sql,alt_dtmf_log,question from vicidial_call_menu where menu_id='$menu_id' $LOGadmin_viewable_groupsSQL;";
|
||||||
@@ -33169,7 +33173,7 @@ if ($ADD==3511)
|
|||||||
echo "<br>"._QXZ("MODIFY A CALL MENU RECORD").": $menu_id<form action=$PHP_SELF method=POST name=admin_form id=admin_form>\n";
|
echo "<br>"._QXZ("MODIFY A CALL MENU RECORD").": $menu_id<form action=$PHP_SELF method=POST name=admin_form id=admin_form>\n";
|
||||||
echo "<input type=hidden name=ADD value=4511>\n";
|
echo "<input type=hidden name=ADD value=4511>\n";
|
||||||
echo "<input type=hidden name=menu_id value=\"$menu_id\">\n";
|
echo "<input type=hidden name=menu_id value=\"$menu_id\">\n";
|
||||||
echo "<center><TABLE width=$section_width cellspacing=3>\n";
|
echo "<center><TABLE width=$temp_section_width cellspacing=3>\n";
|
||||||
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("Menu ID").": </td><td align=left>$menu_id $NWB#call_menu-menu_id$NWE</td></tr>\n";
|
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("Menu ID").": </td><td align=left>$menu_id $NWB#call_menu-menu_id$NWE</td></tr>\n";
|
||||||
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("Menu Name").": </td><td align=left><input type=text name=menu_name size=40 maxlength=50 value=\"$menu_name\">$NWB#call_menu-menu_name$NWE</td></tr>\n";
|
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("Menu Name").": </td><td align=left><input type=text name=menu_name size=40 maxlength=50 value=\"$menu_name\">$NWB#call_menu-menu_name$NWE</td></tr>\n";
|
||||||
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("Admin User Group").": </td><td align=left><select size=1 name=user_group>\n";
|
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("Admin User Group").": </td><td align=left><select size=1 name=user_group>\n";
|
||||||
@@ -33294,7 +33298,7 @@ if ($ADD==3511)
|
|||||||
$option_route_value = $Aoption_route_value[$j];
|
$option_route_value = $Aoption_route_value[$j];
|
||||||
$option_route_value_context = $Aoption_route_value_context[$j];
|
$option_route_value_context = $Aoption_route_value_context[$j];
|
||||||
|
|
||||||
$dtmf_list = "<select size=1 name=option_value_$j>";
|
$dtmf_list = "<select size=1 name=option_value_$j id=option_value_$j>";
|
||||||
$h=0;
|
$h=0;
|
||||||
while ($h <= 20)
|
while ($h <= 20)
|
||||||
{
|
{
|
||||||
@@ -33313,7 +33317,7 @@ if ($ADD==3511)
|
|||||||
|
|
||||||
echo "<tr $bgcolor><td align=CENTER colspan=2>
|
echo "<tr $bgcolor><td align=CENTER colspan=2>
|
||||||
"._QXZ("Option").": $dtmf_list
|
"._QXZ("Option").": $dtmf_list
|
||||||
"._QXZ("Description").": <input type=text name=option_description_$j size=40 maxlength=255 value=\"$option_description\">
|
"._QXZ("Description").": <input type=text name=option_description_$j id=option_description_$j size=40 maxlength=255 value=\"$option_description\">
|
||||||
"._QXZ("Route").": <select size=1 name=option_route_$j id=option_route_$j onChange=\"call_menu_option('$j','$option_route','$option_route_value','$option_route_value_context','$choose_height');\">
|
"._QXZ("Route").": <select size=1 name=option_route_$j id=option_route_$j onChange=\"call_menu_option('$j','$option_route','$option_route_value','$option_route_value_context','$choose_height');\">
|
||||||
<option value='CALLMENU'>"._QXZ("CALLMENU")."</option>
|
<option value='CALLMENU'>"._QXZ("CALLMENU")."</option>
|
||||||
<option value='INGROUP'>"._QXZ("INGROUP")."</option>
|
<option value='INGROUP'>"._QXZ("INGROUP")."</option>
|
||||||
@@ -33326,8 +33330,12 @@ if ($ADD==3511)
|
|||||||
<option value='AGI'>"._QXZ("AGI")."</option>
|
<option value='AGI'>"._QXZ("AGI")."</option>
|
||||||
<option value=\"\">* "._QXZ("REMOVE")." *</option>
|
<option value=\"\">* "._QXZ("REMOVE")." *</option>
|
||||||
<option selected value=\"$option_route\">$option_route</option>
|
<option selected value=\"$option_route\">$option_route</option>
|
||||||
</select> $NWB#call_menu-option_value$NWE <BR>
|
</select> $NWB#call_menu-option_value$NWE ";
|
||||||
|
|
||||||
|
if ($j > 0) {echo "<span id='cm_copy_$j' name='cm_copy_$j' onclick=\"copy_prev_cm_option('$j','$choose_height');\"><font size=1><u>copy ^</u></font></span> ";}
|
||||||
|
else {echo "<span id='cm_copy_$j' name='cm_copy_$j'><font size=1> </font></span> ";}
|
||||||
|
|
||||||
|
echo "<BR>
|
||||||
<span id=\"option_value_value_context_$j\" name=\"option_value_value_context_$j\">\n";
|
<span id=\"option_value_value_context_$j\" name=\"option_value_value_context_$j\">\n";
|
||||||
|
|
||||||
if ($option_route=='CALLMENU')
|
if ($option_route=='CALLMENU')
|
||||||
@@ -33412,7 +33420,7 @@ if ($ADD==3511)
|
|||||||
while ($j <= 20)
|
while ($j <= 20)
|
||||||
{
|
{
|
||||||
$choose_height = (($j * 100) + 550);
|
$choose_height = (($j * 100) + 550);
|
||||||
$dtmf_list = "<select size=1 name=option_value_$j><option value=\"\"></option>";
|
$dtmf_list = "<select size=1 name=option_value_$j id=option_value_$j><option value=\"\"></option>";
|
||||||
$h=0;
|
$h=0;
|
||||||
while ($h <= 20)
|
while ($h <= 20)
|
||||||
{
|
{
|
||||||
@@ -33428,7 +33436,7 @@ if ($ADD==3511)
|
|||||||
|
|
||||||
echo "<tr $bgcolor><td align=CENTER colspan=2>
|
echo "<tr $bgcolor><td align=CENTER colspan=2>
|
||||||
"._QXZ("Option").": $dtmf_list
|
"._QXZ("Option").": $dtmf_list
|
||||||
"._QXZ("Description").": <input type=text name=option_description_$j size=40 maxlength=255 value=\"\">
|
"._QXZ("Description").": <input type=text name=option_description_$j id=option_description_$j size=40 maxlength=255 value=\"\">
|
||||||
"._QXZ("Route").": <select size=1 name=option_route_$j id=option_route_$j onChange=\"call_menu_option('$j','','','','$choose_height');\">
|
"._QXZ("Route").": <select size=1 name=option_route_$j id=option_route_$j onChange=\"call_menu_option('$j','','','','$choose_height');\">
|
||||||
<option value='CALLMENU'>"._QXZ("CALLMENU")."</option>
|
<option value='CALLMENU'>"._QXZ("CALLMENU")."</option>
|
||||||
<option value='INGROUP'>"._QXZ("INGROUP")."</option>
|
<option value='INGROUP'>"._QXZ("INGROUP")."</option>
|
||||||
@@ -33441,8 +33449,12 @@ if ($ADD==3511)
|
|||||||
<option value='AGI'>"._QXZ("AGI")."</option>
|
<option value='AGI'>"._QXZ("AGI")."</option>
|
||||||
<option SELECTED value=\"\"> </option>
|
<option SELECTED value=\"\"> </option>
|
||||||
</select>
|
</select>
|
||||||
$NWB#call_menu-option_value$NWE <BR>
|
$NWB#call_menu-option_value$NWE ";
|
||||||
|
|
||||||
|
if ($j > 0) {echo "<span id='cm_copy_$j' name='cm_copy_$j' onclick=\"copy_prev_cm_option('$j','$choose_height');\"><font size=1><u>copy ^</u></font></span> ";}
|
||||||
|
else {echo "<span id='cm_copy_$j' name='cm_copy_$j'><font size=1> </font></span> ";}
|
||||||
|
|
||||||
|
echo "<BR>
|
||||||
<span id=\"option_value_value_context_$j\" name=\"option_value_value_context_$j\">\n";
|
<span id=\"option_value_value_context_$j\" name=\"option_value_value_context_$j\">\n";
|
||||||
echo "</span>
|
echo "</span>
|
||||||
<BR> </td></tr>\n";
|
<BR> </td></tr>\n";
|
||||||
|
|||||||
@@ -83,6 +83,7 @@
|
|||||||
# 200206-2314 - Added password length indicator
|
# 200206-2314 - Added password length indicator
|
||||||
# 200407-1534 - Added play_browser_sound javascript function for campaigns/ingroups
|
# 200407-1534 - Added play_browser_sound javascript function for campaigns/ingroups
|
||||||
# 200409-1720 - Reorganized the Inbound section
|
# 200409-1720 - Reorganized the Inbound section
|
||||||
|
# 200508-1052 - Added copy_prev_cm_option() JS function
|
||||||
#
|
#
|
||||||
|
|
||||||
$stmt="SELECT admin_home_url,enable_tts_integration,callcard_enabled,custom_fields_enabled,allow_emails,level_8_disable_add,allow_chats,enable_languages,admin_row_click,admin_screen_colors,user_new_lead_limit,user_territories_active,qc_features_active,agent_soundboards,enable_drop_lists,allow_ip_lists from system_settings;";
|
$stmt="SELECT admin_home_url,enable_tts_integration,callcard_enabled,custom_fields_enabled,allow_emails,level_8_disable_add,allow_chats,enable_languages,admin_row_click,admin_screen_colors,user_new_lead_limit,user_territories_active,qc_features_active,agent_soundboards,enable_drop_lists,allow_ip_lists from system_settings;";
|
||||||
@@ -1105,9 +1106,9 @@ if ( ($ADD==3511) or ($ADD==2511) or ($ADD==2611) or ($ADD==4511) or ($ADD==5511
|
|||||||
}
|
}
|
||||||
|
|
||||||
new_content = '<input type=hidden name=option_route_value_context_' + option + ' id=option_route_value_context_' + option + ' value="' + selected_value + '">';
|
new_content = '<input type=hidden name=option_route_value_context_' + option + ' id=option_route_value_context_' + option + ' value="' + selected_value + '">';
|
||||||
new_content = new_content + '<span name=option_route_link_' + option + 'id=option_route_link_' + option + '>';
|
new_content = new_content + '<span name="option_route_link_' + option + '" id="option_route_link_' + option + '">';
|
||||||
new_content = new_content + "<a href=\"admin.php?ADD=3111&group_id=" + value + "\"><?php echo _QXZ("In-Group"); ?>:</a> </span>";
|
new_content = new_content + "<a href=\"admin.php?ADD=3111&group_id=" + value + "\"><?php echo _QXZ("In-Group"); ?>:</a> </span>";
|
||||||
new_content = new_content + '<select size=1 name=option_route_value_' + option + ' id=option_route_value_' + option + ' onChange="call_menu_link("' + option + '","INGROUP");">';
|
new_content = new_content + '<select size=1 name=option_route_value_' + option + ' id=option_route_value_' + option + " onChange=\"call_menu_link('" + option + "','INGROUP');\">";
|
||||||
new_content = new_content + '' + ingroup_list + "\n" + selected_value + '<option>DYNAMIC_INGROUP_VAR</option></select>';
|
new_content = new_content + '' + ingroup_list + "\n" + selected_value + '<option>DYNAMIC_INGROUP_VAR</option></select>';
|
||||||
new_content = new_content + " <?php echo _QXZ("Handle Method"); ?>: <select size=1 name=IGhandle_method_" + option + ' id=IGhandle_method_' + option + '>';
|
new_content = new_content + " <?php echo _QXZ("Handle Method"); ?>: <select size=1 name=IGhandle_method_" + option + ' id=IGhandle_method_' + option + '>';
|
||||||
new_content = new_content + '' + IGhandle_method_list + "\n" + '<option SELECTED>' + IGhandle_method + '</select>';
|
new_content = new_content + '' + IGhandle_method_list + "\n" + '<option SELECTED>' + IGhandle_method + '</select>';
|
||||||
@@ -1214,14 +1215,238 @@ if ( ($ADD==3511) or ($ADD==2511) or ($ADD==2611) or ($ADD==4511) or ($ADD==5511
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (new_content.length < 1)
|
if (new_content.length < 1)
|
||||||
{new_content = selected_route}
|
{new_content = selected_value}
|
||||||
|
|
||||||
span_to_update.innerHTML = new_content;
|
span_to_update.innerHTML = new_content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function copy_prev_cm_option(item_number,item_height)
|
||||||
|
{
|
||||||
|
var prev_item_number = (item_number - 1)
|
||||||
|
|
||||||
|
var temp_option_value = 'option_value_' + item_number;
|
||||||
|
var temp_option_description = 'option_description_' + item_number;
|
||||||
|
var temp_option_route = 'option_route_' + item_number;
|
||||||
|
var temp_option_route_value = 'option_route_value_' + item_number;
|
||||||
|
var temp_option_route_value_context = 'option_route_value_context_' + item_number;
|
||||||
|
|
||||||
|
var temp_prev_option_value = 'option_value_' + prev_item_number;
|
||||||
|
var temp_prev_option_description = 'option_description_' + prev_item_number;
|
||||||
|
var temp_prev_option_route = 'option_route_' + prev_item_number;
|
||||||
|
var temp_prev_option_route_value = 'option_route_value_' + prev_item_number;
|
||||||
|
var temp_prev_option_route_value_context = 'option_route_value_context_' + prev_item_number;
|
||||||
|
|
||||||
|
var temp_ValIndex = document.getElementById(temp_prev_option_value).selectedIndex;
|
||||||
|
var temp_ValLength = document.getElementById(temp_prev_option_value).length;
|
||||||
|
var temp_ValValue = document.getElementById(temp_prev_option_value).options[temp_ValIndex].value;
|
||||||
|
var temp_ValNewLength = document.getElementById(temp_option_value).length;
|
||||||
|
var NEWtemp_ValIndex = (temp_ValIndex + 1);
|
||||||
|
if (temp_ValNewLength >= 21)
|
||||||
|
{
|
||||||
|
if (temp_ValNewLength > temp_ValLength)
|
||||||
|
{
|
||||||
|
NEWtemp_ValIndex = (NEWtemp_ValIndex + 1);
|
||||||
|
}
|
||||||
|
if (NEWtemp_ValIndex > 21) {NEWtemp_ValIndex=1;}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (NEWtemp_ValIndex > 20) {NEWtemp_ValIndex=0;}
|
||||||
|
}
|
||||||
|
document.getElementById(temp_option_value).selectedIndex = NEWtemp_ValIndex;
|
||||||
|
|
||||||
|
var temp_optionIndex = document.getElementById(temp_prev_option_route).selectedIndex;
|
||||||
|
var temp_optionValue = document.getElementById(temp_prev_option_route).options[temp_optionIndex].value;
|
||||||
|
|
||||||
|
var rIndex = 0;
|
||||||
|
if (temp_optionValue == 'CALLMENU') {rIndex = 0;}
|
||||||
|
if (temp_optionValue == 'INGROUP') {rIndex = 1;}
|
||||||
|
if (temp_optionValue == 'DID') {rIndex = 2;}
|
||||||
|
if (temp_optionValue == 'HANGUP') {rIndex = 3;}
|
||||||
|
if (temp_optionValue == 'EXTENSION') {rIndex = 4;}
|
||||||
|
if (temp_optionValue == 'PHONE') {rIndex = 5;}
|
||||||
|
if (temp_optionValue == 'VOICEMAIL') {rIndex = 6;}
|
||||||
|
if (temp_optionValue == 'VMAIL_NO_INST') {rIndex = 7;}
|
||||||
|
document.getElementById(temp_option_route).selectedIndex = rIndex;
|
||||||
|
document.getElementById(temp_option_description).value = document.getElementById(temp_prev_option_description).value;
|
||||||
|
|
||||||
|
call_menu_option(item_number,temp_optionValue,'','',item_height);
|
||||||
|
|
||||||
|
if ( (temp_optionValue == 'CALLMENU') || (temp_optionValue == 'DID') || (temp_optionValue == 'PHONE') )
|
||||||
|
{
|
||||||
|
var temp_prev_optionVal = document.getElementById(temp_prev_option_route_value);
|
||||||
|
var temp_prev_optionValIndex = temp_prev_optionVal.selectedIndex;
|
||||||
|
var temp_prev_optionValValue = temp_prev_optionVal.options[temp_prev_optionValIndex].value;
|
||||||
|
|
||||||
|
var temp_optionVal = document.getElementById(temp_option_route_value);
|
||||||
|
var temp_optionValIndex = 0;
|
||||||
|
var temp_optionValLength = temp_optionVal.length;
|
||||||
|
var temp_counter=0;
|
||||||
|
while (temp_counter < temp_optionValLength)
|
||||||
|
{
|
||||||
|
if (temp_prev_optionValValue == temp_optionVal.options[temp_counter].value)
|
||||||
|
{temp_optionValIndex = temp_counter;}
|
||||||
|
|
||||||
|
temp_counter++;
|
||||||
|
}
|
||||||
|
document.getElementById(temp_option_route_value).selectedIndex = temp_optionValIndex;
|
||||||
|
|
||||||
|
if ( (temp_optionValue == 'CALLMENU') || (temp_optionValue == 'DID') )
|
||||||
|
{
|
||||||
|
call_menu_link(item_number,temp_optionValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( (temp_optionValue == 'HANGUP') || (temp_optionValue == 'VOICEMAIL') || (temp_optionValue == 'VMAIL_NO_INST') )
|
||||||
|
{
|
||||||
|
var temp_prev_optionVal = document.getElementById(temp_prev_option_route_value);
|
||||||
|
var temp_optionVal = document.getElementById(temp_option_route_value);
|
||||||
|
|
||||||
|
temp_optionVal.value = temp_prev_optionVal.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (temp_optionValue == 'EXTENSION')
|
||||||
|
{
|
||||||
|
var temp_prev_optionVal = document.getElementById(temp_prev_option_route_value);
|
||||||
|
var temp_optionVal = document.getElementById(temp_option_route_value);
|
||||||
|
var temp_prev_optionValContext = document.getElementById(temp_prev_option_route_value_context);
|
||||||
|
var temp_optionValContext = document.getElementById(temp_option_route_value_context);
|
||||||
|
|
||||||
|
temp_optionVal.value = temp_prev_optionVal.value;
|
||||||
|
temp_optionValContext.value = temp_prev_optionValContext.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (temp_optionValue == 'INGROUP')
|
||||||
|
{
|
||||||
|
// In-Group select list
|
||||||
|
var temp_prev_optionVal = document.getElementById(temp_prev_option_route_value);
|
||||||
|
var temp_prev_optionValIndex = temp_prev_optionVal.selectedIndex;
|
||||||
|
var temp_prev_optionValValue = temp_prev_optionVal.options[temp_prev_optionValIndex].value;
|
||||||
|
|
||||||
|
var temp_optionVal = document.getElementById(temp_option_route_value);
|
||||||
|
var temp_optionValIndex = 0;
|
||||||
|
var temp_optionValLength = temp_optionVal.length;
|
||||||
|
var temp_counter=0;
|
||||||
|
while (temp_counter < temp_optionValLength)
|
||||||
|
{
|
||||||
|
if (temp_prev_optionValValue == temp_optionVal.options[temp_counter].value)
|
||||||
|
{temp_optionValIndex = temp_counter;}
|
||||||
|
|
||||||
|
temp_counter++;
|
||||||
|
}
|
||||||
|
document.getElementById(temp_option_route_value).selectedIndex = temp_optionValIndex;
|
||||||
|
call_menu_link(item_number,temp_optionValue);
|
||||||
|
|
||||||
|
// In-Group Handle Method
|
||||||
|
var temp2_option_route_value = 'IGhandle_method_' + item_number;
|
||||||
|
var temp2_prev_option_route_value = 'IGhandle_method_' + prev_item_number;
|
||||||
|
|
||||||
|
var temp2_prev_optionVal = document.getElementById(temp2_prev_option_route_value);
|
||||||
|
var temp2_prev_optionValIndex = temp2_prev_optionVal.selectedIndex;
|
||||||
|
var temp2_prev_optionValValue = temp2_prev_optionVal.options[temp2_prev_optionValIndex].value;
|
||||||
|
|
||||||
|
var temp2_optionVal = document.getElementById(temp2_option_route_value);
|
||||||
|
var temp2_optionValIndex = 0;
|
||||||
|
var temp2_optionValLength = temp2_optionVal.length;
|
||||||
|
var temp2_counter=0;
|
||||||
|
while (temp2_counter < temp2_optionValLength)
|
||||||
|
{
|
||||||
|
if (temp2_prev_optionValValue == temp2_optionVal.options[temp2_counter].value)
|
||||||
|
{temp2_optionValIndex = temp2_counter;}
|
||||||
|
|
||||||
|
temp2_counter++;
|
||||||
|
}
|
||||||
|
document.getElementById(temp2_option_route_value).selectedIndex = temp2_optionValIndex;
|
||||||
|
|
||||||
|
// In-Group Search Method
|
||||||
|
var temp3_option_route_value = 'IGsearch_method_' + item_number;
|
||||||
|
var temp3_prev_option_route_value = 'IGsearch_method_' + prev_item_number;
|
||||||
|
|
||||||
|
var temp3_prev_optionVal = document.getElementById(temp3_prev_option_route_value);
|
||||||
|
var temp3_prev_optionValIndex = temp3_prev_optionVal.selectedIndex;
|
||||||
|
var temp3_prev_optionValValue = temp3_prev_optionVal.options[temp3_prev_optionValIndex].value;
|
||||||
|
|
||||||
|
var temp3_optionVal = document.getElementById(temp3_option_route_value);
|
||||||
|
var temp3_optionValIndex = 0;
|
||||||
|
var temp3_optionValLength = temp3_optionVal.length;
|
||||||
|
var temp3_counter=0;
|
||||||
|
while (temp3_counter < temp3_optionValLength)
|
||||||
|
{
|
||||||
|
if (temp3_prev_optionValValue == temp3_optionVal.options[temp3_counter].value)
|
||||||
|
{temp3_optionValIndex = temp3_counter;}
|
||||||
|
|
||||||
|
temp3_counter++;
|
||||||
|
}
|
||||||
|
document.getElementById(temp3_option_route_value).selectedIndex = temp3_optionValIndex;
|
||||||
|
|
||||||
|
// In-Group Campaign
|
||||||
|
var temp4_option_route_value = 'IGcampaign_id_' + item_number;
|
||||||
|
var temp4_prev_option_route_value = 'IGcampaign_id_' + prev_item_number;
|
||||||
|
|
||||||
|
var temp4_prev_optionVal = document.getElementById(temp4_prev_option_route_value);
|
||||||
|
var temp4_prev_optionValIndex = temp4_prev_optionVal.selectedIndex;
|
||||||
|
var temp4_prev_optionValValue = temp4_prev_optionVal.options[temp4_prev_optionValIndex].value;
|
||||||
|
|
||||||
|
var temp4_optionVal = document.getElementById(temp4_option_route_value);
|
||||||
|
var temp4_optionValIndex = 0;
|
||||||
|
var temp4_optionValLength = temp4_optionVal.length;
|
||||||
|
var temp4_counter=0;
|
||||||
|
while (temp4_counter < temp4_optionValLength)
|
||||||
|
{
|
||||||
|
if (temp4_prev_optionValValue == temp4_optionVal.options[temp4_counter].value)
|
||||||
|
{temp4_optionValIndex = temp4_counter;}
|
||||||
|
|
||||||
|
temp4_counter++;
|
||||||
|
}
|
||||||
|
document.getElementById(temp4_option_route_value).selectedIndex = temp4_optionValIndex;
|
||||||
|
|
||||||
|
// In-Group List ID
|
||||||
|
var temp5 = 'IGlist_id_' + item_number;
|
||||||
|
var temp5_prev = 'IGlist_id_' + prev_item_number;
|
||||||
|
var temp5_optionVal = document.getElementById(temp5);
|
||||||
|
var temp5_prev_optionVal = document.getElementById(temp5_prev);
|
||||||
|
temp5_optionVal.value = temp5_prev_optionVal.value;
|
||||||
|
|
||||||
|
// In-Group Phone Code
|
||||||
|
var temp6 = 'IGphone_code_' + item_number;
|
||||||
|
var temp6_prev = 'IGphone_code_' + prev_item_number;
|
||||||
|
var temp6_optionVal = document.getElementById(temp6);
|
||||||
|
var temp6_prev_optionVal = document.getElementById(temp6_prev);
|
||||||
|
temp6_optionVal.value = temp6_prev_optionVal.value;
|
||||||
|
|
||||||
|
// In-Group VID Enter Filename
|
||||||
|
var temp7 = 'IGvid_enter_filename_' + item_number;
|
||||||
|
var temp7_prev = 'IGvid_enter_filename_' + prev_item_number;
|
||||||
|
var temp7_optionVal = document.getElementById(temp7);
|
||||||
|
var temp7_prev_optionVal = document.getElementById(temp7_prev);
|
||||||
|
temp7_optionVal.value = temp7_prev_optionVal.value;
|
||||||
|
|
||||||
|
// In-Group VID ID Number Filename
|
||||||
|
var temp8 = 'IGvid_id_number_filename_' + item_number;
|
||||||
|
var temp8_prev = 'IGvid_id_number_filename_' + prev_item_number;
|
||||||
|
var temp8_optionVal = document.getElementById(temp8);
|
||||||
|
var temp8_prev_optionVal = document.getElementById(temp8_prev);
|
||||||
|
temp8_optionVal.value = temp8_prev_optionVal.value;
|
||||||
|
|
||||||
|
// In-Group VID Confirm Filename
|
||||||
|
var temp9 = 'IGvid_confirm_filename_' + item_number;
|
||||||
|
var temp9_prev = 'IGvid_confirm_filename_' + prev_item_number;
|
||||||
|
var temp9_optionVal = document.getElementById(temp9);
|
||||||
|
var temp9_prev_optionVal = document.getElementById(temp9_prev);
|
||||||
|
temp9_optionVal.value = temp9_prev_optionVal.value;
|
||||||
|
|
||||||
|
// In-Group VID Digits
|
||||||
|
var temp10 = 'IGvid_validate_digits_' + item_number;
|
||||||
|
var temp10_prev = 'IGvid_validate_digits_' + prev_item_number;
|
||||||
|
var temp10_optionVal = document.getElementById(temp10);
|
||||||
|
var temp10_prev_optionVal = document.getElementById(temp10_prev);
|
||||||
|
temp10_optionVal.value = temp10_prev_optionVal.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
### Javascript for dynamic in-group option value entries
|
### Javascript for dynamic in-group option value entries
|
||||||
if ( ($ADD==2811) or ($ADD==3811) or ($ADD==3111) or ($ADD==2111) or ($ADD==2011) or ($ADD==4111) or ($ADD==5111) )
|
if ( ($ADD==2811) or ($ADD==3811) or ($ADD==3111) or ($ADD==2111) or ($ADD==2011) or ($ADD==4111) or ($ADD==5111) )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -302,10 +302,16 @@ function f_tcalRelDate (d_date, d_diff, s_units) {
|
|||||||
return ' onclick="A_TCALS[\'' + this.s_id + '\'].f_update(' + d_result.valueOf() + ')"';
|
return ' onclick="A_TCALS[\'' + this.s_id + '\'].f_update(' + d_result.valueOf() + ')"';
|
||||||
}
|
}
|
||||||
|
|
||||||
function f_tcalHideAll () {
|
function f_tcalHideAll ()
|
||||||
for (var i = 0; i < window.A_TCALSIDX.length; i++)
|
{
|
||||||
window.A_TCALSIDX[i].f_hide();
|
if (!window.A_TCALSIDX)
|
||||||
}
|
{var nothing=1;}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (var i = 0; i < window.A_TCALSIDX.length; i++)
|
||||||
|
{window.A_TCALSIDX[i].f_hide();}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function f_tcalResetTime (d_date) {
|
function f_tcalResetTime (d_date) {
|
||||||
d_date.setHours(0);
|
d_date.setHours(0);
|
||||||
|
|||||||
@@ -146,10 +146,11 @@
|
|||||||
# 200418-0837 - Added custom_copy_method option for the add_list function, also added this feature to update_list
|
# 200418-0837 - Added custom_copy_method option for the add_list function, also added this feature to update_list
|
||||||
# 200423-0356 - Fix for update_lead --BLANK-- issue
|
# 200423-0356 - Fix for update_lead --BLANK-- issue
|
||||||
# 200502-0858 - Fix for update_lead --BLANK-- issue with custom fields
|
# 200502-0858 - Fix for update_lead --BLANK-- issue with custom fields
|
||||||
|
# 200508-1503 - Fix for PHP7 issues
|
||||||
#
|
#
|
||||||
|
|
||||||
$version = '2.14-123';
|
$version = '2.14-124';
|
||||||
$build = '200502-0858';
|
$build = '200508-1503';
|
||||||
$api_url_log = 0;
|
$api_url_log = 0;
|
||||||
|
|
||||||
$startMS = microtime();
|
$startMS = microtime();
|
||||||
@@ -1065,6 +1066,14 @@ if ($function == 'sounds_list')
|
|||||||
|
|
||||||
$dh = opendir($dirpath);
|
$dh = opendir($dirpath);
|
||||||
if ($DB>0) {echo "DEBUG: sounds_list variables - $dirpath|$stage|$format\n";}
|
if ($DB>0) {echo "DEBUG: sounds_list variables - $dirpath|$stage|$format\n";}
|
||||||
|
|
||||||
|
$file_names=array();
|
||||||
|
$file_namesPROMPT=array();
|
||||||
|
$file_epoch=array();
|
||||||
|
$file_dates=array();
|
||||||
|
$file_sizes=array();
|
||||||
|
$file_sizesPAD=array();
|
||||||
|
|
||||||
while (false !== ($file = readdir($dh)))
|
while (false !== ($file = readdir($dh)))
|
||||||
{
|
{
|
||||||
# Do not list subdirectories
|
# Do not list subdirectories
|
||||||
@@ -1282,6 +1291,11 @@ if ($function == 'moh_list')
|
|||||||
echo "<td>"._QXZ("Random")."</td>\n";
|
echo "<td>"._QXZ("Random")."</td>\n";
|
||||||
echo "</tr>\n";
|
echo "</tr>\n";
|
||||||
|
|
||||||
|
$rowx=array();
|
||||||
|
$moh_id=array();
|
||||||
|
$moh_name=array();
|
||||||
|
$random=array();
|
||||||
|
|
||||||
$stmt="SELECT moh_id,moh_name,random from vicidial_music_on_hold where active='Y' $LOGadmin_viewable_groupsSQL order by moh_id";
|
$stmt="SELECT moh_id,moh_name,random from vicidial_music_on_hold where active='Y' $LOGadmin_viewable_groupsSQL order by moh_id";
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
$moh_to_print = mysqli_num_rows($rslt);
|
$moh_to_print = mysqli_num_rows($rslt);
|
||||||
@@ -1322,7 +1336,6 @@ if ($function == 'moh_list')
|
|||||||
$m++;
|
$m++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
echo "<tr $bgcolor><td colspan=2 width=100><font size=1 face=\"Arial,Helvetica\"> </td>\n";
|
echo "<tr $bgcolor><td colspan=2 width=100><font size=1 face=\"Arial,Helvetica\"> </td>\n";
|
||||||
echo "<td colspan=3 width=590><font size=2 face=\"Arial,Helvetica\">Files: </font><font size=1 face=\"Arial,Helvetica\">$MOHfiles</td></tr>\n";
|
echo "<td colspan=3 width=590><font size=2 face=\"Arial,Helvetica\">Files: </font><font size=1 face=\"Arial,Helvetica\">$MOHfiles</td></tr>\n";
|
||||||
|
|
||||||
@@ -1425,6 +1438,12 @@ if ($function == 'vm_list')
|
|||||||
echo "<td>"._QXZ("Email")."</td>\n";
|
echo "<td>"._QXZ("Email")."</td>\n";
|
||||||
echo "</tr>\n";
|
echo "</tr>\n";
|
||||||
|
|
||||||
|
$rowx=array();
|
||||||
|
$voicemail_id=array();
|
||||||
|
$fullname=array();
|
||||||
|
$email=array();
|
||||||
|
$extension=array();
|
||||||
|
|
||||||
$stmt="SELECT voicemail_id,fullname,email from vicidial_voicemail where active='Y' $LOGadmin_viewable_groupsSQL order by voicemail_id";
|
$stmt="SELECT voicemail_id,fullname,email from vicidial_voicemail where active='Y' $LOGadmin_viewable_groupsSQL order by voicemail_id";
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
$vm_to_print = mysqli_num_rows($rslt);
|
$vm_to_print = mysqli_num_rows($rslt);
|
||||||
@@ -1644,6 +1663,8 @@ if ($function == 'agent_ingroup_info')
|
|||||||
$in_groups = explode(" ",$in_groups_pre);
|
$in_groups = explode(" ",$in_groups_pre);
|
||||||
$in_groups_ct = count($in_groups);
|
$in_groups_ct = count($in_groups);
|
||||||
$k=1;
|
$k=1;
|
||||||
|
$closer_select=array();
|
||||||
|
|
||||||
while ($k < $closer_groups_ct)
|
while ($k < $closer_groups_ct)
|
||||||
{
|
{
|
||||||
$closer_select[$k]=0;
|
$closer_select[$k]=0;
|
||||||
@@ -5183,6 +5204,16 @@ if ($function == 'list_custom_fields')
|
|||||||
else
|
else
|
||||||
{$listSQL = "list_id > 0";}
|
{$listSQL = "list_id > 0";}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$OUTlist_name=array();
|
||||||
|
$OUTcampaign_id=array();
|
||||||
|
$OUTactive=array();
|
||||||
|
$OUTlist_changedate=array();
|
||||||
|
$OUTlist_lastcalldate=array();
|
||||||
|
$OUTexpiration_date=array();
|
||||||
|
$OUTresets_today=array();
|
||||||
|
$OUTlist_id=array();
|
||||||
|
|
||||||
$stmt="SELECT list_name,campaign_id,active,list_changedate,list_lastcalldate,expiration_date,resets_today,list_id from vicidial_lists where $listSQL $LOGallowed_campaignsSQL order by list_id;";
|
$stmt="SELECT list_name,campaign_id,active,list_changedate,list_lastcalldate,expiration_date,resets_today,list_id from vicidial_lists where $listSQL $LOGallowed_campaignsSQL order by list_id;";
|
||||||
if ($DB>0) {echo "|$stmt|\n";}
|
if ($DB>0) {echo "|$stmt|\n";}
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
@@ -5230,6 +5261,7 @@ if ($function == 'list_custom_fields')
|
|||||||
$rslt=mysql_to_mysqli($stmtA, $link);
|
$rslt=mysql_to_mysqli($stmtA, $link);
|
||||||
if ($DB) {echo "$stmtA\n";}
|
if ($DB) {echo "$stmtA\n";}
|
||||||
$columns_ct = mysqli_num_rows($rslt);
|
$columns_ct = mysqli_num_rows($rslt);
|
||||||
|
$column=array();
|
||||||
while ($columns_ct > $cf)
|
while ($columns_ct > $cf)
|
||||||
{
|
{
|
||||||
$row=mysqli_fetch_row($rslt);
|
$row=mysqli_fetch_row($rslt);
|
||||||
@@ -6860,6 +6892,12 @@ if ($function == 'did_log_export')
|
|||||||
{$DL='|'; $stage='pipe';}
|
{$DL='|'; $stage='pipe';}
|
||||||
if ($header == 'YES')
|
if ($header == 'YES')
|
||||||
{$output .= 'did_number' . $DL . 'call_date' . $DL . 'caller_id_number' . $DL . "length_in_sec\n";}
|
{$output .= 'did_number' . $DL . 'call_date' . $DL . 'caller_id_number' . $DL . "length_in_sec\n";}
|
||||||
|
$DLuniqueid=array();
|
||||||
|
$DLcall_date=array();
|
||||||
|
$DLcaller_id_number=array();
|
||||||
|
$DLepoch=array();
|
||||||
|
$DLlength_in_sec=array();
|
||||||
|
$DLcloser_epoch=array();
|
||||||
|
|
||||||
while ($rec_recs > $k)
|
while ($rec_recs > $k)
|
||||||
{
|
{
|
||||||
@@ -7015,6 +7053,17 @@ if ($function == 'phone_number_log')
|
|||||||
if ($DLset < 1)
|
if ($DLset < 1)
|
||||||
{$DL='|'; $stage='pipe';}
|
{$DL='|'; $stage='pipe';}
|
||||||
|
|
||||||
|
$DLphone_number=array();
|
||||||
|
$DLcall_date=array();
|
||||||
|
$DLlist_id=array();
|
||||||
|
$DLlead_id=array();
|
||||||
|
$DLlength_in_sec=array();
|
||||||
|
$DLdispo_status=array();
|
||||||
|
$DLhangup_reason=array();
|
||||||
|
$DLlead_status=array();
|
||||||
|
$DLsource_id=array();
|
||||||
|
$DLuser=array();
|
||||||
|
|
||||||
while($phones_count > $m)
|
while($phones_count > $m)
|
||||||
{
|
{
|
||||||
$search_SQL = "phone_number='$phones_ready[$m]'";
|
$search_SQL = "phone_number='$phones_ready[$m]'";
|
||||||
@@ -7251,6 +7300,21 @@ if ($function == 'agent_stats_export')
|
|||||||
if ($header == 'YES')
|
if ($header == 'YES')
|
||||||
{$output .= 'user' . $DL . 'full_name' . $DL . 'user_group' . $DL . 'calls' . $DL . 'login_time' . $DL . 'total_talk_time' . $DL . 'avg_talk_time' . $DL . 'avg_wait_time' . $DL . 'pct_of_queue' . $DL . 'pause_time' . $DL . 'sessions' . $DL . 'avg_session' . $DL . 'pauses' . $DL . 'avg_pause_time' . $DL . 'pause_pct' . $DL . 'pauses_per_session' . "\n";}
|
{$output .= 'user' . $DL . 'full_name' . $DL . 'user_group' . $DL . 'calls' . $DL . 'login_time' . $DL . 'total_talk_time' . $DL . 'avg_talk_time' . $DL . 'avg_wait_time' . $DL . 'pct_of_queue' . $DL . 'pause_time' . $DL . 'sessions' . $DL . 'avg_session' . $DL . 'pauses' . $DL . 'avg_pause_time' . $DL . 'pause_pct' . $DL . 'pauses_per_session' . "\n";}
|
||||||
|
|
||||||
|
$ASuser=array();
|
||||||
|
$ASstart_epoch=array();
|
||||||
|
$AScalls=array();
|
||||||
|
$ASpauses=array();
|
||||||
|
$ASsessions=array();
|
||||||
|
$ASpause_sec=array();
|
||||||
|
$ASwait_sec=array();
|
||||||
|
$AStalk_sec=array();
|
||||||
|
$ASdispo_sec=array();
|
||||||
|
$ASdead_sec=array();
|
||||||
|
$ASend_epoch=array();
|
||||||
|
$ASend_sec=array();
|
||||||
|
$ASfull_name=array();
|
||||||
|
$ASuser_group=array();
|
||||||
|
|
||||||
$last_user='998877665544332211328497';
|
$last_user='998877665544332211328497';
|
||||||
$total_calls=0;
|
$total_calls=0;
|
||||||
$uc=-1;
|
$uc=-1;
|
||||||
@@ -7498,6 +7562,8 @@ if ($function == 'user_group_status')
|
|||||||
$total_calls_waiting=0;
|
$total_calls_waiting=0;
|
||||||
$call_camps[0]='';
|
$call_camps[0]='';
|
||||||
$call_types[0]='';
|
$call_types[0]='';
|
||||||
|
$call_camps=array();
|
||||||
|
$call_types=array();
|
||||||
|
|
||||||
$callerids='';
|
$callerids='';
|
||||||
$pausecode='';
|
$pausecode='';
|
||||||
@@ -7766,6 +7832,8 @@ if ($function == 'in_group_status')
|
|||||||
$total_agents_in_dial=0;
|
$total_agents_in_dial=0;
|
||||||
$total_calls=0;
|
$total_calls=0;
|
||||||
$total_calls_waiting=0;
|
$total_calls_waiting=0;
|
||||||
|
$call_camps=array();
|
||||||
|
$call_types=array();
|
||||||
$call_camps[0]='';
|
$call_camps[0]='';
|
||||||
$call_types[0]='';
|
$call_types[0]='';
|
||||||
|
|
||||||
@@ -9147,6 +9215,7 @@ if ($function == 'lead_status_search')
|
|||||||
$leads_exist = mysqli_num_rows($rslt);
|
$leads_exist = mysqli_num_rows($rslt);
|
||||||
$x=0;
|
$x=0;
|
||||||
$lead_id_list="'0'";
|
$lead_id_list="'0'";
|
||||||
|
$export_lead_id=array();
|
||||||
while ($leads_exist > $x)
|
while ($leads_exist > $x)
|
||||||
{
|
{
|
||||||
$row=mysqli_fetch_row($rslt);
|
$row=mysqli_fetch_row($rslt);
|
||||||
@@ -10534,6 +10603,9 @@ if ($function == 'update_lead')
|
|||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
$pc_recs = mysqli_num_rows($rslt);
|
$pc_recs = mysqli_num_rows($rslt);
|
||||||
$n=0;
|
$n=0;
|
||||||
|
$search_lead_id=array();
|
||||||
|
$search_lead_list=array();
|
||||||
|
$search_entry_list=array();
|
||||||
while ($pc_recs > $n)
|
while ($pc_recs > $n)
|
||||||
{
|
{
|
||||||
$row=mysqli_fetch_row($rslt);
|
$row=mysqli_fetch_row($rslt);
|
||||||
@@ -11779,6 +11851,20 @@ if ($function == 'logged_in_agents')
|
|||||||
{$header_sub_status = $DL . 'pause_code' . $DL . 'sub_status';}
|
{$header_sub_status = $DL . 'pause_code' . $DL . 'sub_status';}
|
||||||
$output .= 'user' . $DL . 'campaign_id' . $DL . 'session_id' . $DL . 'status' . $DL . 'lead_id' . $DL . 'callerid' . $DL . 'calls_today' . $DL . 'full_name' . $DL . 'user_group' . $DL . 'user_level' . $header_sub_status . "\n";
|
$output .= 'user' . $DL . 'campaign_id' . $DL . 'session_id' . $DL . 'status' . $DL . 'lead_id' . $DL . 'callerid' . $DL . 'calls_today' . $DL . 'full_name' . $DL . 'user_group' . $DL . 'user_level' . $header_sub_status . "\n";
|
||||||
}
|
}
|
||||||
|
$Astatus=array();
|
||||||
|
$Acallerid=array();
|
||||||
|
$Alead_id=array();
|
||||||
|
$Acampaign_id=array();
|
||||||
|
$Acalls_today=array();
|
||||||
|
$Aagent_log_id=array();
|
||||||
|
$Aon_hook_agent=array();
|
||||||
|
$Aring_callerid=array();
|
||||||
|
$Apreview_lead_id=array();
|
||||||
|
$Aconf_exten=array();
|
||||||
|
$Auser=array();
|
||||||
|
$Acomments=array();
|
||||||
|
$Apause_code=array();
|
||||||
|
$Artr_status=array();
|
||||||
|
|
||||||
$stmt="SELECT status,callerid,lead_id,campaign_id,calls_today,agent_log_id,on_hook_agent,ring_callerid,preview_lead_id,conf_exten,user,comments from vicidial_live_agents $whereLOGallowed_campaignsSQL $search_CAMP_SQL;";
|
$stmt="SELECT status,callerid,lead_id,campaign_id,calls_today,agent_log_id,on_hook_agent,ring_callerid,preview_lead_id,conf_exten,user,comments from vicidial_live_agents $whereLOGallowed_campaignsSQL $search_CAMP_SQL;";
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
|
|||||||
Reference in New Issue
Block a user