mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2025-12-30 09:03:49 +00:00
Add a \ to escape the + in destination number formatted in E.164 format.
This commit is contained in:
@@ -60,6 +60,7 @@ if (file_exists($_SERVER['DOCUMENT_ROOT'].PROJECT_PATH."/app/billing/app_config.
|
||||
$destination_type = check_str($_POST["destination_type"]);
|
||||
$destination_number = check_str($_POST["destination_number"]);
|
||||
$db_destination_number = check_str($_POST["db_destination_number"]);
|
||||
$regex_destination_number = str_replace("+", "\\+", $destination_number);
|
||||
$destination_caller_id_name = check_str($_POST["destination_caller_id_name"]);
|
||||
$destination_caller_id_number = check_str($_POST["destination_caller_id_number"]);
|
||||
$destination_context = check_str($_POST["destination_context"]);
|
||||
|
||||
@@ -735,6 +735,158 @@ include "root.php";
|
||||
}
|
||||
|
||||
function get_xml(){
|
||||
//set the global variables
|
||||
global $db;
|
||||
|
||||
//prepare for dialplan .xml files to be written. delete all dialplan files that are prefixed with dialplan_ and have a file extension of .xml
|
||||
if (count($_SESSION["domains"]) > 1) {
|
||||
$v_needle = 'v_'.$_SESSION['domain_name'].'_';
|
||||
}
|
||||
else {
|
||||
$v_needle = 'v_';
|
||||
}
|
||||
if($dh = opendir($_SESSION['switch']['conf']['dir']."/ivr_menus/")) {
|
||||
$files = Array();
|
||||
while($file = readdir($dh)) {
|
||||
if($file != "." && $file != ".." && $file[0] != '.') {
|
||||
if(is_dir($dir . "/" . $file)) {
|
||||
//this is a directory
|
||||
} else {
|
||||
if (strpos($file, $v_needle) !== false && substr($file,-4) == '.xml') {
|
||||
//echo "file: $file<br />\n";
|
||||
unlink($_SESSION['switch']['conf']['dir']."/ivr_menus/".$file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($dh);
|
||||
}
|
||||
|
||||
$sql = "select * from v_ivr_menus ";
|
||||
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
|
||||
$prep_statement = $db->prepare(check_sql($sql));
|
||||
$prep_statement->execute();
|
||||
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
|
||||
$result_count = count($result);
|
||||
unset ($prep_statement, $sql);
|
||||
if ($result_count > 0) {
|
||||
foreach($result as $row) {
|
||||
$dialplan_uuid = $row["dialplan_uuid"];
|
||||
$ivr_menu_uuid = $row["ivr_menu_uuid"];
|
||||
$ivr_menu_name = check_str($row["ivr_menu_name"]);
|
||||
$ivr_menu_extension = $row["ivr_menu_extension"];
|
||||
$ivr_menu_greet_long = $row["ivr_menu_greet_long"];
|
||||
$ivr_menu_greet_short = $row["ivr_menu_greet_short"];
|
||||
$ivr_menu_invalid_sound = $row["ivr_menu_invalid_sound"];
|
||||
$ivr_menu_exit_sound = $row["ivr_menu_exit_sound"];
|
||||
$ivr_menu_confirm_macro = $row["ivr_menu_confirm_macro"];
|
||||
$ivr_menu_confirm_key = $row["ivr_menu_confirm_key"];
|
||||
$ivr_menu_tts_engine = $row["ivr_menu_tts_engine"];
|
||||
$ivr_menu_tts_voice = $row["ivr_menu_tts_voice"];
|
||||
$ivr_menu_confirm_attempts = $row["ivr_menu_confirm_attempts"];
|
||||
$ivr_menu_timeout = $row["ivr_menu_timeout"];
|
||||
$ivr_menu_exit_app = $row["ivr_menu_exit_app"];
|
||||
$ivr_menu_exit_data = $row["ivr_menu_exit_data"];
|
||||
$ivr_menu_inter_digit_timeout = $row["ivr_menu_inter_digit_timeout"];
|
||||
$ivr_menu_max_failures = $row["ivr_menu_max_failures"];
|
||||
$ivr_menu_max_timeouts = $row["ivr_menu_max_timeouts"];
|
||||
$ivr_menu_digit_len = $row["ivr_menu_digit_len"];
|
||||
$ivr_menu_direct_dial = $row["ivr_menu_direct_dial"];
|
||||
$ivr_menu_enabled = $row["ivr_menu_enabled"];
|
||||
$ivr_menu_description = check_str($row["ivr_menu_description"]);
|
||||
|
||||
//replace space with an underscore
|
||||
$ivr_menu_name = str_replace(" ", "_", $ivr_menu_name);
|
||||
|
||||
//add each IVR menu to the XML config
|
||||
$tmp = "<include>\n";
|
||||
if (strlen($ivr_menu_description) > 0) {
|
||||
$tmp .= " <!-- $ivr_menu_description -->\n";
|
||||
}
|
||||
if (count($_SESSION["domains"]) > 1) {
|
||||
$tmp .= " <menu name=\"".$_SESSION['domains'][$_SESSION['domain_uuid']['domain_name']."-".$ivr_menu_name."\"\n";
|
||||
}
|
||||
else {
|
||||
$tmp .= " <menu name=\"$ivr_menu_name\"\n";
|
||||
}
|
||||
if (stripos($ivr_menu_greet_long, 'mp3') !== false || stripos($ivr_menu_greet_long, 'wav') !== false) {
|
||||
//found wav or mp3
|
||||
$tmp .= " greet-long=\"".$ivr_menu_greet_long."\"\n";
|
||||
}
|
||||
else {
|
||||
//not found
|
||||
$tmp .= " greet-long=\"".$ivr_menu_greet_long."\"\n";
|
||||
}
|
||||
if (stripos($ivr_menu_greet_short, 'mp3') !== false || stripos($ivr_menu_greet_short, 'wav') !== false) {
|
||||
if (strlen($ivr_menu_greet_short) > 0) {
|
||||
$tmp .= " greet-short=\"".$ivr_menu_greet_short."\"\n";
|
||||
}
|
||||
}
|
||||
else {
|
||||
//not found
|
||||
if (strlen($ivr_menu_greet_short) > 0) {
|
||||
$tmp .= " greet-short=\"".$ivr_menu_greet_short."\"\n";
|
||||
}
|
||||
}
|
||||
$tmp .= " invalid-sound=\"$ivr_menu_invalid_sound\"\n";
|
||||
$tmp .= " exit-sound=\"$ivr_menu_exit_sound\"\n";
|
||||
$tmp .= " confirm-macro=\"$ivr_menu_confirm_macro\"\n";
|
||||
$tmp .= " confirm-key=\"$ivr_menu_confirm_key\"\n";
|
||||
$tmp .= " tts-engine=\"$ivr_menu_tts_engine\"\n";
|
||||
$tmp .= " tts-voice=\"$ivr_menu_tts_voice\"\n";
|
||||
$tmp .= " confirm-attempts=\"$ivr_menu_confirm_attempts\"\n";
|
||||
$tmp .= " timeout=\"$ivr_menu_timeout\"\n";
|
||||
$tmp .= " inter-digit-timeout=\"$ivr_menu_inter_digit_timeout\"\n";
|
||||
$tmp .= " max-failures=\"$ivr_menu_max_failures\"\n";
|
||||
$tmp .= " max-timeouts=\"$ivr_menu_max_timeouts\"\n";
|
||||
$tmp .= " digit-len=\"$ivr_menu_digit_len\">\n";
|
||||
|
||||
$sub_sql = "select * from v_ivr_menu_options ";
|
||||
$sub_sql .= "where ivr_menu_uuid = '$ivr_menu_uuid' ";
|
||||
$sub_sql .= "and domain_uuid = '".$_SESSION['domain_uuid']."' ";
|
||||
$sub_sql .= "order by ivr_menu_option_order asc ";
|
||||
$sub_prep_statement = $db->prepare(check_sql($sub_sql));
|
||||
$sub_prep_statement->execute();
|
||||
$sub_result = $sub_prep_statement->fetchAll(PDO::FETCH_ASSOC);
|
||||
foreach ($sub_result as &$sub_row) {
|
||||
//$ivr_menu_uuid = $sub_row["ivr_menu_uuid"];
|
||||
$ivr_menu_option_digits = $sub_row["ivr_menu_option_digits"];
|
||||
$ivr_menu_option_action = $sub_row["ivr_menu_option_action"];
|
||||
$ivr_menu_option_param = $sub_row["ivr_menu_option_param"];
|
||||
$ivr_menu_option_description = $sub_row["ivr_menu_option_description"];
|
||||
|
||||
$tmp .= " <entry action=\"$ivr_menu_option_action\" digits=\"$ivr_menu_option_digits\" param=\"$ivr_menu_option_param\"/>";
|
||||
if (strlen($ivr_menu_option_description) == 0) {
|
||||
$tmp .= "\n";
|
||||
}
|
||||
else {
|
||||
$tmp .= " <!-- $ivr_menu_option_description -->\n";
|
||||
}
|
||||
}
|
||||
unset ($sub_prep_statement, $sub_row);
|
||||
|
||||
if ($ivr_menu_direct_dial == "true") {
|
||||
$tmp .= " <entry action=\"menu-exec-app\" digits=\"/(^\d{3,6}$)/\" param=\"transfer $1 XML ".$_SESSION["context"]."\"/>\n";
|
||||
}
|
||||
$tmp .= " </menu>\n";
|
||||
$tmp .= "</include>\n";
|
||||
|
||||
//remove invalid characters from the file names
|
||||
$ivr_menu_name = str_replace(" ", "_", $ivr_menu_name);
|
||||
$ivr_menu_name = preg_replace("/[\*\:\\/\<\>\|\'\"\?]/", "", $ivr_menu_name);
|
||||
|
||||
//write the file
|
||||
if (count($_SESSION["domains"]) > 1) {
|
||||
$fout = fopen($_SESSION['switch']['conf']['dir']."/ivr_menus/v_".$_SESSION['domains'][$row['domain_uuid']]['domain_name']."_".$ivr_menu_name.".xml","w");
|
||||
}
|
||||
else {
|
||||
$fout = fopen($_SESSION['switch']['conf']['dir']."/ivr_menus/v_".$ivr_menu_name.".xml","w");
|
||||
}
|
||||
fwrite($fout, $tmp);
|
||||
fclose($fout);
|
||||
}
|
||||
}
|
||||
|
||||
return $xml;
|
||||
}
|
||||
|
||||
|
||||
@@ -2694,6 +2694,7 @@
|
||||
<P212>2</P212>
|
||||
<!-- Firmware Server Path -->
|
||||
<!-- String -->
|
||||
<!--<P192>firmware.grandstream.com</P192>-->
|
||||
<P192>{$domain_name}{$project_path}/app/provision</P192>
|
||||
<!-- Config Server Path -->
|
||||
<!-- String -->
|
||||
|
||||
Reference in New Issue
Block a user