Newer
Older
ubFramework / Portal / cron / hourly_reports.php
@Christopher W. Olsen Christopher W. Olsen on 10 Dec 2017 5 KB Cleaning Up Making It A Sub Module
#!/usr/local/bin/php
<?php

/*
 * (C) 2016 Christopher Olsen <cwolsen@uBixOS.com>
 *
 * $Id: dialer_cron.php 2230 2015-06-17 19:03:56Z reddawg $
 *
 */
$_LOCK_FILE = "/tmp/reports.lock";
$_LOG_FILE = "cron/reports.log";

if (file_exists ( $_LOCK_FILE )) {
  print "Script is already running.\n";
//  exit ( 0 );
}

system ( "/usr/bin/touch " . $_LOCK_FILE );

/* Set Root Directory Of Portal */
$root_dir = "/usr/web/sites/portal.spherepbx.com";

/* Main include info */
ini_set ( 'include_path', $root_dir . "/include/" );
include ("config.php");

$log_file = fopen ( $root_dir . "/log/" . $_LOG_FILE, "a" );

$query = "SELECT * FROM cdr WHERE accountcode = '' AND ";

$query = "select account_code,email from accounts where account_code like '32%'";

$aRes = $ubF->DB ['main']->query ( $query );

$rDate = date("Y-m-d", strtotime("-1 days"));
$rDate = date("Y-m-d");

$sDate = $rDate . " 00:00:00";
$eDate = $rDate . " 23:59:59";

while ( $aData = $aRes->fetch_assoc () ) {
  $query = "SELECT sum(billsec) as time,count(*) AS calls,SUBSTRING_INDEX(SUBSTR(channel,5), '-',1) AS chan FROM cdr_master WHERE channel LIKE 'SIP/" . $aData ['account_code'] . "%' AND calldate >= '" . $sDate . "' AND calldate <= '" . $eDate . "' GROUP BY chan";
  $cRes = $ubF->DB ['cdr']->query ( $query );

  $query = "SELECT name,RTRIM(SUBSTRING_INDEX(callerid, '<',1)) AS user FROM sippeers WHERE accountcode = '" . $aData['account_code'] . "'";
  $pRes = $ubF->DB['voip']->query($query);

  while ($pData = $pRes->fetch_assoc()) {
    $peers[$pData['name']]['name'] = $pData['user'];
    $peers[$pData['name']]['ext'] = substr($pData['name'], -4);
  }
  $pRes->free();
  
  $callData = array ();

  while ( $cData = $cRes->fetch_assoc () ) {
    $ext = $cData['chan']; //substr ( $cData ['chan'], - 4 );
    $callData [$ext]['name'] = $peers[$ext]['name'];
    $callData [$ext]['ext'] = $peers[$ext]['ext'];

    $callData [$ext] ['oCalls'] = $cData ['calls'];
    $callData [$ext] ['oTime'] = $cData ['time'];
  }
  $cRes->free ();

  $query = "SELECT sum(billsec) as time,count(*) AS calls,SUBSTRING_INDEX(SUBSTR(dstchannel,5), '-',1) AS chan FROM cdr_master WHERE dstchannel LIKE 'SIP/" . $aData ['account_code'] . "%' AND calldate >= '". $sDate . "' AND calldate <= '" . $eDate . "' GROUP BY chan";
  $cRes = $ubF->DB ['cdr']->query ( $query );
  
  while ( $cData = $cRes->fetch_assoc () ) {
    $ext = $cData['chan']; //substr ( $cData ['chan'], - 4 );
    $callData [$ext]['name'] = $peers[$ext]['name'];
    $callData [$ext]['ext'] = $peers[$ext]['ext'];
    $callData [$ext] ['iCalls'] = $cData ['calls'];
    $callData [$ext] ['iTime'] = $cData ['time'];
  }
  $cRes->free ();


  $message = "Call Report:<br />\n";

foreach ($callData as $key => $val) {
    $message .= "Ext: " . $val['ext'] . ", Name: " . $val['name'] . ", Outbound Calls: " . $val['oCalls'] . " (" . ($val['oTime']/60) . "), Inbound Calls: " . $val['iCalls'] . " (". ($val['iTime']/60) . ")<br />\n"; 
}

$message .= "<br />\n<br />\nEND OF REPORT<br />\n<br />\n";
 $ubF->libs ['ubf']->sendMail("Call Log For " . $rDate, $message, $aData['email']);//, "cwolsen@SpherePBX.com", "theubu@gmail.com");

print "$message";
}

$aRes->free ();

/*
 *
 *
 * $csv_file = fopen ( "/tmp/VI." . time() . ".csv", "w");
 * fwrite ($csv_file, "TN,Network,E911,E411,T38,CNAM Storage,CNAM DIP\n");
 *
 * fwrite ( $log_file, "Start: " . date ( "Y-m-d H:
 * i:s" ) . "\n" );
 *
 *
 * // Stuff Here - This Is A Sloppy Template
 *
 * $result = $ubF->libs ['vi']->auditDIDs ();
 *
 * system ( "echo '" . json_encode ( $result ) . "' >> /tmp/auditDIDs.log" );
 *
 * // Set All The DID For Provider To 0 Before Audit To Purge Lost DID
 * $query = "UPDATE voip_did SET audit = 0 WHERE provider = 1";
 * $ubF->DB ['main']->query ( $query );
 *
 * foreach ( $result->auditDIDsResult->DIDs->DID as $key => $val ) {
 * $val_data = $ubF->DB ['main']->escape_string ( json_encode ( $val ) );
 *
 * $e911 = ($val->has911 == true) ? 1 : 0;
 * $e411 = ($val->has411 == true) ? 1 : 0;
 * $t38 = ($val->t38 == true) ? 1 : 0;
 * $cnam = ($val->cnamStorageAvailability == true) ? 1 : 0;
 * $cnam_dip = ($val->cnam == true) ? 1 : 0;
 *
 * $query = "INSERT INTO voip_did (audit, provider, did, caller_id, network, provider_data, e911, e411, t38, cnam, cnam_dip, group_id) VALUES(1, 1, '" . $val->tn . "','" . $val->cnamName . "','" . $val->Network . "','" . $val_data . "', $e911, $e411, $t38, $cnam, $cnam_dip, '" . $val->didGroupId . "')";
 *
 * $query .= " ON DUPLICATE KEY UPDATE audit = 1, provider = 1, caller_id = '" . $val->cnamName . "', network = '" . $val->Network . "', provider_data = '" . $val_data . "', e911 = " . $e911 . ", e411 = " . $e411 . ", t38 = " . $t38 . ", cnam = " . $cnam . ", cnam_dip = " . $cnam_dip . ", group_id = '" . $val->didGroupId . "'";
 *
 * echo "[" . $query . "]\n";
 *
 * $csv_str = $val->tn . "," . $val->Network . "," . $e911 . "," . $e411 . "," . $t38 . "," . $cnam . "," . $cnam_dip . "\n";
 * fwrite ( $csv_file, $csv_str );
 *
 * $ubF->DB ['main']->query ( $query );
 * }
 *
 * fclose ( $csv_file );
 *
 * print_r ( $result );
 */
fwrite ( $log_file, "Finish: " . date ( "Y-m-d H:i:s" ) . "\n" );

fclose ( $log_file );

system ( "/bin/rm " . $_LOCK_FILE );

?>