CDR: Added Date/Time calendar picker, enhanced searching ability - added Start, Answered and End ranges.

This commit is contained in:
Nate Jones 2014-08-02 10:57:02 +00:00
parent 477e950ab3
commit 3ee965621b
5 changed files with 1771 additions and 41 deletions

View File

@ -70,10 +70,20 @@
$text['label-destination']['pt-pt'] = "Destino";
$text['label-destination']['fr-fr'] = "Destination";
$text['label-start']['en-us'] = "Start";
$text['label-start']['es-cl'] = "Inicio";
$text['label-start']['pt-pt'] = "Início";
$text['label-start']['fr-fr'] = "Début";
$text['label-start_range']['en-us'] = "Start Range";
$text['label-start_range']['es-cl'] = "Comienzo Lapso";
$text['label-start_range']['pt-pt'] = "Começo Palmo";
$text['label-start_range']['fr-fr'] = "Démarrer Envergure";
$text['label-answer_range']['en-us'] = "Answer Range";
$text['label-answer_range']['es-cl'] = "Respuesta Lapso";
$text['label-answer_range']['pt-pt'] = "Resposta Palmo";
$text['label-answer_range']['fr-fr'] = "Réponse Envergure";
$text['label-end_range']['en-us'] = "End Range";
$text['label-end_range']['es-cl'] = "Fin Lapso";
$text['label-end_range']['pt-pt'] = "Fim Palmo";
$text['label-end_range']['fr-fr'] = "Fin Envergure";
$text['label-status']['en-us'] = "Status";
$text['label-status']['es-cl'] = "Estado";

View File

@ -87,12 +87,15 @@ else {
echo "<td>\n";
echo " <input type='hidden' name='direction' value='$direction'>\n";
echo " <input type='hidden' name='caller_id_name' value='$caller_id_name'>\n";
echo " <input type='hidden' name='start_stamp' value='$start_stamp'>\n";
echo " <input type='hidden' name='start_stamp_begin' value='$start_stamp_begin'>\n";
echo " <input type='hidden' name='start_stamp_end' value='$start_stamp_end'>\n";
echo " <input type='hidden' name='hangup_cause' value='$hangup_cause'>\n";
echo " <input type='hidden' name='caller_id_number' value='$caller_id_number'>\n";
echo " <input type='hidden' name='destination_number' value='$destination_number'>\n";
echo " <input type='hidden' name='answer_stamp' value='$answer_stamp'>\n";
echo " <input type='hidden' name='end_stamp' value='$end_stamp'>\n";
echo " <input type='hidden' name='answer_stamp_begin' value='$answer_stamp_begin'>\n";
echo " <input type='hidden' name='answer_stamp_end' value='$answer_stamp_end'>\n";
echo " <input type='hidden' name='end_stamp_begin' value='$end_stamp_begin'>\n";
echo " <input type='hidden' name='end_stamp_end' value='$end_stamp_end'>\n";
echo " <input type='hidden' name='duration' value='$duration'>\n";
echo " <input type='hidden' name='billsec' value='$billsec'>\n";
echo " <input type='hidden' name='uuid' value='$uuid'>\n";
@ -129,11 +132,15 @@ else {
//basic search of call detail records
if (permission_exists('xml_cdr_search')) {
// javascript calendar (source: http://rightjs.org)
echo "<script type='text/javascript' src='".PROJECT_PATH."/resources/rightjs/right.js'></script>";
echo "<script type='text/javascript' src='".PROJECT_PATH."/resources/rightjs/right-calendar-src.js'></script>";
echo "<form method='post' action=''>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td width='44%' style='vertical-align: top;'>\n";
echo "<td width='25%' style='vertical-align: top;'>\n";
echo "<table width='100%' border='0' cellpadding='6' cellspacing='0'>\n";
echo " <tr>\n";
@ -216,7 +223,7 @@ else {
echo "</table>\n";
echo "</td>";
echo "<td width='28%' style='vertical-align: top;'>\n";
echo "<td width='25%' style='vertical-align: top;'>\n";
echo "<table width='100%' border='0' cellpadding='6' cellspacing='0'>\n";
echo " <tr>\n";
@ -224,7 +231,7 @@ else {
echo " ".$text['label-source']."\n";
echo " </td>\n";
echo " <td class='vtable' width='70%' align='left'>\n";
echo " <input type='text' class='formfld' name='caller_id_number' style='width:100%' value='$caller_id_number'>\n";
echo " <input type='text' class='formfld' name='caller_id_number' value='$caller_id_number'>\n";
echo " </td>\n";
echo " </tr>\n";
@ -233,29 +240,31 @@ else {
echo " ".$text['label-destination']."\n";
echo " </td>\n";
echo " <td class='vtable' width='70%' align='left'>\n";
echo " <input type='text' class='formfld' name='destination_number' style='width:100%' value='$destination_number'>\n";
echo " <input type='text' class='formfld' name='destination_number' value='$destination_number'>\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "</td>";
echo "<td width='28%' style='vertical-align: top;'>\n";
echo "<td width='25%' style='vertical-align: top;'>\n";
echo "<table width='100%' border='0' cellpadding='6' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td class='vncell' valign='top' nowrap='nowrap' width='30%'>\n";
echo " ".$text['label-start_range']."\n";
echo " </td>\n";
echo " <td class='vtable' width='70%' align='left' style='white-space: nowrap;'>\n";
echo " <input type='text' class='formfld' name='start_stamp_begin' data-calendar=\"{format: '%Y-%m-%d %H:%M', listYears: true, hideOnPick: false, fxName: null, showButtons: true}\" value='$start_stamp_begin'>\n";
echo " > ";
echo " <input type='text' class='formfld' name='start_stamp_end' data-calendar=\"{format: '%Y-%m-%d %H:%M', listYears: true, hideOnPick: false, fxName: null, showButtons: true}\" value='$start_stamp_end'>\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td class='vncell' valign='top' nowrap='nowrap' width='30%'>\n";
echo " ".$text['label-cid-name']."\n";
echo " </td>\n";
echo " <td class='vtable' width='70%' align='left'>\n";
echo " <input type='text' class='formfld' name='caller_id_name' style='width:100%' value='$caller_id_name'>\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td class='vncell' valign='top' nowrap='nowrap' width='30%'>\n";
echo " ".$text['label-start']."\n";
echo " </td>\n";
echo " <td class='vtable' width='70%' align='left'>\n";
echo " <input type='text' class='formfld' name='start_stamp' style='width:100%' value='$start_stamp'>\n";
echo " <input type='text' class='formfld' name='caller_id_name' value='$caller_id_name'>\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
@ -451,7 +460,7 @@ else {
$sell_price = $row['call_sell'];
$lcr_direction = (strlen($row['direction'])?$row['direction']:"outbound");
$n = (($lcr_direction == "inbound")?$row['caller_id_number']:$row['destination_number']);
$database->table = "v_lcr";
$database->sql = "SELECT currency FROM v_lcr WHERE v_lcr.carrier_uuid= '' AND v_lcr.enabled='true' AND v_lcr.lcr_direction='$lcr_direction' AND v_lcr.digits IN (".number_series($n).") ORDER BY digits DESC, rate ASC, date_start DESC LIMIT 1";
$database->result = $database->execute();

View File

@ -54,9 +54,12 @@ else {
$caller_id_number = check_str($_REQUEST["caller_id_number"]);
$destination_number = check_str($_REQUEST["destination_number"]);
$context = check_str($_REQUEST["context"]);
$start_stamp = check_str($_REQUEST["start_stamp"]);
$answer_stamp = check_str($_REQUEST["answer_stamp"]);
$end_stamp = check_str($_REQUEST["end_stamp"]);
$start_stamp_begin = check_str($_REQUEST["start_stamp_begin"]);
$start_stamp_end = check_str($_REQUEST["start_stamp_end"]);
$answer_stamp_begin = check_str($_REQUEST["answer_stamp_begin"]);
$answer_stamp_end = check_str($_REQUEST["answer_stamp_end"]);
$end_stamp_begin = check_str($_REQUEST["end_stamp_begin"]);
$end_stamp_end = check_str($_REQUEST["end_stamp_end"]);
$start_epoch = check_str($_REQUEST["start_epoch"]);
$stop_epoch = check_str($_REQUEST["stop_epoch"]);
$duration = check_str($_REQUEST["duration"]);
@ -93,15 +96,21 @@ else {
$sql_where_ands[] = "destination_number like '".$mod_destination_number."'";
}
if (strlen($context) > 0) { $sql_where_ands[] = "context like '%".$context."%'"; }
if ($db_type == "sqlite") {
if (strlen($start_stamp) > 0) { $sql_where_ands[] = "start_stamp like '%".$start_stamp."%'"; }
if (strlen($end_stamp) > 0) { $sql_where_ands[] = "end_stamp like '%".$end_stamp."%'"; }
if (strlen($start_stamp_begin) > 0 && strlen($start_stamp_end) > 0) { $sql_where_ands[] = "start_stamp BETWEEN '".$start_stamp_begin.":00.000' AND '".$start_stamp_end.":59.999'"; }
else {
if (strlen($start_stamp_begin) > 0) { $sql_where_ands[] = "start_stamp >= '".$start_stamp_begin.":00.000'"; }
if (strlen($start_stamp_end) > 0) { $sql_where_ands[] = "start_stamp <= '".$start_stamp_end.":59.999'"; }
}
if ($db_type == "pgsql" || $db_type == "mysql") {
if (strlen($start_stamp) > 0 && strlen($end_stamp) == 0) { $sql_where_ands[] = "start_stamp between '".$start_stamp." 00:00:00' and '".$start_stamp." 23:59:59'"; }
if (strlen($start_stamp) > 0 && strlen($end_stamp) > 0) { $sql_where_ands[] = "start_stamp between '".$start_stamp." 00:00:00' and '".$end_stamp." 23:59:59'"; }
if (strlen($answer_stamp_begin) > 0 && strlen($answer_stamp_end) > 0) { $sql_where_ands[] = "answer_stamp BETWEEN '".$answer_stamp_begin.":00.000' AND '".$answer_stamp_end.":59.999'"; }
else {
if (strlen($answer_stamp_begin) > 0) { $sql_where_ands[] = "answer_stamp >= '".$answer_stamp_begin.":00.000'"; }
if (strlen($answer_stamp_end) > 0) { $sql_where_ands[] = "answer_stamp <= '".$answer_stamp_end.":59.999'"; }
}
if (strlen($end_stamp_begin) > 0 && strlen($end_stamp_end) > 0) { $sql_where_ands[] = "end_stamp BETWEEN '".$end_stamp_begin.":00.000' AND '".$end_stamp_end.":59.999'"; }
else {
if (strlen($end_stamp_begin) > 0) { $sql_where_ands[] = "end_stamp >= '".$end_stamp_begin.":00.000'"; }
if (strlen($end_stamp_end) > 0) { $sql_where_ands[] = "end_stamp <= '".$end_stamp_end.":59.999'"; }
}
if (strlen($answer_stamp) > 0) { $sql_where_ands[] = "answer_stamp like '%".$answer_stamp."%'"; }
if (strlen($duration) > 0) { $sql_where_ands[] = "duration like '%".$duration."%'"; }
if (strlen($billsec) > 0) { $sql_where_ands[] = "billsec like '%".$billsec."%'"; }
if (strlen($hangup_cause) > 0) { $sql_where_ands[] = "hangup_cause like '%".$hangup_cause."%'"; }
@ -167,8 +176,12 @@ else {
$param .= "&caller_id_number=".$caller_id_number;
$param .= "&destination_number=".$destination_number;
$param .= "&context=".$context;
$param .= "&answer_stamp=".$answer_stamp;
$param .= "&end_stamp=".$end_stamp;
$param .= "&start_stamp_begin=".$start_stamp_begin;
$param .= "&start_stamp_end=".$start_stamp_end;
$param .= "&answer_stamp_begin=".$answer_stamp_begin;
$param .= "&answer_stamp_end=".$answer_stamp_end;
$param .= "&end_stamp_begin=".$end_stamp_begin;
$param .= "&end_stamp_end=".$end_stamp_end;
$param .= "&start_epoch=".$start_epoch;
$param .= "&stop_epoch=".$stop_epoch;
$param .= "&duration=".$duration;
@ -215,7 +228,7 @@ else {
}
}
unset($prep_statement, $result);
//limit the number of results
if ($num_rows > $_SESSION['cdr']['limit']['numeric']) {
$num_rows = $_SESSION['cdr']['limit']['numeric'];

View File

@ -48,6 +48,10 @@ echo "<tr class='border'>\n";
echo " <td align=\"left\">\n";
echo " <br>";
// javascript calendar (source: http://rightjs.org)
echo "<script type='text/javascript' src='".PROJECT_PATH."/resources/rightjs/right.js'></script>";
echo "<script type='text/javascript' src='".PROJECT_PATH."/resources/rightjs/right-calendar-src.js'></script>";
echo "<form method='post' action='xml_cdr.php'>\n";
echo "<table width='100%' cellpadding='6' cellspacing='0'>\n";
@ -105,16 +109,28 @@ echo " <td class='vncell'>".$text['label-context']."</td>";
echo " <td class='vtable'><input type='text' class='formfld' name='context' value='$context'></td>";
echo " </tr>";
echo " <tr>";
echo " <td class='vncell'>".$text['label-start']."</td>";
echo " <td class='vtable'><input type='text' class='formfld' name='start_stamp' value='$start_stamp'></td>";
echo " <td class='vncell'>".$text['label-start_range']."</td>";
echo " <td class='vtable'>";
echo " <input type='text' class='formfld' name='start_stamp_begin' data-calendar=\"{format: '%Y-%m-%d %H:%M', listYears: true, hideOnPick: false, fxName: null, showButtons: true}\" value='$start_stamp_begin'>";
echo " > ";
echo " <input type='text' class='formfld' name='start_stamp_end' data-calendar=\"{format: '%Y-%m-%d %H:%M', listYears: true, hideOnPick: false, fxName: null, showButtons: true}\" value='$start_stamp_end'>";
echo " </td>";
echo " </tr>";
echo " <tr>";
echo " <td class='vncell'>".$text['label-answer']."</td>";
echo " <td class='vtable'><input type='text' class='formfld' name='answer_stamp' value='$answer_stamp'></td>";
echo " <td class='vncell'>".$text['label-answer_range']."</td>";
echo " <td class='vtable'>";
echo " <input type='text' class='formfld' name='answer_stamp_begin' data-calendar=\"{format: '%Y-%m-%d %H:%M', listYears: true, hideOnPick: false, fxName: null, showButtons: true}\" value='$answer_stamp_begin'>";
echo " > ";
echo " <input type='text' class='formfld' name='answer_stamp_end' data-calendar=\"{format: '%Y-%m-%d %H:%M', listYears: true, hideOnPick: false, fxName: null, showButtons: true}\" value='$answer_stamp_end'>";
echo " </td>";
echo " </tr>";
echo " <tr>";
echo " <td class='vncell'>".$text['label-end_stamp']."</td>";
echo " <td class='vtable'><input type='text' class='formfld' name='end_stamp' value='$end_stamp'></td>";
echo " <td class='vncell'>".$text['label-end_range']."</td>";
echo " <td class='vtable'>";
echo " <input type='text' class='formfld' name='end_stamp_begin' data-calendar=\"{format: '%Y-%m-%d %H:%M', listYears: true, hideOnPick: false, fxName: null, showButtons: true}\" value='$end_stamp_begin'>";
echo " > ";
echo " <input type='text' class='formfld' name='end_stamp_end' data-calendar=\"{format: '%Y-%m-%d %H:%M', listYears: true, hideOnPick: false, fxName: null, showButtons: true}\" value='$end_stamp_end'>";
echo " </td>";
echo " </tr>";
echo " <tr>";
echo " <td class='vncell'>".$text['label-duration']."</td>";

File diff suppressed because it is too large Load Diff