0,0 → 1,134 |
<?php |
#################################################### |
# AstWeb - Asterisk PBX Dynamic config environment # |
# # |
# Written by: Jamie Carl # |
# jazz@funkynerd.com # |
# # |
# Copyright (C) 2006 Achieve Corp # |
# # |
# Licence: This software is licenced under the # |
# GNU/GPL. Please see licence.txt for # |
# more information. # |
#################################################### |
|
if(!defined('IN_ASTWEB')) { |
die('Hacking attempt!'); |
} |
|
if(array_key_exists('detail', $_GET)) { |
$cdr_detail = array(); |
$db->query_params('SELECT * FROM cdr WHERE acctid=$1', array($_GET['detail'])); |
$detail = $db->fetch_row(); |
for ($i=0;$i<$db->num_fields();$i++) { |
$col = $db->get_field_name($i); |
$cdr_detail['CDR_'.strtoupper($col)] = $detail[$col]; |
} |
$display->add_variables($cdr_detail); |
$display->add_template('cdr_detail'); |
} |
elseif(array_key_exists('s', $_GET) || array_key_exists('list', $_GET)) { |
function do_field($sql, &$params, $fld) { |
if ($fld && $_GET[$fld]) { |
$sql .= " AND $fld"; |
if (array_key_exists($fld.'type', $_GET)) { |
$dType = $_GET[$fld.'type']; |
switch ($dType) { |
case 1: |
array_push($params, $_GET[$fld]); |
$sql .= "=$" . count($params); |
break; |
case 2: |
array_push($params, "$_GET[$fld]%"); |
$sql .= " LIKE $" . count($params); |
break; |
case 3: |
array_push($params, "%$_GET[$fld]%"); |
$sql .= " LIKE $" . count($params); |
break; |
case 4; |
array_push($params, "%$_GET[$fld]"); |
$sql .= " LIKE $" . count($params); |
} |
} else { |
array_push($params, "%$_GET[$fld]%"); |
$sql .= " LIKE $" . count($params); |
} |
} |
return $sql; |
} |
|
# Construct Query Here |
$query = ""; |
$params = array(); |
|
if ($_GET['before']) { |
array_push($params, $_GET['before']); |
$query .= " AND calldate < $" . count($params); |
} |
|
if ($_GET['after']) { |
array_push($params, $_GET['after']); |
$query .= " AND calldate > $" . count($params); |
} |
|
$query = do_field($query, $params, 'clid'); |
$query = do_field($query, $params, 'src'); |
$query = do_field($query, $params, 'dst'); |
$query = do_field($query, $params, 'channel'); |
|
$query_limit = ''; |
if(array_key_exists('list',$_GET)) { |
switch($_GET['list']) { |
case 'year': $query .= " AND date_trunc('year', calldate) = date_trunc('year', current_date)"; break; |
case 'month': $query .= " AND date_trunc('month', calldate) = date_trunc('month', current_date)"; break; |
case 'week': $query .= " AND date_trunc('week', calldate) = date_trunc('week', current_date)"; break; |
case 'today': $query .= " AND date_trunc('day', calldate) = date_trunc('day', current_date)"; break; |
default: $query_limit .= " limit 200"; |
} |
} |
|
$list_query = "SELECT acctid,calldate,clid,src,dst,duration,disposition from cdr where 1=1" |
. $query . " ORDER BY calldate desc" . $query_limit; |
$result = $db->query_params($list_query, $params); |
|
$calls_number = $db->num_rows(); |
$header = array(); |
for ($hdr=0;$hdr<$db->num_fields();$hdr++) { |
array_push($header, $db->get_field_name($hdr)); |
} |
$cdr = new Table($header); |
$cdr->set_table_class('stat cdr list'); |
|
while ($line = $db->fetch_row()) { |
$cdr->newrow(); |
foreach ($line as $col_value) { |
$cdr->addcell(trim($col_value)); |
} |
$cdr->addcell(array('class' => 'link', 'html' => |
display_link($PHP_SELF.'?m=cdr&detail='.$line['acctid'], 'Details'))); |
} |
$display->add_text($cdr->build()); |
|
// summary |
$sum_query = "SELECT sum(duration) as dur, sum(billsec) as bill from cdr where 1=1" . $query; |
$result = $db->query_params($sum_query, $params); |
$line = $db->fetch_row(); |
$cdr = new Table(); |
$cdr->set_table_class('stat cdr sum'); |
$cdr->addcell(array('tag' => 'th', 'text' => 'Calls')); |
$cdr->addcell($calls_number); |
$cdr->newrow(); |
$cdr->addcell(array('tag' => 'th', 'text' => 'Call Seconds')); |
$cdr->addcell(Duration($line['dur'])); |
$cdr->newrow(); |
$cdr->addcell(array('tag' => 'th', 'text' => 'Bill Seconds')); |
$cdr->addcell(Duration($line['bill'])); |
$display->add_text($cdr->build()); |
} |
else { |
$display->add_variables(array('CDR_METHOD' => 'GET', 'CDR_ACTION' => $PHP_SELF)); |
$display->add_template('cdr'); |
} |
?> |
|