Newer
Older
ubFramework / Portal / docroot / admin / voip / cdr_json.php
@Christopher W. Olsen Christopher W. Olsen on 10 Dec 2017 6 KB Cleaning Up Making It A Sub Module
<?php

/**
 * ****************************************************************************************
 * Copyright (c) 2015 Christopher W.
 * Olsen <cwolsen@ubixtechnologies.com>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification, are
 * permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice, this list of
 * conditions, the following disclaimer and the list of authors. Redistributions in binary
 * form must reproduce the above copyright notice, this list of conditions, the following
 * disclaimer and the list of authors in the documentation and/or other materials provided
 * with the distribution. Neither the name of the uBix Cube Project nor the names of its
 * contributors may be used to endorse or promote products derived from this software
 * without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
 * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * $Id: cdr_json.php 940 2017-09-07 20:12:42Z reddawg $
 *
 * ***************************************************************************************
 */

/* Main include info */
ini_set ( 'include_path', $_SERVER ['DOCUMENT_ROOT'] . "/include/" );
include ("config.php");

$ubF->session->Validate_JSON ( 'A_V_', 0 );

// MrOlsen (2015-10-12) NOTE: I'm going to return no results if any required fields are missing
if ( !isset ( $form_data ['start'] ) )
  $form_data ['start'] = date ( "m/d/Y H:i:s", time () - (60 * 60 * 2) );

if ( !isset ( $form_data ['end'] ) )
  $form_data ['end'] = date ( "m/d/Y H:i:s" );

$d_range = "(calldate BETWEEN '" . date ( "Y-m-d H:i:s", strtotime ( $form_data ['start'] ) ) . "' AND '" . date ( "Y-m-d H:i:s", strtotime ( $form_data ['end'] ) ) . "')";

if ( isset ( $form_data ['voip_code'] ) && $form_data ['voip_code'] != "" && $form_data ['voip_code'] != "All" )
  $query = "SELECT calldate,src,dst,dcontext,dstchannel,billsec,disposition,voice_file,todid,codec_read,codec_write,voip_server,accountcode,useragent,lastapp,uniqueid FROM cdr_master WHERE accountcode = '" . $form_data ['voip_code'] . "' AND $d_range";
else
  $query = "SELECT calldate,src,dst,dcontext,dstchannel,billsec,disposition,voice_file,todid,codec_read,codec_write,voip_server,accountcode,useragent,lastapp,uniqueid FROM cdr_master WHERE $d_range";

$result =$ubF->DB['cdr']->query ( $query );

$ubF->session->voip_code = strtolower ( $ubF->session->voip_code );

$json_out = '{"authenticated":' . $ubF->session->auth_data ['authenticated'] . ',"data":[';

if ( $result->num_rows > 0 ) {
  $cpN = 1;
  while ( $qData = $result->fetch_row () ) {
    
    if ( $qData [13] != "" )
      $agt = "&#10;Agent: " . $qData [13] . "&#10;ID: " . $qData [15];
    else
      $agt = "&#10;ID: " . $qData [15];
    
    if ( is_numeric ( $qData [1] ) && strlen ( $qData [1] ) >= 7 )
      $qData [1] = $data->libs['voip']->formatPhoneNumber ( $qData [1] );
    if ( is_numeric ( $qData [2] ) && strlen ( $qData [2] ) >= 7 )
      $qData [2] = $data->libs['voip']->formatPhoneNumber ( $qData [2] );
    if ( is_numeric ( $qData [8] ) && strlen ( $qData [8] ) >= 7 )
      $qData [8] = $data->libs['voip']->formatPhoneNumber ( $qData [8] );
    
    if ( strlen ( $qData [7] ) >= 5 ) {
      $qData [7] = addslashes ( "<div id=\"cp_container_" . $cpN . "\" class=\"cp-container\"><div class=\"cp-buffer-holder\"><div class=\"cp-buffer-1\"></div><div class=\"cp-buffer-2\"></div></div><div class=\"cp-progress-holder\"><div class=\"cp-progress-1\"></div><div class=\"cp-progress-2\"></div></div><div class=\"cp-circle-control\"></div><ul class=\"cp-controls\"><li><a class=\"cp-play\" tabindex=\"1\">play</a></li><li><a class=\"cp-pause\" style=\"display:none;\" tabindex=\"1\">pause</a></li></ul><a style=\"position: relative;left: 35px;top: 4px;\" id=\"aF" . $cpN . "\" href=\"/data/call_files/" . $qData [7] . "\" download>Save</a></div>" );
      $cpN++;
    }
    else
      $qData [7] = "No Recording";
    
    if ( (substr ( $qData [3], -4 ) == "-out") || (substr ( $qData [3], -7 ) == "-out-nm") ) {
      $json_out .= '["' . $qData [0] . '","<p style=\"margin:0px;\" title=\"Codec: ' . $qData [9] . $agt . '\">' . $qData [1] . '</p>","' . $qData [8] . '","<p style=\"margin:0px;\" title=\"Codec: ' . $qData [10] . '\">' . $qData [2] . '</p>","' . gmdate ( "H:i:s", $qData [5] ) . '","' . $qData [6] . '","' . $qData [7] . '","' . $qData [11] . '"],';
    }
    else if ( $qData [3] == "uc-voicemail" ) {
      $json_out .= '["' . $qData [0] . '","<p style=\"margin:0px;\" title=\"Codec: ' . $qData [9] . $agt . '\">' . $qData [1] . '</p>","' . $qData [8] . '","VM: ' . $qData [2] . '","' . gmdate ( "H:i:s", $qData [5] ) . '","' . $qData [6] . '","' . $qData [7] . '","' . $qData [11] . '"],';
    }
    else {
      if ( $qData [14] == "Queue" || $qData [14] == "Dial" ) {
        $pattern = '@^(?:SIP/' . $qData [12] . ')?([^-]+)@i';
        preg_match ( $pattern, $qData [4], $dsts );
        $qData [2] = $dsts [1];
        
        $ctx = "&#10;Context: " . $qData [3];
        
        unset ( $pattern );
        unset ( $dsts );
      }
      else {
        $ctx = "";
      }
      
      $json_out .= '["' . $qData [0] . '","<p style=\"margin:0px;\" title=\"Codec: ' . $qData [9] . '\">' . $qData [1] . '</p>","' . $qData [8] . '","<p style=\"margin:0px;\" title=\"Codec: ' . $qData [10] . $ctx . $agt . '\">' . $qData [2] . '","' . gmdate ( "H:i:s", $qData [5] ) . '","' . $qData [6] . '","' . $qData [7] . '","' . $qData [11] . '"],';
    }
    unset ( $qData );
  }
  $result->free ();
}
else
  $json_out .= '["No Results","No Results","No Results","No Results","No Results","No Results","No Results","No Results"],';

header ( 'Content-type: application/json' );
print rtrim ( $json_out, ',' ) . ']}';

?>