Added search lead email field
Fixed Performance and status reports to sort by status Fixed format issue in non-agent api Fixed email attachment issue in agent interface git-svn-id: svn://192.168.202.10@2328 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
NON-AGENT API DOCUMENT Started: 2008-07-24 Updated: 2015-05-12
|
||||
NON-AGENT API DOCUMENT Started: 2008-07-24 Updated: 2015-06-03
|
||||
|
||||
This document describes the functions of an API(Application Programming
|
||||
Interface) for all functions NOT directly relating to the VICIDIAL Agent screen.
|
||||
@@ -104,6 +104,7 @@ Changes:
|
||||
150428-1720 - Added web_form_address_three to add_list/update_list functions
|
||||
150430-0644 - Added API allowed function restrictions and allowed list restrictions
|
||||
150512-2028 - Added filtering of hash sign on some input variables, Issue #851
|
||||
150603-1528 - Fixed format issue in recording_lookup
|
||||
|
||||
|
||||
API Functions use the 'function' variable
|
||||
@@ -160,7 +161,7 @@ moh_list - outputs a list of music on hold classes in the system
|
||||
NOTE: api user for this function must have user_level set to 7 or higher
|
||||
|
||||
OPTIONAL FIELDS-
|
||||
format - format of the output(tab, link, selectframe)
|
||||
format - format of the output(only 'selectframe' works)
|
||||
comments - name of the field to populate
|
||||
|
||||
|
||||
@@ -184,7 +185,7 @@ vm_list - outputs a list of voicemail boxes in the system
|
||||
NOTE: api user for this function must have user_level set to 7 or higher
|
||||
|
||||
OPTIONAL FIELDS-
|
||||
format - format of the output(tab, link, selectframe)
|
||||
format - format of the output(only 'selectframe' works)
|
||||
comments - name of the field to populate
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
# vdc_email_display.php - VICIDIAL agent email display script
|
||||
#
|
||||
# Copyright (C) 2014 Matt Florell, Joe Johnson <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
# Copyright (C) 2015 Matt Florell, Joe Johnson <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
#
|
||||
# This page displays any incoming emails in the Vicidial user interface. It
|
||||
# also allows the user to download and view any attachments sent in the email,
|
||||
@@ -20,10 +20,11 @@
|
||||
# 141118-1426 - Added agent_email variable
|
||||
# 141128-0850 - Code cleanup for QXZ functions
|
||||
# 141216-2117 - Added language settings lookups and user/pass variable standardization
|
||||
# 150603-1541 - Fixed email attachments issue
|
||||
#
|
||||
|
||||
$version = '2.10-10';
|
||||
$build = '141216-2117';
|
||||
$version = '2.12-11';
|
||||
$build = '150603-1541';
|
||||
|
||||
require_once("dbconnect_mysqli.php");
|
||||
require_once("functions.php");
|
||||
@@ -197,7 +198,7 @@ if ($REPLY)
|
||||
$semi_rand = md5(time());
|
||||
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
|
||||
$headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
|
||||
$message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"utf-8\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
|
||||
$message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"utf-8\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $reply_message . "\n\n";
|
||||
$message .= "--{$mime_boundary}\n";
|
||||
|
||||
for ($i=1; $i<=5; $i++)
|
||||
@@ -206,7 +207,7 @@ if ($REPLY)
|
||||
$attachment_path="A".$i."_path";
|
||||
$LF_orig=$$attachment_orig_name;
|
||||
$LF_path=$$attachment_path;
|
||||
#echo "<p>".$$attachment_name."<BR/>".$$attachment_orig_name."<BR/>".$$attachment_path."<BR/><p>";
|
||||
# echo "<p>".$$attachment_name."<BR/>".$$attachment_orig_name."<BR/>".$$attachment_path."<BR/><p>";
|
||||
if ($LF_orig)
|
||||
{
|
||||
if (preg_match("/;|:|\/|\^|\[|\]|\"|\'|\*/",$LF_orig))
|
||||
@@ -284,7 +285,7 @@ if ($lead_id) {
|
||||
if (mysqli_num_rows($att_rslt)>0) {
|
||||
$EMAIL_form.="<tr bgcolor=white><td align='right' valign='top' width='150'>"._QXZ("Attachments:")."</td><td align='left' valign='top' width='*'><pre>";
|
||||
while($att_row=mysqli_fetch_array($att_rslt)) {
|
||||
$EMAIL_form.="<LI><a href='$_SERVER[PHP_SELF]?attachment_id=$att_row[attachment_id]&lead_id=$lead_id'>$att_row[filename]</a>\n";
|
||||
$EMAIL_form.="<LI><a href='$_SERVER[PHP_SELF]?attachment_id=$att_row[attachment_id]&lead_id=$lead_id&user=$user&pass=$pass'>$att_row[filename]</a>\n";
|
||||
}
|
||||
$EMAIL_form.="</pre></td></tr>";
|
||||
}
|
||||
@@ -384,7 +385,7 @@ if ($lead_id) {
|
||||
pre { white-space: pre-wrap; }
|
||||
</style>
|
||||
<body>
|
||||
<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='get' name="email_display_form" id="email_display_form" onSubmit="if (this.submitted) return false; this.submitted=true" enctype="multipart/form-data">
|
||||
<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post' name="email_display_form" id="email_display_form" onSubmit="if (this.submitted) return false; this.submitted=true" enctype="multipart/form-data">
|
||||
<?php echo $EMAIL_form; ?>
|
||||
</form>
|
||||
</body>
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
# 141230-0945 - Added code for on-the-fly language translations display
|
||||
# 150210-1357 - Added option to show time in seconds
|
||||
# 150516-1308 - Fixed Javascript element problem, Issue #857
|
||||
# 150603-1533 - Statuses are now sorted in alphabetical order
|
||||
#
|
||||
|
||||
$startMS = microtime();
|
||||
@@ -647,11 +648,6 @@ while ($UG_row=mysqli_fetch_row($recent_UG_rslt)) {
|
||||
$recent_user_groups[$UG_row[1]]=$Ugrp_row[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), 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 $user_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);
|
||||
|
||||
$graph_stats=array();
|
||||
$max_calls=1;
|
||||
$max_time=1;
|
||||
@@ -685,61 +681,99 @@ $DEADAVG_graph=$graph_header."<th class='thgraph' scope='col'>"._QXZ("DEAD AVG")
|
||||
$CUST_graph=$graph_header."<th class='thgraph' scope='col'>"._QXZ("CUST")."</th></tr>";
|
||||
$CUSTAVG_graph=$graph_header."<th class='thgraph' scope='col'>"._QXZ("CUST AVG")."</th></tr>";
|
||||
|
||||
$i=0;
|
||||
$user_stmt="select distinct full_name,vicidial_users.user 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 $group_SQL $user_group_SQL order by full_name asc";
|
||||
if ($DB) {echo "$user_stmt\n";}
|
||||
$user_rslt=mysql_to_mysqli($user_stmt, $link);
|
||||
$q=0;
|
||||
while($q<mysqli_num_rows($user_rslt))
|
||||
{
|
||||
$user_row=mysqli_fetch_row($user_rslt);
|
||||
$full_name[$q] = $user_row[0];
|
||||
$user[$q] = $user_row[1];
|
||||
|
||||
if (!preg_match("/\-$user[$q]\-/i", $users))
|
||||
{
|
||||
$users .= "$user[$q]-";
|
||||
$usersARY[$k] = $user[$q];
|
||||
$user_namesARY[$k] = $full_name[$q];
|
||||
$k++;
|
||||
}
|
||||
$q++;
|
||||
}
|
||||
|
||||
|
||||
$stat_stmt="select distinct status 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 $user_SQL order by status asc";
|
||||
$stat_rslt=mysql_to_mysqli($stat_stmt, $link);
|
||||
if ($DB) {$HTML_text.="$stat_stmt\n";}
|
||||
$q=0;
|
||||
$userTOTcalls=array();
|
||||
while ($i < $rows_to_print)
|
||||
{
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
# $row[0] = ($row[0] - 1); # subtract 1 for login/logout event compensation
|
||||
|
||||
$calls[$i] = $row[0];
|
||||
$talk_sec[$i] = $row[1];
|
||||
$full_name[$i] = $row[2];
|
||||
$user[$i] = $row[3];
|
||||
$pause_sec[$i] = $row[4];
|
||||
$wait_sec[$i] = $row[5];
|
||||
$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]);
|
||||
|
||||
if (strlen($status[$i])>0) {$userTOTcalls[$row[3]]+=$row[0];}
|
||||
while ($stat_row=mysqli_fetch_row($stat_rslt)) {
|
||||
$current_status=$stat_row[0];
|
||||
|
||||
$max_varname="max_".$status[$i];
|
||||
$$max_varname=1;
|
||||
|
||||
if ($customer_sec[$i] < 1)
|
||||
{$customer_sec[$i]=0;}
|
||||
if ( (!preg_match("/\-$status[$i]\-/i", $statuses)) and (strlen($status[$i])>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), 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 and status='$current_status' $group_SQL $user_group_SQL $user_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);
|
||||
|
||||
$stat_rows_to_print = mysqli_num_rows($rslt);
|
||||
|
||||
$i=0;
|
||||
while ($i < $stat_rows_to_print)
|
||||
{
|
||||
$statusesTXT = sprintf("%8s", $status[$i]);
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
# $row[0] = ($row[0] - 1); # subtract 1 for login/logout event compensation
|
||||
|
||||
$calls[$q] = $row[0];
|
||||
$talk_sec[$q] = $row[1];
|
||||
$full_name[$q] = $row[2];
|
||||
$user[$q] = $row[3];
|
||||
$pause_sec[$q] = $row[4];
|
||||
$wait_sec[$q] = $row[5];
|
||||
$dispo_sec[$q] = $row[6];
|
||||
$status[$q] = strtoupper($row[7]);
|
||||
$dead_sec[$q] = $row[8];
|
||||
$user_group[$q] = $row[9];
|
||||
$customer_sec[$q] = ($talk_sec[$q] - $dead_sec[$q]);
|
||||
|
||||
$statusesHEAD .= "----------+";
|
||||
$statusesHTML .= " $statusesTXT |";
|
||||
$CSV_header.=",\"$status[$i]\"";
|
||||
if (strlen($status[$q])>0) {$userTOTcalls[$row[3]]+=$row[0];}
|
||||
|
||||
if($show_percentages) {
|
||||
$statusesHEAD .= "------------+";
|
||||
$statusesHTML .= " $statusesTXT % |";
|
||||
$CSV_header.=",\"$status[$i] %\"";
|
||||
$max_varname="max_".$status[$q];
|
||||
$$max_varname=1;
|
||||
|
||||
if ($customer_sec[$q] < 1)
|
||||
{$customer_sec[$q]=0;}
|
||||
if ( (!preg_match("/\-$status[$q]\-/i", $statuses)) and (strlen($status[$q])>0) )
|
||||
{
|
||||
$statusesTXT = sprintf("%8s", $status[$q]);
|
||||
|
||||
$statusesHEAD .= "----------+";
|
||||
$statusesHTML .= " $statusesTXT |";
|
||||
$CSV_header.=",\"$status[$q]\"";
|
||||
|
||||
if($show_percentages) {
|
||||
$statusesHEAD .= "------------+";
|
||||
$statusesHTML .= " $statusesTXT % |";
|
||||
$CSV_header.=",\"$status[$q] %\"";
|
||||
}
|
||||
|
||||
$statuses .= "$status[$q]-";
|
||||
$statusesARY[$j] = $status[$q];
|
||||
$j++;
|
||||
}
|
||||
if (!preg_match("/\-$user[$q]\-/i", $users))
|
||||
{
|
||||
$users .= "$user[$q]-";
|
||||
$usersARY[$k] = $user[$q];
|
||||
$user_namesARY[$k] = $full_name[$q];
|
||||
$user_groupsARY[$k] = $user_group[$q];
|
||||
$k++;
|
||||
}
|
||||
|
||||
$i++;
|
||||
$q++;
|
||||
}
|
||||
|
||||
$statuses .= "$status[$i]-";
|
||||
$statusesARY[$j] = $status[$i];
|
||||
$j++;
|
||||
}
|
||||
if (!preg_match("/\-$user[$i]\-/i", $users))
|
||||
{
|
||||
$users .= "$user[$i]-";
|
||||
$usersARY[$k] = $user[$i];
|
||||
$user_namesARY[$k] = $full_name[$i];
|
||||
$user_groupsARY[$k] = $user_group[$i];
|
||||
$k++;
|
||||
}
|
||||
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
$CSV_header.="\n";
|
||||
$CSV_lines='';
|
||||
@@ -1314,45 +1348,57 @@ $TOTAL_graph=$graph_header."<th class='thgraph' scope='col'>"._QXZ("TOTAL")." </
|
||||
$NONPAUSE_graph=$graph_header."<th class='thgraph' scope='col'>"._QXZ("NONPAUSE")."</th></tr>";
|
||||
$PAUSE_graph=$graph_header."<th class='thgraph' scope='col'>"._QXZ("PAUSE")."</th></tr>";
|
||||
|
||||
$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 $user_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);
|
||||
$i=0;
|
||||
while ($i < $subs_to_print)
|
||||
{
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
$PCfull_name[$i] = $row[0];
|
||||
$PCuser[$i] = $row[1];
|
||||
$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;
|
||||
$sub_status_stmt="select distinct sub_status from vicidial_agent_log where event_time <= '$query_date_END' and event_time >= '$query_date_BEGIN' and pause_sec > 0 and pause_sec < 65000 $group_SQL $user_SQL order by sub_status asc limit 10000000;";
|
||||
if ($DB) {$ASCII_text.="$sub_status_stmt\n";}
|
||||
$sub_status_rslt=mysql_to_mysqli($sub_status_stmt, $link);
|
||||
$subs_to_print=0;
|
||||
$q=0;
|
||||
while($ss_row=mysqli_fetch_row($sub_status_rslt)) {
|
||||
$current_ss=$ss_row[0];
|
||||
|
||||
# echo "$sub_status[$i]|$PCpause_sec[$i]\n";
|
||||
# if ( (!preg_match("/\-$sub_status[$i]\-/i", $sub_statuses)) and (strlen($sub_status[$i])>0) )
|
||||
if (!preg_match("/\-$sub_status[$i]\-/i", $sub_statuses))
|
||||
$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 sub_status='$current_ss' and vicidial_users.user=vicidial_agent_log.user and pause_sec<65000 $group_SQL $user_group_SQL $user_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);
|
||||
$sub_subs_to_print = mysqli_num_rows($rslt);
|
||||
$subs_to_print+=$sub_subs_to_print;
|
||||
$i=0;
|
||||
while ($i < $sub_subs_to_print)
|
||||
{
|
||||
$sub_statusesTXT = sprintf("%8s", $sub_status[$i]);
|
||||
$sub_statusesHEAD .= "----------+";
|
||||
$sub_statusesHTML .= " $sub_statusesTXT |";
|
||||
$sub_statuses .= "$sub_status[$i]-";
|
||||
$sub_statusesARY[$j] = $sub_status[$i];
|
||||
$CSV_statuses.=",\"$sub_status[$i]\"";
|
||||
$j++;
|
||||
}
|
||||
if (!preg_match("/\-$PCuser[$i]\-/i", $PCusers))
|
||||
{
|
||||
$PCusers .= "$PCuser[$i]-";
|
||||
$PCusersARY[$k] = $PCuser[$i];
|
||||
$PCuser_namesARY[$k] = $PCfull_name[$i];
|
||||
$PCuser_groupsARY[$k] = $PCuser_group[$i];
|
||||
$k++;
|
||||
}
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
$PCfull_name[$q] = $row[0];
|
||||
$PCuser[$q] = $row[1];
|
||||
$PCpause_sec[$q] = $row[2];
|
||||
$sub_status[$q] = $row[3];
|
||||
$PCnon_pause_sec[$q] = $row[4];
|
||||
$PCuser_group[$q] = $row[5];
|
||||
$max_varname="max_".$sub_status[$q];
|
||||
$$max_varname=1;
|
||||
|
||||
$i++;
|
||||
# echo "$sub_status[$i]|$PCpause_sec[$i]\n";
|
||||
# if ( (!preg_match("/\-$sub_status[$i]\-/i", $sub_statuses)) and (strlen($sub_status[$i])>0) )
|
||||
if (!preg_match("/\-$sub_status[$q]\-/i", $sub_statuses))
|
||||
{
|
||||
$sub_statusesTXT = sprintf("%8s", $sub_status[$q]);
|
||||
$sub_statusesHEAD .= "----------+";
|
||||
$sub_statusesHTML .= " $sub_statusesTXT |";
|
||||
$sub_statuses .= "$sub_status[$q]-";
|
||||
$sub_statusesARY[$j] = $sub_status[$q];
|
||||
$CSV_statuses.=",\"$sub_status[$q]\"";
|
||||
$j++;
|
||||
}
|
||||
if (!preg_match("/\-$PCuser[$q]\-/i", $PCusers))
|
||||
{
|
||||
$PCusers .= "$PCuser[$q]-";
|
||||
$PCusersARY[$k] = $PCuser[$q];
|
||||
$PCuser_namesARY[$k] = $PCfull_name[$q];
|
||||
$PCuser_groupsARY[$k] = $PCuser_group[$q];
|
||||
$k++;
|
||||
}
|
||||
|
||||
$i++;
|
||||
$q++;
|
||||
}
|
||||
}
|
||||
|
||||
$ASCII_text.=_QXZ("PAUSE CODE BREAKDOWN",20).": <a href=\"$LINKbase&stage=$stage&file_download=2\">["._QXZ("DOWNLOAD")."]</a>\n\n";
|
||||
@@ -1426,8 +1472,8 @@ while ($m < $k)
|
||||
}
|
||||
if ($status_found < 1)
|
||||
{
|
||||
$SstatusesHTML .= " 0 |";
|
||||
$CSV_statuses.=",\"0\"";
|
||||
$SstatusesHTML .= " 0:00 |";
|
||||
$CSV_statuses.=",\"0:00\"";
|
||||
$graph_stats[$m][(4+$n)]=0;
|
||||
}
|
||||
### END loop through each stat line ###
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
# 140108-0711 - Added webserver and hostname to report logging
|
||||
# 140328-0005 - Converted division calculations to use MathZDC function
|
||||
# 150516-1310 - Fixed Javascript element problem, Issue #857
|
||||
# 150603-1532 - Statuses are now sorted in alphabetical order
|
||||
#
|
||||
|
||||
$startMS = microtime();
|
||||
@@ -478,46 +479,78 @@ else
|
||||
$user_namesARY[0]='';
|
||||
$k=0;
|
||||
|
||||
$stmt="select count(*) as calls,full_name,vicidial_users.user,status 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 $group_SQL $user_group_SQL group by user,full_name,status order by full_name,user,status desc limit 500000;";
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($DB) {echo "$stmt\n";}
|
||||
$rows_to_print = mysqli_num_rows($rslt);
|
||||
$i=0; $sub_status_count=0;
|
||||
while ($i < $rows_to_print)
|
||||
$user_stmt="select distinct full_name,vicidial_users.user 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 status is not null $group_SQL $user_group_SQL order by full_name asc";
|
||||
if ($DB) {echo "$user_stmt\n";}
|
||||
$user_rslt=mysql_to_mysqli($user_stmt, $link);
|
||||
$q=0;
|
||||
while($q<mysqli_num_rows($user_rslt))
|
||||
{
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
$user_row=mysqli_fetch_row($user_rslt);
|
||||
$full_name[$q] = $user_row[0];
|
||||
$user[$q] = $user_row[1];
|
||||
|
||||
if ( ($row[0] > 0) and (strlen($row[3]) > 0) and (!preg_match("/NULL/i",$row[3])))
|
||||
if (!preg_match("/\-$user[$q]\-/i", $users))
|
||||
{
|
||||
$calls[$i] = $row[0];
|
||||
$full_name[$i] = $row[1];
|
||||
$user[$i] = $row[2];
|
||||
$status[$i] = $row[3];
|
||||
if ( (!preg_match("/-$status[$i]-/i", $statuses)) and (strlen($status[$i])>0) )
|
||||
{
|
||||
$statusesTXT = sprintf("%8s", $status[$i]);
|
||||
$statusesHEAD .= "----------+";
|
||||
$statusesHTML .= " $statusesTXT |";
|
||||
$statusesFILE .= "$statusesTXT,";
|
||||
$statuses .= "$status[$i]-";
|
||||
$statusesARY[$j] = $status[$i];
|
||||
|
||||
$sub_statusesARY[$sub_status_count] = $status[$i];
|
||||
$sub_status_count++;
|
||||
$max_varname="max_".$status[$i];
|
||||
$$max_varname=1;
|
||||
|
||||
$j++;
|
||||
}
|
||||
if (!preg_match("/\-$user[$i]\-/i", $users))
|
||||
{
|
||||
$users .= "$user[$i]-";
|
||||
$usersARY[$k] = $user[$i];
|
||||
$user_namesARY[$k] = $full_name[$i];
|
||||
$k++;
|
||||
}
|
||||
$users .= "$user[$q]-";
|
||||
$usersARY[$k] = $user[$q];
|
||||
$user_namesARY[$k] = $full_name[$q];
|
||||
$k++;
|
||||
}
|
||||
$q++;
|
||||
}
|
||||
|
||||
$status_stmt="select distinct status 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 $group_SQL $user_group_SQL order by status";
|
||||
if ($DB) {echo "$status_stmt\n";}
|
||||
$status_rslt=mysql_to_mysqli($status_stmt, $link);
|
||||
$q=0;
|
||||
$status_rows_to_print=0;
|
||||
while($status_row=mysqli_fetch_row($status_rslt))
|
||||
{
|
||||
$current_status=$status_row[0];
|
||||
|
||||
$stmt="select count(*) as calls,full_name,vicidial_users.user,status 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 status='$current_status' $group_SQL $user_group_SQL group by user,full_name,status order by full_name,user,status desc limit 500000;";
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($DB) {echo "$stmt\n";}
|
||||
$status_rows_to_print = mysqli_num_rows($rslt);
|
||||
$rows_to_print+=$status_rows_to_print;
|
||||
$i=0; $sub_status_count=0;
|
||||
while ($i < $status_rows_to_print)
|
||||
{
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
|
||||
if ( ($row[0] > 0) and (strlen($row[2]) > 0) and (strlen($row[3]) > 0) and (!preg_match("/NULL/i",$row[3])))
|
||||
{
|
||||
$calls[$q] = $row[0];
|
||||
$full_name[$q] = $row[1];
|
||||
$user[$q] = $row[2];
|
||||
$status[$q] = $row[3];
|
||||
if ( (!preg_match("/-$status[$q]-/i", $statuses)) and (strlen($status[$q])>0) )
|
||||
{
|
||||
$statusesTXT = sprintf("%8s", $status[$q]);
|
||||
$statusesHEAD .= "----------+";
|
||||
$statusesHTML .= " $statusesTXT |";
|
||||
$statusesFILE .= "$statusesTXT,";
|
||||
$statuses .= "$status[$q]-";
|
||||
$statusesARY[$j] = $status[$q];
|
||||
|
||||
$sub_statusesARY[$sub_status_count] = $status[$q];
|
||||
$sub_status_count++;
|
||||
$max_varname="max_".$status[$q];
|
||||
$$max_varname=1;
|
||||
|
||||
$j++;
|
||||
}
|
||||
if (!preg_match("/\-$user[$q]\-/i", $users))
|
||||
{
|
||||
$users .= "$user[$q]-";
|
||||
$usersARY[$k] = $user[$q];
|
||||
$user_namesARY[$k] = $full_name[$q];
|
||||
$k++;
|
||||
}
|
||||
}
|
||||
$i++;
|
||||
$q++;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
if ($file_download < 1)
|
||||
|
||||
@@ -68,6 +68,7 @@
|
||||
# 150114-2321 - Added date_of_birth as editable field
|
||||
# 150312-1506 - Fixed minor Iframe form bug related to custom fields
|
||||
# 150514-1522 - Added $gmt_offset lookup for adding a new lead
|
||||
# 150603-1527 - Allow non-digit characters in alt_phone field
|
||||
#
|
||||
|
||||
require("dbconnect_mysqli.php");
|
||||
@@ -232,7 +233,7 @@ if ($non_latin < 1)
|
||||
|
||||
$old_phone = preg_replace('/[^0-9]/','',$old_phone);
|
||||
$phone_number = preg_replace('/[^0-9]/','',$phone_number);
|
||||
$alt_phone = preg_replace('/[^0-9]/','',$alt_phone);
|
||||
$alt_phone = preg_replace('/[^- \'\+\_\.0-9a-zA-Z]/','',$alt_phone);
|
||||
} # end of non_latin
|
||||
else
|
||||
{
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
# 141229-1748 - Added code for on-the-fly language translations display
|
||||
# 150107-1728 - Added ignore_group_on_search user option
|
||||
# 150312-1507 - Allow for single quotes in vicidial_list data fields
|
||||
# 150602-1207 - Allow for searching by email address
|
||||
#
|
||||
|
||||
require("dbconnect_mysqli.php");
|
||||
@@ -56,6 +57,8 @@ if (isset($_GET["first_name"])) {$first_name=$_GET["first_name"];}
|
||||
elseif (isset($_POST["first_name"])) {$first_name=$_POST["first_name"];}
|
||||
if (isset($_GET["last_name"])) {$last_name=$_GET["last_name"];}
|
||||
elseif (isset($_POST["last_name"])) {$last_name=$_POST["last_name"];}
|
||||
if (isset($_GET["email"])) {$email=$_GET["email"];}
|
||||
elseif (isset($_POST["email"])) {$email=$_POST["email"];}
|
||||
if (isset($_GET["phone"])) {$phone=$_GET["phone"];}
|
||||
elseif (isset($_POST["phone"])) {$phone=$_POST["phone"];}
|
||||
if (isset($_GET["lead_id"])) {$lead_id=$_GET["lead_id"];}
|
||||
@@ -308,7 +311,7 @@ echo " "._QXZ("Lead search").": $vendor_id $phone $lead_id $status $list_id $use
|
||||
echo date("l F j, Y G:i:s A");
|
||||
echo "<BR>\n";
|
||||
|
||||
if ( (!$vendor_id) and (!$phone) and (!$lead_id) and (!$log_phone) and (!$log_lead_id) and (!$log_phone_archive) and (!$log_lead_id_archive) and ( (strlen($status)<1) and (strlen($list_id)<1) and (strlen($user)<1) and (strlen($owner)<1) ) and ( (strlen($first_name)<1) and (strlen($last_name)<1) ))
|
||||
if ( (!$vendor_id) and (!$phone) and (!$lead_id) and (!$log_phone) and (!$log_lead_id) and (!$log_phone_archive) and (!$log_lead_id_archive) and ( (strlen($status)<1) and (strlen($list_id)<1) and (strlen($user)<1) and (strlen($owner)<1) ) and ( (strlen($first_name)<1) and (strlen($last_name)<1) and (strlen($email)<1) ))
|
||||
{
|
||||
### Lead search
|
||||
echo "<br><center>\n";
|
||||
@@ -368,6 +371,12 @@ if ( (!$vendor_id) and (!$phone) and (!$lead_id) and (!$log_phone) and (!$log_
|
||||
echo "<TD rowspan=2><INPUT TYPE=SUBMIT NAME=SUBMIT VALUE='"._QXZ("SUBMIT")."'></TD>\n";
|
||||
echo "</TR><TR bgcolor=#B9CBFD>";
|
||||
echo "<TD ALIGN=right>$label_last_name: </TD><TD ALIGN=left><input type=text name=last_name size=15 maxlength=30></TD>";
|
||||
echo "</TR><TR bgcolor=#015B91>";
|
||||
echo "<TD colspan=3 align=center height=1></TD>";
|
||||
echo "</TR><TR bgcolor=#B9CBFD>";
|
||||
echo "<TD ALIGN=right>$label_email: </TD><TD ALIGN=left><input type=text name=email size=15 maxlength=30></TD>";
|
||||
echo "<TD><INPUT TYPE=SUBMIT NAME=SUBMIT VALUE='"._QXZ("SUBMIT")."'></TD>\n";
|
||||
echo "</TR><TR bgcolor=#B9CBFD>";
|
||||
echo "</TR>";
|
||||
|
||||
|
||||
@@ -976,8 +985,16 @@ else
|
||||
}
|
||||
else
|
||||
{
|
||||
print _QXZ("ERROR: you must search for something! Go back and search for something");
|
||||
exit;
|
||||
if ( (strlen($email)>0) )
|
||||
{
|
||||
$email_SQL = "email='" . mysqli_real_escape_string($link, $email) . "'";
|
||||
$stmt="SELECT $vicidial_list_fields from $vl_table where $email_SQL $LOGallowed_listsSQL";
|
||||
}
|
||||
else
|
||||
{
|
||||
print _QXZ("ERROR: you must search for something! Go back and search for something");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,10 +99,11 @@
|
||||
# 150430-0644 - Added API allowed function restrictions and allowed list restrictions
|
||||
# 150512-2028 - Added filtering of hash sign on some input variables, Issue #851
|
||||
# 150516-1138 - Fixed conflict with functions.php
|
||||
# 150603-1528 - Fixed format issue in recording_lookup
|
||||
#
|
||||
|
||||
$version = '2.12-75';
|
||||
$build = '150516-1138';
|
||||
$version = '2.12-76';
|
||||
$build = '150603-1528';
|
||||
$api_url_log = 0;
|
||||
|
||||
$startMS = microtime();
|
||||
@@ -4373,7 +4374,7 @@ if ($function == 'recording_lookup')
|
||||
if ($stage == 'pipe')
|
||||
{$DL = '|'; $DLset++;}
|
||||
if ($DLset < 1)
|
||||
{$DL='pipe';}
|
||||
{$DL='|';}
|
||||
if ($header == 'YES')
|
||||
{$output .= 'start_time' . $DL . 'user' . $DL . 'recording_id' . $DL . 'lead_id' . $DL . "location\n";}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user