diff --git a/includes/lib_switch.php b/includes/lib_switch.php
index 4989887c7f..7471fd2f08 100644
--- a/includes/lib_switch.php
+++ b/includes/lib_switch.php
@@ -1684,304 +1684,6 @@ function save_setting_xml() {
//unset($cmd);
}
-function save_extension_xml() {
- if (isset($_SESSION['switch']['extensions']['dir'])) {
- //declare global variables
- global $config, $db, $domain_uuid;
-
- //get the context based from the domain_uuid
- if (count($_SESSION['domains']) == 1) {
- $user_context = "default";
- }
- else {
- $user_context = $_SESSION['domains'][$domain_uuid]['domain_name'];
- }
-
- //delete all old extensions to prepare for new ones
- $dialplan_list = glob($_SESSION['switch']['extensions']['dir']."/".$user_context."/v_*.xml");
- foreach($dialplan_list as $name => $value) {
- unlink($value);
- }
-
- //write the xml files
- $sql = "select * from v_extensions ";
- $sql .= "where domain_uuid = '$domain_uuid' ";
- $sql .= "order by call_group asc ";
- $prep_statement = $db->prepare(check_sql($sql));
- $prep_statement->execute();
- $i = 0;
- $extension_xml_condensed = false;
- while($row = $prep_statement->fetch(PDO::FETCH_ASSOC)) {
- $call_group = $row['call_group'];
- $call_group = str_replace(";", ",", $call_group);
- $tmp_array = explode(",", $call_group);
- foreach ($tmp_array as &$tmp_call_group) {
- $tmp_call_group = trim($tmp_call_group);
- if (strlen($tmp_call_group) > 0) {
- if (strlen($call_group_array[$tmp_call_group]) == 0) {
- $call_group_array[$tmp_call_group] = $row['extension'];
- }
- else {
- $call_group_array[$tmp_call_group] = $call_group_array[$tmp_call_group].','.$row['extension'];
- }
- }
- $i++;
- }
- $user_context = $row['user_context'];
- $vm_password = $row['vm_password'];
- $vm_password = str_replace("#", "", $vm_password); //preserves leading zeros
-
- //echo "enabled: ".$row['enabled'];
- if ($row['enabled'] != "false") {
- $extension_uuid = $row['extension_uuid'];
- //remove invalid characters from the file names
- $extension = $row['extension'];
- $extension = str_replace(" ", "_", $extension);
- $extension = preg_replace("/[\*\:\\/\<\>\|\'\"\?]/", "", $extension);
- $dial_string = $row['dial_string'];
- if (strlen($dial_string) == 0) {
- $dial_string = "{sip_invite_domain=\${domain_name},presence_id=\${dialed_user}@\${dialed_domain}}\${sofia_contact(\${dialed_user}@\${dialed_domain})}";
- }
-
- $xml .= "\n";
- $cidr = '';
- if (strlen($row['cidr']) > 0) {
- $cidr = " cidr=\"" . $row['cidr'] . "\"";
- }
- $number_alias = '';
- if (strlen($row['number_alias']) > 0) {
- $number_alias = " number-alias=\"".$row['number_alias']."\"";
- }
- $xml .= " \n";
- $xml .= " \n";
- $xml .= " \n";
- $xml .= " \n";
- switch ($row['vm_enabled']) {
- case "true":
- $xml .= " \n";
- break;
- case "false":
- $xml .= " \n";
- break;
- default:
- $xml .= " \n";
- }
- if (strlen($row['vm_mailto']) > 0) {
- $xml .= " \n";
-
- switch ($row['vm_attach_file']) {
- case "true":
- $xml .= " \n";
- break;
- case "false":
- $xml .= " \n";
- break;
- default:
- $xml .= " \n";
- }
- switch ($row['vm_keep_local_after_email']) {
- case "true":
- $xml .= " \n";
- break;
- case "false":
- $xml .= " \n";
- break;
- default:
- $xml .= " \n";
- }
- $xml .= " \n";
- }
- if (strlen($row['mwi_account']) > 0) {
- $xml .= " \n";
- }
- if (strlen($row['auth_acl']) > 0) {
- $xml .= " \n";
- }
- if (strlen($row['directory_exten_visible']) > 0) {
- $xml .= " \n";
- }
- $xml .= " \n";
- $xml .= " \n";
- $xml .= " \n";
- $xml .= " \n";
- $xml .= " \n";
- if (strlen($row['call_group']) > 0) {
- $xml .= " \n";
- }
- if (strlen($row['hold_music']) > 0) {
- $xml .= " \n";
- }
- $xml .= " \n";
- if (strlen($switch_account_code) > 0) {
- $xml .= " \n";
- }
- else {
- $xml .= " \n";
- }
- $xml .= " \n";
- if (strlen($row['effective_caller_id_name']) > 0) {
- $xml .= " \n";
- }
- if (strlen($row['effective_caller_id_number']) > 0) {
- $xml .= " \n";
- }
- if (strlen($row['outbound_caller_id_name']) > 0) {
- $xml .= " \n";
- }
- if (strlen($row['outbound_caller_id_number']) > 0) {
- $xml .= " \n";
- }
- if (strlen($row['emergency_caller_id_number']) > 0) {
- $xml .= " \n";
- }
- if (strlen($row['directory_full_name']) > 0) {
- $xml .= " \n";
- }
- if (strlen($row['directory_visible']) > 0) {
- $xml .= " \n";
- }
- if (strlen($row['limit_max']) > 0) {
- $xml .= " \n";
- }
- else {
- $xml .= " \n";
- }
- if (strlen($row['limit_destination']) > 0) {
- $xml .= " \n";
- }
- if (strlen($row['sip_force_contact']) > 0) {
- $xml .= " \n";
- }
- if (strlen($row['sip_force_expires']) > 0) {
- $xml .= " \n";
- }
- if (strlen($row['nibble_account']) > 0) {
- $xml .= " \n";
- }
- switch ($row['sip_bypass_media']) {
- case "bypass-media":
- $xml .= " \n";
- break;
- case "bypass-media-after-bridge":
- $xml .= " \n";
- break;
- case "proxy-media":
- $xml .= " \n";
- break;
- }
-
- $xml .= " \n";
- $xml .= " \n";
-
- if (!is_readable($_SESSION['switch']['extensions']['dir']."/".$row['user_context'])) {
- mkdir($_SESSION['switch']['extensions']['dir']."/".$row['user_context'],0755,true);
- }
- if (strlen($extension) > 0) {
- $fout = fopen($_SESSION['switch']['extensions']['dir']."/".$row['user_context']."/v_".$extension.".xml","w");
- }
- $xml .= "\n";
- fwrite($fout, $xml);
- unset($xml);
- fclose($fout);
- }
- }
- unset ($prep_statement);
-
- //prepare extension
- $extension_dir_path = realpath($_SESSION['switch']['extensions']['dir']);
- $user_context = str_replace(" ", "_", $user_context);
- $user_context = preg_replace("/[\*\:\\/\<\>\|\'\"\?]/", "", $user_context);
-
- //define the group members
- $xml = "\n";
- $xml .= "\n";
- $xml .= "\n";
- $xml .= " \n";
- if ($user_context == "default") {
- $xml .= " \n";
- }
- else {
- $xml .= " \n";
- }
- $xml .= " \n";
- //$xml .= " \n";
- $xml .= " \n";
- $xml .= "\n";
- $xml .= " \n";
- $xml .= " \n";
- $xml .= " \n";
- $xml .= " \n";
- $xml .= " \n";
- $xml .= " \n";
- $xml .= " \n";
- $xml .= "\n";
- $xml .= " \n";
- $xml .= " \n";
- $xml .= " \n";
- $xml .= " \n";
- $xml .= " \n";
- $xml .= " \n";
- $xml .= "\n";
- $previous_call_group = "";
- foreach ($call_group_array as $key => $value) {
- $call_group = trim($key);
- $extension_list = trim($value);
- if (strlen($call_group) > 0) {
- if ($previous_call_group != $call_group) {
- $xml .= " \n";
- $xml .= " \n";
- $xml .= " \n";
- $extension_array = explode(",", $extension_list);
- foreach ($extension_array as &$tmp_extension) {
- $xml .= " \n";
- }
- $xml .= " \n";
- $xml .= " \n";
- $xml .= "\n";
- }
- $previous_call_group = $call_group;
- }
- unset($call_group);
- }
- $xml .= " \n";
- $xml .= "\n";
- $xml .= " \n";
- $xml .= "";
-
- //write the xml file
- if (is_readable($extension_dir_path) && strlen($extension_dir_path) > 0) {
- $fout = fopen($extension_dir_path."/".$user_context.".xml","w");
- fwrite($fout, $xml);
- unset($xml);
- fclose($fout);
- }
-
- //apply settings
- $_SESSION["reload_xml"] = true;
- }
-}
-
function filename_safe($filename) {
// lower case
$filename = strtolower($filename);
@@ -3968,7 +3670,9 @@ if (!function_exists('save_switch_xml')) {
save_dialplan_xml();
}
if (is_readable($_SESSION['switch']['extensions']['dir'])) {
- save_extension_xml();
+ require_once "app/extensions/resources/extension.php";
+ $extension = new extension;
+ $extension->xml();
}
if (is_readable($_SESSION['switch']['conf']['dir'])) {
save_setting_xml();