Use the database more efficiently

This commit is contained in:
FusionPBX
2024-08-05 12:16:36 -06:00
committed by GitHub
parent e24edd47f0
commit 00c803f53e

View File

@@ -46,18 +46,31 @@ if (!class_exists('domains')) {
private $toggle_values;
private $location;
/**
* Set in the constructor. Must be a database object and cannot be null.
* @var database Database Object
*/
private $database;
/**
* called when the object is created
*/
public function __construct() {
public function __construct($setting_array = []) {
//assign the variables
$this->app_name = 'domains';
$this->app_uuid = '8b91605b-f6d2-42e6-a56d-5d1ded01bb44';
$this->name = 'domain';
$this->table = 'domains';
$this->toggle_field = 'domain_enabled';
$this->toggle_values = ['true','false'];
$this->location = 'domains.php';
$this->app_name = 'domains';
$this->app_uuid = '8b91605b-f6d2-42e6-a56d-5d1ded01bb44';
$this->name = 'domain';
$this->table = 'domains';
$this->toggle_field = 'domain_enabled';
$this->toggle_values = ['true','false'];
$this->location = 'domains.php';
//open a database connection
if (empty($setting_array['database'])) {
$this->database = database::new();
} else {
$this->database = $setting_array['database'];
}
}
/**
@@ -91,8 +104,7 @@ if (!class_exists('domains')) {
$sql = "select domain_name from v_domains ";
$sql .= "where domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $id;
$database = new database;
$domain_name = $database->select($sql, $parameters, 'column');
$domain_name = $this->database->select($sql, $parameters, 'column');
unset($sql, $parameters);
//get the domain settings
@@ -100,8 +112,7 @@ if (!class_exists('domains')) {
$sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and domain_setting_enabled = 'true' ";
$parameters['domain_uuid'] = $id;
$database = new database;
$result = $database->select($sql, $parameters, 'all');
$result = $this->database->select($sql, $parameters, 'all');
unset($sql, $parameters);
if (is_array($result) && sizeof($result) != 0) {
@@ -155,10 +166,9 @@ if (!class_exists('domains')) {
if ($field['name'] == 'domain_uuid' && $table_name != 'v_domains') {
$sql = "delete from ".$table_name." where domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $id;
$database = new database;
$database->app_name = 'domain_settings';
$database->app_uuid = 'b31e723a-bf70-670c-a49b-470d2a232f71';
$database->execute($sql, $parameters);
$this->database->app_name = 'domain_settings';
$this->database->app_uuid = 'b31e723a-bf70-670c-a49b-470d2a232f71';
$this->database->execute($sql, $parameters);
unset($sql, $parameters);
}
}
@@ -265,10 +275,9 @@ if (!class_exists('domains')) {
//delete the checked rows
if (is_array($domain_array) && @sizeof($domain_array) != 0) {
//execute delete
$database = new database;
$database->app_name = $this->app_name;
$database->app_uuid = $this->app_uuid;
$database->delete($domain_array);
$this->database->app_name = $this->app_name;
$this->database->app_uuid = $this->app_uuid;
$this->database->delete($domain_array);
//set message
message::add($text['message-delete']);
@@ -310,8 +319,7 @@ if (!class_exists('domains')) {
if (is_array($uuids) && @sizeof($uuids) != 0) {
$sql = "select ".$this->name."_uuid as uuid, ".$this->toggle_field." as toggle from v_".$this->table." ";
$sql .= "where ".$this->name."_uuid in (".implode(', ', $uuids).") ";
$database = new database;
$rows = $database->select($sql, $parameters ?? null, 'all');
$rows = $this->database->select($sql, $parameters ?? null, 'all');
if (is_array($rows) && @sizeof($rows) != 0) {
foreach ($rows as $row) {
$states[$row['uuid']] = $row['toggle'];
@@ -334,10 +342,9 @@ if (!class_exists('domains')) {
//save the changes
if (is_array($array) && @sizeof($array) != 0) {
//save the array
$database = new database;
$database->app_name = $this->app_name;
$database->app_uuid = $this->app_uuid;
$database->save($array);
$this->database->app_name = $this->app_name;
$this->database->app_uuid = $this->app_uuid;
$this->database->save($array);
unset($array);
//set message
@@ -380,8 +387,7 @@ if (!class_exists('domains')) {
if (is_array($uuids) && @sizeof($uuids) != 0) {
$sql = "select * from v_".$this->table." ";
$sql .= "where ".$this->name."_uuid in (".implode(', ', $uuids).") ";
$database = new database;
$rows = $database->select($sql, $parameters, 'all');
$rows = $this->database->select($sql, $parameters, 'all');
if (is_array($rows) && @sizeof($rows) != 0) {
$x = 0;
foreach ($rows as $row) {
@@ -402,10 +408,9 @@ if (!class_exists('domains')) {
//save the changes and set the message
if (is_array($array) && @sizeof($array) != 0) {
//save the array
$database = new database;
$database->app_name = $this->app_name;
$database->app_uuid = $this->app_uuid;
$database->save($array);
$this->database->app_name = $this->app_name;
$this->database->app_uuid = $this->app_uuid;
$this->database->save($array);
unset($array);
//set message
@@ -428,8 +433,7 @@ if (!class_exists('domains')) {
$sql .= "and domain_setting_enabled = 'true' ";
$sql .= " order by domain_setting_order asc ";
$parameters['previous_domain_uuid'] = $_SESSION["previous_domain_uuid"];
$database = new database;
$result = $database->select($sql, $parameters, 'all');
$result = $this->database->select($sql, $parameters, 'all');
unset($sql, $parameters);
//unset previous domain settings
@@ -444,8 +448,7 @@ if (!class_exists('domains')) {
//get the default settings
$sql = "select * from v_default_settings ";
$sql .= "order by default_setting_order asc ";
$database = new database;
$result = $database->select($sql, null, 'all');
$result = $this->database->select($sql, null, 'all');
unset($sql, $parameters);
//unset all settings
@@ -495,8 +498,7 @@ if (!class_exists('domains')) {
$sql .= "and domain_setting_enabled = 'true' ";
$sql .= " order by domain_setting_order asc ";
$parameters['domain_uuid'] = $_SESSION["domain_uuid"];
$database = new database;
$result = $database->select($sql, $parameters, 'all');
$result = $this->database->select($sql, $parameters, 'all');
unset($sql, $parameters);
//unset the arrays that domains are overriding
@@ -545,8 +547,7 @@ if (!class_exists('domains')) {
$sql .= " order by user_setting_order asc ";
$parameters['domain_uuid'] = $_SESSION["domain_uuid"];
$parameters['user_uuid'] = $_SESSION["user_uuid"];
$database = new database;
$result = $database->select($sql, $parameters, 'all');
$result = $this->database->select($sql, $parameters, 'all');
if (is_array($result)) {
foreach ($result as $row) {
if ($row['user_setting_enabled'] == 'true') {
@@ -609,6 +610,9 @@ if (!class_exists('domains')) {
//add missing default settings
$this->settings();
//save the database object to be used by app_defaults.php
$database = $this->database;
//get the variables
$config = new config;
$config_path = $config->config_file;
@@ -628,8 +632,7 @@ if (!class_exists('domains')) {
//get the domains
$sql = "select * from v_domains ";
$database = new database;
$domains = $database->select($sql, null, 'all');
$domains = $this->database->select($sql, null, 'all');
unset($sql);
//loop through all domains
@@ -676,8 +679,7 @@ if (!class_exists('domains')) {
//get an array of the default settings UUIDs
$sql = "select * from v_default_settings ";
$database = new database;
$result = $database->select($sql, null, 'all');
$result = $this->database->select($sql, null, 'all');
foreach($result as $row) {
$setting[$row['default_setting_uuid']] = 1;
}
@@ -710,10 +712,9 @@ if (!class_exists('domains')) {
$p->add('default_setting_add', 'temp');
//execute insert
$database = new database;
$database->app_name = 'default_settings';
$database->app_uuid = '2c2453c0-1bea-4475-9f44-4d969650de09';
$database->save($array, false);
$this->database->app_name = 'default_settings';
$this->database->app_uuid = '2c2453c0-1bea-4475-9f44-4d969650de09';
$this->database->save($array, false);
unset($array);
//revoke temporary permissions
@@ -727,11 +728,9 @@ if (!class_exists('domains')) {
*/
public function all() {
//get the domains from the database
$database = new database;
if ($database->table_exists('v_domains')) {
if ($this->database->table_exists('v_domains')) {
$sql = "select * from v_domains order by domain_name asc;";
$database = new database;
$result = $database->select($sql, null, 'all');
$result = $this->database->select($sql, null, 'all');
foreach($result as $row) {
$domain_names[] = $row['domain_name'];
}