Added filter exclude options to nanpa filter scripts

Fixes minor issues in admin.php
Added user group to agent performance detail report

git-svn-id: svn://192.168.202.10@2031 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
mattf
2013-10-06 01:19:36 +00:00
parent 11757a3c9f
commit d75184c3e1
7 changed files with 163 additions and 49 deletions
+1 -1
View File
@@ -125,7 +125,7 @@ OTHER CHANGES:
any action or changes to enable since it is a change to the code.
We are working on converting the administrative PHP scripts as well.
These require MySQL 5.0 minimum to be used, but for several years that
has been the minimmum for Vicidial anyway, so that requirement shouldn't
has been the minimum for Vicidial anyway, so that requirement shouldn't
be a problem for existing systems running the newest code. The existing
older mysql PHP functions are set to be marked as depricated in PHP for
future versions. For more information on mysqli you can visit the below
+33 -2
View File
@@ -12,6 +12,7 @@
#
# CHANGES
# 130822-1645 - first build
# 131003-1725 - Added exclude filter settings
#
$secX = time();
@@ -53,6 +54,8 @@ if (length($ARGV[0])>1)
print " [--landline-list-id=XXX] = OPTIONAL, list that you want to move landline phones into\n";
print " [--invalid-list-id=XXX] = OPTIONAL, list that you want to move invalid prefix phone numbers into\n";
print " [--vl-field-update=XXX] = OPTIONAL, field that you want to update with the phone type information\n";
print " [--exclude-field=XXX] = OPTIONAL, field that you want to check in vicidial_list to exclude from processing\n";
print " [--exclude-value=XXX] = OPTIONAL, value of the above field that you want to check in vicidial_list to exclude from processing\n";
print "\n";
exit;
}
@@ -152,6 +155,20 @@ if (length($ARGV[0])>1)
$vl_field_update =~ s/ .*//gi;
if ($DB > 0) {print "\n----- VL FIELD UPDATE: $vl_field_update -----\n\n";}
}
if ($args =~ /--exclude-field=/i)
{
@data_in = split(/--exclude-field=/,$args);
$exclude_field = $data_in[1];
$exclude_field =~ s/ .*//gi;
if ($DB > 0) {print "\n----- EXCLUDE FIELD: $exclude_field -----\n\n";}
}
if ($args =~ /--exclude-value=/i)
{
@data_in = split(/--exclude-value=/,$args);
$exclude_value = $data_in[1];
$exclude_value =~ s/ .*//gi;
if ($DB > 0) {print "\n----- EXCLUDE VALUE: $exclude_value -----\n\n";}
}
}
}
else
@@ -276,14 +293,28 @@ $dbhB = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VA
if ($output_to_db)
{
$stmtA = "INSERT INTO vicidial_nanpa_filter_log SET output_code='$db_output_code',user='$TRIGGER_user',status='LAUNCHED',server_ip='$VARserver_ip',list_id='$list_id',start_time=NOW(),update_time=NOW(),status_line='Starting...',script_output=\"Starting...\nCELLPHONE LIST ID: $cellphone_list_id\nLANDLINE LIST ID: $landline_list_id\nINVALID LIST ID: $invalid_list_id\nVL FIELD UPDATE: $vl_field_update\n\" ON DUPLICATE KEY UPDATE status='LAUNCHED',server_ip='$VARserver_ip',list_id='$list_id',update_time=NOW(),status_line=\"Starting...\n\",script_output=CONCAT(script_output,\"Starting...\nCELLPHONE LIST ID: $cellphone_list_id\nLANDLINE LIST ID: $landline_list_id\nINVALID LIST ID: $invalid_list_id\nVL FIELD UPDATE: $vl_field_update\n\");";
$stmtA = "INSERT INTO vicidial_nanpa_filter_log SET output_code='$db_output_code',user='$TRIGGER_user',status='LAUNCHED',server_ip='$VARserver_ip',list_id='$list_id',start_time=NOW(),update_time=NOW(),status_line='Starting...',script_output=\"Starting...\nCELLPHONE LIST ID: $cellphone_list_id\nLANDLINE LIST ID: $landline_list_id\nINVALID LIST ID: $invalid_list_id\nVL FIELD UPDATE: $vl_field_update\nEXCLUDE FIELD: $exclude_field\nEXCLUDE VALUE: $exclude_value\n\" ON DUPLICATE KEY UPDATE status='LAUNCHED',server_ip='$VARserver_ip',list_id='$list_id',update_time=NOW(),status_line=\"Starting...\n\",script_output=CONCAT(script_output,\"Starting...\nCELLPHONE LIST ID: $cellphone_list_id\nLANDLINE LIST ID: $landline_list_id\nINVALID LIST ID: $invalid_list_id\nVL FIELD UPDATE: $vl_field_update\nEXCLUDE FIELD: $exclude_field\nEXCLUDE VALUE: $exclude_value\n\");";
$affected_rows = $dbhA->do($stmtA);
if($DBX){print STDERR "\n|$affected_rows|$stmtA|\n";}
}
@lead_ids=@MT;
@phones=@MT;
$stmtA = "SELECT lead_id,phone_number from vicidial_list $list_idSQL;";
$excludeSQL='';
if ( (length($exclude_field) > 1) && (length($exclude_value) > 1) )
{
if (length($list_idSQL) > 5)
{
$excludeSQL = "and $exclude_field!='$exclude_value'";
}
else
{
$excludeSQL = "where $exclude_field!='$exclude_value'";
}
}
$stmtA = "SELECT lead_id,phone_number from vicidial_list $list_idSQL $excludeSQL;";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
+31
View File
@@ -12,6 +12,7 @@
#
# CHANGES
# 130914-1710 - first build
# 131003-1743 - Added exclude filter settings
#
$PATHconf = '/etc/astguiclient.conf';
@@ -118,6 +119,8 @@ if (length($ARGV[0])>1)
print " [--landline-list-id=XXX] = OPTIONAL, list that you want to move landline phones into\n";
print " [--invalid-list-id=XXX] = OPTIONAL, list that you want to move invalid prefix phone numbers into\n";
print " [--vl-field-update=XXX] = OPTIONAL, field that you want to update with the phone type information\n";
print " [--exclude-field=XXX] = OPTIONAL, field that you want to check in vicidial_list to exclude from processing\n";
print " [--exclude-value=XXX] = OPTIONAL, value of the above field that you want to check in vicidial_list to exclude from processing\n";
print "\n";
exit;
}
@@ -216,6 +219,20 @@ if (length($ARGV[0])>1)
$vl_field_update =~ s/ .*//gi;
if ($DB > 0) {print "\n----- VL FIELD UPDATE: $vl_field_update -----\n\n";}
}
if ($args =~ /--exclude-field=/i)
{
@data_in = split(/--exclude-field=/,$args);
$exclude_field = $data_in[1];
$exclude_field =~ s/ .*//gi;
if ($DB > 0) {print "\n----- EXCLUDE FIELD: $exclude_field -----\n\n";}
}
if ($args =~ /--exclude-value=/i)
{
@data_in = split(/--exclude-value=/,$args);
$exclude_value = $data_in[1];
$exclude_value =~ s/ .*//gi;
if ($DB > 0) {print "\n----- EXCLUDE VALUE: $exclude_value -----\n\n";}
}
}
}
else
@@ -252,6 +269,20 @@ if (!%six_digit_wireless_hash) {&CompilePrefixHashes;}
@lead_ids=@MT;
@phones=@MT;
$excludeSQL='';
if ( (length($exclude_field) > 1) && (length($exclude_value) > 1) )
{
if (length($list_idSQL) > 5)
{
$excludeSQL = "and $exclude_field!='$exclude_value'";
}
else
{
$excludeSQL = "where $exclude_field!='$exclude_value'";
}
}
$stmtA = "SELECT lead_id,phone_number from vicidial_list $list_idSQL;";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
+37 -22
View File
@@ -36,6 +36,7 @@
# 130621-0824 - Added filtering of input to prevent SQL injection attacks and new user auth
# 130704-0935 - Fixed issue #675
# 130829-2012 - Changed to mysqli PHP functions
# 131002-2015 - Added user group to report output
#
$startMS = microtime();
@@ -493,7 +494,7 @@ $statusesHEAD='';
$CSV_header="\"Agent Performance Detail $NOW_TIME\"\n";
$CSV_header.="\"Time range: $query_date_BEGIN to $query_date_END\"\n\n";
$CSV_header.="\"---------- AGENTS Details -------------\"\n";
$CSV_header.='"USER NAME","ID","CALLS","TIME","PAUSE","PAUSAVG","WAIT","WAITAVG","TALK","TALKAVG","DISPO","DISPAVG","DEAD","DEADAVG","CUSTOMER","CUSTAVG"';
$CSV_header.='"USER NAME","ID","USER GROUP","CALLS","TIME","PAUSE","PAUSAVG","WAIT","WAITAVG","TALK","TALKAVG","DISPO","DISPAVG","DEAD","DEADAVG","CUSTOMER","CUSTAVG"';
$statusesHTML='';
$statusesARY[0]='';
@@ -503,7 +504,7 @@ $usersARY[0]='';
$user_namesARY[0]='';
$k=0;
$stmt="select count(*) as calls,sum(talk_sec) as talk,full_name,vicidial_users.user,sum(pause_sec),sum(wait_sec),sum(dispo_sec),status,sum(dead_sec) from vicidial_users,vicidial_agent_log where event_time <= '$query_date_END' and event_time >= '$query_date_BEGIN' and vicidial_users.user=vicidial_agent_log.user and pause_sec<65000 and wait_sec<65000 and talk_sec<65000 and dispo_sec<65000 $group_SQL $user_group_SQL group by user,full_name,status order by full_name,user,status desc limit 500000;";
$stmt="select count(*) as calls,sum(talk_sec) as talk,full_name,vicidial_users.user,sum(pause_sec),sum(wait_sec),sum(dispo_sec),status,sum(dead_sec), vicidial_users.user_group from vicidial_users,vicidial_agent_log where event_time <= '$query_date_END' and event_time >= '$query_date_BEGIN' and vicidial_users.user=vicidial_agent_log.user and pause_sec<65000 and wait_sec<65000 and talk_sec<65000 and dispo_sec<65000 $group_SQL $user_group_SQL group by user,full_name,user_group,status order by full_name,user,status desc limit 500000;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($DB) {$HTML_text.="$stmt\n";}
$rows_to_print = mysqli_num_rows($rslt);
@@ -556,6 +557,7 @@ while ($i < $rows_to_print)
$dispo_sec[$i] = $row[6];
$status[$i] = strtoupper($row[7]);
$dead_sec[$i] = $row[8];
$user_group[$i] = $row[9];
$customer_sec[$i] = ($talk_sec[$i] - $dead_sec[$i]);
$max_varname="max_".$status[$i];
@@ -580,6 +582,7 @@ while ($i < $rows_to_print)
$users .= "$user[$i]-";
$usersARY[$k] = $user[$i];
$user_namesARY[$k] = $full_name[$i];
$user_groupsARY[$k] = $user_group[$i];
$k++;
}
@@ -590,9 +593,9 @@ $CSV_header.="\n";
$CSV_lines='';
$ASCII_text.="CALL STATS BREAKDOWN: (Statistics related to handling of calls only) <a href=\"$LINKbase&stage=$stage&file_download=1\">[DOWNLOAD]</a>\n";
$ASCII_text.="+-----------------+----------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n";
$ASCII_text.="| <a href=\"$LINKbase\">USER NAME</a> | <a href=\"$LINKbase&stage=ID\">ID</a> | <a href=\"$LINKbase&stage=LEADS\">CALLS</a> | <a href=\"$LINKbase&stage=TIME\">TIME</a> | PAUSE |PAUSAVG | WAIT |WAITAVG | TALK |TALKAVG | DISPO |DISPAVG | DEAD |DEADAVG | CUSTOMER |CUSTAVG |$statusesHTML\n";
$ASCII_text.="+-----------------+----------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n";
$ASCII_text.="+-----------------+----------+-----------------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n";
$ASCII_text.="| <a href=\"$LINKbase\">USER NAME</a> | <a href=\"$LINKbase&stage=ID\">ID</a> | USER GROUP | <a href=\"$LINKbase&stage=LEADS\">CALLS</a> | <a href=\"$LINKbase&stage=TIME\">TIME</a> | PAUSE |PAUSAVG | WAIT |WAITAVG | TALK |TALKAVG | DISPO |DISPAVG | DEAD |DEADAVG | CUSTOMER |CUSTAVG |$statusesHTML\n";
$ASCII_text.="+-----------------+----------+-----------------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n";
### BEGIN loop through each user ###
@@ -601,6 +604,7 @@ while ($m < $k)
{
$Suser=$usersARY[$m];
$Sfull_name=$user_namesARY[$m];
$Suser_group=$user_groupsARY[$m];
$Stime=0;
$Scalls=0;
$Stalk_sec=0;
@@ -690,6 +694,8 @@ while ($m < $k)
{
$Sfull_name= sprintf("%-15s", $Sfull_name);
while(strlen($Sfull_name)>15) {$Sfull_name = substr("$Sfull_name", 0, -1);}
$Suser_group= sprintf("%-15s", $Suser_group);
while(strlen($Suser_group)>15) {$Suser_group = substr("$Suser_group", 0, -1);}
$Suser = sprintf("%-8s", $Suser);
while(strlen($Suser)>8) {$Suser = substr("$Suser", 0, -1);}
}
@@ -697,6 +703,8 @@ while ($m < $k)
{
$Sfull_name= sprintf("%-45s", $Sfull_name);
while(mb_strlen($Sfull_name,'utf-8')>15) {$Sfull_name = mb_substr("$Sfull_name", 0, -1,'utf-8');}
$Suser_group= sprintf("%-45s", $Suser_group);
while(mb_strlen($Suser_group,'utf-8')>15) {$Suser_group = mb_substr("$Suser_group", 0, -1,'utf-8');}
$Suser = sprintf("%-24s", $Suser);
while(mb_strlen($Suser,'utf-8')>8) {$Suser = mb_substr("$Suser", 0, -1,'utf-8');}
}
@@ -760,11 +768,11 @@ while ($m < $k)
$pfUSERavgCUSTOMER_MS = sprintf("%6s", $USERavgCUSTOMER_MS);
$PAUSEtotal[$m] = $pfUSERtotPAUSE_MS;
$Toutput = "| $Sfull_name | <a href=\"./user_stats.php?user=$RAWuser\">$Suser</a> | $Scalls | $pfUSERtime_MS | $pfUSERtotPAUSE_MS | $pfUSERavgPAUSE_MS | $pfUSERtotWAIT_MS | $pfUSERavgWAIT_MS | $pfUSERtotTALK_MS | $pfUSERavgTALK_MS | $pfUSERtotDISPO_MS | $pfUSERavgDISPO_MS | $pfUSERtotDEAD_MS | $pfUSERavgDEAD_MS | $pfUSERtotCUSTOMER_MS | $pfUSERavgCUSTOMER_MS |$SstatusesHTML\n";
$Toutput = "| $Sfull_name | <a href=\"./user_stats.php?user=$RAWuser\">$Suser</a> | $Suser_group | $Scalls | $pfUSERtime_MS | $pfUSERtotPAUSE_MS | $pfUSERavgPAUSE_MS | $pfUSERtotWAIT_MS | $pfUSERavgWAIT_MS | $pfUSERtotTALK_MS | $pfUSERavgTALK_MS | $pfUSERtotDISPO_MS | $pfUSERavgDISPO_MS | $pfUSERtotDEAD_MS | $pfUSERavgDEAD_MS | $pfUSERtotCUSTOMER_MS | $pfUSERavgCUSTOMER_MS |$SstatusesHTML\n";
$CSV_lines.="\"$Sfull_nameRAW\",";
$CSV_lines.=preg_replace('/\s/', '', "\"$SuserRAW\",\"$Scalls\",\"$pfUSERtime_MS\",\"$pfUSERtotPAUSE_MS\",\"$pfUSERavgPAUSE_MS\",\"$pfUSERtotWAIT_MS\",\"$pfUSERavgWAIT_MS\",\"$pfUSERtotTALK_MS\",\"$pfUSERavgTALK_MS\",\"$pfUSERtotDISPO_MS\",\"$pfUSERavgDISPO_MS\",\"$pfUSERtotDEAD_MS\",\"$pfUSERavgDEAD_MS\",\"$pfUSERtotCUSTOMER_MS\",\"$pfUSERavgCUSTOMER_MS\"$CSVstatuses");
$CSV_lines.=preg_replace('/\s/', '', "\"$SuserRAW\",\"$Suser_group\",\"$Scalls\",\"$pfUSERtime_MS\",\"$pfUSERtotPAUSE_MS\",\"$pfUSERavgPAUSE_MS\",\"$pfUSERtotWAIT_MS\",\"$pfUSERavgWAIT_MS\",\"$pfUSERtotTALK_MS\",\"$pfUSERavgTALK_MS\",\"$pfUSERtotDISPO_MS\",\"$pfUSERavgDISPO_MS\",\"$pfUSERtotDEAD_MS\",\"$pfUSERavgDEAD_MS\",\"$pfUSERtotCUSTOMER_MS\",\"$pfUSERavgCUSTOMER_MS\"$CSVstatuses");
$CSV_lines.="\n";
$TOPsorted_output[$m] = $Toutput;
@@ -904,9 +912,9 @@ while(strlen($TOTavgWAIT_MS)>6) {$TOTavgWAIT_MS = substr("$TOTavgWAIT_MS", 0, -1
while(strlen($TOTavgCUSTOMER_MS)>6) {$TOTavgCUSTOMER_MS = substr("$TOTavgCUSTOMER_MS", 0, -1);}
$ASCII_text.="+-----------------+----------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n";
$ASCII_text.="| TOTALS AGENTS:$TOT_AGENTS | $TOTcalls| $TOTtime_MS|$TOTtotPAUSE_MS| $TOTavgPAUSE_MS |$TOTtotWAIT_MS| $TOTavgWAIT_MS |$TOTtotTALK_MS| $TOTavgTALK_MS |$TOTtotDISPO_MS| $TOTavgDISPO_MS |$TOTtotDEAD_MS| $TOTavgDEAD_MS |$TOTtotCUSTOMER_MS| $TOTavgCUSTOMER_MS |$SUMstatusesHTML\n";
$ASCII_text.="+-----------------+----------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n";
$ASCII_text.="+-----------------+----------+-----------------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n";
$ASCII_text.="| TOTALS AGENTS:$TOT_AGENTS | $TOTcalls| $TOTtime_MS|$TOTtotPAUSE_MS| $TOTavgPAUSE_MS |$TOTtotWAIT_MS| $TOTavgWAIT_MS |$TOTtotTALK_MS| $TOTavgTALK_MS |$TOTtotDISPO_MS| $TOTavgDISPO_MS |$TOTtotDEAD_MS| $TOTavgDEAD_MS |$TOTtotCUSTOMER_MS| $TOTavgCUSTOMER_MS |$SUMstatusesHTML\n";
$ASCII_text.="+-----------------+----------+-----------------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n";
for ($e=0; $e<count($statusesARY); $e++) {
@@ -1005,7 +1013,7 @@ $GRAPH3="<tr><td colspan='".(14+count($statusesARY))."' class='graph_span_cell'>
$GRAPH_text.=$JS_text.$GRAPH.$GRAPH2.$GRAPH3;
$CSV_total=preg_replace('/\s/', '', "\"TOTALS\",\"AGENTS:$TOT_AGENTS\",\"$TOTcalls\",\"$TOTtime_MS\",\"$TOTtotPAUSE_MS\",\"$TOTavgPAUSE_MS\",\"$TOTtotWAIT_MS\",\"$TOTavgWAIT_MS\",\"$TOTtotTALK_MS\",\"$TOTavgTALK_MS\",\"$TOTtotDISPO_MS\",\"$TOTavgDISPO_MS\",\"$TOTtotDEAD_MS\",\"$TOTavgDEAD_MS\",\"$TOTtotCUSTOMER_MS\",\"$TOTavgCUSTOMER_MS\"$CSVSUMstatuses");
$CSV_total=preg_replace('/\s/', '', "\"\",\"TOTALS\",\"AGENTS:$TOT_AGENTS\",\"$TOTcalls\",\"$TOTtime_MS\",\"$TOTtotPAUSE_MS\",\"$TOTavgPAUSE_MS\",\"$TOTtotWAIT_MS\",\"$TOTavgWAIT_MS\",\"$TOTtotTALK_MS\",\"$TOTavgTALK_MS\",\"$TOTtotDISPO_MS\",\"$TOTavgDISPO_MS\",\"$TOTtotDEAD_MS\",\"$TOTavgDEAD_MS\",\"$TOTtotCUSTOMER_MS\",\"$TOTavgCUSTOMER_MS\"$CSVSUMstatuses");
if ($file_download == 1)
{
@@ -1081,7 +1089,7 @@ $TOTAL_graph=$graph_header."<th class='thgraph' scope='col'>TOTAL </th></tr>";
$NONPAUSE_graph=$graph_header."<th class='thgraph' scope='col'>NONPAUSE</th></tr>";
$PAUSE_graph=$graph_header."<th class='thgraph' scope='col'>PAUSE</th></tr>";
$stmt="select full_name,vicidial_users.user,sum(pause_sec),sub_status,sum(wait_sec + talk_sec + dispo_sec) from vicidial_users,vicidial_agent_log where event_time <= '$query_date_END' and event_time >= '$query_date_BEGIN' and vicidial_users.user=vicidial_agent_log.user and pause_sec<65000 $group_SQL $user_group_SQL group by user,full_name,sub_status order by user,full_name,sub_status desc limit 100000;";
$stmt="select full_name,vicidial_users.user,sum(pause_sec),sub_status,sum(wait_sec + talk_sec + dispo_sec), vicidial_users.user_group from vicidial_users,vicidial_agent_log where event_time <= '$query_date_END' and event_time >= '$query_date_BEGIN' and vicidial_users.user=vicidial_agent_log.user and pause_sec<65000 $group_SQL $user_group_SQL group by user,full_name,sub_status order by user,full_name,sub_status desc limit 100000;";
$rslt=mysql_to_mysqli($stmt, $link);
if ($DB) {$ASCII_text.="$stmt\n";}
$subs_to_print = mysqli_num_rows($rslt);
@@ -1094,6 +1102,7 @@ while ($i < $subs_to_print)
$PCpause_sec[$i] = $row[2];
$sub_status[$i] = $row[3];
$PCnon_pause_sec[$i] = $row[4];
$PCuser_group[$i] = $row[5];
$max_varname="max_".$sub_status[$i];
$$max_varname=1;
@@ -1114,6 +1123,7 @@ while ($i < $subs_to_print)
$PCusers .= "$PCuser[$i]-";
$PCusersARY[$k] = $PCuser[$i];
$PCuser_namesARY[$k] = $PCfull_name[$i];
$PCuser_groupsARY[$k] = $PCuser_group[$i];
$k++;
}
@@ -1121,14 +1131,14 @@ while ($i < $subs_to_print)
}
$ASCII_text.="PAUSE CODE BREAKDOWN: <a href=\"$LINKbase&stage=$stage&file_download=2\">[DOWNLOAD]</a>\n\n";
$ASCII_text.="+-----------------+----------+----------+----------+----------+ +$sub_statusesHEAD\n";
$ASCII_text.="| USER NAME | ID | TOTAL | NONPAUSE | PAUSE | |$sub_statusesHTML\n";
$ASCII_text.="+-----------------+----------+----------+----------+----------+ +$sub_statusesHEAD\n";
$ASCII_text.="+-----------------+----------+-----------------+----------+----------+----------+ +$sub_statusesHEAD\n";
$ASCII_text.="| USER NAME | ID | USER GROUP | TOTAL | NONPAUSE | PAUSE | |$sub_statusesHTML\n";
$ASCII_text.="+-----------------+----------+-----------------+----------+----------+----------+ +$sub_statusesHEAD\n";
$CSV_header="\"Agent Performance Detail $NOW_TIME\"\n";
$CSV_header.="\"Time range: $query_date_BEGIN to $query_date_END\"\n\n";
$CSV_header.="\"PAUSE CODE BREAKDOWN:\"\n";
$CSV_header.="\"USER NAME\",\"ID\",\"TOTAL\",\"NONPAUSE\",\"PAUSE\",$CSV_statuses\n";
$CSV_header.="\"USER NAME\",\"ID\",\"USER GROUP\",\"TOTAL\",\"NONPAUSE\",\"PAUSE\",$CSV_statuses\n";
### BEGIN loop through each user ###
$m=0;
@@ -1148,6 +1158,7 @@ while ($m < $k)
}
$Suser=$PCusersARY[$m];
$Sfull_name=$PCuser_namesARY[$m];
$Suser_group=$PCuser_groupsARY[$m];
$Spause_sec=0;
$Snon_pause_sec=0;
$Stotal_sec=0;
@@ -1206,6 +1217,8 @@ while ($m < $k)
{
$Sfull_name= sprintf("%-15s", $Sfull_name);
while(strlen($Sfull_name)>15) {$Sfull_name = substr("$Sfull_name", 0, -1);}
$Suser_group= sprintf("%-15s", $Suser_group);
while(strlen($Suser_group)>15) {$Suser_group = substr("$Suser_group", 0, -1);}
$Suser = sprintf("%-8s", $Suser);
while(strlen($Suser)>8) {$Suser = substr("$Suser", 0, -1);}
}
@@ -1213,6 +1226,8 @@ while ($m < $k)
{
$Sfull_name= sprintf("%-45s", $Sfull_name);
while(mb_strlen($Sfull_name,'utf-8')>15) {$Sfull_name = mb_substr("$Sfull_name", 0, -1,'utf-8');}
$Suser_group= sprintf("%-45s", $Suser_group);
while(mb_strlen($Suser_group,'utf-8')>15) {$Suser_group = mb_substr("$Suser_group", 0, -1,'utf-8');}
$Suser = sprintf("%-24s", $Suser);
while(mb_strlen($Suser,'utf-8')>8) {$Suser = mb_substr("$Suser", 0, -1,'utf-8');}
}
@@ -1235,12 +1250,12 @@ while ($m < $k)
$pfUSERtotNONPAUSE_MS = sprintf("%8s", $USERtotNONPAUSE_MS);
$pfUSERtotTOTAL_MS = sprintf("%8s", $USERtotTOTAL_MS);
$BOTTOMoutput = "| $Sfull_name | $Suser | $pfUSERtotTOTAL_MS | $pfUSERtotNONPAUSE_MS | $pfUSERtotPAUSE_MS | |$SstatusesHTML\n";
$BOTTOMoutput = "| $Sfull_name | $Suser | $Suser_group | $pfUSERtotTOTAL_MS | $pfUSERtotNONPAUSE_MS | $pfUSERtotPAUSE_MS | |$SstatusesHTML\n";
$BOTTOMsorted_output[$m] = $BOTTOMoutput;
$ASCII_text.="$BOTTOMoutput";
$CSV_lines.="\"$Sfull_nameRAW\"".preg_replace('/\s/', '', ",\"$SuserRAW\",\"$pfUSERtotTOTAL_MS\",\"$pfUSERtotNONPAUSE_MS\",\"$pfUSERtotPAUSE_MS\",$CSV_statuses");
$CSV_lines.="\"$Sfull_nameRAW\"".preg_replace('/\s/', '', ",\"$SuserRAW\",\"$Suser_group\",\"$pfUSERtotTOTAL_MS\",\"$pfUSERtotNONPAUSE_MS\",\"$pfUSERtotPAUSE_MS\",$CSV_statuses");
$CSV_lines.="\n";
$m++;
}
@@ -1323,9 +1338,9 @@ while ($n < $j)
while(strlen($TOTtotTOTAL_MS)>10) {$TOTtotTOTAL_MS = substr("$TOTtotTOTAL_MS", 0, -1);}
$ASCII_text.="+-----------------+----------+----------+----------+----------+ +$sub_statusesHEAD\n";
$ASCII_text.="| TOTALS AGENTS:$TOT_AGENTS |$TOTtotTOTAL_MS|$TOTtotNONPAUSE_MS|$TOTtotPAUSE_MS| |$SUMstatusesHTML\n";
$ASCII_text.="+----------------------------+----------+----------+----------+ +$sub_statusesHEAD\n";
$ASCII_text.="+-----------------+----------+-----------------+----------+----------+----------+ +$sub_statusesHEAD\n";
$ASCII_text.="| TOTALS AGENTS:$TOT_AGENTS |$TOTtotTOTAL_MS|$TOTtotNONPAUSE_MS|$TOTtotPAUSE_MS| |$SUMstatusesHTML\n";
$ASCII_text.="+----------------------------------------------+----------+----------+----------+ +$sub_statusesHEAD\n";
for ($e=0; $e<count($sub_statusesARY); $e++) {
$Sstatus=$sub_statusesARY[$e];
@@ -1390,7 +1405,7 @@ $GRAPH_text.=$JS_text.$GRAPH.$GRAPH2.$GRAPH3.$max;
$CSV_total=preg_replace('/\s/', '', "\"TOTALS\",\"AGENTS:$TOT_AGENTS\",\"$TOTtotTOTAL_MS\",\"$TOTtotNONPAUSE_MS\",\"$TOTtotPAUSE_MS\",$CSVSUMstatuses");
$CSV_total=preg_replace('/\s/', '', "\"\",\"TOTALS\",\"AGENTS:$TOT_AGENTS\",\"$TOTtotTOTAL_MS\",\"$TOTtotNONPAUSE_MS\",\"$TOTtotPAUSE_MS\",$CSVSUMstatuses");
if ($file_download == 2)
{
+1 -1
View File
@@ -142,7 +142,7 @@ if (!$show_history) {
$report_title="Currently running NANPA scrubs";
} else {
if (!$process_limit) {$process_limit=10;}
$process_stmt="SELECT * from vicidial_nanpa_filter_log where user='$PHP_AUTH_USER' and status='COMPLETED' order by start_time asc limit $process_limit";
$process_stmt="SELECT * from vicidial_nanpa_filter_log where user='$PHP_AUTH_USER' and status='COMPLETED' order by start_time desc limit $process_limit";
$process_rslt=mysqli_query($link, $process_stmt);
$report_title="Past NANPA scrubs for user $PHP_AUTH_USER";
+26 -17
View File
@@ -3233,12 +3233,13 @@ else
# 130915-0045 - Added counts for new nanpa prefix type tables
# 130926-1731 - Added queuemetrics_record_hold system setting
# 130928-1130 - Added country_code_list_stats system setting option
# 131003-1749 - Small fix for voicemail box duplication with phone account
#
# make sure you have added a user to the vicidial_users MySQL table with at least user_level 8 to access this page the first time
$admin_version = '2.8-413a';
$build = '130928-1130';
$admin_version = '2.8-414a';
$build = '131003-1749';
$STARTtime = date("U");
$SQLdate = date("Y-m-d H:i:s");
@@ -10293,7 +10294,7 @@ if ($ADD==1111)
echo "<tr bgcolor=#B6D3FC><td align=right>Group Handling: </td><td align=left><select size=1 name=group_handling><option selected>PHONE</option><option>EMAIL</option></select>$NWB#inbound_groups-group_handling$NWE</td></tr>\n";
}
else
{echo "<tr bgcolor=#B6D3FC><td align=right></td><td align=left><input type=hidden name=group_handling value=PHONE</td></tr>\n";}
{echo "<tr bgcolor=#B6D3FC><td align=right></td><td align=left><input type=hidden name=group_handling value=PHONE></td></tr>\n";}
echo "<tr bgcolor=#B6D3FC><td align=center colspan=2><input type=submit name=SUBMIT value=SUBMIT></td></tr>\n";
echo "</TABLE></center>\n";
}
@@ -18206,24 +18207,32 @@ if ($ADD==41111111111)
{echo "<br>PHONE NOT MODIFIED - Please go back and look at the data you entered\n";}
else
{
echo "<br>PHONE MODIFIED: $extension\n";
$stmt="UPDATE phones set extension='$extension', dialplan_number='$dialplan_number', voicemail_id='$voicemail_id', phone_ip='$phone_ip', computer_ip='$computer_ip', server_ip='$server_ip', login='$login', pass='$pass', status='$status', active='$active', phone_type='$phone_type', fullname='$fullname', company='$company', picture='$picture', protocol='$protocol', local_gmt='$local_gmt', ASTmgrUSERNAME='$ASTmgrUSERNAME', ASTmgrSECRET='$ASTmgrSECRET', login_user='$login_user', login_pass='$login_pass', login_campaign='$login_campaign', park_on_extension='$park_on_extension', conf_on_extension='$conf_on_extension', VICIDIAL_park_on_extension='$VICIDIAL_park_on_extension', VICIDIAL_park_on_filename='$VICIDIAL_park_on_filename', monitor_prefix='$monitor_prefix', recording_exten='$recording_exten', voicemail_exten='$voicemail_exten', voicemail_dump_exten='$voicemail_dump_exten', ext_context='$ext_context', dtmf_send_extension='$dtmf_send_extension', call_out_number_group='$call_out_number_group', client_browser='$client_browser', install_directory='$install_directory', local_web_callerID_URL='" . mysqli_real_escape_string($link, $local_web_callerID_URL) . "', VICIDIAL_web_URL='" . mysqli_real_escape_string($link, $VICIDIAL_web_URL) . "', AGI_call_logging_enabled='$AGI_call_logging_enabled', user_switching_enabled='$user_switching_enabled', conferencing_enabled='$conferencing_enabled', admin_hangup_enabled='$admin_hangup_enabled', admin_hijack_enabled='$admin_hijack_enabled', admin_monitor_enabled='$admin_monitor_enabled', call_parking_enabled='$call_parking_enabled', updater_check_enabled='$updater_check_enabled', AFLogging_enabled='$AFLogging_enabled', QUEUE_ACTION_enabled='$QUEUE_ACTION_enabled', CallerID_popup_enabled='$CallerID_popup_enabled', voicemail_button_enabled='$voicemail_button_enabled', enable_fast_refresh='$enable_fast_refresh', fast_refresh_rate='$fast_refresh_rate', enable_persistant_mysql='$enable_persistant_mysql', auto_dial_next_number='$auto_dial_next_number', VDstop_rec_after_each_call='$VDstop_rec_after_each_call', DBX_server='$DBX_server', DBX_database='$DBX_database', DBX_user='$DBX_user', DBX_pass='$DBX_pass', DBX_port='$DBX_port', DBY_server='$DBY_server', DBY_database='$DBY_database', DBY_user='$DBY_user', DBY_pass='$DBY_pass', DBY_port='$DBY_port', outbound_cid='$outbound_cid', enable_sipsak_messages='$enable_sipsak_messages', email='$email', template_id='$template_id', conf_override='$conf_override',phone_context='$phone_context',phone_ring_timeout='$phone_ring_timeout',conf_secret='$conf_secret', delete_vm_after_email='$delete_vm_after_email',is_webphone='$is_webphone',use_external_server_ip='$use_external_server_ip',codecs_list='$codecs_list',codecs_with_template='$codecs_with_template',webphone_dialpad='$webphone_dialpad',on_hook_agent='$on_hook_agent',webphone_auto_answer='$webphone_auto_answer',voicemail_timezone='$voicemail_timezone',voicemail_options='$voicemail_options',user_group='$user_group',voicemail_greeting='$voicemail_greeting' where extension='$old_extension' and server_ip='$old_server_ip';";
$stmt="SELECT count(*) from vicidial_voicemail where voicemail_id='$voicemail_id';";
$rslt=mysql_to_mysqli($stmt, $link);
$row=mysqli_fetch_row($rslt);
if ($row[0] > 0)
{echo "<br>PHONE NOT MODIFIED - there is already a Voicemail ID in the system with this ID\n";}
else
{
echo "<br>PHONE MODIFIED: $extension\n";
$stmtA="UPDATE servers SET rebuild_conf_files='Y' where generate_vicidial_conf='Y' and active_asterisk_server='Y' and server_ip='$server_ip';";
$rslt=mysql_to_mysqli($stmtA, $link);
$stmt="UPDATE phones set extension='$extension', dialplan_number='$dialplan_number', voicemail_id='$voicemail_id', phone_ip='$phone_ip', computer_ip='$computer_ip', server_ip='$server_ip', login='$login', pass='$pass', status='$status', active='$active', phone_type='$phone_type', fullname='$fullname', company='$company', picture='$picture', protocol='$protocol', local_gmt='$local_gmt', ASTmgrUSERNAME='$ASTmgrUSERNAME', ASTmgrSECRET='$ASTmgrSECRET', login_user='$login_user', login_pass='$login_pass', login_campaign='$login_campaign', park_on_extension='$park_on_extension', conf_on_extension='$conf_on_extension', VICIDIAL_park_on_extension='$VICIDIAL_park_on_extension', VICIDIAL_park_on_filename='$VICIDIAL_park_on_filename', monitor_prefix='$monitor_prefix', recording_exten='$recording_exten', voicemail_exten='$voicemail_exten', voicemail_dump_exten='$voicemail_dump_exten', ext_context='$ext_context', dtmf_send_extension='$dtmf_send_extension', call_out_number_group='$call_out_number_group', client_browser='$client_browser', install_directory='$install_directory', local_web_callerID_URL='" . mysqli_real_escape_string($link, $local_web_callerID_URL) . "', VICIDIAL_web_URL='" . mysqli_real_escape_string($link, $VICIDIAL_web_URL) . "', AGI_call_logging_enabled='$AGI_call_logging_enabled', user_switching_enabled='$user_switching_enabled', conferencing_enabled='$conferencing_enabled', admin_hangup_enabled='$admin_hangup_enabled', admin_hijack_enabled='$admin_hijack_enabled', admin_monitor_enabled='$admin_monitor_enabled', call_parking_enabled='$call_parking_enabled', updater_check_enabled='$updater_check_enabled', AFLogging_enabled='$AFLogging_enabled', QUEUE_ACTION_enabled='$QUEUE_ACTION_enabled', CallerID_popup_enabled='$CallerID_popup_enabled', voicemail_button_enabled='$voicemail_button_enabled', enable_fast_refresh='$enable_fast_refresh', fast_refresh_rate='$fast_refresh_rate', enable_persistant_mysql='$enable_persistant_mysql', auto_dial_next_number='$auto_dial_next_number', VDstop_rec_after_each_call='$VDstop_rec_after_each_call', DBX_server='$DBX_server', DBX_database='$DBX_database', DBX_user='$DBX_user', DBX_pass='$DBX_pass', DBX_port='$DBX_port', DBY_server='$DBY_server', DBY_database='$DBY_database', DBY_user='$DBY_user', DBY_pass='$DBY_pass', DBY_port='$DBY_port', outbound_cid='$outbound_cid', enable_sipsak_messages='$enable_sipsak_messages', email='$email', template_id='$template_id', conf_override='$conf_override',phone_context='$phone_context',phone_ring_timeout='$phone_ring_timeout',conf_secret='$conf_secret', delete_vm_after_email='$delete_vm_after_email',is_webphone='$is_webphone',use_external_server_ip='$use_external_server_ip',codecs_list='$codecs_list',codecs_with_template='$codecs_with_template',webphone_dialpad='$webphone_dialpad',on_hook_agent='$on_hook_agent',webphone_auto_answer='$webphone_auto_answer',voicemail_timezone='$voicemail_timezone',voicemail_options='$voicemail_options',user_group='$user_group',voicemail_greeting='$voicemail_greeting' where extension='$old_extension' and server_ip='$old_server_ip';";
$rslt=mysql_to_mysqli($stmt, $link);
$stmtB="UPDATE servers SET rebuild_conf_files='Y' where generate_vicidial_conf='Y' and active_asterisk_server='Y' and server_ip='$SSactive_voicemail_server';";
$rslt=mysql_to_mysqli($stmtB, $link);
$stmtA="UPDATE servers SET rebuild_conf_files='Y' where generate_vicidial_conf='Y' and active_asterisk_server='Y' and server_ip='$server_ip';";
$rslt=mysql_to_mysqli($stmtA, $link);
### LOG INSERTION Admin Log Table ###
$SQL_log = "$stmt|";
$SQL_log = preg_replace('/;/', '', $SQL_log);
$SQL_log = addslashes($SQL_log);
$stmt="INSERT INTO vicidial_admin_log set event_date='$SQLdate', user='$PHP_AUTH_USER', ip_address='$ip', event_section='PHONES', event_type='MODIFY', record_id='$extension', event_code='ADMIN MODIFY PHONE', event_sql=\"$SQL_log\", event_notes='Server IP: $server_ip';";
if ($DB) {echo "|$stmt|\n";}
$rslt=mysql_to_mysqli($stmt, $link);
$stmtB="UPDATE servers SET rebuild_conf_files='Y' where generate_vicidial_conf='Y' and active_asterisk_server='Y' and server_ip='$SSactive_voicemail_server';";
$rslt=mysql_to_mysqli($stmtB, $link);
### LOG INSERTION Admin Log Table ###
$SQL_log = "$stmt|";
$SQL_log = preg_replace('/;/', '', $SQL_log);
$SQL_log = addslashes($SQL_log);
$stmt="INSERT INTO vicidial_admin_log set event_date='$SQLdate', user='$PHP_AUTH_USER', ip_address='$ip', event_section='PHONES', event_type='MODIFY', record_id='$extension', event_code='ADMIN MODIFY PHONE', event_sql=\"$SQL_log\", event_notes='Server IP: $server_ip';";
if ($DB) {echo "|$stmt|\n";}
$rslt=mysql_to_mysqli($stmt, $link);
}
}
}
}
+34 -6
View File
@@ -8,10 +8,11 @@
#
# CHANGELOG:
# 130919-1503 - First build of script
# 131005-2035 - Added exclusion options
#
$version = '2.8-1';
$build = '130919-1503';
$version = '2.8-2';
$build = '131005-2035';
$startMS = microtime();
require("dbconnect_mysqli.php");
@@ -31,6 +32,10 @@ if (isset($_GET["fields_to_update"])) {$fields_to_update=$_GET["fields_to_upda
elseif (isset($_POST["fields_to_update"])) {$fields_to_update=$_POST["fields_to_update"];}
if (isset($_GET["vl_field_update"])) {$vl_field_update=$_GET["vl_field_update"];}
elseif (isset($_POST["vl_field_update"])) {$vl_field_update=$_POST["vl_field_update"];}
if (isset($_GET["vl_field_exclude"])) {$vl_field_exclude=$_GET["vl_field_exclude"];}
elseif (isset($_POST["vl_field_exclude"])) {$vl_field_exclude=$_POST["vl_field_exclude"];}
if (isset($_GET["exclusion_value"])) {$exclusion_value=$_GET["exclusion_value"];}
elseif (isset($_POST["exclusion_value"])) {$exclusion_value=$_POST["exclusion_value"];}
if (isset($_GET["cellphone_list_id"])) {$cellphone_list_id=$_GET["cellphone_list_id"];}
elseif (isset($_POST["cellphone_list_id"])) {$cellphone_list_id=$_POST["cellphone_list_id"];}
if (isset($_GET["landline_list_id"])) {$landline_list_id=$_GET["landline_list_id"];}
@@ -182,6 +187,9 @@ if ($submit_form=="SUBMIT" && $list_ct>0 && (strlen($vl_field_update)>0 || strle
$cellphone_list_id=preg_replace('/[^0-9]/', '', $cellphone_list_id);
$landline_list_id=preg_replace('/[^0-9]/', '', $landline_list_id);
$invalid_list_id=preg_replace('/[^0-9]/', '', $invalid_list_id);
$exclusion_value=preg_replace('/[\'\"\\\\]/', '', $exclusion_value);
$exclusion_value=preg_replace('/\s/', '\\\\\ ', $exclusion_value);
$options="--user=$PHP_AUTH_USER --pass=$PHP_AUTH_PW ";
@@ -197,6 +205,7 @@ if ($submit_form=="SUBMIT" && $list_ct>0 && (strlen($vl_field_update)>0 || strle
if (strlen($landline_list_id)>0) {$options.="--landline-list-id=$landline_list_id ";}
if (strlen($invalid_list_id)>0) {$options.="--invalid-list-id=$invalid_list_id ";}
if (strlen($vl_field_update)>0) {$options.="--vl-field-update=$vl_field_update ";}
if (strlen($vl_field_exclude)>0 && strlen($exclusion_value)>0) {$options.="--exclude-field=$vl_field_exclude --exclude-value=$exclusion_value ";}
$options=trim($options);
$uniqueid=date("U").".".rand(1, 9999);
@@ -426,7 +435,7 @@ else
echo "</select></font>";
echo "</td>";
echo "<td align='left' valign='top' rowspan='4'><FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=2>Field to update (optional):<BR/>\n";
echo "<td align='left' valign='top' rowspan='2'><FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=2>Field to update (optional):<BR/>\n";
echo "<select name='vl_field_update'>\n";
$stmt="SELECT * from vicidial_list limit 1";
$rslt=mysqli_query($link, $stmt);
@@ -458,10 +467,29 @@ else
echo "</tr>\n";
echo "<tr>";
echo "<td align='right'><FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=2>Cellphone:</font></td><td align='left'><input type='text' name='cellphone_list_id' size='5' maxlength='10'></td></tr>";
echo "<td align='right'><FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=2>Landline:</font></td><td align='left'><input type='text' name='landline_list_id' size='5' maxlength='10'></td></tr>";
echo "<td align='right'><FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=2>Invalid:</font></td><td align='left'><input type='text' name='invalid_list_id' size='5' maxlength='10'></td></tr>";
echo "<td align='right'><FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=2>Cellphone:</font></td><td align='left'><input type='text' name='cellphone_list_id' size='5' maxlength='10'></td>";
echo "</tr>";
echo "<tr>";
echo "<td align='left' valign='top' rowspan='2'><FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=2>Exclusion field (optional):<BR/>\n";
echo "<select name='vl_field_exclude'>\n";
$stmt="SELECT * from vicidial_list limit 1";
$rslt=mysqli_query($link, $stmt);
echo "<option value=''>---NONE---</option>\n";
while ($fieldinfo=mysqli_fetch_field($rslt))
{
$fieldname=$fieldinfo->name;
echo "<option value='$fieldname'>$fieldname</option>\n";
}
echo "</select><BR/><BR/>Exclusion value:<BR/><input type='text' name='exclusion_value' size='20' maxlength='50'></font></td>";
echo "<td align='right'><FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=2>Landline:</font></td><td align='left'><input type='text' name='landline_list_id' size='5' maxlength='10'></td>";
echo "</tr>";
echo "<tr><td align='right'><FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=2>Invalid:</font></td><td align='left'><input type='text' name='invalid_list_id' size='5' maxlength='10'></td></tr>";
echo "";
echo "<tr><td align='center' colspan='5'><input type='submit' value='SUBMIT' name='submit_form'></td></tr>";
echo "</table>";