Changeset 13994

Show
Ignore:
Timestamp:
04/24/12 13:38:08 (1 year ago)
Author:
p_lindheimer
Message:

fixes #5788 allow use of remote DB for CDR Reports

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/branches/2.11/cdr/page.cdr.php

    r13976 r13994  
    4545$system_monitor_dir = isset($amp_conf['ASTSPOOLDIR'])?$amp_conf['ASTSPOOLDIR']."/monitor":"/var/spool/asterisk/monitor"; 
    4646 
    47 // What format for recordings are set? 
    48 $sql = "SELECT value FROM globals where variable = 'MIXMON_FORMAT'"; 
    49 $mixmonformat = $db->getOne($sql); 
    50 if(DB::IsError($mixmonformat)) { 
    51 die_freepbx($mixmonformat->getMessage()); 
    52 
    53 $system_audio_format = $mixmonformat; 
    54 //$system_audio_format = 'wav'; 
     47// if CDRDBHOST and CDRDBTYPE are not empty then we assume an external connection and don't use the default connection 
     48// 
     49if (!empty($amp_conf["CDRDBHOST"]) && !empty($amp_conf["CDRDBTYPE"])) { 
     50  $db_hash = array('mysql' => 'mysql', 'postgres' => 'pgsql'); 
     51  $db_type = $db_hash[$amp_conf["CDRDBTYPE"]]; 
     52  $db_host = $amp_conf["CDRDBHOST"]; 
     53  $db_port = empty($amp_conf["CDRDBPORT"]) ? '' :  ':' . $amp_conf["CDRDBPORT"]; 
     54  $db_user = empty($amp_conf["CDRDBUSER"]) ? $amp_conf["AMPDBUSER"] : $amp_conf["CDRDBUSER"]; 
     55  $db_pass = empty($amp_conf["CDRDBPASS"]) ? $amp_conf["AMPDBPASS"] : $amp_conf["CDRDBPASS"]; 
     56  $datasource = $db_type . '://' . $db_user . ':' . $db_pass . '@' . $db_host . $db_port . '/' . $db_name; 
     57  $dbcdr = DB::connect($datasource); // attempt connection 
     58  if(DB::isError($dbcdr)) { 
     59    die_freepbx($dbcdr->getDebugInfo());  
     60  } 
     61} else { 
     62  $dbcdr = $db; 
     63
     64 
    5565$h_step = 30; 
    5666?> 
     
    338348  $cdr_uids = array(); 
    339349 
    340   $uid = $db->escapeSimple($_REQUEST['uid']); 
     350  $uid = $dbcdr->escapeSimple($_REQUEST['uid']); 
    341351 
    342352  $db_cel_name = !empty($amp_conf['CELDBNAME'])?$amp_conf['CELDBNAME']:"asteriskcdrdb"; 
     
    406416  $where = "WHERE `uniqueid` IN ('" . implode("','",array_unique($cdr_uids)) . "')"; 
    407417  $query = "SELECT `calldate`, `clid`, `did`, `src`, `dst`, `dcontext`, `channel`, `dstchannel`, `lastapp`, `lastdata`, `duration`, `billsec`, `disposition`, `amaflags`, `accountcode`, `uniqueid`, `userfield`, unix_timestamp(calldate) as `call_timestamp`, `recordingfile` FROM $db_name.$db_table_name $where"; 
    408   $resultscdr = $db->getAll($query, DB_FETCHMODE_ASSOC); 
     418  $resultscdr = $dbcdr->getAll($query, DB_FETCHMODE_ASSOC); 
    409419} 
    410420 
     
    551561if ( isset($_POST['need_csv']) && $_POST['need_csv'] == 'true' ) { 
    552562  $query = "(SELECT calldate, clid, did, src, dst, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, amaflags, accountcode, uniqueid, userfield FROM $db_name.$db_table_name $where $order $sort LIMIT $result_limit)"; 
    553   $resultcsv = $db->getAll($query, DB_FETCHMODE_ASSOC); 
     563  $resultcsv = $dbcdr->getAll($query, DB_FETCHMODE_ASSOC); 
    554564  cdr_export_csv($resultcsv);  
    555565} 
     
    557567if ( empty($resultcdr) && isset($_POST['need_html']) && $_POST['need_html'] == 'true' ) { 
    558568  $query = "SELECT `calldate`, `clid`, `did`, `src`, `dst`, `dcontext`, `channel`, `dstchannel`, `lastapp`, `lastdata`, `duration`, `billsec`, `disposition`, `amaflags`, `accountcode`, `uniqueid`, `userfield`, unix_timestamp(calldate) as `call_timestamp`, `recordingfile` FROM $db_name.$db_table_name $where $order $sort LIMIT $result_limit"; 
    559   $resultscdr = $db->getAll($query, DB_FETCHMODE_ASSOC); 
     569  $resultscdr = $dbcdr->getAll($query, DB_FETCHMODE_ASSOC); 
    560570} 
    561571if ( isset($resultscdr) ) { 
     
    726736if ( isset($_POST['need_chart']) && $_POST['need_chart'] == 'true' ) { 
    727737  $query2 = "SELECT $group_by_field AS group_by_field, count(*) AS total_calls, sum(duration) AS total_duration FROM $db_name.$db_table_name $where GROUP BY group_by_field ORDER BY group_by_field ASC LIMIT $result_limit"; 
    728   $result2 = $db->getAll($query2, DB_FETCHMODE_ASSOC); 
     738  $result2 = $dbcdr->getAll($query2, DB_FETCHMODE_ASSOC); 
    729739 
    730740  $tot_calls = 0; 
     
    784794    /* not date time fields */ 
    785795    $query3 = "SELECT $group_by_field AS group_by_field, count(*) AS total_calls, unix_timestamp(calldate) AS ts, duration FROM $db_name.$db_table_name $where GROUP BY group_by_field, unix_timestamp(calldate) ORDER BY group_by_field ASC LIMIT $result_limit"; 
    786     $result3 = $db->getAll($query3, DB_FETCHMODE_ASSOC); 
     796    $result3 = $dbcdr->getAll($query3, DB_FETCHMODE_ASSOC); 
    787797    $group_by_str = ''; 
    788798    foreach($result3 as $row) { 
     
    810820    /* data fields */ 
    811821    $query3 = "SELECT unix_timestamp(calldate) AS ts, duration FROM $db_name.$db_table_name $where ORDER BY unix_timestamp(calldate) ASC LIMIT $result_limit"; 
    812     $result3 = $db->getAll($query3, DB_FETCHMODE_ASSOC); 
     822    $result3 = $dbcdr->getAll($query3, DB_FETCHMODE_ASSOC); 
    813823    $group_by_str = ''; 
    814824    foreach($result3 as $row) {