From e4abb2eebe8967499c6e95a6c23a23761ed362cb Mon Sep 17 00:00:00 2001 From: Nate Date: Thu, 29 Aug 2019 18:20:33 -0600 Subject: [PATCH] Misc Classes: Database class integration. --- app/calls/resources/classes/call_forward.php | 65 +- .../resources/classes/do_not_disturb.php | 85 ++- app/calls/resources/classes/follow_me.php | 618 +++++++++--------- .../classes/switch_music_on_hold.php | 34 +- 4 files changed, 399 insertions(+), 403 deletions(-) diff --git a/app/calls/resources/classes/call_forward.php b/app/calls/resources/classes/call_forward.php index d5d42b1156..099eaaa8de 100644 --- a/app/calls/resources/classes/call_forward.php +++ b/app/calls/resources/classes/call_forward.php @@ -46,17 +46,15 @@ include "root.php"; public $outbound_caller_id_number; public function set() { - //set the global variable - global $db; - //determine whether to update the dial string $sql = "select * from v_extensions "; - $sql .= "where domain_uuid = '".$this->domain_uuid."' "; - $sql .= "and extension_uuid = '".$this->extension_uuid."' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - if (is_array($result)) foreach ($result as &$row) { + $sql .= "where domain_uuid = :domain_uuid "; + $sql .= "and extension_uuid = :extension_uuid "; + $parameters['domain_uuid'] = $this->domain_uuid; + $parameters['extension_uuid'] = $this->extension_uuid; + $database = new database; + $row = $database->select($sql, $parameters, 'row'); + if (is_array($row) && @sizeof($row) != 0) { $this->extension = $row["extension"]; $this->number_alias = $row["number_alias"]; $this->accountcode = $row["accountcode"]; @@ -64,31 +62,34 @@ include "root.php"; $this->outbound_caller_id_name = $row["outbound_caller_id_name"]; $this->outbound_caller_id_number = $row["outbound_caller_id_number"]; } - unset ($prep_statement); + unset($sql, $parameters, $row); - //update the extension - $sql = "update v_extensions set "; - if (strlen($this->forward_all_destination) == 0) { - $sql .= "forward_all_destination = null, "; - } - else { - $sql .= "forward_all_destination = '$this->forward_all_destination', "; - } + //build extension update array + $array['extensions'][0]['extension_uuid'] = $this->extension_uuid; + $array['extensions'][0]['forward_all_destination'] = strlen($this->forward_all_destination) != 0 ? $this->forward_all_destination : null; if (strlen($this->forward_all_destination) == 0 || $this->forward_all_enabled == "false") { - $sql .= "dial_string = null, "; - $sql .= "forward_all_enabled = 'false' "; + $array['extensions'][0]['dial_string'] = null; + $array['extensions'][0]['forward_all_enabled'] = 'false'; } else { - $sql .= "dial_string = '".check_str($this->dial_string)."', "; - $sql .= "forward_all_enabled = 'true' "; + $array['extensions'][0]['dial_string'] = $this->dial_string; + $array['extensions'][0]['forward_all_enabled'] = 'true'; } - $sql .= "where domain_uuid = '$this->domain_uuid' "; - $sql .= "and extension_uuid = '$this->extension_uuid' "; - if ($this->debug) { - echo $sql; - } - $db->exec(check_sql($sql)); - unset($sql); + + //grant temporary permissions + $p = new permissions; + $p->add('extension_add', 'temp'); + + //execute update + $database = new database; + $database->app_name = 'calls'; + $database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d'; + $database->save($array); + unset($array); + + //grant temporary permissions + $p = new permissions; + $p->delete('extension_add', 'temp'); //delete extension from the cache $cache = new cache; @@ -97,7 +98,7 @@ include "root.php"; $cache->delete("directory:".$this->number_alias."@".$this->domain_name); } - } //function - } //class + } + } -?> +?> \ No newline at end of file diff --git a/app/calls/resources/classes/do_not_disturb.php b/app/calls/resources/classes/do_not_disturb.php index 7712a81198..2149f8e1ad 100644 --- a/app/calls/resources/classes/do_not_disturb.php +++ b/app/calls/resources/classes/do_not_disturb.php @@ -37,9 +37,6 @@ include "root.php"; //update the user_status public function user_status() { - //set the global variable - global $db; - //update the status if ($this->enabled == "true") { //update the call center status @@ -53,36 +50,39 @@ include "root.php"; //update the database user_status $user_status = "Do Not Disturb"; $sql = "update v_users set "; - $sql .= "user_status = '$user_status' "; - $sql .= "where domain_uuid = '".$this->domain_uuid."' "; - $sql .= "and username = '".$_SESSION['username']."' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); + $sql .= "user_status = :user_status "; + $sql .= "where domain_uuid = :domain_uuid "; + $sql .= "and username = :username "; + $parameters['user_status'] = "Do Not Disturb"; + $parameters['domain_uuid'] = $this->domain_uuid; + $parameters['username'] = $_SESSION['username']; + $database = new database; + $database->execute($sql); } } public function set() { - //set the global variable - global $db; - //determine whether to update the dial string - $sql = "select extension_uuid, extension, number_alias from v_extensions "; - $sql .= "where domain_uuid = '".$this->domain_uuid."' "; - if (strlen($this->extension_uuid) > 0) { - $sql .= "and extension_uuid = '".$this->extension_uuid."' "; + $sql = "select extension_uuid, extension, number_alias "; + $sql .= "from v_extensions "; + $sql .= "where domain_uuid = :domain_uuid "; + if (is_uuid($this->extension_uuid)) { + $sql .= "and extension_uuid = :extension_uuid "; + $parameters['extension_uuid'] = $this->extension_uuid; } else { - $sql .= "and extension = '".$this->extension."' "; + $sql .= "and extension = :extension "; + $parameters['extension'] = $this->extension; } - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - if (is_array($result)) foreach ($result as &$row) { - if (strlen($this->extension_uuid) == 0) { + $parameters['domain_uuid'] = $this->domain_uuid; + $database = new database; + $row = $database->select($sql, $parameters, 'row'); + if (is_array($row) && @sizeof($row) != 0) { + if (is_uuid($this->extension_uuid)) { $this->extension_uuid = $row["extension_uuid"]; } if (strlen($this->extension) == 0) { - if(strlen($row["number_alias"]) == 0) { + if (strlen($row["number_alias"]) == 0) { $this->extension = $row["extension"]; } else { @@ -90,31 +90,30 @@ include "root.php"; } } } - unset ($prep_statement); + unset($sql, $parameters, $row); //set the dial string - if ($this->enabled == "true") { - $this->dial_string = "error/user_busy"; - } - else { - $this->dial_string = ''; - } + $this->dial_string = $this->enabled == "true" ? "error/user_busy" : ''; - //update the extension - $sql = "update v_extensions set "; - $sql .= "dial_string = '".$this->dial_string."', "; - //$sql .= "dial_domain = '".$this->domain_name."', "; - $sql .= "do_not_disturb = '".$this->enabled."' "; - $sql .= "where domain_uuid = '".$this->domain_uuid."' "; - $sql .= "and extension_uuid = '".$this->extension_uuid."' "; - if ($this->debug) { - echo $sql."
"; - } + //build extension update array + $array['extensions'][0]['extension_uuid'] = $this->extension_uuid; + $array['extensions'][0]['dial_string'] = $this->dial_string; + $array['extensions'][0]['do_not_disturb'] = $this->enabled; - $db->exec(check_sql($sql)); - unset($sql); + //grant temporary permissions + $p = new permissions; + $p->add('extension_edit', 'temp'); - } //function - } //class + //execute update + $database = new database; + $database->app_name = 'calls'; + $database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d'; + $database->save($array); + unset($array); + + //revoke temporary permissions + $p->delete('extension_edit', 'temp'); + } + } ?> \ No newline at end of file diff --git a/app/calls/resources/classes/follow_me.php b/app/calls/resources/classes/follow_me.php index b26ea3c529..71eaf166f0 100644 --- a/app/calls/resources/classes/follow_me.php +++ b/app/calls/resources/classes/follow_me.php @@ -81,173 +81,162 @@ include "root.php"; public $destination_order = 1; public function add() { - //set the global variable - global $db; - //add a new follow me - $sql = "insert into v_follow_me "; - $sql .= "("; - $sql .= "domain_uuid, "; - $sql .= "follow_me_uuid, "; - $sql .= "cid_name_prefix, "; + //build follow me insert array + $array['follow_me'][0]['follow_me_uuid'] = $this->follow_me_uuid; + $array['follow_me'][0]['domain_uuid'] = $this->domain_uuid; + $array['follow_me'][0]['cid_name_prefix'] = $this->cid_name_prefix; if (strlen($this->cid_number_prefix) > 0) { - $sql .= "cid_number_prefix, "; + $array['follow_me'][0]['cid_number_prefix'] = $this->cid_number_prefix; } - $sql .= "follow_me_caller_id_uuid, "; - $sql .= "follow_me_enabled, "; - $sql .= "follow_me_ignore_busy "; - $sql .= ")"; - $sql .= "values "; - $sql .= "("; - $sql .= "'$this->domain_uuid', "; - $sql .= "'$this->follow_me_uuid', "; - $sql .= "'$this->cid_name_prefix', "; - if (strlen($this->cid_number_prefix) > 0) { - $sql .= "'$this->cid_number_prefix', "; - } - if (strlen($this->follow_me_caller_id_uuid) > 0) { - $sql .= "'$this->follow_me_caller_id_uuid', "; - } - else { - $sql .= 'null, '; - } - $sql .= "'$this->follow_me_enabled', "; - $sql .= "'$this->follow_me_ignore_busy' "; - $sql .= ")"; - if ($v_debug) { - echo $sql."
"; - } - $db->exec(check_sql($sql)); - unset($sql); + $array['follow_me'][0]['follow_me_caller_id_uuid'] = is_uuid($this->follow_me_caller_id_uuid) ? $this->follow_me_caller_id_uuid : null; + $array['follow_me'][0]['follow_me_enabled'] = $this->follow_me_enabled; + $array['follow_me'][0]['follow_me_ignore_busy'] = $this->follow_me_ignore_busy; + //grant temporary permissions + $p = new permissions; + $p->add('follow_me_add', 'temp'); + //execute insert + $database = new database; + $database->app_name = 'calls'; + $database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d'; + $database->save($array); + unset($array); + //revoke temporary permissions + $p->delete('follow_me_add', 'temp'); + $this->follow_me_destinations(); - } //end function + + } public function update() { - //set the global variable - global $db; - //update follow me table - $sql = "update v_follow_me set "; - $sql .= "follow_me_enabled = '$this->follow_me_enabled', "; - $sql .= "follow_me_ignore_busy = '$this->follow_me_ignore_busy', "; - $sql .= "cid_name_prefix = '$this->cid_name_prefix', "; - if (strlen($this->follow_me_caller_id_uuid) > 0) { - $sql .= "follow_me_caller_id_uuid = '$this->follow_me_caller_id_uuid', "; - } - else { - $sql .= "follow_me_caller_id_uuid = null, "; - } - $sql .= "cid_number_prefix = '$this->cid_number_prefix' "; - $sql .= "where domain_uuid = '$this->domain_uuid' "; - $sql .= "and follow_me_uuid = '$this->follow_me_uuid' "; - $db->exec(check_sql($sql)); - unset($sql); + + //build follow me update array + $array['follow_me'][0]['follow_me_uuid'] = $this->follow_me_uuid; + $array['follow_me'][0]['cid_name_prefix'] = $this->cid_name_prefix; + $array['follow_me'][0]['cid_number_prefix'] = $this->cid_number_prefix; + $array['follow_me'][0]['follow_me_caller_id_uuid'] = is_uuid($this->follow_me_caller_id_uuid) ? $this->follow_me_caller_id_uuid : null; + $array['follow_me'][0]['follow_me_enabled'] = $this->follow_me_enabled; + $array['follow_me'][0]['follow_me_ignore_busy'] = $this->follow_me_ignore_busy; + //grant temporary permissions + $p = new permissions; + $p->add('follow_me_add', 'temp'); + //execute update + $database = new database; + $database->app_name = 'calls'; + $database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d'; + $database->save($array); + unset($array); + //revoke temporary permissions + $p->delete('follow_me_add', 'temp'); + $this->follow_me_destinations(); - } //end function + + } public function follow_me_destinations() { - //set the global variable - global $db; - - //prepare insert statement - $stmt = $db->prepare( - "insert into v_follow_me_destinations(" - . "follow_me_destination_uuid," - . "domain_uuid," - . "follow_me_uuid," - . "follow_me_destination," - . "follow_me_timeout," - . "follow_me_delay," - . "follow_me_prompt," - . "follow_me_order" - . ") values(?,?,?,?,?,?,?,?)" - ); //delete related follow me destinations - $sql = "delete from v_follow_me_destinations where follow_me_uuid = '$this->follow_me_uuid' "; - $db->exec(check_sql($sql)); + $array['follow_me_destinations'][0]['follow_me_uuid'] = $this->follow_me_uuid; + //grant temporary permissions + $p = new permissions; + $p->add('follow_me_destination_delete', 'temp'); + //execute delete + $database = new database; + $database->app_name = 'calls'; + $database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d'; + $database->delete($array); + unset($array); + //revoke temporary permissions + $p->delete('follow_me_destination_delete', 'temp'); - //insert the follow me destinations + //build follow me destinations insert array + $x = 0; if (strlen($this->destination_data_1) > 0) { - $stmt->execute(array( - uuid(), - $this->domain_uuid, - $this->follow_me_uuid, - $this->destination_data_1, - $this->destination_timeout_1, - $this->destination_delay_1, - $this->destination_prompt_1, - '1' - )); + $array['follow_me_destinations'][$x]['follow_me_destination_uuid'] = uuid(); + $array['follow_me_destinations'][$x]['domain_uuid'] = $this->domain_uuid; + $array['follow_me_destinations'][$x]['follow_me_uuid'] = $this->follow_me_uuid; + $array['follow_me_destinations'][$x]['follow_me_destination'] = $this->destination_data_1; + $array['follow_me_destinations'][$x]['follow_me_timeout'] = $this->destination_timeout_1; + $array['follow_me_destinations'][$x]['follow_me_delay'] = $this->destination_delay_1; + $array['follow_me_destinations'][$x]['follow_me_prompt'] = $this->destination_prompt_1; + $array['follow_me_destinations'][$x]['follow_me_order'] = '1'; $this->destination_order++; + $x++; } if (strlen($this->destination_data_2) > 0) { - $stmt->execute(array( - uuid(), - $this->domain_uuid, - $this->follow_me_uuid, - $this->destination_data_2, - $this->destination_timeout_2, - $this->destination_delay_2, - $this->destination_prompt_2, - '2' - )); + $array['follow_me_destinations'][$x]['follow_me_destination_uuid'] = uuid(); + $array['follow_me_destinations'][$x]['domain_uuid'] = $this->domain_uuid; + $array['follow_me_destinations'][$x]['follow_me_uuid'] = $this->follow_me_uuid; + $array['follow_me_destinations'][$x]['follow_me_destination'] = $this->destination_data_2; + $array['follow_me_destinations'][$x]['follow_me_timeout'] = $this->destination_timeout_2; + $array['follow_me_destinations'][$x]['follow_me_delay'] = $this->destination_delay_2; + $array['follow_me_destinations'][$x]['follow_me_prompt'] = $this->destination_prompt_2; + $array['follow_me_destinations'][$x]['follow_me_order'] = '2'; $this->destination_order++; + $x++; } if (strlen($this->destination_data_3) > 0) { - $stmt->execute(array( - uuid(), - $this->domain_uuid, - $this->follow_me_uuid, - $this->destination_data_3, - $this->destination_timeout_3, - $this->destination_delay_3, - $this->destination_prompt_3, - '3' - )); + $array['follow_me_destinations'][$x]['follow_me_destination_uuid'] = uuid(); + $array['follow_me_destinations'][$x]['domain_uuid'] = $this->domain_uuid; + $array['follow_me_destinations'][$x]['follow_me_uuid'] = $this->follow_me_uuid; + $array['follow_me_destinations'][$x]['follow_me_destination'] = $this->destination_data_3; + $array['follow_me_destinations'][$x]['follow_me_timeout'] = $this->destination_timeout_3; + $array['follow_me_destinations'][$x]['follow_me_delay'] = $this->destination_delay_3; + $array['follow_me_destinations'][$x]['follow_me_prompt'] = $this->destination_prompt_3; + $array['follow_me_destinations'][$x]['follow_me_order'] = '3'; $this->destination_order++; + $x++; } if (strlen($this->destination_data_4) > 0) { - $stmt->execute(array( - uuid(), - $this->domain_uuid, - $this->follow_me_uuid, - $this->destination_data_4, - $this->destination_timeout_4, - $this->destination_delay_4, - $this->destination_prompt_4, - '4' - )); + $array['follow_me_destinations'][$x]['follow_me_destination_uuid'] = uuid(); + $array['follow_me_destinations'][$x]['domain_uuid'] = $this->domain_uuid; + $array['follow_me_destinations'][$x]['follow_me_uuid'] = $this->follow_me_uuid; + $array['follow_me_destinations'][$x]['follow_me_destination'] = $this->destination_data_4; + $array['follow_me_destinations'][$x]['follow_me_timeout'] = $this->destination_timeout_4; + $array['follow_me_destinations'][$x]['follow_me_delay'] = $this->destination_delay_4; + $array['follow_me_destinations'][$x]['follow_me_prompt'] = $this->destination_prompt_4; + $array['follow_me_destinations'][$x]['follow_me_order'] = '4'; $this->destination_order++; + $x++; } if (strlen($this->destination_data_5) > 0) { - $stmt->execute(array( - uuid(), - $this->domain_uuid, - $this->follow_me_uuid, - $this->destination_data_5, - $this->destination_timeout_5, - $this->destination_delay_5, - $this->destination_prompt_5, - '5' - )); + $array['follow_me_destinations'][$x]['follow_me_destination_uuid'] = uuid(); + $array['follow_me_destinations'][$x]['domain_uuid'] = $this->domain_uuid; + $array['follow_me_destinations'][$x]['follow_me_uuid'] = $this->follow_me_uuid; + $array['follow_me_destinations'][$x]['follow_me_destination'] = $this->destination_data_5; + $array['follow_me_destinations'][$x]['follow_me_timeout'] = $this->destination_timeout_5; + $array['follow_me_destinations'][$x]['follow_me_delay'] = $this->destination_delay_5; + $array['follow_me_destinations'][$x]['follow_me_prompt'] = $this->destination_prompt_5; + $array['follow_me_destinations'][$x]['follow_me_order'] = '5'; $this->destination_order++; + $x++; } - unset($stmt); - } //function + if (is_array($array) && @sizeof($array) != 0) { + //grant temporary permissions + $p = new permissions; + $p->add('follow_me_destination_add', 'temp'); + //execute insert + $database = new database; + $database->app_name = 'calls'; + $database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d'; + $database->save($array); + unset($array); + //revoke temporary permissions + $p->delete('follow_me_destination_add', 'temp'); + } + } public function set() { - //set the global variable - global $db; - //determine whether to update the dial string $sql = "select * from v_extensions "; - $sql .= "where domain_uuid = '".$this->domain_uuid."' "; - $sql .= "and extension_uuid = '".$this->extension_uuid."' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - if (is_array($result)) foreach ($result as &$row) { + $sql .= "where domain_uuid = :domain_uuid "; + $sql .= "and extension_uuid = :extension_uuid "; + $parameters['domain_uuid'] = $this->domain_uuid; + $parameters['extension_uuid'] = $this->extension_uuid; + $database = new database; + $row = $database->select($sql, $parameters, 'row'); + if (is_array($row) && @sizeof($row) != 0) { $this->extension = $row["extension"]; $this->accountcode = $row["accountcode"]; $this->toll_allow = $row["toll_allow"]; @@ -255,33 +244,34 @@ include "root.php"; $this->outbound_caller_id_name = $row["outbound_caller_id_name"]; $this->outbound_caller_id_number = $row["outbound_caller_id_number"]; } + unset($sql, $parameters, $row); //determine whether to update the dial string - $sql = "select d.domain_name, f.* from v_follow_me as f, v_domains as d "; - $sql .= "where f.domain_uuid = '".$this->domain_uuid."' "; - $sql .= "and f.follow_me_uuid = '".$this->follow_me_uuid."' "; + $sql = "select d.domain_name, f.* "; + $sql .= "from v_follow_me as f, v_domains as d "; + $sql .= "where f.domain_uuid = :domain_uuid "; + $sql .= "and f.follow_me_uuid = :follow_me_uuid "; $sql .= "and d.domain_uuid = f.domain_uuid "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - if (is_array($result)) { - foreach ($result as &$row) { - $follow_me_uuid = $row["follow_me_uuid"]; - $this->domain_name = $row["domain_name"]; - $this->follow_me_enabled = $row["follow_me_enabled"]; - $this->cid_name_prefix = $row["cid_name_prefix"]; - $this->cid_number_prefix = $row["cid_number_prefix"]; - } + $parameters['domain_uuid'] = $this->domain_uuid; + $parameters['follow_me_uuid'] = $this->follow_me_uuid; + $database = new database; + $row = $database->select($sql, $parameters, 'row'); + if (is_array($row) && @sizeof($row) != 0) { + $follow_me_uuid = $row["follow_me_uuid"]; + $this->domain_name = $row["domain_name"]; + $this->follow_me_enabled = $row["follow_me_enabled"]; + $this->cid_name_prefix = $row["cid_name_prefix"]; + $this->cid_number_prefix = $row["cid_number_prefix"]; } - unset ($prep_statement); + unset($sql, $parameters, $row); //set the extension dial string $sql = "select * from v_follow_me_destinations "; - $sql .= "where follow_me_uuid = '".$this->follow_me_uuid."' "; + $sql .= "where follow_me_uuid = :follow_me_uuid "; $sql .= "order by follow_me_order asc "; - $prep_statement_2 = $db->prepare(check_sql($sql)); - $prep_statement_2->execute(); - $result = $prep_statement_2->fetchAll(PDO::FETCH_NAMED); + $parameters['follow_me_uuid'] = $this->follow_me_uuid; + $database = new database; + $result = $database->select($sql, $parameters, 'all'); /* $dial_string_caller_id_name = "\${effective_caller_id_name}"; @@ -289,177 +279,189 @@ include "root.php"; if (strlen($this->follow_me_caller_id_uuid) > 0) { $sql_caller = "select destination_number, destination_description, destination_caller_id_number, destination_caller_id_name "; $sql_caller .= "from v_destinations "; - $sql_caller .= "where domain_uuid = '$this->domain_uuid' "; + $sql_caller .= "where domain_uuid = :domain_uuid "; $sql_caller .= "and destination_type = 'inbound' "; - $sql_caller .= "and destination_uuid = '$this->follow_me_caller_id_uuid'"; - $prep_statement_caller = $db->prepare($sql_caller); - if ($prep_statement_caller) { - $prep_statement_caller->execute(); - $row_caller = $prep_statement_caller->fetch(PDO::FETCH_ASSOC); + $sql_caller .= "and destination_uuid = :destination_uuid "; + $parameters['domain_uuid'] = $this->domain_uuid; + $parameters['destination_uuid'] = $this->follow_me_caller_id_uuid; + $database = new database; + $row_caller = $database->select($sql_caller, $parameters, 'row'); + if (is_array($row_caller) && @sizeof($row_caller) != 0) { $caller_id_number = $row_caller['destination_caller_id_number']; - if(strlen($caller_id_number) == 0){ + if (strlen($caller_id_number) == 0){ $caller_id_number = $row_caller['destination_number']; } $caller_id_name = $row_caller['destination_caller_id_name']; - if(strlen($caller_id_name) == 0){ + if (strlen($caller_id_name) == 0){ $caller_id_name = $row_caller['destination_description']; } } + unset($sql_caller, $parameters, $row_caller); } */ $x = 0; - if (is_array($result)) foreach ($result as &$row) { - if ($x > 0) { - $dial_string .= ","; - } - - //determine if the destination is a local sip user - $sql = "select extension, number_alias from v_extensions "; - $sql .= "where domain_uuid = '".$this->domain_uuid."' "; - $sql .= "and (extension = '".$row["follow_me_destination"]."' "; - $sql .= "or number_alias = '".$row["follow_me_destination"]."') "; - $field = $db->query($sql)->fetch(PDO::FETCH_ASSOC); - if (isset($field['extension'])) { - if (is_numeric($field['extension'])) { - $presence_id = $field['extension']; - } - else { - $presence_id = $field['number_alias']; - } - $variables[] = "presence_id=".$presence_id."@".$this->domain_name; - if ($row["follow_me_prompt"] == "1") { - $variables[] = "group_confirm_key=exec"; - $variables[] = "group_confirm_file=lua confirm.lua"; - $variables[] = "confirm=true"; - } - if ($this->follow_me_ignore_busy != 'true') { - $variables[] = "fail_on_single_reject=USER_BUSY"; - } - //accountcode - if (strlen($this->accountcode) == 0) { - $variables[] = "sip_h_X-accountcode=\${accountcode}"; - } - else { - $variables[] = "sip_h_X-accountcode=".$this->accountcode; - $variables[] = "accountcode=".$this->accountcode; - } - //toll allow - if ($this->toll_allow != '') { - $variables[] = "toll_allow=''".str_replace(",", "\,", $this->toll_allow)."''"; + if (is_array($result) && @sizeof($result) != 0) { + foreach ($result as &$row) { + if ($x > 0) { + $dial_string .= ","; } - $variables[] = "instant_ringback=true"; - $variables[] = "ignore_early_media=true"; - $variables[] = "domain_uuid=".$this->domain_uuid; - $variables[] = "sip_invite_domain=".$this->domain_name; - $variables[] = "domain_name=".$this->domain_name; - $variables[] = "domain=".$this->domain_name; - $variables[] = "extension_uuid=".$this->extension_uuid; - $variables[] = "leg_delay_start=".$row["follow_me_delay"]; - $variables[] = "originate_delay_start=".$row["follow_me_delay"]; - $variables[] = "leg_timeout=".$row["follow_me_timeout"]; - - $dial_string .= "[".implode(",", $variables)."]\${sofia_contact(*/".$row["follow_me_destination"]."@".$this->domain_name.")}"; - //$dial_string .= "[".implode(",", $variables)."]user/".$row["follow_me_destination"]."@".$this->domain_name; - //$dial_string .= "loopback/export:".implode("\,export:", $variables)."\,transfer:".$row["follow_me_destination"]."/".$this->domain_name."/inline"; - unset($variables); - } - else { - if (is_numeric($this->extension)) { - $presence_id = $this->extension; - } - else { - $presence_id = $this->number_alias; - } - $variables[] = "presence_id=".$presence_id."@".$this->domain_name; - - //set the caller id - if ($_SESSION['follow_me']['outbound_caller_id']['boolean'] == "true") { - if (strlen($this->outbound_caller_id_name) > 0) { - $variables[] = "origination_caller_id_name=".$this->cid_name_prefix.$this->outbound_caller_id_name; - $variables[] = "effective_caller_id_name=".$this->cid_name_prefix.$this->outbound_caller_id_name; - } - if (strlen($this->outbound_caller_id_number) > 0) { - $variables[] = "origination_caller_id_number=".$this->cid_number_prefix.$this->outbound_caller_id_number; - $variables[] = "effective_caller_id_number=".$this->cid_number_prefix.$this->outbound_caller_id_number; - } - } - else { - if ($_SESSION['domain']['bridge']['text'] == "loopback") { - //set the outbound caller id number if the caller id number is a user - //$variables[] = "origination_caller_id_number=\${cond(\${from_user_exists} == true ? ".$this->outbound_caller_id_number." : \${origination_caller_id_number})}"; - $variables[] = "effective_caller_id_number=\${cond(\${from_user_exists} == true ? ".$this->outbound_caller_id_number." : \${effective_caller_id_number})}"; - //$variables[] = "origination_caller_id_name=\${cond(\${from_user_exists} == true ? ".$this->outbound_caller_id_name." : \${origination_caller_id_name})}"; - $variables[] = "effective_caller_id_name=\${cond(\${from_user_exists} == true ? ".$this->outbound_caller_id_name." : \${effective_caller_id_name})}"; - } else { - //$variables[] .="origination_caller_id_number=\${cond(\${from_user_exists} == true ? \${outbound_caller_id_number} : )}"; - $variables[] .="effective_caller_id_number=\${cond(\${from_user_exists} == true ? \${outbound_caller_id_number} : )}"; - //$variables[] .="origination_caller_id_name=\${cond(\${from_user_exists} == true ? \${outbound_caller_id_name} : )}"; - $variables[] .="effective_caller_id_name=\${cond(\${from_user_exists} == true ? \${outbound_caller_id_name} : )}"; - } - } - - //accountcode - if (strlen($this->accountcode) == 0) { - $variables[] = "sip_h_X-accountcode=\${accountcode}"; - } - else { - $variables[] = "sip_h_X-accountcode=".$this->accountcode; - $variables[] = "accountcode=".$this->accountcode; - } - - //toll allow - if ($this->toll_allow != '') { - $variables[] = "toll_allow=''".str_replace(",", "\,", $this->toll_allow)."''"; - } - - if ($this->follow_me_ignore_busy != 'true') { - $variables[] = "fail_on_single_reject=USER_BUSY"; - } - - if ($row["follow_me_prompt"] == "1") { - $variables[] = "group_confirm_key=exec"; - $variables[] = "group_confirm_file=lua confirm.lua"; - $variables[] = "confirm=true"; - } - - $variables[] = "instant_ringback=true"; - $variables[] = "ignore_early_media=true"; - $variables[] = "domain_uuid=".$this->domain_uuid; - $variables[] = "sip_invite_domain=".$this->domain_name; - $variables[] = "domain_name=".$this->domain_name; - //$variables[] = "domain=".$this->domain_name; - $variables[] = "extension_uuid=".$this->extension_uuid; - $variables[] = "leg_delay_start=".$row["follow_me_delay"]; - $variables[] = "originate_delay_start=".$row["follow_me_delay"]; - $variables[] = "sleep=".($row["follow_me_delay"] * 1000); - $variables[] = "leg_timeout=".$row["follow_me_timeout"]; - if (is_numeric($row["follow_me_destination"])) { - if ($_SESSION['domain']['bridge']['text'] == "outbound" || $_SESSION['domain']['bridge']['text'] == "bridge") { - $bridge = outbound_route_to_bridge ($this->domain_uuid, $row["follow_me_destination"]); - $dial_string .= "[".implode(",", $variables)."]".$bridge[0]; - } - elseif ($_SESSION['domain']['bridge']['text'] == "loopback") { - $variables[] = "is_follow_me_loopback=true"; - $sleep_time = "sleep:".($row["follow_me_delay"] * 1000); - //$dial_string .= "loopback/".$row["follow_me_destination"]."/".$this->domain_name; - $dial_string .= "loopback/".$sleep_time."\,export:".implode("\,export:", $variables)."\,transfer:".$row["follow_me_destination"]."/".$this->domain_name."/inline"; - } - elseif ($_SESSION['domain']['bridge']['text'] == "lcr") { - $dial_string .= "[".implode(",", $variables)."]lcr/".$_SESSION['lcr']['profile']['text']."/".$this->domain_name."/".$row["follow_me_destination"]; + //determine if the destination is a local sip user + $sql = "select extension, number_alias from v_extensions "; + $sql .= "where domain_uuid = :domain_uuid "; + $sql .= "and ( "; + $sql .= "extension = :extension "; + $sql .= "or number_alias = :number_alias "; + $sql .= ") "; + $parameters['domain_uuid'] = $this->domain_uuid; + $parameters['extension'] = $row["follow_me_destination"]; + $parameters['number_alias'] = $row["follow_me_destination"]; + $database = new database; + $field = $database->select($sql, $parameters, 'row'); + if (isset($field['extension'])) { + if (is_numeric($field['extension'])) { + $presence_id = $field['extension']; } else { - //$dial_string .= "loopback/".$row["follow_me_destination"]."/".$this->domain_name; - $sleep_time = "sleep:".($row["follow_me_delay"] * 1000); - $dial_string .= "loopback/".$sleep_time."\,export:".implode("\,export:", $variables)."\,transfer:".$row["follow_me_destination"]."/".$this->domain_name."/inline"; + $presence_id = $field['number_alias']; } + $variables[] = "presence_id=".$presence_id."@".$this->domain_name; + if ($row["follow_me_prompt"] == "1") { + $variables[] = "group_confirm_key=exec"; + $variables[] = "group_confirm_file=lua confirm.lua"; + $variables[] = "confirm=true"; + } + if ($this->follow_me_ignore_busy != 'true') { + $variables[] = "fail_on_single_reject=USER_BUSY"; + } + //accountcode + if (strlen($this->accountcode) == 0) { + $variables[] = "sip_h_X-accountcode=\${accountcode}"; + } + else { + $variables[] = "sip_h_X-accountcode=".$this->accountcode; + $variables[] = "accountcode=".$this->accountcode; + } + //toll allow + if ($this->toll_allow != '') { + $variables[] = "toll_allow=''".str_replace(",", "\,", $this->toll_allow)."''"; + } + + $variables[] = "instant_ringback=true"; + $variables[] = "ignore_early_media=true"; + $variables[] = "domain_uuid=".$this->domain_uuid; + $variables[] = "sip_invite_domain=".$this->domain_name; + $variables[] = "domain_name=".$this->domain_name; + $variables[] = "domain=".$this->domain_name; + $variables[] = "extension_uuid=".$this->extension_uuid; + $variables[] = "leg_delay_start=".$row["follow_me_delay"]; + $variables[] = "originate_delay_start=".$row["follow_me_delay"]; + $variables[] = "leg_timeout=".$row["follow_me_timeout"]; + + $dial_string .= "[".implode(",", $variables)."]\${sofia_contact(*/".$row["follow_me_destination"]."@".$this->domain_name.")}"; + //$dial_string .= "[".implode(",", $variables)."]user/".$row["follow_me_destination"]."@".$this->domain_name; + //$dial_string .= "loopback/export:".implode("\,export:", $variables)."\,transfer:".$row["follow_me_destination"]."/".$this->domain_name."/inline"; + unset($variables); } else { - $dial_string .= $row["follow_me_destination"]; + if (is_numeric($this->extension)) { + $presence_id = $this->extension; + } + else { + $presence_id = $this->number_alias; + } + $variables[] = "presence_id=".$presence_id."@".$this->domain_name; + + //set the caller id + if ($_SESSION['follow_me']['outbound_caller_id']['boolean'] == "true") { + if (strlen($this->outbound_caller_id_name) > 0) { + $variables[] = "origination_caller_id_name=".$this->cid_name_prefix.$this->outbound_caller_id_name; + $variables[] = "effective_caller_id_name=".$this->cid_name_prefix.$this->outbound_caller_id_name; + } + if (strlen($this->outbound_caller_id_number) > 0) { + $variables[] = "origination_caller_id_number=".$this->cid_number_prefix.$this->outbound_caller_id_number; + $variables[] = "effective_caller_id_number=".$this->cid_number_prefix.$this->outbound_caller_id_number; + } + } + else { + if ($_SESSION['domain']['bridge']['text'] == "loopback") { + //set the outbound caller id number if the caller id number is a user + //$variables[] = "origination_caller_id_number=\${cond(\${from_user_exists} == true ? ".$this->outbound_caller_id_number." : \${origination_caller_id_number})}"; + $variables[] = "effective_caller_id_number=\${cond(\${from_user_exists} == true ? ".$this->outbound_caller_id_number." : \${effective_caller_id_number})}"; + //$variables[] = "origination_caller_id_name=\${cond(\${from_user_exists} == true ? ".$this->outbound_caller_id_name." : \${origination_caller_id_name})}"; + $variables[] = "effective_caller_id_name=\${cond(\${from_user_exists} == true ? ".$this->outbound_caller_id_name." : \${effective_caller_id_name})}"; + } + else { + //$variables[] .="origination_caller_id_number=\${cond(\${from_user_exists} == true ? \${outbound_caller_id_number} : )}"; + $variables[] .="effective_caller_id_number=\${cond(\${from_user_exists} == true ? \${outbound_caller_id_number} : )}"; + //$variables[] .="origination_caller_id_name=\${cond(\${from_user_exists} == true ? \${outbound_caller_id_name} : )}"; + $variables[] .="effective_caller_id_name=\${cond(\${from_user_exists} == true ? \${outbound_caller_id_name} : )}"; + } + } + + //accountcode + if (strlen($this->accountcode) == 0) { + $variables[] = "sip_h_X-accountcode=\${accountcode}"; + } + else { + $variables[] = "sip_h_X-accountcode=".$this->accountcode; + $variables[] = "accountcode=".$this->accountcode; + } + + //toll allow + if ($this->toll_allow != '') { + $variables[] = "toll_allow=''".str_replace(",", "\,", $this->toll_allow)."''"; + } + + if ($this->follow_me_ignore_busy != 'true') { + $variables[] = "fail_on_single_reject=USER_BUSY"; + } + + if ($row["follow_me_prompt"] == "1") { + $variables[] = "group_confirm_key=exec"; + $variables[] = "group_confirm_file=lua confirm.lua"; + $variables[] = "confirm=true"; + } + + $variables[] = "instant_ringback=true"; + $variables[] = "ignore_early_media=true"; + $variables[] = "domain_uuid=".$this->domain_uuid; + $variables[] = "sip_invite_domain=".$this->domain_name; + $variables[] = "domain_name=".$this->domain_name; + //$variables[] = "domain=".$this->domain_name; + $variables[] = "extension_uuid=".$this->extension_uuid; + $variables[] = "leg_delay_start=".$row["follow_me_delay"]; + $variables[] = "originate_delay_start=".$row["follow_me_delay"]; + $variables[] = "sleep=".($row["follow_me_delay"] * 1000); + $variables[] = "leg_timeout=".$row["follow_me_timeout"]; + if (is_numeric($row["follow_me_destination"])) { + if ($_SESSION['domain']['bridge']['text'] == "outbound" || $_SESSION['domain']['bridge']['text'] == "bridge") { + $bridge = outbound_route_to_bridge ($this->domain_uuid, $row["follow_me_destination"]); + $dial_string .= "[".implode(",", $variables)."]".$bridge[0]; + } + else if ($_SESSION['domain']['bridge']['text'] == "loopback") { + $variables[] = "is_follow_me_loopback=true"; + $sleep_time = "sleep:".($row["follow_me_delay"] * 1000); + //$dial_string .= "loopback/".$row["follow_me_destination"]."/".$this->domain_name; + $dial_string .= "loopback/".$sleep_time."\,export:".implode("\,export:", $variables)."\,transfer:".$row["follow_me_destination"]."/".$this->domain_name."/inline"; + } + else if ($_SESSION['domain']['bridge']['text'] == "lcr") { + $dial_string .= "[".implode(",", $variables)."]lcr/".$_SESSION['lcr']['profile']['text']."/".$this->domain_name."/".$row["follow_me_destination"]; + } + else { + //$dial_string .= "loopback/".$row["follow_me_destination"]."/".$this->domain_name; + $sleep_time = "sleep:".($row["follow_me_delay"] * 1000); + $dial_string .= "loopback/".$sleep_time."\,export:".implode("\,export:", $variables)."\,transfer:".$row["follow_me_destination"]."/".$this->domain_name."/inline"; + } + } + else { + $dial_string .= $row["follow_me_destination"]; + } } + unset($sql, $parameters, $field); + $x++; } - $x++; } //$dial_string = str_replace(",]", "]", $dial_string); $this->dial_string = "{ignore_early_media=true}".$dial_string; @@ -470,11 +472,10 @@ include "root.php"; $sql = "select extension_uuid from v_extensions "; $sql .= "where follow_me_uuid = :follow_me_uuid "; $database = new database; - $result = $database->execute($sql, $parameters); - $message = $database->message; + $result = $database->select($sql, $parameters); $extension_uuid = $result[0]['extension_uuid']; - //add the dialplan permission + //grant temporary permissions $p = new permissions; $p->add("follow_me_edit", 'temp'); $p->add("extension_edit", 'temp'); @@ -502,7 +503,6 @@ include "root.php"; $database->app_name = 'follow_me'; $database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d'; $database->save($array); - $dialplan_response = $database->message; //remove the temporary permission $p->delete("follow_me_edit", 'temp'); @@ -510,4 +510,4 @@ include "root.php"; } //function } //class -?> +?> \ No newline at end of file diff --git a/app/music_on_hold/resources/classes/switch_music_on_hold.php b/app/music_on_hold/resources/classes/switch_music_on_hold.php index 2a0101f842..6a3215148d 100644 --- a/app/music_on_hold/resources/classes/switch_music_on_hold.php +++ b/app/music_on_hold/resources/classes/switch_music_on_hold.php @@ -32,15 +32,8 @@ include "root.php"; public $domain_uuid; private $xml; - private $db; public function __construct() { - if (!$this->db) { - require_once "resources/classes/database.php"; - $database = new database; - $database->connect(); - $this->db = $database->db; - } $this->domain_uuid = $_SESSION['domain_uuid']; } @@ -93,19 +86,20 @@ include "root.php"; //streams if (is_dir($_SERVER["PROJECT_ROOT"].'/app/streams')) { $sql = "select * from v_streams "; - $sql .= "where (domain_uuid = '".$this->domain_uuid."' or domain_uuid is null) "; + $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) "; $sql .= "and stream_enabled = 'true' "; $sql .= "order by stream_name asc "; - $prep_statement = $this->db->prepare(check_sql($sql)); - $prep_statement->execute(); - $streams = $prep_statement->fetchAll(PDO::FETCH_NAMED); - if (sizeof($streams) > 0) { + $parameters['domain_uuid'] = $_SESSION['domain_uuid'] + $database = new database; + $streams = $database->select($sql, $parameters, 'all'); + if (is_array($streams) && @sizeof($streams) != 0) { $select .= " "; foreach($streams as $row){ $select .= " \n"; } $select .= " \n"; } + unset($sql, $parameters, $streams, $row); } //add additional options if (sizeof($options) > 0) { @@ -125,14 +119,16 @@ include "root.php"; //get moh records, build array $sql = "select "; - $sql .= "d.domain_name, m.* "; + $sql .= "d.domain_name, "; + $sql .= "m.* "; $sql .= "from v_music_on_hold as m "; - $sql .= "left join v_domains as d ON d.domain_uuid = m.domain_uuid "; - $sql .= "where (m.domain_uuid = '".$this->domain_uuid."' or m.domain_uuid is null) "; + $sql .= "left join v_domains as d on d.domain_uuid = m.domain_uuid "; + $sql .= "where (m.domain_uuid = :domain_uuid or m.domain_uuid is null) "; $sql .= "order by m.domain_uuid desc, music_on_hold_name asc, music_on_hold_rate asc "; - $prep_statement = $this->db->prepare(check_sql($sql)); - $prep_statement->execute(); - return $prep_statement->fetchAll(PDO::FETCH_NAMED); + $parameters['domain_uuid'] = $_SESSION['domain_uuid'] + $database = new database; + return $database->select($sql, $parameters, 'all'); + unset($sql, $parameters); } public function reload() { @@ -226,4 +222,4 @@ include "root.php"; //$moh->xml(); //$moh->save(); -?> +?> \ No newline at end of file