2012-06-04 16:58:40 +02:00
< ? php
/*
FusionPBX
Version : MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 ( the " License " ); you may not use this file except in compliance with
the License . You may obtain a copy of the License at
http :// www . mozilla . org / MPL /
Software distributed under the License is distributed on an " AS IS " basis ,
WITHOUT WARRANTY OF ANY KIND , either express or implied . See the License
for the specific language governing rights and limitations under the
License .
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane < markjcrane @ fusionpbx . com >
2014-01-17 19:33:11 +01:00
Copyright ( C ) 2010 - 2014
2012-06-04 16:58:40 +02:00
All Rights Reserved .
Contributor ( s ) :
Mark J Crane < markjcrane @ fusionpbx . com >
2014-06-22 20:38:46 +02:00
Luis Daniel Lucio Quiroz < dlucio @ okay . com . mx >
2015-03-21 10:21:29 +01:00
Errol Samuels < voiptology @ gmail . com >
2012-06-04 16:58:40 +02:00
*/
include " root.php " ;
//define the call_forward class
class call_forward {
2012-12-17 22:30:49 +01:00
public $debug ;
2012-06-04 16:58:40 +02:00
public $domain_uuid ;
2012-12-17 22:30:49 +01:00
public $domain_name ;
2012-12-16 08:39:03 +01:00
public $extension_uuid ;
2012-12-17 22:30:49 +01:00
private $extension ;
2012-12-16 08:39:03 +01:00
public $forward_all_destination ;
public $forward_all_enabled ;
2012-12-17 22:30:49 +01:00
private $dial_string ;
2015-08-14 11:27:47 +02:00
private $toll_allow ;
2013-05-01 20:14:13 +02:00
public $accountcode ;
2015-02-28 05:07:15 +01:00
public $forward_caller_id_uuid ;
2015-06-24 18:49:07 +02:00
public $outbound_caller_id_name ;
public $outbound_caller_id_number ;
2012-06-04 16:58:40 +02:00
2012-12-17 22:30:49 +01:00
public function set () {
//set the global variable
global $db ;
2013-05-01 20:14:13 +02:00
//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 ( count ( $result ) > 0 ) {
foreach ( $result as & $row ) {
$this -> extension = $row [ " extension " ];
$this -> accountcode = $row [ " accountcode " ];
2015-08-14 11:27:47 +02:00
$this -> toll_allow = $row [ " toll_allow " ];
2015-06-24 18:49:07 +02:00
$this -> outbound_caller_id_name = $row [ " outbound_caller_id_name " ];
$this -> outbound_caller_id_number = $row [ " outbound_caller_id_number " ];
2013-05-01 20:14:13 +02:00
}
}
unset ( $prep_statement );
2012-12-17 22:30:49 +01:00
//set the dial string
if ( $this -> forward_all_enabled == " true " ) {
2014-05-30 01:49:17 +02:00
$dial_string = " { presence_id= " . $this -> forward_all_destination . " @ " . $_SESSION [ 'domain_name' ];
$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' ];
2014-08-03 13:05:05 +02:00
$dial_string .= " ,extension_uuid= " . $this -> extension_uuid ;
2015-08-14 11:27:47 +02:00
$dial_string .= " ,toll_allow=' " . $this -> toll_allow . " ' " ;
2013-05-01 20:14:13 +02:00
if ( strlen ( $this -> accountcode ) > 0 ) {
2015-03-21 10:21:29 +01:00
$dial_string .= " ,sip_h_X-accountcode= " . $this -> accountcode ;
2015-03-23 02:53:25 +01:00
$dial_string .= " ,accountcode= " . $this -> accountcode ;
2013-05-01 20:14:13 +02:00
}
2015-02-28 05:07:15 +01:00
if ( strlen ( $this -> forward_caller_id_uuid ) > 0 ){
$sql_caller = " select destination_number, destination_description from v_destinations where domain_uuid = ' $this->domain_uuid ' and destination_type = 'inbound' 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 );
if ( strlen ( $row_caller [ 'destination_description' ]) > 0 ) {
$dial_string_caller_id_name = $row_caller [ 'destination_description' ];
$dial_string .= " ,origination_caller_id_name= $dial_string_caller_id_name " ;
}
if ( strlen ( $row_caller [ 'destination_number' ]) > 0 ) {
$dial_string_caller_id_number = $row_caller [ 'destination_number' ];
$dial_string .= " ,origination_caller_id_number= $dial_string_caller_id_number " ;
2015-03-21 23:49:12 +01:00
$dial_string .= " ,outbound_caller_id_number= $dial_string_caller_id_number " ;
2015-02-28 05:07:15 +01:00
}
}
}
2015-06-24 18:49:07 +02:00
else {
2015-06-29 21:03:06 +02:00
if ( $_SESSION [ 'cdr' ][ 'call_forward_fix' ][ 'boolean' ] == " true " ){
2015-06-29 20:57:03 +02:00
$dial_string .= " ,outbound_caller_id_name= " . $this -> outbound_caller_id_name ;
$dial_string .= " ,outbound_caller_id_number= " . $this -> outbound_caller_id_number ;
$dial_string .= " ,origination_caller_id_name= " . $this -> outbound_caller_id_name ;
$dial_string .= " ,origination_caller_id_number= " . $this -> outbound_caller_id_number ;
}
2015-06-24 18:49:07 +02:00
}
2015-02-28 05:07:15 +01:00
2013-05-01 20:14:13 +02:00
$dial_string .= " } " ;
2013-01-19 18:11:04 +01:00
if ( extension_exists ( $this -> forward_all_destination )) {
2013-12-18 03:04:32 +01:00
$dial_string .= " user/ " . $this -> forward_all_destination . " @ " . $_SESSION [ 'domain_name' ];
2013-01-19 18:11:04 +01:00
}
else {
2015-03-21 23:49:12 +01:00
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 " ) {
2013-01-25 22:57:39 +01:00
$dial_string .= " loopback/ " . $this -> forward_all_destination ;
2015-03-21 23:49:12 +01:00
}
else {
$dial_string .= " loopback/ " . $this -> forward_all_destination ;
}
2013-01-19 18:11:04 +01:00
}
2013-01-25 22:57:39 +01:00
$this -> dial_string = $dial_string ;
2012-12-17 22:30:49 +01:00
}
else {
$this -> dial_string = '' ;
}
//update the extension
$sql = " update v_extensions set " ;
2014-09-13 12:01:41 +02:00
if ( strlen ( $this -> forward_all_destination ) == 0 || $this -> forward_all_enabled == " false " ) {
2014-11-18 11:38:11 +01:00
if ( strlen ( $this -> forward_all_destination ) == 0 ) {
$sql .= " forward_all_destination = null, " ;
}
2014-09-13 12:01:41 +02:00
$sql .= " dial_string = null, " ;
2014-10-29 14:35:18 +01:00
$sql .= " forward_all_enabled = 'false' " ;
2014-09-13 12:01:41 +02:00
}
else {
$sql .= " forward_all_destination = ' $this->forward_all_destination ', " ;
2015-08-14 11:27:47 +02:00
$sql .= " dial_string = ' " . check_str ( $this -> dial_string ) . " ', " ;
2014-09-13 12:01:41 +02:00
$sql .= " forward_all_enabled = 'true' " ;
}
2012-12-17 22:30:49 +01:00
$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 );
//delete extension from memcache
2013-01-15 23:56:40 +01:00
$fp = event_socket_create ( $_SESSION [ 'event_socket_ip_address' ], $_SESSION [ 'event_socket_port' ], $_SESSION [ 'event_socket_password' ]);
if ( $fp ) {
2013-01-16 01:26:48 +01:00
$switch_cmd = " memcache delete directory: " . $this -> extension . " @ " . $this -> domain_name ;
2013-01-15 23:56:40 +01:00
$switch_result = event_socket_request ( $fp , 'api ' . $switch_cmd );
2012-12-17 22:30:49 +01:00
}
} //function
} //class
2012-06-04 16:58:40 +02:00
2013-12-18 03:04:32 +01:00
?>