Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane Luis Daniel Lucio Quiroz */ //includes require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; require_once "resources/classes/logging.php"; require_once "resources/classes/ringbacks.php"; //check permissions if (permission_exists('ivr_menu_add') || permission_exists('ivr_menu_edit')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //initialize the destinations object $destination = new destinations; //action add or update if (is_uuid($_REQUEST["id"]) || is_uuid($_REQUEST["ivr_menu_uuid"])) { $action = "update"; $ivr_menu_uuid = $_REQUEST["id"]; if (is_uuid($_REQUEST["ivr_menu_uuid"])) { $ivr_menu_uuid = $_REQUEST["ivr_menu_uuid"]; } } else { $action = "add"; } //get total ivr menu count from the database, check limit, if defined if (is_numeric($_SESSION['limit']['ivr_menus']['numeric'])) { $sql = "select count(*) as num_rows from v_ivr_menus where domain_uuid = :domain_uuid "; $parameters['domain_uuid'] = $domain_uuid; $database = new database; $total_ivr_menus = $database->select($sql, $parameters, 'column'); unset($sql, $parameters); if ($action == 'add' && $total_ivr_menus >= $_SESSION['limit']['ivr_menus']['numeric']) { message::add($text['message-maximum_ivr_menus'].' '.$_SESSION['limit']['ivr_menus']['numeric'], 'negative'); header('Location: ivr_menus.php'); exit; } } //get http post values and set them to php variables if (count($_POST) > 0) { //process the http post data by submitted action if ($_POST['action'] != '' && is_uuid($_POST['ivr_menu_uuid'])) { $array[0]['checked'] = 'true'; $array[0]['uuid'] = $_POST['ivr_menu_uuid']; switch ($_POST['action']) { case 'copy': if (permission_exists('ivr_menu_add')) { $obj = new ivr_menu; $obj->copy($array); } break; case 'delete': if (permission_exists('ivr_menu_delete')) { $obj = new ivr_menu; $obj->delete($array); } break; } header('Location: ivr_menus.php'); exit; } //get ivr menu $ivr_menu_name = $_POST["ivr_menu_name"]; $ivr_menu_extension = $_POST["ivr_menu_extension"]; $ivr_menu_parent_uuid = $_POST["ivr_menu_parent_uuid"]; $ivr_menu_greet_long = $_POST["ivr_menu_greet_long"]; $ivr_menu_greet_short = $_POST["ivr_menu_greet_short"]; $ivr_menu_language = $_POST["ivr_menu_language"]; $ivr_menu_options = $_POST["ivr_menu_options"]; $ivr_menu_invalid_sound = $_POST["ivr_menu_invalid_sound"]; $ivr_menu_exit_sound = $_POST["ivr_menu_exit_sound"]; $ivr_menu_pin_number = $_POST["ivr_menu_pin_number"]; $ivr_menu_confirm_macro = $_POST["ivr_menu_confirm_macro"]; $ivr_menu_confirm_key = $_POST["ivr_menu_confirm_key"]; $ivr_menu_tts_engine = $_POST["ivr_menu_tts_engine"]; $ivr_menu_tts_voice = $_POST["ivr_menu_tts_voice"]; $ivr_menu_confirm_attempts = $_POST["ivr_menu_confirm_attempts"]; $ivr_menu_timeout = $_POST["ivr_menu_timeout"]; $ivr_menu_inter_digit_timeout = $_POST["ivr_menu_inter_digit_timeout"]; $ivr_menu_max_failures = $_POST["ivr_menu_max_failures"]; $ivr_menu_max_timeouts = $_POST["ivr_menu_max_timeouts"]; $ivr_menu_digit_len = $_POST["ivr_menu_digit_len"]; $ivr_menu_direct_dial = $_POST["ivr_menu_direct_dial"]; $ivr_menu_ringback = $_POST["ivr_menu_ringback"]; $ivr_menu_cid_prefix = $_POST["ivr_menu_cid_prefix"]; $ivr_menu_enabled = $_POST["ivr_menu_enabled"]; $ivr_menu_description = $_POST["ivr_menu_description"]; $ivr_menu_options_delete = $_POST["ivr_menu_options_delete"]; $dialplan_uuid = $_POST["dialplan_uuid"]; //set the context for users that do not have the permission if (permission_exists('ivr_menu_context')) { $ivr_menu_context = $_POST["ivr_menu_context"]; } else if ($action == 'add') { $ivr_menu_context = $_SESSION['domain_name']; } //process the values $ivr_menu_exit_action = $_POST["ivr_menu_exit_action"]; //$ivr_menu_exit_action = "transfer:1001 XML default"; $timeout_action_array = explode(":", $ivr_menu_exit_action); $ivr_menu_exit_app = array_shift($timeout_action_array); $ivr_menu_exit_data = join(':', $timeout_action_array); //set the default ivr_menu_option_action if (strlen($ivr_menu_option_action) == 0) { $ivr_menu_option_action = "menu-exec-app"; } } //process the http data if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { //set the domain_uuid if (permission_exists('ivr_menu_domain')) { $domain_uuid = $_POST["domain_uuid"]; } else { $_POST["domain_uuid"] = $_SESSION['domain_uuid']; $domain_uuid = $_SESSION['domain_uuid']; } //if the user doesn't have the correct permission then //override domain_uuid and ivr_menu_context values if ($action == 'update' && is_uuid($ivr_menu_uuid)) { $sql = "select * from v_ivr_menus "; $sql .= "where ivr_menu_uuid = :ivr_menu_uuid "; $parameters['ivr_menu_uuid'] = $ivr_menu_uuid; $database = new database; $row = $database->select($sql, $parameters, 'row'); if (is_array($row) && @sizeof($row) != 0) { if (!permission_exists('ivr_menu_domain')) { $domain_uuid = $row["domain_uuid"]; } if (!permission_exists('ivr_menu_context')) { $ivr_menu_context = $row["ivr_menu_context"]; } } unset($sql, $parameters, $row); } //validate the token $token = new token; if (!$token->validate($_SERVER['PHP_SELF'])) { message::add($text['message-invalid_token'],'negative'); header('Location: ivr_menus.php'); exit; } //check for all required data $msg = ''; if (strlen($ivr_menu_name) == 0) { $msg .= $text['message-required'].$text['label-name']."
\n"; } if (strlen($ivr_menu_extension) == 0) { $msg .= $text['message-required'].$text['label-extension']."
\n"; } if (strlen($ivr_menu_greet_long) == 0) { $msg .= $text['message-required'].$text['label-greet_long']."
\n"; } //if (strlen($ivr_menu_greet_short) == 0) { $msg .= $text['message-required'].$text['label-greet_short']."
\n"; } //if (strlen($ivr_menu_invalid_sound) == 0) { $msg .= $text['message-required'].$text['label-invalid_sound']."
\n"; } //if (strlen($ivr_menu_exit_sound) == 0) { $msg .= $text['message-required'].$text['label-exit_sound']."
\n"; } //if (strlen($ivr_menu_confirm_macro) == 0) { $msg .= $text['message-required'].$text['label-comfirm_macro']."
\n"; } //if (strlen($ivr_menu_confirm_key) == 0) { $msg .= $text['message-required'].$text['label-comfirm_key']."
\n"; } //if (strlen($ivr_menu_tts_engine) == 0) { $msg .= $text['message-required'].$text['label-tts_engine']."
\n"; } //if (strlen($ivr_menu_tts_voice) == 0) { $msg .= $text['message-required'].$text['label-tts_voice']."
\n"; } if (strlen($ivr_menu_confirm_attempts) == 0) { $msg .= $text['message-required'].$text['label-comfirm_attempts']."
\n"; } if (strlen($ivr_menu_timeout) == 0) { $msg .= $text['message-required'].$text['label-timeout']."
\n"; } //if (strlen($ivr_menu_exit_app) == 0) { $msg .= $text['message-required'].$text['label-exit_action']."
\n"; } if (strlen($ivr_menu_inter_digit_timeout) == 0) { $msg .= $text['message-required'].$text['label-inter_digit_timeout']."
\n"; } if (strlen($ivr_menu_max_failures) == 0) { $msg .= $text['message-required'].$text['label-max_failures']."
\n"; } if (strlen($ivr_menu_max_timeouts) == 0) { $msg .= $text['message-required'].$text['label-max_timeouts']."
\n"; } if (strlen($ivr_menu_digit_len) == 0) { $msg .= $text['message-required'].$text['label-digit_length']."
\n"; } if (strlen($ivr_menu_direct_dial) == 0) { $msg .= $text['message-required'].$text['label-direct_dial']."
\n"; } //if (strlen($ivr_menu_ringback) == 0) { $msg .= $text['message-required'].$text['label-ring_back']."
\n"; } //if (strlen($ivr_menu_description) == 0) { $msg .= $text['message-required'].$text['label-description']."
\n"; } if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) { require_once "resources/header.php"; require_once "resources/persist_form_var.php"; echo "
\n"; echo "
\n"; echo $msg."
"; echo "
\n"; persistformvar($_POST); echo "
\n"; require_once "resources/footer.php"; return; } //add or update the database if ($_POST["persistformvar"] != "true") { //used for debugging if ($_POST["debug"] == "true") { unset($_POST["debug"]); echo "
\n";
						print_r($_POST);
						echo "
\n"; exit; } //add a uuid to ivr_menu_uuid if it is empty if ($action == 'add') { $ivr_menu_uuid = uuid(); } //add a uuid to dialplan_uuid if it is empty if (!is_uuid($dialplan_uuid)) { $dialplan_uuid = uuid(); } //seperate the language components into language, dialect and voice $language_array = explode("/",$ivr_menu_language); $ivr_menu_language = $language_array[0]; $ivr_menu_dialect = $language_array[1]; $ivr_menu_voice = $language_array[2]; //prepare the array $array['ivr_menus'][0]["ivr_menu_uuid"] = $ivr_menu_uuid; $array['ivr_menus'][0]["domain_uuid"] = $domain_uuid; $array['ivr_menus'][0]["dialplan_uuid"] = $dialplan_uuid; $array['ivr_menus'][0]["ivr_menu_name"] = $ivr_menu_name; $array['ivr_menus'][0]["ivr_menu_extension"] = $ivr_menu_extension; $array['ivr_menus'][0]["ivr_menu_parent_uuid"] = $ivr_menu_parent_uuid; $array['ivr_menus'][0]["ivr_menu_language"] = $ivr_menu_language; $array['ivr_menus'][0]["ivr_menu_dialect"] = $ivr_menu_dialect; $array['ivr_menus'][0]["ivr_menu_voice"] = $ivr_menu_voice; $array['ivr_menus'][0]["ivr_menu_greet_long"] = $ivr_menu_greet_long; $array['ivr_menus'][0]["ivr_menu_greet_short"] = $ivr_menu_greet_short; $array['ivr_menus'][0]["ivr_menu_invalid_sound"] = $ivr_menu_invalid_sound; $array['ivr_menus'][0]["ivr_menu_exit_sound"] = $ivr_menu_exit_sound; $array['ivr_menus'][0]["ivr_menu_pin_number"] = $ivr_menu_pin_number; $array['ivr_menus'][0]["ivr_menu_confirm_macro"] = $ivr_menu_confirm_macro; $array['ivr_menus'][0]["ivr_menu_confirm_key"] = $ivr_menu_confirm_key; $array['ivr_menus'][0]["ivr_menu_tts_engine"] = $ivr_menu_tts_engine; $array['ivr_menus'][0]["ivr_menu_tts_voice"] = $ivr_menu_tts_voice; $array['ivr_menus'][0]["ivr_menu_confirm_attempts"] = $ivr_menu_confirm_attempts; $array['ivr_menus'][0]["ivr_menu_timeout"] = $ivr_menu_timeout; if ($destination->valid($ivr_menu_exit_app.":".$ivr_menu_exit_data)) { $array['ivr_menus'][0]["ivr_menu_exit_app"] = $ivr_menu_exit_app; $array['ivr_menus'][0]["ivr_menu_exit_data"] = $ivr_menu_exit_data; } else { $ivr_menu_exit_app = ""; } $array['ivr_menus'][0]["ivr_menu_inter_digit_timeout"] = $ivr_menu_inter_digit_timeout; $array['ivr_menus'][0]["ivr_menu_max_failures"] = $ivr_menu_max_failures; $array['ivr_menus'][0]["ivr_menu_max_timeouts"] = $ivr_menu_max_timeouts; $array['ivr_menus'][0]["ivr_menu_digit_len"] = $ivr_menu_digit_len; $array['ivr_menus'][0]["ivr_menu_direct_dial"] = $ivr_menu_direct_dial; $array['ivr_menus'][0]["ivr_menu_ringback"] = $ivr_menu_ringback; $array['ivr_menus'][0]["ivr_menu_cid_prefix"] = $ivr_menu_cid_prefix; $array['ivr_menus'][0]["ivr_menu_context"] = $ivr_menu_context; $array['ivr_menus'][0]["ivr_menu_enabled"] = $ivr_menu_enabled; $array['ivr_menus'][0]["ivr_menu_description"] = $ivr_menu_description; $y = 0; foreach ($ivr_menu_options as $row) { if (strlen($row['ivr_menu_option_digits']) > 0) { if (is_uuid($row['ivr_menu_option_uuid'])) { $ivr_menu_option_uuid = $row['ivr_menu_option_uuid']; } else { $ivr_menu_option_uuid = uuid(); } if (is_numeric($row["ivr_menu_option_param"])) { //add the ivr menu syntax $ivr_menu_option_action = "menu-exec-app"; $ivr_menu_option_param = "transfer ".$row["ivr_menu_option_param"]." XML ".$ivr_menu_context; } else { //seperate the action and the param $options_array = explode(":", $row["ivr_menu_option_param"]); $ivr_menu_option_action = array_shift($options_array); $ivr_menu_option_param = join(':', $options_array); } $array['ivr_menus'][0]['ivr_menu_options'][$y]["domain_uuid"] = $domain_uuid; $array['ivr_menus'][0]['ivr_menu_options'][$y]["ivr_menu_uuid"] = $ivr_menu_uuid; $array['ivr_menus'][0]['ivr_menu_options'][$y]["ivr_menu_option_uuid"] = $ivr_menu_option_uuid; $array['ivr_menus'][0]['ivr_menu_options'][$y]["ivr_menu_option_digits"] = $row["ivr_menu_option_digits"]; $array['ivr_menus'][0]['ivr_menu_options'][$y]["ivr_menu_option_action"] = $ivr_menu_option_action; if ($destination->valid($ivr_menu_option_action.":".$ivr_menu_option_param, 'ivr')) { $array['ivr_menus'][0]['ivr_menu_options'][$y]["ivr_menu_option_param"] = $ivr_menu_option_param; } $array['ivr_menus'][0]['ivr_menu_options'][$y]["ivr_menu_option_order"] = $row["ivr_menu_option_order"]; $array['ivr_menus'][0]['ivr_menu_options'][$y]["ivr_menu_option_description"] = $row["ivr_menu_option_description"]; $y++; } } //build the xml dialplan $dialplan_xml = "\n"; $dialplan_xml .= " \n"; $dialplan_xml .= " \n"; $dialplan_xml .= " \n"; $dialplan_xml .= " \n"; $dialplan_xml .= " \n"; $dialplan_xml .= " \n"; if (strlen($ivr_menu_language) > 0) { $dialplan_xml .= " \n"; $dialplan_xml .= " \n"; $dialplan_xml .= " \n"; } $dialplan_xml .= " \n"; $dialplan_xml .= " \n"; if ($_SESSION['ivr_menu']['application']['text'] == "lua") { $dialplan_xml .= " \n"; } else { if (strlen($ivr_menu_cid_prefix) > 0) { $dialplan_xml .= " \n"; $dialplan_xml .= " \n"; } $dialplan_xml .= " \n"; } if (strlen($ivr_menu_exit_app) > 0) { $dialplan_xml .= " \n"; } $dialplan_xml .= " \n"; $dialplan_xml .= "\n"; //build the dialplan array $array['dialplans'][0]["domain_uuid"] = $domain_uuid; $array['dialplans'][0]["dialplan_uuid"] = $dialplan_uuid; $array['dialplans'][0]["dialplan_name"] = $ivr_menu_name; $array['dialplans'][0]["dialplan_number"] = $ivr_menu_extension; if (isset($ivr_menu_context)) { $array['dialplans'][0]["dialplan_context"] = $ivr_menu_context; } $array['dialplans'][0]["dialplan_continue"] = "false"; $array['dialplans'][0]["dialplan_xml"] = $dialplan_xml; $array['dialplans'][0]["dialplan_order"] = "101"; $array['dialplans'][0]["dialplan_enabled"] = $ivr_menu_enabled; $array['dialplans'][0]["dialplan_description"] = $ivr_menu_description; $array['dialplans'][0]["app_uuid"] = "a5788e9b-58bc-bd1b-df59-fff5d51253ab"; //add the dialplan permission $p = new permissions; if ($action == "add") { $p->add("dialplan_add", "temp"); } else if ($action == "update") { $p->add("dialplan_edit", "temp"); } //save to the data $database = new database; $database->app_name = 'ivr_menus'; $database->app_uuid = 'a5788e9b-58bc-bd1b-df59-fff5d51253ab'; $database->save($array); //$message = $database->message; //remove the temporary permission $p->delete("dialplan_add", "temp"); $p->delete("dialplan_edit", "temp"); //remove checked options if ( $action == 'update' && permission_exists('ivr_menu_option_delete') && is_array($ivr_menu_options_delete) && @sizeof($ivr_menu_options_delete) != 0 ) { $obj = new ivr_menu; $obj->ivr_menu_uuid = $ivr_menu_uuid; $obj->delete_options($ivr_menu_options_delete); } //clear the cache $cache = new cache; $cache->delete("dialplan:".$_SESSION["context"]); $cache->delete("configuration:ivr.conf:".$ivr_menu_uuid); //get all ivr parent menus $sql = "with recursive ivr_menus as ( "; $sql .=" select ivr_menu_parent_uuid "; $sql .=" from v_ivr_menus "; $sql .=" where ivr_menu_parent_uuid = :ivr_menu_parent_uuid "; $sql .=" and ivr_menu_enabled = 'true' "; $sql .=" union all "; $sql .=" select parent.ivr_menu_parent_uuid "; $sql .=" from v_ivr_menus as parent, ivr_menus as child "; $sql .=" where parent.ivr_menu_uuid = child.ivr_menu_parent_uuid "; $sql .=" and parent.ivr_menu_enabled = 'true' "; $sql .=" ) "; $sql .=" select * from ivr_menus "; $parameters['ivr_menu_parent_uuid'] = $ivr_menu_parent_uuid; $database = new database; $parent_uuids = $database->select($sql, $parameters, "all"); foreach ($parent_uuids as $x => $row) { $cache->delete("configuration:ivr.conf:".$row['ivr_menu_parent_uuid']); } //set the add message if ($action == "add" && permission_exists('ivr_menu_add')) { message::add($text['message-add']); } //set the update message if ($action == "update" && permission_exists('ivr_menu_edit')) { message::add($text['message-update']); } //redirect the user header("Location: ivr_menu_edit.php?id=".urlencode($ivr_menu_uuid)); return; } } //pre-populate the form if (!is_uuid($ivr_menu_uuid)) { $ivr_menu_uuid = $_REQUEST["id"]; } if (is_uuid($ivr_menu_uuid) && $_POST["persistformvar"] != "true") { $ivr = new ivr_menu; $ivr->domain_uuid = $_SESSION["domain_uuid"]; $ivr->ivr_menu_uuid = $ivr_menu_uuid; $ivr_menus = $ivr->find(); if (is_array($ivr_menus)) { foreach ($ivr_menus as &$row) { $dialplan_uuid = $row["dialplan_uuid"]; $ivr_menu_name = $row["ivr_menu_name"]; $ivr_menu_extension = $row["ivr_menu_extension"]; $ivr_menu_parent_uuid = $row["ivr_menu_parent_uuid"]; $ivr_menu_language = $row["ivr_menu_language"]; $ivr_menu_dialect = $row["ivr_menu_dialect"]; $ivr_menu_voice = $row["ivr_menu_voice"]; $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_pin_number = $row["ivr_menu_pin_number"]; $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_ringback = $row["ivr_menu_ringback"]; $ivr_menu_cid_prefix = $row["ivr_menu_cid_prefix"]; $ivr_menu_context = $row["ivr_menu_context"]; $ivr_menu_enabled = $row["ivr_menu_enabled"]; $ivr_menu_description = $row["ivr_menu_description"]; //replace the dash with a space $ivr_menu_name = str_replace("-", " ", $ivr_menu_name); if (strlen($ivr_menu_exit_app) > 0) { $ivr_menu_exit_action = $ivr_menu_exit_app.":".$ivr_menu_exit_data; } } } unset($ivr_menus, $row); } //get the ivr menu options $sql = "select * from v_ivr_menu_options "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and ivr_menu_uuid = :ivr_menu_uuid "; $sql .= "order by ivr_menu_option_digits, ivr_menu_option_order asc "; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $parameters['ivr_menu_uuid'] = $ivr_menu_uuid; $database = new database; $ivr_menu_options = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); //get the ivr menus $sql = "select * from v_ivr_menus "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "order by v_ivr_menus asc "; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $database = new database; $ivr_menus = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); //add an empty row to the options array if (count($ivr_menu_options) == 0) { $rows = $_SESSION['ivr_menu']['option_add_rows']['numeric']; $id = 0; $show_option_delete = false; } if (count($ivr_menu_options) > 0) { $rows = $_SESSION['ivr_menu']['option_edit_rows']['numeric']; $id = count($ivr_menu_options)+1; $show_option_delete = true; } for ($x = 0; $x < $rows; $x++) { $ivr_menu_options[$id]['ivr_menu_option_digits'] = ''; $ivr_menu_options[$id]['ivr_menu_option_action'] = ''; $ivr_menu_options[$id]['ivr_menu_option_param'] = ''; $ivr_menu_options[$id]['ivr_menu_option_order'] = ''; $ivr_menu_options[$id]['ivr_menu_option_description'] = ''; $id++; } //set the defaults if (strlen($ivr_menu_timeout) == 0) { $ivr_menu_timeout = '3000'; } if (strlen($ivr_menu_ringback) == 0) { $ivr_menu_ringback = 'local_stream://default'; } if (strlen($ivr_menu_invalid_sound) == 0) { $ivr_menu_invalid_sound = 'ivr/ivr-that_was_an_invalid_entry.wav'; } //if (strlen($ivr_menu_confirm_key) == 0) { $ivr_menu_confirm_key = '#'; } if (strlen($ivr_menu_tts_engine) == 0) { $ivr_menu_tts_engine = 'flite'; } if (strlen($ivr_menu_tts_voice) == 0) { $ivr_menu_tts_voice = 'rms'; } if (strlen($ivr_menu_confirm_attempts) == 0) { if (strlen($_SESSION['ivr_menu']['confirm_attempts']['numeric']) > 0) { $ivr_menu_confirm_attempts = $_SESSION['ivr_menu']['confirm_attempts']['numeric']; } else { $ivr_menu_confirm_attempts = '1'; } } if (strlen($ivr_menu_inter_digit_timeout) == 0) { if (strlen($_SESSION['ivr_menu']['inter_digit_timeout']['numeric']) > 0) { $ivr_menu_inter_digit_timeout = $_SESSION['ivr_menu']['inter_digit_timeout']['numeric']; } else { $ivr_menu_inter_digit_timeout = '2000'; } } if (strlen($ivr_menu_max_failures) == 0) { if (strlen($_SESSION['ivr_menu']['max_failures']['numeric']) > 0) { $ivr_menu_max_failures = $_SESSION['ivr_menu']['max_failures']['numeric']; } else { $ivr_menu_max_failures = '1'; } } if (strlen($ivr_menu_max_timeouts) == 0) { if (strlen($_SESSION['ivr_menu']['max_timeouts']['numeric']) > 0) { $ivr_menu_max_timeouts = $_SESSION['ivr_menu']['max_timeouts']['numeric']; } else { $ivr_menu_max_timeouts = '1'; } } if (strlen($ivr_menu_digit_len) == 0) { $ivr_menu_digit_len = '5'; } if (strlen($ivr_menu_direct_dial) == 0) { $ivr_menu_direct_dial = 'false'; } if (!isset($ivr_menu_context)) { $ivr_menu_context = $_SESSION['domain_name']; } if (strlen($ivr_menu_enabled) == 0) { $ivr_menu_enabled = 'true'; } if (!isset($ivr_menu_exit_action)) { $ivr_menu_exit_action = ''; } //get installed languages $language_paths = glob($_SESSION["switch"]['sounds']['dir']."/*/*/*"); foreach ($language_paths as $key => $path) { $path = str_replace($_SESSION["switch"]['sounds']['dir'].'/', "", $path); $path_array = explode('/', $path); if (count($path_array) <> 3 || strlen($path_array[0]) <> 2 || strlen($path_array[1]) <> 2) { unset($language_paths[$key]); } $language_paths[$key] = str_replace($_SESSION["switch"]['sounds']['dir']."/","",$language_paths[$key]); if (strlen($language_paths[$key]) == 0) { unset($language_paths[$key]); } } //get the recordings $sql = "select recording_name, recording_filename from v_recordings "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "order by recording_name asc "; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $database = new database; $recordings = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); //get the phrases $sql = "select * from v_phrases "; $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) "; $parameters['domain_uuid'] = $domain_uuid; $database = new database; $phrases = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); //get the sound files $file = new file; $sound_files = $file->sounds($ivr_menu_language, $ivr_menu_dialect, $ivr_menu_voice); //create token $object = new token; $token = $object->create($_SERVER['PHP_SELF']); //included the header $document['title'] = $text['title-ivr_menu']; require_once "resources/header.php"; //show the content echo ""; echo "
\n"; echo "
\n"; echo "
".$text['header-ivr_menu']."
\n"; echo "
\n"; echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','link'=>'ivr_menus.php']); if ($action == "update") { $button_margin = 'margin-left: 15px;'; if (permission_exists('ivr_menu_add') && (!is_numeric($_SESSION['limit']['ivr_menus']['numeric']) || $total_ivr_menus < $_SESSION['limit']['ivr_menus']['numeric'])) { echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'name'=>'btn_copy','style'=>$button_margin,'onclick'=>"modal_open('modal-copy','btn_copy');"]); unset($button_margin); } if (permission_exists('ivr_menu_delete') || permission_exists('ivr_menu_option_delete')) { echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'name'=>'btn_delete','style'=>$button_margin,'onclick'=>"modal_open('modal-delete','btn_delete');"]); unset($button_margin); } } echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','style'=>'margin-left: 15px']); echo "
\n"; echo "
\n"; echo "
\n"; if ($action == "update") { if (permission_exists('ivr_menu_add') && (!is_numeric($_SESSION['limit']['ivr_menus']['numeric']) || $total_ivr_menus < $_SESSION['limit']['ivr_menus']['numeric'])) { echo modal::create(['id'=>'modal-copy','type'=>'copy','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_copy','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'copy','onclick'=>"modal_close();"])]); } if (permission_exists('ivr_menu_delete') || permission_exists('ivr_menu_option_delete')) { echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'submit','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','name'=>'action','value'=>'delete','onclick'=>"modal_close();"])]); } } echo $text['description-ivr_menu']."\n"; echo "

\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo " "; echo " "; echo " "; echo " "; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo " "; echo " "; echo " "; echo " "; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; echo " ".$text['label-name']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-name']."\n"; echo "
\n"; echo " ".$text['label-extension']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-extension']."\n"; echo "
".$text['label-ivr_menu_parent_uuid'].""; echo ""; echo "
\n"; echo " ".$text['label-language']."\n"; echo "\n"; echo "
\n"; echo " ".$text['label-greet_long']."\n"; echo "\n"; if (if_group("superadmin")) { $destination_id = "ivr_menu_greet_long"; $script = "\n"; $script .= "\n"; echo $script; } echo "\n"; if (if_group("superadmin")) { echo ""; unset($destination_id); } echo "
\n"; echo $text['description-greet_long']."\n"; echo "
\n"; echo " ".$text['label-greet_short']."\n"; echo "\n"; if (if_group("superadmin")) { $destination_id = "ivr_menu_greet_short"; $script = "\n"; $script .= "\n"; echo $script; } echo "\n"; if (if_group("superadmin")) { echo ""; unset($destination_id); } echo "
\n"; echo $text['description-greet_short']."\n"; echo "
".$text['label-options'].""; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; if ($show_option_delete && permission_exists('ivr_menu_option_delete')) { echo " \n"; } echo " \n"; if (is_array($ivr_menu_options)) { $x = 0; foreach($ivr_menu_options as $field) { //add the primary key uuid if (strlen($field['ivr_menu_option_uuid']) > 0) { echo " \n"; } echo "\n"; echo "\n"; echo "\n"; echo "\n"; if ($show_option_delete && permission_exists('ivr_menu_option_delete')) { if (is_uuid($field['ivr_menu_option_uuid'])) { echo "\n"; } echo "\n"; $x++; } } unset($sql, $result); /* for ($c = 0; $c < 1; $c++) { echo " \n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo " \n"; echo " \n"; } */ echo "
".$text['label-option']."".$text['label-destination']."".$text['label-order']."".$text['label-description']."\n"; echo " ".$text['label-delete']."\n"; echo " \n"; echo "
\n"; echo " \n"; echo "\n"; $destination_action = ''; if (strlen($field['ivr_menu_option_action'].$field['ivr_menu_option_param']) > 0) { $destination_action = $field['ivr_menu_option_action'].':'.$field['ivr_menu_option_param']; } else { $destination_action = ''; } echo $destination->select('ivr', 'ivr_menu_options['.$x.'][ivr_menu_option_param]', $destination_action); unset($destination_action); echo "\n"; echo " \n"; echo "\n"; echo " \n"; echo ""; echo " \n"; echo " \n"; } else { echo ""; } echo "
\n"; echo " \n"; echo "\n"; echo $destination->select('ivr', 'ivr_menu_options['.$c.'][ivr_menu_option_param]', $destination_action); echo "\n"; echo " \n"; echo "\n"; echo " \n"; echo "\n"; echo " \n"; echo "
\n"; echo " ".$text['description-options']."\n"; echo "
\n"; echo "
\n"; echo " ".$text['label-timeout']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-timeout']."\n"; echo "
\n"; echo " ".$text['label-exit_action']."\n"; echo "\n"; echo $destination->select('dialplan', 'ivr_menu_exit_action', $ivr_menu_exit_action); echo "
\n"; echo " ".$text['description-exit_action']."\n"; echo "
\n"; echo " ".$text['label-direct_dial']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-direct_dial']."\n"; echo "
\n"; echo " ".$text['label-ring_back']."\n"; echo "\n"; $ringbacks = new ringbacks; echo $ringbacks->select('ivr_menu_ringback', $ivr_menu_ringback); echo "
\n"; echo $text['description-ring_back']."\n"; echo "
\n"; echo " ".$text['label-caller_id_name_prefix']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-caller_id_name_prefix']."\n"; echo "
\n"; //--- begin: show_advanced ----------------------- echo "
\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
 \n"; echo button::create(['type'=>'button','label'=>$text['button-advanced'],'icon'=>'tools','onclick'=>'show_advanced_config();']); echo "
\n"; echo "
\n"; echo "
\n"; echo " \n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; if (permission_exists('ivr_menu_domain')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo "
\n"; echo " ".$text['label-invalid_sound']."\n"; echo "\n"; echo "\n"; echo "
\n"; echo $text['description-invalid_sound']."\n"; echo "
\n"; echo " ".$text['label-exit_sound']."\n"; echo "\n"; echo "\n"; echo "
\n"; echo $text['description-exit_sound']."\n"; echo "
\n"; echo " ".$text['label-pin_number']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-pin_number']."\n"; echo "
\n"; echo " ".$text['label-comfirm_macro']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-comfirm_macro']."\n"; echo "
\n"; echo " ".$text['label-comfirm_key']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-comfirm_key']."\n"; echo "
\n"; echo " ".$text['label-tts_engine']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-tts_engine']."\n"; echo "
\n"; echo " ".$text['label-tts_voice']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-tts_voice']."\n"; echo "
\n"; echo " ".$text['label-comfirm_attempts']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-comfirm_attempts']."\n"; echo "
\n"; echo " ".$text['label-inter-digit_timeout']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-inter-digit_timeout']."\n"; echo "
\n"; echo " ".$text['label-max_failures']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-max_failures']."\n"; echo "
\n"; echo " ".$text['label-max_timeouts']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-max_timeouts']."\n"; echo "
\n"; echo " ".$text['label-digit_length']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-digit_length']."\n"; echo "
\n"; echo " ".$text['label-domain']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-domain_name']."\n"; echo "
\n"; echo "
"; //--- end: show_advanced ----------------------- echo "\n"; if (permission_exists('ivr_menu_context')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; echo " ".$text['label-context']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-enter-context']."\n"; echo "
\n"; echo " ".$text['label-enabled']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-enabled']."\n"; echo "
\n"; echo " ".$text['label-description']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-description']."\n"; echo "
"; echo "

"; if (is_uuid($ivr_menu_uuid)) { echo "\n"; echo "\n"; } echo "\n"; echo "
"; //include the footer require_once "resources/footer.php"; ?>