Update xml_cdr.php

- Initialize the database class in the constructor
- Improve efficiency by removing extra database instances
- Bug fix. If cc_queue has been provided and call_center_queue_uuid is empty. Then use it to get the call_center_queue_uuid
This commit is contained in:
FusionPBX 2024-04-16 09:54:27 -06:00 committed by GitHub
parent 360cc3cdd3
commit e81d711a92
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 41 additions and 43 deletions

View File

@ -35,7 +35,8 @@ if (!class_exists('xml_cdr')) {
/**
* define variables
*/
public $db;
private $settings;
private $database;
public $array;
public $fields;
public $setting;
@ -50,7 +51,6 @@ if (!class_exists('xml_cdr')) {
/**
* user summary
*/
public $quick_select;
public $start_stamp_begin;
public $start_stamp_end;
@ -76,12 +76,8 @@ if (!class_exists('xml_cdr')) {
* Called when the object is created
*/
public function __construct() {
//connect to the database if not connected
if (!$this->db) {
$database = new database;
$database->connect();
$this->db = $database->db;
}
//connect to the database
$this->database = new database;
//get the email queue settings
$this->setting = new settings();
@ -238,11 +234,10 @@ if (!class_exists('xml_cdr')) {
$p->add("xml_cdr_log_add", "temp");
//save the call details record to the database
$database = new database;
$database->app_name = 'xml_cdr';
$database->app_uuid = '4a085c51-7635-ff03-f67b-86e834422848';
//$database->domain_uuid = $domain_uuid;
$response = $database->save($this->array, false);
$this->database->app_name = 'xml_cdr';
$this->database->app_uuid = '4a085c51-7635-ff03-f67b-86e834422848';
//$this->database->domain_uuid = $domain_uuid;
$response = $this->database->save($this->array, false);
if ($response['code'] == '200') {
//saved to the database successfully delete the database file
if (!empty($xml_cdr_dir)) {
@ -270,7 +265,7 @@ if (!class_exists('xml_cdr')) {
unset($this->array);
//debug results
$this->log(print_r($database->message, true));
$this->log(print_r($this->database->message, true));
//remove the temporary permission
$p->delete("xml_cdr_add", "temp");
@ -343,8 +338,7 @@ if (!class_exists('xml_cdr')) {
$sql .= "from v_xml_cdr ";
$sql .= "where xml_cdr_uuid = :xml_cdr_uuid ";
$parameters['xml_cdr_uuid'] = $uuid;
$database = new database;
$count = $database->select($sql, $parameters, 'column');
$count = $this->database->select($sql, $parameters, 'column');
if ($count > 0) {
//duplicate uuid detected
$duplicate_uuid = true;
@ -595,6 +589,10 @@ if (!class_exists('xml_cdr')) {
//set the key
$key = 'xml_cdr';
//get the domain values from the xml
$domain_name = urldecode($xml->variables->domain_name);
$domain_uuid = urldecode($xml->variables->domain_uuid);
//misc
$uuid = urldecode($xml->variables->uuid);
$this->array[$key][0]['xml_cdr_uuid'] = $uuid;
@ -647,14 +645,27 @@ if (!class_exists('xml_cdr')) {
if ($xml->variables->cc_agent_uuid == '_undef_') { $xml->variables->cc_agent_uuid = ''; }
if ($xml->variables->call_center_queue_uuid == '_undef_') { $xml->variables->call_center_queue_uuid = ''; }
if ($xml->variables->cc_queue_joined_epoch == '_undef_') { $xml->variables->cc_queue_joined_epoch = ''; }
if (!empty($xml->variables->call_center_queue_uuid) && is_uuid(urldecode($xml->variables->call_center_queue_uuid))) {
$this->array[$key][0]['call_center_queue_uuid'] = urldecode($xml->variables->call_center_queue_uuid);
}
$this->array[$key][0]['cc_side'] = urldecode($xml->variables->cc_side);
if (!empty($xml->variables->cc_member_uuid) && is_uuid(urldecode($xml->variables->cc_member_uuid))) {
$this->array[$key][0]['cc_member_uuid'] = urldecode($xml->variables->cc_member_uuid);
}
$this->array[$key][0]['cc_queue'] = urldecode($xml->variables->cc_queue);
if (!empty($xml->variables->call_center_queue_uuid) && is_uuid(urldecode($xml->variables->call_center_queue_uuid))) {
$call_center_queue_uuid = urldecode($xml->variables->call_center_queue_uuid);
}
if (empty($call_center_queue_uuid) && !empty($xml->variables->cc_queue)) {
$sql = "select call_center_queue_uuid from v_call_center_queues ";
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and queue_extension = :queue_extension ";
$parameters['domain_uuid'] = $domain_uuid;
$parameters['queue_extension'] = explode("@", $xml->variables->cc_queue)[0];
$call_center_queue_uuid = $this->database->select($sql, $parameters, 'column');
unset($parameters);
}
if (!empty($call_center_queue_uuid) && is_uuid($call_center_queue_uuid)) {
$this->array[$key][0]['call_center_queue_uuid'] = $call_center_queue_uuid;
}
if (!empty($xml->variables->cc_member_session_uuid) && is_uuid(urldecode($xml->variables->cc_member_session_uuid))) {
$this->array[$key][0]['cc_member_session_uuid'] = urldecode($xml->variables->cc_member_session_uuid);
}
@ -727,10 +738,6 @@ if (!class_exists('xml_cdr')) {
$start_month = date("M", $start_time);
$start_day = date("d", $start_time);
//get the domain values from the xml
$domain_name = urldecode($xml->variables->domain_name);
$domain_uuid = urldecode($xml->variables->domain_uuid);
//get the domain name
if (empty($domain_name)) {
$domain_name = urldecode($xml->variables->dialed_domain);
@ -789,8 +796,7 @@ if (!class_exists('xml_cdr')) {
$sql .= "where domain_name = :domain_name ";
$parameters['domain_name'] = $domain_name;
}
$database = new database;
$domain_uuid = $database->select($sql, $parameters, 'column');
$domain_uuid = $this->database->select($sql, $parameters, 'column');
unset($parameters);
}
@ -932,8 +938,7 @@ if (!class_exists('xml_cdr')) {
$sql .= "and (extension = :dialed_user or number_alias = :dialed_user) ";
$parameters['domain_uuid'] = $domain_uuid;
$parameters['dialed_user'] = $xml->variables->dialed_user;
$database = new database;
$extension_uuid = $database->select($sql, $parameters, 'column');
$extension_uuid = $this->database->select($sql, $parameters, 'column');
$this->array[$key][0]['extension_uuid'] = $extension_uuid;
unset($parameters);
}
@ -943,8 +948,7 @@ if (!class_exists('xml_cdr')) {
$sql .= "and (extension = :referred_by_user or number_alias = :referred_by_user) ";
$parameters['domain_uuid'] = $domain_uuid;
$parameters['referred_by_user'] = $xml->variables->referred_by_user;
$database = new database;
$extension_uuid = $database->select($sql, $parameters, 'column');
$extension_uuid = $this->database->select($sql, $parameters, 'column');
$this->array[$key][0]['extension_uuid'] = $extension_uuid;
unset($parameters);
}
@ -954,8 +958,7 @@ if (!class_exists('xml_cdr')) {
$sql .= "and (extension = :last_sent_callee_id_number or number_alias = :last_sent_callee_id_number) ";
$parameters['domain_uuid'] = $domain_uuid;
$parameters['last_sent_callee_id_number'] = $xml->variables->last_sent_callee_id_number;
$database = new database;
$extension_uuid = $database->select($sql, $parameters, 'column');
$extension_uuid = $this->database->select($sql, $parameters, 'column');
$this->array[$key][0]['extension_uuid'] = $extension_uuid;
unset($parameters);
}
@ -1334,8 +1337,7 @@ if (!class_exists('xml_cdr')) {
$sql = "select * from v_destinations ";
$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
$parameters['domain_uuid'] = $this->domain_uuid;
$database = new database;
$destinations = $database->select($sql, $parameters, 'all');
$destinations = $this->database->select($sql, $parameters, 'all');
if (!empty($destinations)) {
foreach($destinations as $row) {
$destination_array['destinations'][$id]['application'] = 'destinations';
@ -1791,8 +1793,7 @@ if (!class_exists('xml_cdr')) {
if (!(!empty($_GET['show']) && $_GET['show'] === 'all' && permission_exists('xml_cdr_extension_summary_all'))) {
$parameters['domain_uuid'] = $this->domain_uuid;
}
$database = new database;
$summary = $database->select($sql, $parameters, 'all');
$summary = $this->database->select($sql, $parameters, 'all');
unset($parameters);
//return the array
@ -1819,8 +1820,7 @@ if (!class_exists('xml_cdr')) {
//$sql .= "and domain_uuid = '".$domain_uuid."' \n";
$parameters['xml_cdr_uuid'] = $uuid;
//$parameters['domain_uuid'] = $domain_uuid;
$database = new database;
$row = $database->select($sql, $parameters, 'row');
$row = $this->database->select($sql, $parameters, 'row');
if (!empty($row) && is_array($row)) {
$record_name = $row['record_name'];
$record_path = $row['record_path'];
@ -2003,8 +2003,7 @@ if (!class_exists('xml_cdr')) {
$sql .= "where xml_cdr_uuid = :xml_cdr_uuid ";
$sql .= "and record_name is not null";
$parameters['xml_cdr_uuid'] = $record['uuid'];
$database = new database;
$row = $database->select($sql, $parameters, 'row');
$row = $this->database->select($sql, $parameters, 'row');
unset($sql, $parameters);
//delete the call recording (file)
@ -2030,10 +2029,9 @@ if (!class_exists('xml_cdr')) {
$p->add('call_recording_delete', 'temp');
//execute delete
$database = new database;
$database->app_name = $this->app_name;
$database->app_uuid = $this->app_uuid;
$database->delete($array);
$this->database->app_name = $this->app_name;
$this->database->app_uuid = $this->app_uuid;
$this->database->delete($array);
unset($array);
//revoke temporary permissions