Added Sort Order for Export Calls Report
git-svn-id: svn://192.168.202.10@3743 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
# and/or vicidial_closer_log information by status, list_id and date range.
|
# and/or vicidial_closer_log information by status, list_id and date range.
|
||||||
# downloads to a flat text file that is tab delimited
|
# downloads to a flat text file that is tab delimited
|
||||||
#
|
#
|
||||||
# Copyright (C) 2022 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
# Copyright (C) 2023 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||||
#
|
#
|
||||||
# CHANGES
|
# CHANGES
|
||||||
#
|
#
|
||||||
@@ -64,6 +64,7 @@
|
|||||||
# 211119-1500 - Fix for status names
|
# 211119-1500 - Fix for status names
|
||||||
# 220301-1603 - Added allow_web_debug system setting
|
# 220301-1603 - Added allow_web_debug system setting
|
||||||
# 230622-1652 - Added filtering by time (hours), and option for single user exports.
|
# 230622-1652 - Added filtering by time (hours), and option for single user exports.
|
||||||
|
# 230623-1025 - Added sort_dir sort direction
|
||||||
#
|
#
|
||||||
|
|
||||||
$startMS = microtime();
|
$startMS = microtime();
|
||||||
@@ -87,6 +88,8 @@ if (isset($_GET["end_hour"])) {$end_hour=$_GET["end_hour"];}
|
|||||||
elseif (isset($_POST["end_hour"])) {$end_hour=$_POST["end_hour"];}
|
elseif (isset($_POST["end_hour"])) {$end_hour=$_POST["end_hour"];}
|
||||||
if (isset($_GET["user"])) {$user=$_GET["user"];}
|
if (isset($_GET["user"])) {$user=$_GET["user"];}
|
||||||
elseif (isset($_POST["user"])) {$user=$_POST["user"];}
|
elseif (isset($_POST["user"])) {$user=$_POST["user"];}
|
||||||
|
if (isset($_GET["sort_dir"])) {$sort_dir=$_GET["sort_dir"];}
|
||||||
|
elseif (isset($_POST["sort_dir"])) {$sort_dir=$_POST["sort_dir"];}
|
||||||
if (isset($_GET["campaign"])) {$campaign=$_GET["campaign"];}
|
if (isset($_GET["campaign"])) {$campaign=$_GET["campaign"];}
|
||||||
elseif (isset($_POST["campaign"])) {$campaign=$_POST["campaign"];}
|
elseif (isset($_POST["campaign"])) {$campaign=$_POST["campaign"];}
|
||||||
if (isset($_GET["group"])) {$group=$_GET["group"];}
|
if (isset($_GET["group"])) {$group=$_GET["group"];}
|
||||||
@@ -138,6 +141,7 @@ if (!isset($query_date)) {$query_date = $NOW_DATE;}
|
|||||||
if (!isset($end_date)) {$end_date = $NOW_DATE;}
|
if (!isset($end_date)) {$end_date = $NOW_DATE;}
|
||||||
if (!isset($query_hour)) {$query_hour = "00";}
|
if (!isset($query_hour)) {$query_hour = "00";}
|
||||||
if (!isset($end_hour)) {$end_hour = "23";}
|
if (!isset($end_hour)) {$end_hour = "23";}
|
||||||
|
if (!isset($sort_dir)) {$sort_dir = "asc";}
|
||||||
if (strlen($shift)<2) {$shift='ALL';}
|
if (strlen($shift)<2) {$shift='ALL';}
|
||||||
|
|
||||||
$report_name = 'Export Calls Report';
|
$report_name = 'Export Calls Report';
|
||||||
@@ -199,14 +203,27 @@ if ($non_latin < 1)
|
|||||||
$PHP_AUTH_USER = preg_replace('/[^-_0-9a-zA-Z]/', '', $PHP_AUTH_USER);
|
$PHP_AUTH_USER = preg_replace('/[^-_0-9a-zA-Z]/', '', $PHP_AUTH_USER);
|
||||||
$PHP_AUTH_PW = preg_replace('/[^-_0-9a-zA-Z]/', '', $PHP_AUTH_PW);
|
$PHP_AUTH_PW = preg_replace('/[^-_0-9a-zA-Z]/', '', $PHP_AUTH_PW);
|
||||||
$user = preg_replace('/[^-_0-9a-zA-Z]/', '', $user);
|
$user = preg_replace('/[^-_0-9a-zA-Z]/', '', $user);
|
||||||
|
$sort_dir = preg_replace('/[^a-zA-Z]/', '', $sort_dir);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$PHP_AUTH_USER = preg_replace('/[^-_0-9\p{L}]/u', '', $PHP_AUTH_USER);
|
$PHP_AUTH_USER = preg_replace('/[^-_0-9\p{L}]/u', '', $PHP_AUTH_USER);
|
||||||
$PHP_AUTH_PW = preg_replace('/[^-_0-9\p{L}]/u', '', $PHP_AUTH_PW);
|
$PHP_AUTH_PW = preg_replace('/[^-_0-9\p{L}]/u', '', $PHP_AUTH_PW);
|
||||||
$user = preg_replace('/[^-_0-9\p{L}]/u', '', $user);
|
$sort_dir = preg_replace('/[^\p{L}]/u', '', $sort_dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch ($sort_dir) {
|
||||||
|
default:
|
||||||
|
case "asc":
|
||||||
|
$asc="checked";
|
||||||
|
$desc="";
|
||||||
|
break;
|
||||||
|
case "desc":
|
||||||
|
$asc="";
|
||||||
|
$desc="checked";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
### ARCHIVED DATA CHECK CONFIGURATION
|
### ARCHIVED DATA CHECK CONFIGURATION
|
||||||
$archives_available="N";
|
$archives_available="N";
|
||||||
$log_tables_array=array("vicidial_log", "vicidial_closer_log", "vicidial_agent_log", "vicidial_log_extended", "recording_log", "vicidial_carrier_log", "vicidial_cpd_log", "vicidial_did_log", "vicidial_outbound_ivr_log");
|
$log_tables_array=array("vicidial_log", "vicidial_closer_log", "vicidial_agent_log", "vicidial_log_extended", "recording_log", "vicidial_carrier_log", "vicidial_cpd_log", "vicidial_did_log", "vicidial_outbound_ivr_log");
|
||||||
@@ -747,11 +764,11 @@ if ($run_export > 0)
|
|||||||
{
|
{
|
||||||
if ( ($export_fields == 'EXTENDED') or ($export_fields == 'EXTENDED_2') or ($export_fields == 'EXTENDED_3') or ($export_fields == 'EXTENDED_4') )
|
if ( ($export_fields == 'EXTENDED') or ($export_fields == 'EXTENDED_2') or ($export_fields == 'EXTENDED_3') or ($export_fields == 'EXTENDED_4') )
|
||||||
{
|
{
|
||||||
$stmt = "SELECT vl.call_date,vl.phone_number,vl.status,vl.user,vu.full_name,vl.campaign_id,vi.vendor_lead_code,vi.source_id,vi.list_id,vi.gmt_offset_now,vi.phone_code,vi.phone_number,vi.title,vi.first_name,vi.middle_initial,vi.last_name,vi.address1,vi.address2,vi.address3,vi.city,vi.state,vi.province,vi.postal_code,vi.country_code,vi.gender,vi.date_of_birth,vi.alt_phone,vi.email,vi.security_phrase,vi.comments,vl.length_in_sec,vl.user_group,vl.alt_dial,vi.rank,vi.owner,vi.lead_id,vl.uniqueid,vi.entry_list_id, ifnull(val.dispo_sec+val.dead_sec,0)$export_fields_SQL from vicidial_users vu,vicidial_list vi,".$vicidial_log_table." vl LEFT OUTER JOIN ".$vicidial_agent_log_table." val ON vl.uniqueid=val.uniqueid and vl.lead_id=val.lead_id and vl.user=val.user where ".$date_field." >= '$query_date $query_time' and ".$date_field." <= '$end_date $end_time' and vu.user=vl.user and vi.lead_id=vl.lead_id $list_SQL $campaign_SQL $user_SQL $user_group_SQL $status_SQL order by ".$date_field." limit 1000000;";
|
$stmt = "SELECT vl.call_date,vl.phone_number,vl.status,vl.user,vu.full_name,vl.campaign_id,vi.vendor_lead_code,vi.source_id,vi.list_id,vi.gmt_offset_now,vi.phone_code,vi.phone_number,vi.title,vi.first_name,vi.middle_initial,vi.last_name,vi.address1,vi.address2,vi.address3,vi.city,vi.state,vi.province,vi.postal_code,vi.country_code,vi.gender,vi.date_of_birth,vi.alt_phone,vi.email,vi.security_phrase,vi.comments,vl.length_in_sec,vl.user_group,vl.alt_dial,vi.rank,vi.owner,vi.lead_id,vl.uniqueid,vi.entry_list_id, ifnull(val.dispo_sec+val.dead_sec,0)$export_fields_SQL from vicidial_users vu,vicidial_list vi,".$vicidial_log_table." vl LEFT OUTER JOIN ".$vicidial_agent_log_table." val ON vl.uniqueid=val.uniqueid and vl.lead_id=val.lead_id and vl.user=val.user where ".$date_field." >= '$query_date $query_time' and ".$date_field." <= '$end_date $end_time' and vu.user=vl.user and vi.lead_id=vl.lead_id $list_SQL $campaign_SQL $user_SQL $user_group_SQL $status_SQL order by ".$date_field." $sort_dir limit 1000000;";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$stmt = "SELECT vl.call_date,vl.phone_number,vl.status,vl.user,vu.full_name,vl.campaign_id,vi.vendor_lead_code,vi.source_id,vi.list_id,vi.gmt_offset_now,vi.phone_code,vi.phone_number,vi.title,vi.first_name,vi.middle_initial,vi.last_name,vi.address1,vi.address2,vi.address3,vi.city,vi.state,vi.province,vi.postal_code,vi.country_code,vi.gender,vi.date_of_birth,vi.alt_phone,vi.email,vi.security_phrase,vi.comments,vl.length_in_sec,vl.user_group,vl.alt_dial,vi.rank,vi.owner,vi.lead_id,vl.uniqueid,vi.entry_list_id$export_fields_SQL from vicidial_users vu,".$vicidial_log_table." vl,vicidial_list vi where ".$date_field." >= '$query_date $query_time' and ".$date_field." <= '$end_date $end_time' and vu.user=vl.user and vi.lead_id=vl.lead_id $list_SQL $campaign_SQL $user_SQL $user_group_SQL $status_SQL order by ".$date_field." limit 1000000;";
|
$stmt = "SELECT vl.call_date,vl.phone_number,vl.status,vl.user,vu.full_name,vl.campaign_id,vi.vendor_lead_code,vi.source_id,vi.list_id,vi.gmt_offset_now,vi.phone_code,vi.phone_number,vi.title,vi.first_name,vi.middle_initial,vi.last_name,vi.address1,vi.address2,vi.address3,vi.city,vi.state,vi.province,vi.postal_code,vi.country_code,vi.gender,vi.date_of_birth,vi.alt_phone,vi.email,vi.security_phrase,vi.comments,vl.length_in_sec,vl.user_group,vl.alt_dial,vi.rank,vi.owner,vi.lead_id,vl.uniqueid,vi.entry_list_id$export_fields_SQL from vicidial_users vu,".$vicidial_log_table." vl,vicidial_list vi where ".$date_field." >= '$query_date $query_time' and ".$date_field." <= '$end_date $end_time' and vu.user=vl.user and vi.lead_id=vl.lead_id $list_SQL $campaign_SQL $user_SQL $user_group_SQL $status_SQL order by ".$date_field." $sort_dir limit 1000000;";
|
||||||
}
|
}
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($DB) {$DBout .= "$stmt\n";}
|
if ($DB) {$DBout .= "$stmt\n";}
|
||||||
@@ -893,11 +910,11 @@ if ($run_export > 0)
|
|||||||
{
|
{
|
||||||
if ( ($export_fields == 'EXTENDED') or ($export_fields == 'EXTENDED_2') or ($export_fields == 'EXTENDED_3') or ($export_fields == 'EXTENDED_4') )
|
if ( ($export_fields == 'EXTENDED') or ($export_fields == 'EXTENDED_2') or ($export_fields == 'EXTENDED_3') or ($export_fields == 'EXTENDED_4') )
|
||||||
{
|
{
|
||||||
$stmtA = "SELECT vl.call_date,vl.phone_number,vl.status,vl.user,vu.full_name,vl.campaign_id,vi.vendor_lead_code,vi.source_id,vi.list_id,vi.gmt_offset_now,vi.phone_code,vi.phone_number,vi.title,vi.first_name,vi.middle_initial,vi.last_name,vi.address1,vi.address2,vi.address3,vi.city,vi.state,vi.province,vi.postal_code,vi.country_code,vi.gender,vi.date_of_birth,vi.alt_phone,vi.email,vi.security_phrase,vi.comments,vl.length_in_sec,vl.user_group,vl.queue_seconds,vi.rank,vi.owner,vi.lead_id,vl.closecallid,vi.entry_list_id,vl.uniqueid,val.campaign_id, ifnull(val.dispo_sec+val.dead_sec,0)$export_fields_SQL from vicidial_users vu,vicidial_list vi,".$vicidial_closer_log_table." vl LEFT OUTER JOIN ".$vicidial_agent_log_table." val ON vl.uniqueid=val.uniqueid and vl.lead_id=val.lead_id and vl.user=val.user where ".$date_field." >= '$query_date $query_time' and ".$date_field." <= '$end_date $end_time' and vu.user=vl.user and vi.lead_id=vl.lead_id $list_SQL $group_SQL $user_SQL $user_group_SQL $status_SQL order by ".$date_field." limit 1000000;";
|
$stmtA = "SELECT vl.call_date,vl.phone_number,vl.status,vl.user,vu.full_name,vl.campaign_id,vi.vendor_lead_code,vi.source_id,vi.list_id,vi.gmt_offset_now,vi.phone_code,vi.phone_number,vi.title,vi.first_name,vi.middle_initial,vi.last_name,vi.address1,vi.address2,vi.address3,vi.city,vi.state,vi.province,vi.postal_code,vi.country_code,vi.gender,vi.date_of_birth,vi.alt_phone,vi.email,vi.security_phrase,vi.comments,vl.length_in_sec,vl.user_group,vl.queue_seconds,vi.rank,vi.owner,vi.lead_id,vl.closecallid,vi.entry_list_id,vl.uniqueid,val.campaign_id, ifnull(val.dispo_sec+val.dead_sec,0)$export_fields_SQL from vicidial_users vu,vicidial_list vi,".$vicidial_closer_log_table." vl LEFT OUTER JOIN ".$vicidial_agent_log_table." val ON vl.uniqueid=val.uniqueid and vl.lead_id=val.lead_id and vl.user=val.user where ".$date_field." >= '$query_date $query_time' and ".$date_field." <= '$end_date $end_time' and vu.user=vl.user and vi.lead_id=vl.lead_id $list_SQL $group_SQL $user_SQL $user_group_SQL $status_SQL order by ".$date_field." $sort_dir limit 1000000;";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$stmtA = "SELECT vl.call_date,vl.phone_number,vl.status,vl.user,vu.full_name,vl.campaign_id,vi.vendor_lead_code,vi.source_id,vi.list_id,vi.gmt_offset_now,vi.phone_code,vi.phone_number,vi.title,vi.first_name,vi.middle_initial,vi.last_name,vi.address1,vi.address2,vi.address3,vi.city,vi.state,vi.province,vi.postal_code,vi.country_code,vi.gender,vi.date_of_birth,vi.alt_phone,vi.email,vi.security_phrase,vi.comments,vl.length_in_sec,vl.user_group,vl.queue_seconds,vi.rank,vi.owner,vi.lead_id,vl.closecallid,vi.entry_list_id,vl.uniqueid,val.campaign_id$export_fields_SQL from vicidial_users vu,vicidial_list vi,".$vicidial_closer_log_table." vl LEFT OUTER JOIN ".$vicidial_agent_log_table." val ON vl.uniqueid=val.uniqueid and vl.lead_id=val.lead_id and vl.user=val.user where ".$date_field." >= '$query_date $query_time' and ".$date_field." <= '$end_date $end_time' and vu.user=vl.user and vi.lead_id=vl.lead_id $list_SQL $group_SQL $user_SQL $user_group_SQL $status_SQL order by ".$date_field." limit 1000000;";
|
$stmtA = "SELECT vl.call_date,vl.phone_number,vl.status,vl.user,vu.full_name,vl.campaign_id,vi.vendor_lead_code,vi.source_id,vi.list_id,vi.gmt_offset_now,vi.phone_code,vi.phone_number,vi.title,vi.first_name,vi.middle_initial,vi.last_name,vi.address1,vi.address2,vi.address3,vi.city,vi.state,vi.province,vi.postal_code,vi.country_code,vi.gender,vi.date_of_birth,vi.alt_phone,vi.email,vi.security_phrase,vi.comments,vl.length_in_sec,vl.user_group,vl.queue_seconds,vi.rank,vi.owner,vi.lead_id,vl.closecallid,vi.entry_list_id,vl.uniqueid,val.campaign_id$export_fields_SQL from vicidial_users vu,vicidial_list vi,".$vicidial_closer_log_table." vl LEFT OUTER JOIN ".$vicidial_agent_log_table." val ON vl.uniqueid=val.uniqueid and vl.lead_id=val.lead_id and vl.user=val.user where ".$date_field." >= '$query_date $query_time' and ".$date_field." <= '$end_date $end_time' and vu.user=vl.user and vi.lead_id=vl.lead_id $list_SQL $group_SQL $user_SQL $user_group_SQL $status_SQL order by ".$date_field." $sort_dir limit 1000000;";
|
||||||
}
|
}
|
||||||
$rslt=mysql_to_mysqli($stmtA, $link);
|
$rslt=mysql_to_mysqli($stmtA, $link);
|
||||||
if ($DB) {$DBout .= "$stmtA\n";}
|
if ($DB) {$DBout .= "$stmtA\n";}
|
||||||
@@ -1785,6 +1802,12 @@ else
|
|||||||
|
|
||||||
echo "<BR><BR>\n";
|
echo "<BR><BR>\n";
|
||||||
|
|
||||||
|
echo "<B>"._QXZ("Sort order").":</B> $NWB#call_export_report-sort_dir$NWE\n<BR>\n";
|
||||||
|
echo "<input type=radio value='asc' name='sort_dir' $asc>"._QXZ("Ascending")."<BR>\n";
|
||||||
|
echo "<input type=radio value='desc' name='sort_dir' $desc>"._QXZ("Descending")."<BR>\n";
|
||||||
|
|
||||||
|
echo "<BR><BR>\n";
|
||||||
|
|
||||||
echo "<B>"._QXZ("Header Row").":</B><BR>\n";
|
echo "<B>"._QXZ("Header Row").":</B><BR>\n";
|
||||||
echo "<select size=1 name=header_row><option selected value=\"YES\">"._QXZ("YES")."</option><option value=\"NO\">"._QXZ("NO")."</option></select> $NWB#call_export_report-header_row$NWE\n";
|
echo "<select size=1 name=header_row><option selected value=\"YES\">"._QXZ("YES")."</option><option value=\"NO\">"._QXZ("NO")."</option></select> $NWB#call_export_report-header_row$NWE\n";
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# version: 20230615085301
|
# version: 20230623102601
|
||||||
users-user User ID <QXZ>This field is where you put the users ID number, can be up to 20 digits in length, Must be at least 2 characters in length. We strongly recommend not reusing user accounts for different users, for reporting accuracy. To disable a user account, set the Active option to -N-.</QXZ>
|
users-user User ID <QXZ>This field is where you put the users ID number, can be up to 20 digits in length, Must be at least 2 characters in length. We strongly recommend not reusing user accounts for different users, for reporting accuracy. To disable a user account, set the Active option to -N-.</QXZ>
|
||||||
users-pass Password <QXZ>This field is where you put the users password. Must be at least 2 characters in length. Only letters and numbers are allowed in user passwords. A medium strength user password will be at least 10 characters in length, and a strong user password will be at least 20 characters in length and have letters as well as at least one number. It is recommended that you use a longer password if possible, stringing together several unrelated words with no spaces, and a number somewhere in the string. The maximum size of a password is 100 characters.</QXZ>
|
users-pass Password <QXZ>This field is where you put the users password. Must be at least 2 characters in length. Only letters and numbers are allowed in user passwords. A medium strength user password will be at least 10 characters in length, and a strong user password will be at least 20 characters in length and have letters as well as at least one number. It is recommended that you use a longer password if possible, stringing together several unrelated words with no spaces, and a number somewhere in the string. The maximum size of a password is 100 characters.</QXZ>
|
||||||
users-force_change_password Force Change Password <QXZ>If this option is set to Y then the user will be prompted to change their password the next time they log in to the administration webpage or the agent screen. Default is N.</QXZ>
|
users-force_change_password Force Change Password <QXZ>If this option is set to Y then the user will be prompted to change their password the next time they log in to the administration webpage or the agent screen. Default is N.</QXZ>
|
||||||
@@ -1496,6 +1496,7 @@ ACCIDDELETE AC-CID Bulk Delete <QXZ>This will delete the Areacode Caller ID entr
|
|||||||
call_export_report Call Export Report <QXZ>This report is for the downloading of leads and their vicidial_log and/or vicidial_closer_log information by status, list_id and date range. Report downloads to a flat text file that is tab delimited.</QXZ>
|
call_export_report Call Export Report <QXZ>This report is for the downloading of leads and their vicidial_log and/or vicidial_closer_log information by status, list_id and date range. Report downloads to a flat text file that is tab delimited.</QXZ>
|
||||||
call_export_report-user User <QXZ>This option will filter all calls to a specific user - user group permissions for the report user still apply, however.</QXZ>
|
call_export_report-user User <QXZ>This option will filter all calls to a specific user - user group permissions for the report user still apply, however.</QXZ>
|
||||||
call_export_report-date_field Date Field <QXZ>This option will determine if the data exported will be by call log date or the entry date of when the lead was added to the system.</QXZ>
|
call_export_report-date_field Date Field <QXZ>This option will determine if the data exported will be by call log date or the entry date of when the lead was added to the system.</QXZ>
|
||||||
|
call_export_report-sort_dir Sort Order <QXZ>This option will determine if the data exported will sorted in ascending or descending order by the "Date Field" option selected. Default is ascending.</QXZ>
|
||||||
call_export_report-header_row Header Row <QXZ>If enabled, the first line in the exported data file will be a list of the headers for the data in the file.</QXZ>
|
call_export_report-header_row Header Row <QXZ>If enabled, the first line in the exported data file will be a list of the headers for the data in the file.</QXZ>
|
||||||
call_export_report-rec_fields Recording Fields <QXZ>If enabled, the recordings for the latest phone call for the selected leads will be included in the export. If there is more than one recording, they will be pipe-delimited.</QXZ>
|
call_export_report-rec_fields Recording Fields <QXZ>If enabled, the recordings for the latest phone call for the selected leads will be included in the export. If there is more than one recording, they will be pipe-delimited.</QXZ>
|
||||||
call_export_report-custom_fields Custom Fields <QXZ>If Custom List Fields is enabled on your system, and the leads you are exporting have custom fields values stored in the database, they will be included in the export.</QXZ>
|
call_export_report-custom_fields Custom Fields <QXZ>If Custom List Fields is enabled on your system, and the leads you are exporting have custom fields values stored in the database, they will be included in the export.</QXZ>
|
||||||
|
|||||||
Reference in New Issue
Block a user