Subversion Repositories general

Compare Revisions

Ignore whitespace Rev 1367 → Rev 1368

/asterisk-stats/trunk/cdr.php
25,6 → 25,7
$col = $db->get_field_name($i);
$cdr_detail['CDR_'.strtoupper($col)] = $detail[$col];
}
$cdr_detail['CDR_STATUS'] = ($detail ? 'DONE' : 'NOT FOUND');
$cdr_detail['CDR_DURATION_F'] = Duration($detail['duration']);
$cdr_detail['CDR_BILLSEC_F'] = Duration($detail['billsec']);
 
31,13 → 32,34
$display->add_variables($cdr_detail);
$display->add_template('cdr_detail');
}
elseif(array_key_exists('active', $_GET)) {
$cdr_detail = array();
$db->query_params("SELECT acctid, calldate, linkdate, clid, src, dst, dcontext,"
. " channel, dstchannel, lastapp, lastdata,"
. " extract(epoch from date_trunc('second',current_timestamp-calldate)) as duration,"
. " extract(epoch from date_trunc('second',current_timestamp-linkdate)) as billsec,"
. " disposition, amaflags, accountcode, uniqueid, userfield FROM activecalls"
. " WHERE acctid=$1 and duration is null", array($_GET['active']));
$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];
}
$cdr_detail['CDR_STATUS'] = ($detail ? 'ACTIVE' : 'NOT FOUND');
$cdr_detail['CDR_DURATION_F'] = Duration($detail['duration']);
$cdr_detail['CDR_BILLSEC_F'] = Duration($detail['billsec']);
 
$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]) {
if($fld && $_GET[$fld]) {
$sql .= " and $fld";
if (array_key_exists($fld.'type', $_GET)) {
if(array_key_exists($fld.'type', $_GET)) {
$dType = $_GET[$fld.'type'];
switch ($dType) {
switch($dType) {
case 1:
array_push($params, $_GET[$fld]);
$sql .= "=$" . count($params);
54,7 → 76,8
array_push($params, "%$_GET[$fld]");
$sql .= " LIKE $" . count($params);
}
} else {
}
else {
array_push($params, "%$_GET[$fld]%");
$sql .= " LIKE $" . count($params);
}
61,10 → 84,17
}
return $sql;
}
function do_date_compare($period)
{
return " and date_trunc('" . $period . "', calldate) = date_trunc('"
. $period . "', current_date)";
}
 
# Construct Query Here
$query = BaseQuery();
$params = array();
$active = false;
 
if ($_GET['before']) {
array_push($params, $_GET['before']);
84,17 → 114,31
$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;
case 'year': $query .= do_date_compare('year'); break;
case 'month': $query .= do_date_compare('month'); break;
case 'week': $query .= do_date_compare('week'); break;
case 'today': $query .= do_date_compare('day'); break;
case 'active':
$active = true;
$query .= " and duration is null";
break;
 
default: $query_limit .= " limit 1000";
}
}
 
$list_query = "select acctid,calldate,src,dst,billsec,disposition"
. " from cdr where"
. $query . " order by calldate desc" . $query_limit;
if($active) {
$list_query = "select acctid,calldate,src,dst,"
. " extract(epoch from date_trunc('second',"
. " current_timestamp-linkdate)) as billsec,disposition"
. " from activecalls where"
. $query . " order by calldate desc" . $query_limit;
}
else {
$list_query = "select acctid,calldate,src,dst,billsec,disposition"
. " from cdr where"
. $query . " order by calldate desc" . $query_limit;
}
$result = $db->query_params($list_query, $params);
 
$calls_number = $db->num_rows();
101,7 → 145,7
$cdr = new Table(array('ID', 'Call Date', 'Source', 'Destination', 'Duration', 'Disposition'));
$cdr->set_table_class('stat cdr list');
 
while ($line = $db->fetch_row()) {
while($line = $db->fetch_row()) {
$cdr->newrow();
$cdr->addcell($line['acctid']);
$cdr->addcell($line['calldate']);
110,12 → 154,21
$cdr->addcell($line['disposition'] == 'ANSWERED' ? Duration($line['billsec']) : '');
$cdr->addcell(strtolower($line['disposition']));
$cdr->addcell(array('class' => 'link', 'html' =>
display_link($PHP_SELF.'?m=cdr&detail='.$line['acctid'], 'Details')));
display_link($PHP_SELF . '?m=cdr&' . ($active ? 'active' : 'detail')
. '=' . $line['acctid'], 'Details')));
}
$display->add_text($cdr->build());
// summary
$sum_query = "select sum(duration) as dur, sum(billsec) as bill from cdr where" . $query;
if($active) {
$sum_query = "select"
. " sum(extract(epoch from date_trunc('second',current_timestamp-calldate))) as dur,"
. " sum(extract(epoch from date_trunc('second',current_timestamp-linkdate))) as bill"
. " from activecalls where" . $query;
}
else {
$sum_query = "select sum(duration) as dur, sum(billsec) as bill from cdr where" . $query;
}
$result = $db->query_params($sum_query, $params);
$line = $db->fetch_row();
$cdr = new Table();