Subversion Repositories general

Compare Revisions

Ignore whitespace Rev 1381 → Rev 1382

/asterisk-stats/trunk/template/summary.tpl
20,6 → 20,11
<td class="di"><a href=${HREF_CDR_LIST}=week>${CS_WEEK_DUR}</a></td>
</tr>
<tr>
<td class="t"><a href=${HREF_CDR_LIST}=lastweek>Last Week</a></td>
<td class="d"><a href=${HREF_CDR_LIST}=lastweek>${CS_LAST_WEEK}</a></td>
<td class="di"><a href=${HREF_CDR_LIST}=lastweek>${CS_LAST_WEEK_DUR}</a></td>
</tr>
<tr>
<td class="t"><a href=${HREF_CDR_LIST}=month>This Month</a></td>
<td class="d"><a href=${HREF_CDR_LIST}=month>${CS_MONTH}</a></td>
<td class="di"><a href=${HREF_CDR_LIST}=month>${CS_MONTH_DUR}</a></td>
/asterisk-stats/trunk/template/cdr_detail.tpl
5,7 → 5,7
</tr>
<tr>
<th>Call Date</th>
<td>${CDR_CALLDATE}&nbsp;</td>
<td>${CDR_CALLDATE_F}&nbsp;</td>
</tr>
<tr>
<th>CLID</th>
12,14 → 12,20
<td>${CDR_CLID}&nbsp;</td>
</tr>
<tr>
<th>Source</th>
<th rowspan=2>Source</th>
<td>${CDR_SRC}&nbsp;</td>
</tr>
<tr>
<th>Destination</th>
<td>${CDR_SRC_PERSON}&nbsp;</td>
</tr>
<tr>
<th rowspan=2>Destination</th>
<td>${CDR_DST}&nbsp;</td>
</tr>
<tr>
<td>${CDR_DST_PERSON}&nbsp;</td>
</tr>
<tr>
<th>Context</th>
<td>${CDR_DCONTEXT}&nbsp;</td>
</tr>
/asterisk-stats/trunk/astweb.css
59,7 → 59,6
 
table.stat td {
border: 1px solid #AAAAAA;
text-align: right;
padding: 5px;
vertical-align: text-bottom;
font-size: 8pt;
69,10 → 68,34
background-color: #AAAAAA;
}
 
table.stat td.d {
text-align: right;
}
 
table.stat td.di {
text-align: right;
}
 
table.cdr td.link {
border: none;
}
 
table.cdr td.duration {
text-align: right;
}
 
table.cdr td.num {
text-align: right;
}
 
table.sum td {
text-align: right;
}
 
table.details td {
text-align: right;
}
 
table.calls {
width: 300px;
}
113,7 → 136,6
 
table.telbook td {
border: 1px solid #AAAAAA;
text-align: right;
padding: 5px;
vertical-align: text-bottom;
font-size: 8pt;
/asterisk-stats/trunk/telbook.php
67,7 → 67,7
}
 
# categories select box
$db->query("select category_id, category_name from telbook_categories");
$db->query("select category_id, category_name from telbook_categories order by category_name");
$categories_list = "\n\t\t\t\t<option value=''>(none)</option>";
while($line = $db->fetch_row()) {
$categories_list .= "\n\t\t\t\t<option value='"
/asterisk-stats/trunk/includes/display.php
141,6 → 141,12
if($cell['class']) {
$output .= ' class="' . htmlspecialchars($cell['class']) . '"';
}
if($cell['colspan']) {
$output .= " colspan=\"" . htmlspecialchars($cell['colspan']) . "\"";
}
if($cell['rowspan']) {
$output .= " rowspan=\"" . htmlspecialchars($cell['rowspan']) . "\"";
}
if($cell['comment']) {
$output .= " title=\"" . htmlspecialchars($cell['comment']) . "\"";
}
/asterisk-stats/trunk/includes/cdr.php
14,16 → 14,29
 
if(array_key_exists('detail', $_GET)) {
$cdr_detail = array();
$db->query_params('SELECT * FROM cdr WHERE acctid=$1', array($_GET['detail']));
$db->query_params("select r.*,"
. " p1.person_name as src_name, e1.entry_title as src_title,"
. " p2.person_name as dst_name, e2.entry_title as dst_title"
. " from cdr r"
. " left join telbook_entries e1 on r.src=e1.entry_value"
. " left join telbook_persons p1 on p1.person_id=e1.entry_person"
. " left join telbook_entries e2 on r.dst=e2.entry_value"
. " left join telbook_persons p2 on p2.person_id=e2.entry_person"
. " where acctid=$1", array($_GET['detail']));
$detail = $db->fetch_row();
 
for ($i=0;$i<$db->num_fields();$i++) {
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 ? 'DONE' : 'NOT FOUND');
$cdr_detail['CDR_DURATION_F'] = Duration($detail['duration']);
$cdr_detail['CDR_BILLSEC_F'] = Duration($detail['billsec']);
$cdr_detail['CDR_CALLDATE_F'] = FormatDateTime($detail['calldate']);
$cdr_detail['CDR_DURATION_F'] = FormatDuration($detail['duration']);
$cdr_detail['CDR_BILLSEC_F'] = FormatDuration($detail['billsec']);
$cdr_detail['CDR_SRC_PERSON'] = $detail['src_name'] . ($detail['src_title'] ? '/'
. $detail['src_title'] : '');
$cdr_detail['CDR_DST_PERSON'] = $detail['dst_name'] . ($detail['dst_title'] ? '/'
. $detail['dst_title'] : '');
 
$display->add_variables($cdr_detail);
$display->add_template('cdr_detail');
30,21 → 43,33
}
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']));
$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,"
. " p1.person_name as src_name, e1.entry_title as src_title,"
. " p2.person_name as dst_name, e2.entry_title as dst_title"
. " from activecalls r"
. " left join telbook_entries e1 on r.src=e1.entry_value"
. " left join telbook_persons p1 on p1.person_id=e1.entry_person"
. " left join telbook_entries e2 on r.dst=e2.entry_value"
. " left join telbook_persons p2 on p2.person_id=e2.entry_person"
. " where acctid=$1 and duration is null", array($_GET['active']));
$detail = $db->fetch_row();
 
for ($i=0;$i<$db->num_fields();$i++) {
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']);
$cdr_detail['CDR_CALLDATE_F'] = FormatDateTime($detail['calldate']);
$cdr_detail['CDR_DURATION_F'] = FormatDuration($detail['duration']);
$cdr_detail['CDR_BILLSEC_F'] = FormatDuration($detail['billsec']);
$cdr_detail['CDR_SRC_PERSON'] = $detail['src_name'] . ($detail['src_title'] ? '/'
. $detail['src_title'] : '');
$cdr_detail['CDR_DST_PERSON'] = $detail['dst_name'] . ($detail['dst_title'] ? '/'
. $detail['dst_title'] : '');
 
$display->add_variables($cdr_detail);
$display->add_template('cdr_detail');
81,9 → 106,10
return $sql;
}
function do_date_compare($period)
function do_date_compare($period, $diff = NULL)
{
return " and date_trunc('" . $period . "', calldate) = date_trunc('"
return " and date_trunc('" . $period . "', calldate)"
. ($diff ? " + interval '$diff $period'" : "") . " = date_trunc('"
. $period . "', current_date)";
}
 
110,10 → 136,11
$query_limit = '';
if(array_key_exists('list',$_GET)) {
switch($_GET['list']) {
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 'year': $query .= do_date_compare('year'); break;
case 'month': $query .= do_date_compare('month'); break;
case 'week': $query .= do_date_compare('week'); break;
case 'lastweek': $query .= do_date_compare('week', 1); break;
case 'today': $query .= do_date_compare('day'); break;
case 'active':
$active = true;
$query .= " and duration is null";
125,29 → 152,47
 
if($active) {
$list_query = "select acctid,calldate,src,dst,"
. " extract(epoch from date_trunc('second',"
. " current_timestamp-linkdate)) as billsec,disposition"
. " from activecalls where"
. " extract(epoch from date_trunc('second',"
. " current_timestamp-linkdate)) as billsec,disposition,"
. " p1.person_name as src_name, e1.entry_title as src_title,"
. " p2.person_name as dst_name, e2.entry_title as dst_title"
. " from activecalls r"
. " left join telbook_entries e1 on r.src=e1.entry_value"
. " left join telbook_persons p1 on p1.person_id=e1.entry_person"
. " left join telbook_entries e2 on r.dst=e2.entry_value"
. " left join telbook_persons p2 on p2.person_id=e2.entry_person"
. " where"
. $query . " order by calldate desc" . $query_limit;
}
else {
$list_query = "select acctid,calldate,src,dst,billsec,disposition"
. " from cdr where"
$list_query = "select acctid,calldate,src,dst,billsec,disposition,"
. " p1.person_name as src_name, e1.entry_title as src_title,"
. " p2.person_name as dst_name, e2.entry_title as dst_title"
. " from cdr r"
. " left join telbook_entries e1 on r.src=e1.entry_value"
. " left join telbook_persons p1 on p1.person_id=e1.entry_person"
. " left join telbook_entries e2 on r.dst=e2.entry_value"
. " left join telbook_persons p2 on p2.person_id=e2.entry_person"
. " where"
. $query . " order by calldate desc" . $query_limit;
}
$result = $db->query_params($list_query, $params);
 
$calls_number = $db->num_rows();
$cdr = new Table(array('ID', 'Call Date', 'Source', 'Destination', 'Duration', 'Disposition'));
$cdr = new Table(array('ID', 'Call Date', array('text' => 'Source', 'colspan' => 2),
array('text' => 'Destination', 'colspan' => 2), 'Duration', 'Disposition'));
$cdr->set_table_class('stat cdr list');
 
while($line = $db->fetch_row()) {
$cdr->newrow();
$cdr->addcell($line['acctid']);
$cdr->addcell($line['calldate']);
$cdr->addcell($line['src']);
$cdr->addcell($line['dst']);
$cdr->addcell($line['disposition'] == 'ANSWERED' ? Duration($line['billsec']) : '');
$cdr->addcell(FormatDateTime($line['calldate']));
$cdr->addcell(array('text' => $line['src'], 'class' => 'num'));
$cdr->addcell($line['src_name'] . ($line['src_title'] ? '/' . $line['src_title'] : ''));
$cdr->addcell(array('text' => $line['dst'], 'class' => 'num'));
$cdr->addcell($line['dst_name'] . ($line['dst_title'] ? '/' . $line['dst_title'] : ''));
$cdr->addcell(array('text' => ($line['disposition'] == 'ANSWERED'
? FormatDuration($line['billsec']) : ''), 'class' => 'duration'));
$cdr->addcell(strtolower($line['disposition']));
$cdr->addcell(array('class' => 'link', 'html' =>
display_link($PHP_SELF . '?m=cdr&' . ($active ? 'active' : 'detail')
173,10 → 218,10
$cdr->addcell($calls_number);
$cdr->newrow();
$cdr->addcell(array('tag' => 'th', 'text' => 'Call Seconds'));
$cdr->addcell(Duration($line['dur']));
$cdr->addcell(FormatDuration($line['dur']));
$cdr->newrow();
$cdr->addcell(array('tag' => 'th', 'text' => 'Bill Seconds'));
$cdr->addcell(Duration($line['bill']));
$cdr->addcell(FormatDuration($line['bill']));
$display->add_html_text($cdr->build());
}
else {
/asterisk-stats/trunk/includes/functions.php
2,25 → 2,7
 
$PHP_SELF = $_SERVER['PHP_SELF'];
 
function GetGet($var) {
$val = "";
 
if(array_key_exists($var, $_GET)) {
$val = $_GET[$var];
} elseif(array_key_exists($var, $_POST)) {
$val = $_POST[$var];
} else {
$val = "";
}
 
$val = str_replace("'", "\\'", $val);
$val = str_replace('\\', '\\\\', $val);
 
return $val;
}
 
 
function Duration($seconds) {
function FormatDuration($seconds) {
$minutes = $seconds / 60;
$seconds = $seconds % 60;
$hours = $minutes / 60;
41,4 → 23,10
return (' ('.$hrsdiff.'h '.$minsdiff.'m '.$secsdiff.'s)');
}
 
function FormatDateTime($date_str) {
$date_obj = date_create($date_str);
 
return date_format($date_obj, "D, j M Y G:i:s");
}
 
?>
/asterisk-stats/trunk/includes/summary.php
12,16 → 12,18
# more information. #
####################################################
 
function add_summary($count_name, $dur_name, $interval)
function add_summary($count_name, $dur_name, $interval, $diff = NULL)
{
global $db, $display;
 
$db->query("select count(acctid), sum(billsec) from cdr where" . BaseQuery()
. ($interval ? " and date_trunc('" . $interval . "', calldate) = date_trunc('"
. $interval . "', current_date)" : ""));
$query = "select count(acctid), sum(billsec) from cdr where" . BaseQuery()
. ($interval ? " and date_trunc('" . $interval . "', calldate)"
. ($diff ? " + interval '$diff $interval'" : "") . " = date_trunc('"
. $interval . "', current_date)" : "");
$db->query($query);
$db->fetch_row_idx();
$display->add_variables(array($count_name => $db->get_field(0),
$dur_name => Duration($db->get_field(1))));
$dur_name => FormatDuration($db->get_field(1))));
}
 
# active calls
29,13 → 31,14
. " from activecalls where" . BaseQuery() . " and duration is null");
$db->fetch_row_idx();
$display->add_variables(array('CS_ACTIVE' => $db->get_field(0),
'CS_ACTIVE_DUR' => Duration($db->get_field(1))));
'CS_ACTIVE_DUR' => FormatDuration($db->get_field(1))));
 
add_summary('CS_TODAY', 'CS_TODAY_DUR', 'day');
add_summary('CS_WEEK', 'CS_WEEK_DUR', 'week');
add_summary('CS_MONTH', 'CS_MONTH_DUR', 'month');
add_summary('CS_YEAR', 'CS_YEAR_DUR', 'year');
add_summary('CS_TOTAL', 'CS_TOTAL_DUR', null);
add_summary('CS_TODAY', 'CS_TODAY_DUR', 'day');
add_summary('CS_WEEK', 'CS_WEEK_DUR', 'week');
add_summary('CS_LAST_WEEK', 'CS_LAST_WEEK_DUR', 'week', 1);
add_summary('CS_MONTH', 'CS_MONTH_DUR', 'month');
add_summary('CS_YEAR', 'CS_YEAR_DUR', 'year');
add_summary('CS_TOTAL', 'CS_TOTAL_DUR', null);
 
$display->add_template('summary');
?>