setTPL('detailed_stats.tpl'); //}}} //{{{ further initialisation $routeField = $ini['System']['routing_field']; $ast_tbl = $ini['DB']['cdr_table']; $localCode = $ini['Calls']['local_area']; $rowsperpage = $ini['System']['per_page']; $tpl->assign('pagerows',$rowsperpage); //cache phone list and phone book $phone_list = array(); $phone_book = array(); cacheNumbers($db,$phone_list,$phone_book); //}}} //{{{ decode posted variables if(isset($_POST['action'])&&!empty($_POST['action'])) { switch($_POST['action']) { case "index": $tpl->assign('return_page',"index.php"); break; case "stats": $tpl->assign('return_page',"statistics.php"); break; default : $tpl->assign('return_page',"index.php"); } } if(isset($_POST['stat_phone'])&&(!empty($_POST['stat_phone']))) { $phone = $_POST['stat_phone']; } else { $phone = $LU->getProperty('user_phone'); } //get cost multiplier $cost_multiplier = 1; //assume it is 1 initially and only change it if needed $fiddle_sql = "SELECT user_cost_multiplier FROM liveuser_users WHERE user_cost_multiplier <> 1 AND user_phone = '$phone'"; $fiddle_res = $db->query($fiddle_sql); if(handleError($fiddle_res)) { $extension_costs_array = array(); while($fiddle_res->fetchInto($fid_row)) { $cost_multiplier = $fid_row['user_cost_multiplier']; } } $tpl->assign('phone',$phone); if(isset($_POST['stat_name'])) { $tpl->assign('calls_name',$_POST['stat_name']); } if(isset($_POST['stat_date_year'])&&(!empty($_POST['stat_date_year']))&&isset($_POST['stat_date_month'])&&(!empty($_POST['stat_date_month']))) { $datefrom = $_POST['stat_date_year'].'-'.$_POST['stat_date_month'].'-01 00:00:00'; $dateto = date("Y-m-d H:i:s",mktime(0,0,0,$_POST['stat_date_month']+1,1,$_POST['stat_date_year'])); $tpl->assign('stat_date_year',$_POST['stat_date_year']); $tpl->assign('stat_date_month',$_POST['stat_date_month']); } else { //use the current month $datefrom = date("Y-m-d H:i:s",mktime(0,0,0,date("m"),1,date('Y'))); $dateto = date("Y-m-d H:i:s",mktime(0,0,0,date("m")+1,1,date('Y'))); } //}}} //{{{ create sql statement $query = "SELECT `accountcode`,`calldate`,`src`,`dst`,`duration`,`billsec`,`cost` FROM `$ast_tbl` WHERE `calldate` > '$datefrom' AND `calldate` < '$dateto' AND `billsec`>'0'"; if(!$tagging_enabled) { //do as normal switch($_POST['stat_name']) { case $ini['Output']['international']: $query.= " AND `src` = '$phone' AND `$routeField` IN (".$ini['Routing']['international'].") AND `dst` LIKE '09%'"; break; case $ini['Output']['national']: $query.= " AND `src` = '$phone' AND `$routeField` IN (".$ini['Routing']['national'].") AND `dst` LIKE '0%' AND `dst` NOT LIKE '09%' AND `dst` NOT LIKE '08%' AND `dst` NOT LIKE '07%' AND `dst` NOT LIKE '".$localCode."%'"; break; case $ini['Output']['vodacom']: $query .= " AND `src` = '$phone' AND `$routeField` IN (".$ini['Routing']['vodacom'].") AND (`dst` LIKE '082%' OR `dst` LIKE '072%' OR `dst` LIKE '076%')"; break; case $ini['Output']['mtn']: $query .= " AND `src` = '$phone' AND `$routeField` IN (".$ini['Routing']['mtn'].") AND (`dst` LIKE '083%' OR `dst` LIKE '073%' OR `dst` LIKE '078%')"; break; case $ini['Output']['cellc']: $query .= " AND `src` = '$phone' AND `$routeField` IN (".$ini['Routing']['cellc'].") AND (`dst` LIKE '084%' OR `dst` LIKE '074%')"; break; case $ini['Output']['special']: $query .= " AND `src` = '$phone' AND `$routeField` IN (".$ini['Routing']['special'].") AND `dst` IN ("; $query .= $ini['Calls']['special_numbers'].")"; break; case $ini['Output']['shared']: $query .= " AND `src` = '$phone' AND `$routeField` IN (".$ini['Routing']['shared'].") AND (`dst` LIKE '086%')"; break; case $ini['Output']['toll_free']: $query .= " AND `src` = '$phone' AND `$routeField` IN (".$ini['Routing']['toll_free'].") AND (`dst` LIKE '0800%')"; break; case $ini['Output']['incoming']: //incoming routefields $incoming_rtfields = $ini['Incoming']['channels_in']; if(!empty($ini['ZeroCost']['channels'])) { $incoming_rtfields .= ','.$ini['ZeroCost']['channels']; } $query .= " AND `dst` = '$phone' AND `$routeField` IN ($incoming_rtfields)"; break; case $ini['Output']['local']: $query .= " AND `src` = '$phone' AND `$routeField` IN (".$ini['Routing']['local'].") AND (`dst` LIKE '".$localCode."%' OR LENGTH(`dst`)=7 )"; break; case $ini['Output']['fallback']: $query .= " AND `src` = '$phone' AND `$routeField` IN (".$ini['Routing']['fallback'].")"; break; default: case $ini['Output']['total']: $query .= " AND (`src` = '$phone' OR `dst` = '$phone')"; } } else { //use tags to speed up query switch($_POST['stat_name']) { case $ini['Output']['international']: $query.= " AND `src` = '$phone' AND (`cdr_tag` = 'int' OR `cdr_tag` = 'intm')"; break; case $ini['Output']['national']: $query.= " AND `src` = '$phone' AND `cdr_tag` = 'nat'"; break; case $ini['Output']['vodacom']: $query.= " AND `src` = '$phone' AND `cdr_tag` = 'vod'"; break; case $ini['Output']['mtn']: $query.= " AND `src` = '$phone' AND `cdr_tag` = 'mtn'"; break; case $ini['Output']['cellc']: $query.= " AND `src` = '$phone' AND `cdr_tag` = 'clc'"; break; case $ini['Output']['toll_free']: $query.= " AND `src` = '$phone' AND `cdr_tag` = 'free'"; break; case $ini['Output']['special']: $query.= " AND `src` = '$phone' AND `cdr_tag` = 'special'"; break; case $ini['Output']['local']: $query.= " AND `src` = '$phone' AND `cdr_tag` = 'loc'"; break; case $ini['Output']['incoming']: $query .= " AND `dst` = '$phone' AND `cdr_tag` = 'zero'"; break; case $ini['Output']['fallback']: $query .= " AND `src` = '$phone' AND `cdr_tag` = 'fallback'"; break; default: case $ini['Output']['total']: $query .= " AND (`src` = '$phone' OR `dst` = '$phone')"; } } //}}} //{{{ execute query $result = $db->query($query); if(handleError($result)) { $stats = array(); while($result->fetchInto($row)) { $row['src'] = checkNumber($phone_list,$phone_book,$row['src']); $row['dst'] = checkNumber($phone_list,$phone_book,$row['dst']); $row['cost'] = $cost_multiplier * floatval($row['cost']); $stats[] = $row; } $tpl->assign('result',$stats); } //}}} $tpl->display(); ?>