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();