Misc Classes: Database class integration.

This commit is contained in:
Nate 2019-08-29 18:20:33 -06:00
parent abcbb4a1a7
commit e4abb2eebe
4 changed files with 399 additions and 403 deletions

View File

@ -46,17 +46,15 @@ include "root.php";
public $outbound_caller_id_number; public $outbound_caller_id_number;
public function set() { public function set() {
//set the global variable
global $db;
//determine whether to update the dial string //determine whether to update the dial string
$sql = "select * from v_extensions "; $sql = "select * from v_extensions ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' "; $sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and extension_uuid = '".$this->extension_uuid."' "; $sql .= "and extension_uuid = :extension_uuid ";
$prep_statement = $db->prepare(check_sql($sql)); $parameters['domain_uuid'] = $this->domain_uuid;
$prep_statement->execute(); $parameters['extension_uuid'] = $this->extension_uuid;
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $database = new database;
if (is_array($result)) foreach ($result as &$row) { $row = $database->select($sql, $parameters, 'row');
if (is_array($row) && @sizeof($row) != 0) {
$this->extension = $row["extension"]; $this->extension = $row["extension"];
$this->number_alias = $row["number_alias"]; $this->number_alias = $row["number_alias"];
$this->accountcode = $row["accountcode"]; $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_name = $row["outbound_caller_id_name"];
$this->outbound_caller_id_number = $row["outbound_caller_id_number"]; $this->outbound_caller_id_number = $row["outbound_caller_id_number"];
} }
unset ($prep_statement); unset($sql, $parameters, $row);
//update the extension //build extension update array
$sql = "update v_extensions set "; $array['extensions'][0]['extension_uuid'] = $this->extension_uuid;
if (strlen($this->forward_all_destination) == 0) { $array['extensions'][0]['forward_all_destination'] = strlen($this->forward_all_destination) != 0 ? $this->forward_all_destination : null;
$sql .= "forward_all_destination = null, ";
}
else {
$sql .= "forward_all_destination = '$this->forward_all_destination', ";
}
if (strlen($this->forward_all_destination) == 0 || $this->forward_all_enabled == "false") { if (strlen($this->forward_all_destination) == 0 || $this->forward_all_enabled == "false") {
$sql .= "dial_string = null, "; $array['extensions'][0]['dial_string'] = null;
$sql .= "forward_all_enabled = 'false' "; $array['extensions'][0]['forward_all_enabled'] = 'false';
} }
else { else {
$sql .= "dial_string = '".check_str($this->dial_string)."', "; $array['extensions'][0]['dial_string'] = $this->dial_string;
$sql .= "forward_all_enabled = 'true' "; $array['extensions'][0]['forward_all_enabled'] = 'true';
} }
$sql .= "where domain_uuid = '$this->domain_uuid' ";
$sql .= "and extension_uuid = '$this->extension_uuid' "; //grant temporary permissions
if ($this->debug) { $p = new permissions;
echo $sql; $p->add('extension_add', 'temp');
}
$db->exec(check_sql($sql)); //execute update
unset($sql); $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 //delete extension from the cache
$cache = new cache; $cache = new cache;
@ -97,7 +98,7 @@ include "root.php";
$cache->delete("directory:".$this->number_alias."@".$this->domain_name); $cache->delete("directory:".$this->number_alias."@".$this->domain_name);
} }
} //function }
} //class }
?> ?>

View File

@ -37,9 +37,6 @@ include "root.php";
//update the user_status //update the user_status
public function user_status() { public function user_status() {
//set the global variable
global $db;
//update the status //update the status
if ($this->enabled == "true") { if ($this->enabled == "true") {
//update the call center status //update the call center status
@ -53,36 +50,39 @@ include "root.php";
//update the database user_status //update the database user_status
$user_status = "Do Not Disturb"; $user_status = "Do Not Disturb";
$sql = "update v_users set "; $sql = "update v_users set ";
$sql .= "user_status = '$user_status' "; $sql .= "user_status = :user_status ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' "; $sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and username = '".$_SESSION['username']."' "; $sql .= "and username = :username ";
$prep_statement = $db->prepare(check_sql($sql)); $parameters['user_status'] = "Do Not Disturb";
$prep_statement->execute(); $parameters['domain_uuid'] = $this->domain_uuid;
$parameters['username'] = $_SESSION['username'];
$database = new database;
$database->execute($sql);
} }
} }
public function set() { public function set() {
//set the global variable
global $db;
//determine whether to update the dial string //determine whether to update the dial string
$sql = "select extension_uuid, extension, number_alias from v_extensions "; $sql = "select extension_uuid, extension, number_alias ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' "; $sql .= "from v_extensions ";
if (strlen($this->extension_uuid) > 0) { $sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and extension_uuid = '".$this->extension_uuid."' "; if (is_uuid($this->extension_uuid)) {
$sql .= "and extension_uuid = :extension_uuid ";
$parameters['extension_uuid'] = $this->extension_uuid;
} }
else { else {
$sql .= "and extension = '".$this->extension."' "; $sql .= "and extension = :extension ";
$parameters['extension'] = $this->extension;
} }
$prep_statement = $db->prepare(check_sql($sql)); $parameters['domain_uuid'] = $this->domain_uuid;
$prep_statement->execute(); $database = new database;
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $row = $database->select($sql, $parameters, 'row');
if (is_array($result)) foreach ($result as &$row) { if (is_array($row) && @sizeof($row) != 0) {
if (strlen($this->extension_uuid) == 0) { if (is_uuid($this->extension_uuid)) {
$this->extension_uuid = $row["extension_uuid"]; $this->extension_uuid = $row["extension_uuid"];
} }
if (strlen($this->extension) == 0) { if (strlen($this->extension) == 0) {
if(strlen($row["number_alias"]) == 0) { if (strlen($row["number_alias"]) == 0) {
$this->extension = $row["extension"]; $this->extension = $row["extension"];
} }
else { else {
@ -90,31 +90,30 @@ include "root.php";
} }
} }
} }
unset ($prep_statement); unset($sql, $parameters, $row);
//set the dial string //set the dial string
if ($this->enabled == "true") { $this->dial_string = $this->enabled == "true" ? "error/user_busy" : '';
$this->dial_string = "error/user_busy";
}
else {
$this->dial_string = '';
}
//update the extension //build extension update array
$sql = "update v_extensions set "; $array['extensions'][0]['extension_uuid'] = $this->extension_uuid;
$sql .= "dial_string = '".$this->dial_string."', "; $array['extensions'][0]['dial_string'] = $this->dial_string;
//$sql .= "dial_domain = '".$this->domain_name."', "; $array['extensions'][0]['do_not_disturb'] = $this->enabled;
$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."<br />";
}
$db->exec(check_sql($sql)); //grant temporary permissions
unset($sql); $p = new permissions;
$p->add('extension_edit', 'temp');
} //function //execute update
} //class $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');
}
}
?> ?>

View File

@ -81,173 +81,162 @@ include "root.php";
public $destination_order = 1; public $destination_order = 1;
public function add() { public function add() {
//set the global variable
global $db;
//add a new follow me //build follow me insert array
$sql = "insert into v_follow_me "; $array['follow_me'][0]['follow_me_uuid'] = $this->follow_me_uuid;
$sql .= "("; $array['follow_me'][0]['domain_uuid'] = $this->domain_uuid;
$sql .= "domain_uuid, "; $array['follow_me'][0]['cid_name_prefix'] = $this->cid_name_prefix;
$sql .= "follow_me_uuid, ";
$sql .= "cid_name_prefix, ";
if (strlen($this->cid_number_prefix) > 0) { 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, "; $array['follow_me'][0]['follow_me_caller_id_uuid'] = is_uuid($this->follow_me_caller_id_uuid) ? $this->follow_me_caller_id_uuid : null;
$sql .= "follow_me_enabled, "; $array['follow_me'][0]['follow_me_enabled'] = $this->follow_me_enabled;
$sql .= "follow_me_ignore_busy "; $array['follow_me'][0]['follow_me_ignore_busy'] = $this->follow_me_ignore_busy;
$sql .= ")"; //grant temporary permissions
$sql .= "values "; $p = new permissions;
$sql .= "("; $p->add('follow_me_add', 'temp');
$sql .= "'$this->domain_uuid', "; //execute insert
$sql .= "'$this->follow_me_uuid', "; $database = new database;
$sql .= "'$this->cid_name_prefix', "; $database->app_name = 'calls';
if (strlen($this->cid_number_prefix) > 0) { $database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d';
$sql .= "'$this->cid_number_prefix', "; $database->save($array);
} unset($array);
if (strlen($this->follow_me_caller_id_uuid) > 0) { //revoke temporary permissions
$sql .= "'$this->follow_me_caller_id_uuid', "; $p->delete('follow_me_add', 'temp');
}
else {
$sql .= 'null, ';
}
$sql .= "'$this->follow_me_enabled', ";
$sql .= "'$this->follow_me_ignore_busy' ";
$sql .= ")";
if ($v_debug) {
echo $sql."<br />";
}
$db->exec(check_sql($sql));
unset($sql);
$this->follow_me_destinations(); $this->follow_me_destinations();
} //end function
}
public function update() { public function update() {
//set the global variable
global $db; //build follow me update array
//update follow me table $array['follow_me'][0]['follow_me_uuid'] = $this->follow_me_uuid;
$sql = "update v_follow_me set "; $array['follow_me'][0]['cid_name_prefix'] = $this->cid_name_prefix;
$sql .= "follow_me_enabled = '$this->follow_me_enabled', "; $array['follow_me'][0]['cid_number_prefix'] = $this->cid_number_prefix;
$sql .= "follow_me_ignore_busy = '$this->follow_me_ignore_busy', "; $array['follow_me'][0]['follow_me_caller_id_uuid'] = is_uuid($this->follow_me_caller_id_uuid) ? $this->follow_me_caller_id_uuid : null;
$sql .= "cid_name_prefix = '$this->cid_name_prefix', "; $array['follow_me'][0]['follow_me_enabled'] = $this->follow_me_enabled;
if (strlen($this->follow_me_caller_id_uuid) > 0) { $array['follow_me'][0]['follow_me_ignore_busy'] = $this->follow_me_ignore_busy;
$sql .= "follow_me_caller_id_uuid = '$this->follow_me_caller_id_uuid', "; //grant temporary permissions
} $p = new permissions;
else { $p->add('follow_me_add', 'temp');
$sql .= "follow_me_caller_id_uuid = null, "; //execute update
} $database = new database;
$sql .= "cid_number_prefix = '$this->cid_number_prefix' "; $database->app_name = 'calls';
$sql .= "where domain_uuid = '$this->domain_uuid' "; $database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d';
$sql .= "and follow_me_uuid = '$this->follow_me_uuid' "; $database->save($array);
$db->exec(check_sql($sql)); unset($array);
unset($sql); //revoke temporary permissions
$p->delete('follow_me_add', 'temp');
$this->follow_me_destinations(); $this->follow_me_destinations();
} //end function
}
public function follow_me_destinations() { 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 //delete related follow me destinations
$sql = "delete from v_follow_me_destinations where follow_me_uuid = '$this->follow_me_uuid' "; $array['follow_me_destinations'][0]['follow_me_uuid'] = $this->follow_me_uuid;
$db->exec(check_sql($sql)); //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) { if (strlen($this->destination_data_1) > 0) {
$stmt->execute(array( $array['follow_me_destinations'][$x]['follow_me_destination_uuid'] = uuid();
uuid(), $array['follow_me_destinations'][$x]['domain_uuid'] = $this->domain_uuid;
$this->domain_uuid, $array['follow_me_destinations'][$x]['follow_me_uuid'] = $this->follow_me_uuid;
$this->follow_me_uuid, $array['follow_me_destinations'][$x]['follow_me_destination'] = $this->destination_data_1;
$this->destination_data_1, $array['follow_me_destinations'][$x]['follow_me_timeout'] = $this->destination_timeout_1;
$this->destination_timeout_1, $array['follow_me_destinations'][$x]['follow_me_delay'] = $this->destination_delay_1;
$this->destination_delay_1, $array['follow_me_destinations'][$x]['follow_me_prompt'] = $this->destination_prompt_1;
$this->destination_prompt_1, $array['follow_me_destinations'][$x]['follow_me_order'] = '1';
'1'
));
$this->destination_order++; $this->destination_order++;
$x++;
} }
if (strlen($this->destination_data_2) > 0) { if (strlen($this->destination_data_2) > 0) {
$stmt->execute(array( $array['follow_me_destinations'][$x]['follow_me_destination_uuid'] = uuid();
uuid(), $array['follow_me_destinations'][$x]['domain_uuid'] = $this->domain_uuid;
$this->domain_uuid, $array['follow_me_destinations'][$x]['follow_me_uuid'] = $this->follow_me_uuid;
$this->follow_me_uuid, $array['follow_me_destinations'][$x]['follow_me_destination'] = $this->destination_data_2;
$this->destination_data_2, $array['follow_me_destinations'][$x]['follow_me_timeout'] = $this->destination_timeout_2;
$this->destination_timeout_2, $array['follow_me_destinations'][$x]['follow_me_delay'] = $this->destination_delay_2;
$this->destination_delay_2, $array['follow_me_destinations'][$x]['follow_me_prompt'] = $this->destination_prompt_2;
$this->destination_prompt_2, $array['follow_me_destinations'][$x]['follow_me_order'] = '2';
'2'
));
$this->destination_order++; $this->destination_order++;
$x++;
} }
if (strlen($this->destination_data_3) > 0) { if (strlen($this->destination_data_3) > 0) {
$stmt->execute(array( $array['follow_me_destinations'][$x]['follow_me_destination_uuid'] = uuid();
uuid(), $array['follow_me_destinations'][$x]['domain_uuid'] = $this->domain_uuid;
$this->domain_uuid, $array['follow_me_destinations'][$x]['follow_me_uuid'] = $this->follow_me_uuid;
$this->follow_me_uuid, $array['follow_me_destinations'][$x]['follow_me_destination'] = $this->destination_data_3;
$this->destination_data_3, $array['follow_me_destinations'][$x]['follow_me_timeout'] = $this->destination_timeout_3;
$this->destination_timeout_3, $array['follow_me_destinations'][$x]['follow_me_delay'] = $this->destination_delay_3;
$this->destination_delay_3, $array['follow_me_destinations'][$x]['follow_me_prompt'] = $this->destination_prompt_3;
$this->destination_prompt_3, $array['follow_me_destinations'][$x]['follow_me_order'] = '3';
'3'
));
$this->destination_order++; $this->destination_order++;
$x++;
} }
if (strlen($this->destination_data_4) > 0) { if (strlen($this->destination_data_4) > 0) {
$stmt->execute(array( $array['follow_me_destinations'][$x]['follow_me_destination_uuid'] = uuid();
uuid(), $array['follow_me_destinations'][$x]['domain_uuid'] = $this->domain_uuid;
$this->domain_uuid, $array['follow_me_destinations'][$x]['follow_me_uuid'] = $this->follow_me_uuid;
$this->follow_me_uuid, $array['follow_me_destinations'][$x]['follow_me_destination'] = $this->destination_data_4;
$this->destination_data_4, $array['follow_me_destinations'][$x]['follow_me_timeout'] = $this->destination_timeout_4;
$this->destination_timeout_4, $array['follow_me_destinations'][$x]['follow_me_delay'] = $this->destination_delay_4;
$this->destination_delay_4, $array['follow_me_destinations'][$x]['follow_me_prompt'] = $this->destination_prompt_4;
$this->destination_prompt_4, $array['follow_me_destinations'][$x]['follow_me_order'] = '4';
'4'
));
$this->destination_order++; $this->destination_order++;
$x++;
} }
if (strlen($this->destination_data_5) > 0) { if (strlen($this->destination_data_5) > 0) {
$stmt->execute(array( $array['follow_me_destinations'][$x]['follow_me_destination_uuid'] = uuid();
uuid(), $array['follow_me_destinations'][$x]['domain_uuid'] = $this->domain_uuid;
$this->domain_uuid, $array['follow_me_destinations'][$x]['follow_me_uuid'] = $this->follow_me_uuid;
$this->follow_me_uuid, $array['follow_me_destinations'][$x]['follow_me_destination'] = $this->destination_data_5;
$this->destination_data_5, $array['follow_me_destinations'][$x]['follow_me_timeout'] = $this->destination_timeout_5;
$this->destination_timeout_5, $array['follow_me_destinations'][$x]['follow_me_delay'] = $this->destination_delay_5;
$this->destination_delay_5, $array['follow_me_destinations'][$x]['follow_me_prompt'] = $this->destination_prompt_5;
$this->destination_prompt_5, $array['follow_me_destinations'][$x]['follow_me_order'] = '5';
'5'
));
$this->destination_order++; $this->destination_order++;
$x++;
} }
unset($stmt); if (is_array($array) && @sizeof($array) != 0) {
} //function //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() { public function set() {
//set the global variable
global $db;
//determine whether to update the dial string //determine whether to update the dial string
$sql = "select * from v_extensions "; $sql = "select * from v_extensions ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' "; $sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and extension_uuid = '".$this->extension_uuid."' "; $sql .= "and extension_uuid = :extension_uuid ";
$prep_statement = $db->prepare(check_sql($sql)); $parameters['domain_uuid'] = $this->domain_uuid;
$prep_statement->execute(); $parameters['extension_uuid'] = $this->extension_uuid;
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $database = new database;
if (is_array($result)) foreach ($result as &$row) { $row = $database->select($sql, $parameters, 'row');
if (is_array($row) && @sizeof($row) != 0) {
$this->extension = $row["extension"]; $this->extension = $row["extension"];
$this->accountcode = $row["accountcode"]; $this->accountcode = $row["accountcode"];
$this->toll_allow = $row["toll_allow"]; $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_name = $row["outbound_caller_id_name"];
$this->outbound_caller_id_number = $row["outbound_caller_id_number"]; $this->outbound_caller_id_number = $row["outbound_caller_id_number"];
} }
unset($sql, $parameters, $row);
//determine whether to update the dial string //determine whether to update the dial string
$sql = "select d.domain_name, f.* from v_follow_me as f, v_domains as d "; $sql = "select d.domain_name, f.* ";
$sql .= "where f.domain_uuid = '".$this->domain_uuid."' "; $sql .= "from v_follow_me as f, v_domains as d ";
$sql .= "and f.follow_me_uuid = '".$this->follow_me_uuid."' "; $sql .= "where f.domain_uuid = :domain_uuid ";
$sql .= "and f.follow_me_uuid = :follow_me_uuid ";
$sql .= "and d.domain_uuid = f.domain_uuid "; $sql .= "and d.domain_uuid = f.domain_uuid ";
$prep_statement = $db->prepare(check_sql($sql)); $parameters['domain_uuid'] = $this->domain_uuid;
$prep_statement->execute(); $parameters['follow_me_uuid'] = $this->follow_me_uuid;
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $database = new database;
if (is_array($result)) { $row = $database->select($sql, $parameters, 'row');
foreach ($result as &$row) { if (is_array($row) && @sizeof($row) != 0) {
$follow_me_uuid = $row["follow_me_uuid"]; $follow_me_uuid = $row["follow_me_uuid"];
$this->domain_name = $row["domain_name"]; $this->domain_name = $row["domain_name"];
$this->follow_me_enabled = $row["follow_me_enabled"]; $this->follow_me_enabled = $row["follow_me_enabled"];
$this->cid_name_prefix = $row["cid_name_prefix"]; $this->cid_name_prefix = $row["cid_name_prefix"];
$this->cid_number_prefix = $row["cid_number_prefix"]; $this->cid_number_prefix = $row["cid_number_prefix"];
}
} }
unset ($prep_statement); unset($sql, $parameters, $row);
//set the extension dial string //set the extension dial string
$sql = "select * from v_follow_me_destinations "; $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 "; $sql .= "order by follow_me_order asc ";
$prep_statement_2 = $db->prepare(check_sql($sql)); $parameters['follow_me_uuid'] = $this->follow_me_uuid;
$prep_statement_2->execute(); $database = new database;
$result = $prep_statement_2->fetchAll(PDO::FETCH_NAMED); $result = $database->select($sql, $parameters, 'all');
/* /*
$dial_string_caller_id_name = "\${effective_caller_id_name}"; $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) { 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 = "select destination_number, destination_description, destination_caller_id_number, destination_caller_id_name ";
$sql_caller .= "from v_destinations "; $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_type = 'inbound' ";
$sql_caller .= "and destination_uuid = '$this->follow_me_caller_id_uuid'"; $sql_caller .= "and destination_uuid = :destination_uuid ";
$prep_statement_caller = $db->prepare($sql_caller); $parameters['domain_uuid'] = $this->domain_uuid;
if ($prep_statement_caller) { $parameters['destination_uuid'] = $this->follow_me_caller_id_uuid;
$prep_statement_caller->execute(); $database = new database;
$row_caller = $prep_statement_caller->fetch(PDO::FETCH_ASSOC); $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']; $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_number = $row_caller['destination_number'];
} }
$caller_id_name = $row_caller['destination_caller_id_name']; $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']; $caller_id_name = $row_caller['destination_description'];
} }
} }
unset($sql_caller, $parameters, $row_caller);
} }
*/ */
$x = 0; $x = 0;
if (is_array($result)) foreach ($result as &$row) { if (is_array($result) && @sizeof($result) != 0) {
if ($x > 0) { foreach ($result as &$row) {
$dial_string .= ","; 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)."''";
} }
$variables[] = "instant_ringback=true"; //determine if the destination is a local sip user
$variables[] = "ignore_early_media=true"; $sql = "select extension, number_alias from v_extensions ";
$variables[] = "domain_uuid=".$this->domain_uuid; $sql .= "where domain_uuid = :domain_uuid ";
$variables[] = "sip_invite_domain=".$this->domain_name; $sql .= "and ( ";
$variables[] = "domain_name=".$this->domain_name; $sql .= "extension = :extension ";
$variables[] = "domain=".$this->domain_name; $sql .= "or number_alias = :number_alias ";
$variables[] = "extension_uuid=".$this->extension_uuid; $sql .= ") ";
$variables[] = "leg_delay_start=".$row["follow_me_delay"]; $parameters['domain_uuid'] = $this->domain_uuid;
$variables[] = "originate_delay_start=".$row["follow_me_delay"]; $parameters['extension'] = $row["follow_me_destination"];
$variables[] = "leg_timeout=".$row["follow_me_timeout"]; $parameters['number_alias'] = $row["follow_me_destination"];
$database = new database;
$dial_string .= "[".implode(",", $variables)."]\${sofia_contact(*/".$row["follow_me_destination"]."@".$this->domain_name.")}"; $field = $database->select($sql, $parameters, 'row');
//$dial_string .= "[".implode(",", $variables)."]user/".$row["follow_me_destination"]."@".$this->domain_name; if (isset($field['extension'])) {
//$dial_string .= "loopback/export:".implode("\,export:", $variables)."\,transfer:".$row["follow_me_destination"]."/".$this->domain_name."/inline"; if (is_numeric($field['extension'])) {
unset($variables); $presence_id = $field['extension'];
}
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"];
} }
else { else {
//$dial_string .= "loopback/".$row["follow_me_destination"]."/".$this->domain_name; $presence_id = $field['number_alias'];
$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";
} }
$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 { 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); //$dial_string = str_replace(",]", "]", $dial_string);
$this->dial_string = "{ignore_early_media=true}".$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 = "select extension_uuid from v_extensions ";
$sql .= "where follow_me_uuid = :follow_me_uuid "; $sql .= "where follow_me_uuid = :follow_me_uuid ";
$database = new database; $database = new database;
$result = $database->execute($sql, $parameters); $result = $database->select($sql, $parameters);
$message = $database->message;
$extension_uuid = $result[0]['extension_uuid']; $extension_uuid = $result[0]['extension_uuid'];
//add the dialplan permission //grant temporary permissions
$p = new permissions; $p = new permissions;
$p->add("follow_me_edit", 'temp'); $p->add("follow_me_edit", 'temp');
$p->add("extension_edit", 'temp'); $p->add("extension_edit", 'temp');
@ -502,7 +503,6 @@ include "root.php";
$database->app_name = 'follow_me'; $database->app_name = 'follow_me';
$database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d'; $database->app_uuid = '19806921-e8ed-dcff-b325-dd3e5da4959d';
$database->save($array); $database->save($array);
$dialplan_response = $database->message;
//remove the temporary permission //remove the temporary permission
$p->delete("follow_me_edit", 'temp'); $p->delete("follow_me_edit", 'temp');

View File

@ -32,15 +32,8 @@ include "root.php";
public $domain_uuid; public $domain_uuid;
private $xml; private $xml;
private $db;
public function __construct() { 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']; $this->domain_uuid = $_SESSION['domain_uuid'];
} }
@ -93,19 +86,20 @@ include "root.php";
//streams //streams
if (is_dir($_SERVER["PROJECT_ROOT"].'/app/streams')) { if (is_dir($_SERVER["PROJECT_ROOT"].'/app/streams')) {
$sql = "select * from v_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 .= "and stream_enabled = 'true' ";
$sql .= "order by stream_name asc "; $sql .= "order by stream_name asc ";
$prep_statement = $this->db->prepare(check_sql($sql)); $parameters['domain_uuid'] = $_SESSION['domain_uuid']
$prep_statement->execute(); $database = new database;
$streams = $prep_statement->fetchAll(PDO::FETCH_NAMED); $streams = $database->select($sql, $parameters, 'all');
if (sizeof($streams) > 0) { if (is_array($streams) && @sizeof($streams) != 0) {
$select .= " <optgroup label='".$text['label-streams']."'>"; $select .= " <optgroup label='".$text['label-streams']."'>";
foreach($streams as $row){ foreach($streams as $row){
$select .= " <option value='".$row['stream_location']."' ".(($selected == $row['stream_location']) ? 'selected="selected"' : null).">".$row['stream_name']."</option>\n"; $select .= " <option value='".$row['stream_location']."' ".(($selected == $row['stream_location']) ? 'selected="selected"' : null).">".$row['stream_name']."</option>\n";
} }
$select .= " </optgroup>\n"; $select .= " </optgroup>\n";
} }
unset($sql, $parameters, $streams, $row);
} }
//add additional options //add additional options
if (sizeof($options) > 0) { if (sizeof($options) > 0) {
@ -125,14 +119,16 @@ include "root.php";
//get moh records, build array //get moh records, build array
$sql = "select "; $sql = "select ";
$sql .= "d.domain_name, m.* "; $sql .= "d.domain_name, ";
$sql .= "m.* ";
$sql .= "from v_music_on_hold as m "; $sql .= "from v_music_on_hold as m ";
$sql .= "left join v_domains as d ON d.domain_uuid = m.domain_uuid "; $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 .= "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 "; $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)); $parameters['domain_uuid'] = $_SESSION['domain_uuid']
$prep_statement->execute(); $database = new database;
return $prep_statement->fetchAll(PDO::FETCH_NAMED); return $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
} }
public function reload() { public function reload() {