mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2025-12-30 09:03:49 +00:00
Update call_forward.php
This commit is contained in:
@@ -66,108 +66,6 @@ include "root.php";
|
||||
}
|
||||
unset ($prep_statement);
|
||||
|
||||
//set the dial string
|
||||
if ($this->forward_all_enabled == "true") {
|
||||
$dial_string = "{instant_ringback=true";
|
||||
$dial_string .= ",domain_uuid=".$_SESSION['domain_uuid'];
|
||||
$dial_string .= ",sip_invite_domain=".$_SESSION['domain_name'];
|
||||
$dial_string .= ",domain_name=".$_SESSION['domain_name'];
|
||||
$dial_string .= ",domain=".$_SESSION['domain_name'];
|
||||
$dial_string .= ",extension_uuid=".$this->extension_uuid;
|
||||
$dial_string .= ",toll_allow='".$this->toll_allow."'";
|
||||
$dial_string .=",sip_h_Diversion=<sip:".$this->extension."@".$_SESSION['domain_name'].">;reason=unconditional";
|
||||
if (strlen($this->accountcode) == 0) {
|
||||
$dial_string .= ",sip_h_X-accountcode=\${accountcode}";
|
||||
}
|
||||
else {
|
||||
$dial_string .= ",sip_h_X-accountcode=".$this->accountcode;
|
||||
$dial_string .= ",accountcode=".$this->accountcode;
|
||||
}
|
||||
|
||||
if (strlen($this->forward_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 .= "and destination_type = 'inbound' ";
|
||||
$sql_caller .= "and destination_uuid = '$this->forward_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);
|
||||
|
||||
$caller_id_number = $row_caller['destination_caller_id_number'];
|
||||
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){
|
||||
$caller_id_name = $row_caller['destination_description'];
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ($_SESSION['cdr']['call_forward_fix']['boolean'] === "true") {
|
||||
if (strlen($this->outbound_caller_id_name) > 0) {
|
||||
$dial_string .= ",origination_caller_id_name=".$this->cid_name_prefix.$this->outbound_caller_id_name;
|
||||
}
|
||||
if (strlen($this->outbound_caller_id_number) > 0) {
|
||||
$dial_string .= ",origination_caller_id_number=".$this->cid_number_prefix.$this->outbound_caller_id_number;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (extension_exists($this->forward_all_destination)) {
|
||||
// For support load_balance we need set `dialed_extension`
|
||||
$dial_string .= ",dialed_extension=".$this->forward_all_destination;
|
||||
// we do not need here presence_id because user dial-string already has one
|
||||
$dial_string .= "}";
|
||||
$dial_string .= "user/".$this->forward_all_destination."@".$_SESSION['domain_name'];
|
||||
}
|
||||
else {
|
||||
// setting here presence_id equal extension not dialed number allows work BLF and intercept.
|
||||
$presence_id = extension_presence_id($this->extension, $this->number_alias);
|
||||
|
||||
if (strlen($caller_id_number) > 0) {
|
||||
//set the caller id if it is set
|
||||
if (strlen($caller_id_name) > 0) {
|
||||
$dial_string .= ",origination_caller_id_name=".$caller_id_name;
|
||||
$dial_string .= ",effective_caller_id_name=".$caller_id_name;
|
||||
}
|
||||
$dial_string .= ",origination_caller_id_number=".$caller_id_number;
|
||||
$dial_string .= ",effective_caller_id_number=".$caller_id_number;
|
||||
}
|
||||
else {
|
||||
//set the outbound caller id number if the caller id number is a user
|
||||
$dial_string .=',origination_caller_id_number=${cond(${from_user_exists} == true ? ${outbound_caller_id_number} : ${origination_caller_id_number})}';
|
||||
$dial_string .=',effective_caller_id_number=${cond(${from_user_exists} == true ? ${outbound_caller_id_number} : ${effective_caller_id_number})}';
|
||||
$dial_string .=',origination_caller_id_name=${cond(${from_user_exists} == true ? ${outbound_caller_id_name} : ${origination_caller_id_name})}';
|
||||
$dial_string .=',effective_caller_id_name=${cond(${from_user_exists} == true ? ${outbound_caller_id_name} : ${effective_caller_id_name})}';
|
||||
}
|
||||
|
||||
// $presence_id = $this->forward_all_destination;
|
||||
$dial_string .= ",presence_id=".$presence_id."@".$_SESSION['domain_name'];
|
||||
$dial_string .= "}";
|
||||
|
||||
if ($_SESSION['domain']['bridge']['text'] == "outbound" || $_SESSION['domain']['bridge']['text'] == "bridge") {
|
||||
$bridge = outbound_route_to_bridge ($_SESSION['domain_uuid'], $this->forward_all_destination);
|
||||
$dial_string .= $bridge[0];
|
||||
}
|
||||
elseif ($_SESSION['domain']['bridge']['text'] == "lcr") {
|
||||
$dial_string .= "lcr/".$_SESSION['lcr']['profile']['text']."/".$_SESSION['domain_name']."/".$this->forward_all_destination;
|
||||
}
|
||||
elseif ($_SESSION['domain']['bridge']['text'] === "loopback") {
|
||||
$dial_string .= "loopback/".$this->forward_all_destination;
|
||||
}
|
||||
else {
|
||||
$dial_string .= "loopback/".$this->forward_all_destination;
|
||||
}
|
||||
}
|
||||
$this->dial_string = $dial_string;
|
||||
}
|
||||
else {
|
||||
$this->dial_string = '';
|
||||
}
|
||||
|
||||
//update the extension
|
||||
$sql = "update v_extensions set ";
|
||||
if (strlen($this->forward_all_destination) == 0) {
|
||||
@@ -192,7 +90,7 @@ include "root.php";
|
||||
$db->exec(check_sql($sql));
|
||||
unset($sql);
|
||||
|
||||
//delete extension from memcache
|
||||
//delete extension from the cache
|
||||
$cache = new cache;
|
||||
$cache->delete("directory:".$this->extension."@".$this->domain_name);
|
||||
if(strlen($this->number_alias) > 0){
|
||||
|
||||
Reference in New Issue
Block a user