Portions created by the Initial Developer are Copyright (C) 2008-2012 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ if (!function_exists('save_ivr_menu_xml')) { function save_ivr_menu_xml() { global $domain_uuid; //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
\n"; unlink($_SESSION['switch']['conf']['dir']."/ivr_menus/".$file); } } } } closedir($dh); } $sql = "select * from v_ivr_menus "; $sql .= " where domain_uuid = :domain_uuid "; $parameters['domain_uuid'] = $domain_uuid; $database = new database; $result = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); if (is_array($result) && @sizeof($result) != 0) { foreach($result as $row) { $dialplan_uuid = $row["dialplan_uuid"]; $ivr_menu_uuid = $row["ivr_menu_uuid"]; $ivr_menu_name = $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_context = $row["ivr_menu_context"]; $ivr_menu_enabled = $row["ivr_menu_enabled"]; $ivr_menu_description = $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 = "\n"; if (!empty($ivr_menu_description)) { $tmp .= " \n"; } if (count($_SESSION["domains"]) > 1) { $tmp .= " \n"; $sub_sql = "select * from v_ivr_menu_options "; $sub_sql .= "where ivr_menu_uuid = :ivr_menu_uuid "; $sub_sql .= "and domain_uuid = :domain_uuid "; $sub_sql .= "order by ivr_menu_option_order asc "; $parameters['ivr_menu_uuid'] = $ivr_menu_uuid; $parameters['domain_uuid'] = $domain_uuid; $database = new database; $sub_result = $database->select($sub_sql, $parameters, 'all'); if (is_array($sub_result) && @sizeof($sub_result) != 0) { 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 .= " "; if (empty($ivr_menu_option_description)) { $tmp .= "\n"; } else { $tmp .= " \n"; } } } unset($sub_sql, $sub_result, $sub_row); if ($ivr_menu_direct_dial == "true") { $tmp .= " \n"; } $tmp .= " \n"; $tmp .= "\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); } } unset($result, $row); //apply settings $_SESSION["reload_xml"] = true; } } ?>