diff --git a/core/domains/domain_edit.php b/core/domains/domain_edit.php index a992877ff9..8c63368450 100644 --- a/core/domains/domain_edit.php +++ b/core/domains/domain_edit.php @@ -66,50 +66,82 @@ $domain_description = $_POST["domain_description"]; } -if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { +//process the data + if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { - $msg = ''; - if ($action == "update") { - $domain_uuid = $_POST["domain_uuid"]; - } + //get the domain_uuid + if ($action == "update" && $_POST["domain_uuid"]) { + $domain_uuid = $_POST["domain_uuid"]; + } - //validate the token - $token = new token; - if (!$token->validate($_SERVER['PHP_SELF'])) { - message::add($text['message-invalid_token'],'negative'); - header('Location: domains.php'); - exit; - } + //validate the token + $token = new token; + if (!$token->validate($_SERVER['PHP_SELF'])) { + message::add($text['message-invalid_token'],'negative'); + header('Location: domains.php'); + exit; + } - //check for all required data - if (strlen($domain_name) == 0) { $msg .= $text['message-required'].$text['label-name']."
\n"; } - //if (strlen($domain_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; - } + //check for all required data + $msg = ''; + if (strlen($domain_name) == 0) { $msg .= $text['message-required'].$text['label-name']."
\n"; } + //if (strlen($domain_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") { - if ($action == "add" && permission_exists('domain_add')) { - $sql = "select count(*) from v_domains "; - $sql .= "where domain_name = :domain_name "; - $parameters['domain_name'] = $domain_name; - $database = new database; - $num_rows = $database->select($sql, $parameters, 'column'); - unset($sql, $parameters); + //add or update the database + if ($_POST["persistformvar"] != "true") { + if ($action == "add" && permission_exists('domain_add')) { + $sql = "select count(*) from v_domains "; + $sql .= "where domain_name = :domain_name "; + $parameters['domain_name'] = $domain_name; + $database = new database; + $num_rows = $database->select($sql, $parameters, 'column'); + unset($sql, $parameters); - if ($num_rows == 0) { - $domain_enabled = 'true'; - $array['domains'][0]['domain_uuid'] = uuid(); + if ($num_rows == 0) { + //add the domain name + $domain_enabled = 'true'; + $domain_uuid = uuid(); + $array['domains'][0]['domain_uuid'] = $domain_uuid; + $array['domains'][0]['domain_name'] = $domain_name; + $array['domains'][0]['domain_enabled'] = $domain_enabled; + $array['domains'][0]['domain_description'] = $domain_description; + $database = new database; + $database->app_name = 'domains'; + $database->app_uuid = '8b91605b-f6d2-42e6-a56d-5d1ded01bb44'; + $database->save($array); + + //add dialplans to the domain + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/dialplans/app_config.php")) { + $dialplan = new dialplan; + $dialplan->import($array['domains']); + unset($array); + } + } + } + + if ($action == "update" && permission_exists('domain_edit')) { + // get original domain name + $sql = "select domain_name from v_domains "; + $sql .= "where domain_uuid = :domain_uuid "; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $original_domain_name = $database->select($sql, $parameters, 'column'); + unset($sql, $parameters); + + // update domain name, description + $array['domains'][0]['domain_uuid'] = $domain_uuid; $array['domains'][0]['domain_name'] = $domain_name; $array['domains'][0]['domain_enabled'] = $domain_enabled; $array['domains'][0]['domain_description'] = $domain_description; @@ -117,364 +149,342 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { $database->app_name = 'domains'; $database->app_uuid = '8b91605b-f6d2-42e6-a56d-5d1ded01bb44'; $database->save($array); - unset($array); + + // add dialplans to the domain + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/dialplans/app_config.php")) { + $dialplan = new dialplan; + $dialplan->import($array); + unset($array); + } + + if ($original_domain_name != $domain_name) { + + // update dialplans + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/dialplans/app_config.php")) { + $sql = "update v_dialplans set "; + $sql .= "dialplan_context = replace(dialplan_context, :domain_name_old, :domain_name_new), "; + $sql .= "dialplan_xml = replace(dialplan_xml, :domain_name_old, :domain_name_new) "; + $sql .= "where domain_uuid = :domain_uuid "; + $parameters['domain_name_old'] = $original_domain_name; + $parameters['domain_name_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + + $sql = "update v_dialplan_details set "; + $sql .= "dialplan_detail_data = replace(dialplan_detail_data, :domain_name_old, :domain_name_new) "; + $sql .= "where domain_uuid = :domain_uuid "; + $parameters['domain_name_old'] = $original_domain_name; + $parameters['domain_name_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + } + + // update destinations + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/destinations/app_config.php")) { + $sql = "update v_destinations set "; + $sql .= "destination_data = replace(destination_data, :destination_data_old, :destination_data_new) "; + $sql .= "where domain_uuid = :domain_uuid "; + $parameters['destination_data_old'] = $original_domain_name; + $parameters['destination_data_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + } + + // update extensions (accountcode, user_context, dial_domain) + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/extensions/app_config.php")) { + $sql = "update v_extensions set "; + $sql .= "user_context = replace(user_context, :domain_name_old, :domain_name_new), "; + $sql .= "accountcode = replace(accountcode, :domain_name_old, :domain_name_new), "; + $sql .= "dial_domain = replace(dial_domain, :domain_name_old, :domain_name_new) "; + $sql .= "where domain_uuid = :domain_uuid "; + $parameters['domain_name_old'] = $original_domain_name; + $parameters['domain_name_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + } + + // update ivr_menus (ivr_menu_context, ivr_menu_greet_long, ivr_menu_greet_short) and ivr_menu_options (ivr_menu_option_param) + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/ivr_menus/app_config.php")) { + $sql = "update v_ivr_menus set "; + $sql .= "ivr_menu_context = replace(ivr_menu_context, :domain_name_old, :domain_name_new), "; + $sql .= "ivr_menu_greet_long = replace(ivr_menu_greet_long, :domain_name_old, :domain_name_new), "; + $sql .= "ivr_menu_greet_short = replace(ivr_menu_greet_short, :domain_name_old, :domain_name_new) "; + $sql .= "where domain_uuid = :domain_uuid "; + $parameters['domain_name_old'] = $original_domain_name; + $parameters['domain_name_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + + $sql = "update v_ivr_menu_options set "; + $sql .= "ivr_menu_option_param = replace(ivr_menu_option_param, :domain_name_old, :domain_name_new) "; + $sql .= "where domain_uuid = :domain_uuid "; + $parameters['domain_name_old'] = $original_domain_name; + $parameters['domain_name_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + } + + // update ring_groups (ring_group_context, ring_group_forward_destination, ring_group_timeout_data) + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/ring_groups/app_config.php")) { + $sql = "update v_ring_groups set "; + $sql .= "ring_group_context = replace(ring_group_context, :domain_name_old, :domain_name_new), "; + $sql .= "ring_group_forward_destination = replace(ring_group_forward_destination, :domain_name_old, :domain_name_new), "; + $sql .= "ring_group_timeout_data = replace(ring_group_timeout_data, :domain_name_old, :domain_name_new) "; + $sql .= "where domain_uuid = :domain_uuid "; + $parameters['domain_name_old'] = $original_domain_name; + $parameters['domain_name_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + } + + // update cdr records (domain_name, context) + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/xml_cdr/app_config.php")){ + $sql = "update v_xml_cdr set "; + $sql .= "domain_name = :domain_name_new "; + $sql .= "where domain_name = :domain_name_old "; + $sql .= "and domain_uuid = :domain_uuid "; + $parameters['domain_name_old'] = $original_domain_name; + $parameters['domain_name_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + + $sql = "update v_xml_cdr set "; + $sql .= "context = replace(user_context, :context_old, :context_new), "; + $sql .= "where context = :context_old "; + $sql .= "and domain_uuid = :domain_uuid "; + $parameters['context_old'] = $original_domain_name; + $parameters['context_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + } + + // update billing, if installed + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/billing/app_config.php")){ + $sql = "update v_billings set "; + $sql .= "type_value = :type_value_new "; + $sql .= "where type_value = :type_value_old "; + $sql .= "and domain_uuid = :domain_uuid "; + $parameters['type_value_old'] = $original_domain_name; + $parameters['type_value_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + } + + // update conference session recording paths + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/conference_centers/app_config.php")) { + $sql = "update v_conference_sessions set "; + $sql .= "recording = replace(recording, :domain_name_old, :domain_name_new) "; + $sql .= "where domain_uuid = :domain_uuid "; + $parameters['domain_name_old'] = $original_domain_name; + $parameters['domain_name_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + } + + // update conference center greetings + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/conference_centers/app_config.php")) { + $sql = "update v_conference_centers set "; + $sql .= "conference_center_greeting = replace(conference_center_greeting, :domain_name_old, :domain_name_new) "; + $sql .= "where domain_uuid = :domain_uuid "; + $parameters['domain_name_old'] = $original_domain_name; + $parameters['domain_name_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + } + + // update call center queue record templates + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/call_center/app_config.php")) { + $sql = "update v_call_center_queues set "; + $sql .= "queue_record_template = replace(queue_record_template, :domain_name_old, :domain_name_new) "; + $sql .= "where domain_uuid = :domain_uuid "; + $parameters['domain_name_old'] = $original_domain_name; + $parameters['domain_name_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + } + + // update call center agent contacts + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/call_center/app_config.php")) { + $sql = "update v_call_center_agents set "; + $sql .= "agent_contact = replace(agent_contact, :domain_name_old, :domain_name_new) "; + $sql .= "where domain_uuid = :domain_uuid "; + $parameters['domain_name_old'] = $original_domain_name; + $parameters['domain_name_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + } + + // update call flows data, alternate-data and contexts + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/call_flows/app_config.php")) { + $sql = "update v_call_flows set "; + $sql .= "call_flow_data = replace(call_flow_data, :domain_name_old, :domain_name_new), "; + $sql .= "call_flow_alternate_data = replace(call_flow_alternate_data, :domain_name_old, :domain_name_new), "; + $sql .= "call_flow_context = replace(call_flow_context, :domain_name_old, :domain_name_new) "; + $sql .= "where domain_uuid = :domain_uuid "; + $parameters['domain_name_old'] = $original_domain_name; + $parameters['domain_name_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + } + + // update device lines server_address, server_address_primary, server_address_secondary, outbound_proxy_primary, outbound_proxy_secondary + if (file_exists($_SERVER["PROJECT_ROOT"]."/app/devices/app_config.php")) { + $sql = "update v_device_lines set "; + $sql .= "server_address = replace(server_address, :domain_name_old, :domain_name_new), "; + $sql .= "server_address_primary = replace(server_address_primary, :domain_name_old, :domain_name_new), "; + $sql .= "server_address_secondary = replace(server_address_secondary, :domain_name_old, :domain_name_new), "; + $sql .= "outbound_proxy_primary = replace(outbound_proxy_primary, :domain_name_old, :domain_name_new), "; + $sql .= "outbound_proxy_secondary = replace(outbound_proxy_secondary, :domain_name_old, :domain_name_new) "; + $sql .= "where domain_uuid = :domain_uuid "; + $parameters['domain_name_old'] = $original_domain_name; + $parameters['domain_name_new'] = $domain_name; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $database->execute($sql, $parameters); + unset($sql, $parameters); + } + + // rename switch/storage/voicemail/default/[domain] (folder) + if (isset($_SESSION['switch']['voicemail']['dir']) && file_exists($_SESSION['switch']['voicemail']['dir']."/default/".$original_domain_name)) { + @rename($_SESSION['switch']['voicemail']['dir']."/default/".$original_domain_name, $_SESSION['switch']['voicemail']['dir']."/default/".$domain_name); // folder + } + + // rename switch/storage/fax/[domain] (folder) + if (isset($_SESSION['switch']['storage']['dir']) && file_exists($_SESSION['switch']['storage']['dir']."/fax/".$original_domain_name)) { + @rename($_SESSION['switch']['storage']['dir']."/fax/".$original_domain_name, $_SESSION['switch']['storage']['dir']."/fax/".$domain_name); // folder + } + + // rename switch/conf/dialplan/[domain] (folder/file) + if (isset($_SESSION['switch']['dialplan']['dir'])) { + if (file_exists($_SESSION['switch']['dialplan']['dir']."/".$original_domain_name)) { + @rename($_SESSION['switch']['dialplan']['dir']."/".$original_domain_name, $_SESSION['switch']['dialplan']['dir']."/".$domain_name); // folder + } + if (file_exists($_SESSION['switch']['dialplan']['dir']."/".$original_domain_name.".xml")) { + @rename($_SESSION['switch']['dialplan']['dir']."/".$original_domain_name.".xml", $_SESSION['switch']['dialplan']['dir']."/".$domain_name.".xml"); // file + } + } + + // rename switch/conf/dialplan/public/[domain] (folder/file) + if (isset($_SESSION['switch']['dialplan']['dir'])) { + if (file_exists($_SESSION['switch']['dialplan']['dir']."/public/".$original_domain_name)) { + @rename($_SESSION['switch']['dialplan']['dir']."/public/".$original_domain_name, $_SESSION['switch']['dialplan']['dir']."/public/".$domain_name); // folder + } + if (file_exists($_SESSION['switch']['dialplan']['dir']."/public/".$original_domain_name.".xml")) { + @rename($_SESSION['switch']['dialplan']['dir']."/public/".$original_domain_name.".xml", $_SESSION['switch']['dialplan']['dir']."/public/".$domain_name.".xml"); // file + } + } + + // rename switch/conf/directory/[domain] (folder/file) + if (isset($_SESSION['switch']['extensions']['dir'])) { + if (file_exists($_SESSION['switch']['extensions']['dir']."/".$original_domain_name)) { + @rename($_SESSION['switch']['extensions']['dir']."/".$original_domain_name, $_SESSION['switch']['extensions']['dir']."/".$domain_name); // folder + } + if (file_exists($_SESSION['switch']['extensions']['dir']."/".$original_domain_name.".xml")) { + @rename($_SESSION['switch']['extensions']['dir']."/".$original_domain_name.".xml", $_SESSION['switch']['extensions']['dir']."/".$domain_name.".xml"); // file + } + } + + // rename switch/recordings/[domain] (folder) + if (file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'])) { + $switch_recordings_dir = str_replace("/".$_SESSION["domain_name"], "", $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']); + if (file_exists($switch_recordings_dir."/".$original_domain_name)) { + @rename($switch_recordings_dir."/".$original_domain_name, $switch_recordings_dir."/".$domain_name); // folder + } + } + + // update dialplan, dialplan/public xml files + $dialplan_xml = file_get_contents($_SESSION['switch']['dialplan']['dir']."/".$domain_name.".xml"); + $dialplan_xml = str_replace($original_domain_name, $domain_name, $dialplan_xml); + file_put_contents($_SESSION['switch']['dialplan']['dir']."/".$domain_name.".xml", $dialplan_xml); + unset($dialplan_xml); + + $dialplan_public_xml = file_get_contents($_SESSION['switch']['dialplan']['dir']."/public/".$domain_name.".xml"); + $dialplan_public_xml = str_replace($original_domain_name, $domain_name, $dialplan_public_xml); + file_put_contents($_SESSION['switch']['dialplan']['dir']."/public/".$domain_name.".xml", $dialplan_public_xml); + unset($dialplan_public_xml); + + // update session domain name + $_SESSION['domains'][$domain_uuid]['domain_name'] = $domain_name; + + // recreate dialplan and extension xml files + if (is_readable($_SESSION['switch']['dialplan']['dir'])) { + save_dialplan_xml(); + } + if (is_readable($_SESSION['switch']['extensions']['dir'])) { + require_once $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/extensions/resources/classes/extension.php"; + $extension = new extension; + $extension->xml(); + } + + // if single-tenant and variables exist, update variables > domain value to match new domain + if (count($_SESSION['domains']) == 1 && file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/vars/")) { + $sql = "update v_vars set "; + $sql .= "var_value = :var_value "; + $sql .= "where var_name = 'domain' "; + $parameters['var_value'] = $domain_name; + $database = new database; + $database->app_name = 'domains'; + $database->app_uuid = '8b91605b-f6d2-42e6-a56d-5d1ded01bb44'; + $database->execute($sql, $parameters); + unset($sql, $parameters); + } + } } - } + //clear the domains session array to update it + unset($_SESSION["domains"]); + unset($_SESSION["domain_uuid"]); + unset($_SESSION["domain_name"]); + unset($_SESSION['domain']); + unset($_SESSION['switch']); - if ($action == "update" && permission_exists('domain_edit')) { - // get original domain name - $sql = "select domain_name from v_domains "; - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $original_domain_name = $database->select($sql, $parameters, 'column'); - unset($sql, $parameters); - - // update domain name, description - $array['domains'][0]['domain_uuid'] = $domain_uuid; - $array['domains'][0]['domain_name'] = $domain_name; - $array['domains'][0]['domain_enabled'] = $domain_enabled; - $array['domains'][0]['domain_description'] = $domain_description; - $database = new database; - $database->app_name = 'domains'; - $database->app_uuid = '8b91605b-f6d2-42e6-a56d-5d1ded01bb44'; - $database->save($array); - unset($array); - - if ($original_domain_name != $domain_name) { - - // update dialplans - if (file_exists($_SERVER["PROJECT_ROOT"]."/app/dialplans/app_config.php")) { - $sql = "update v_dialplans set "; - $sql .= "dialplan_context = replace(dialplan_context, :domain_name_old, :domain_name_new), "; - $sql .= "dialplan_xml = replace(dialplan_xml, :domain_name_old, :domain_name_new) "; - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['domain_name_old'] = $original_domain_name; - $parameters['domain_name_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - - $sql = "update v_dialplan_details set "; - $sql .= "dialplan_detail_data = replace(dialplan_detail_data, :domain_name_old, :domain_name_new) "; - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['domain_name_old'] = $original_domain_name; - $parameters['domain_name_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - } - - // update destinations - if (file_exists($_SERVER["PROJECT_ROOT"]."/app/destinations/app_config.php")) { - $sql = "update v_destinations set "; - $sql .= "destination_data = replace(destination_data, :destination_data_old, :destination_data_new) "; - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['destination_data_old'] = $original_domain_name; - $parameters['destination_data_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - } - - // update extensions (accountcode, user_context, dial_domain) - if (file_exists($_SERVER["PROJECT_ROOT"]."/app/extensions/app_config.php")) { - $sql = "update v_extensions set "; - $sql .= "user_context = replace(user_context, :domain_name_old, :domain_name_new), "; - $sql .= "accountcode = replace(accountcode, :domain_name_old, :domain_name_new), "; - $sql .= "dial_domain = replace(dial_domain, :domain_name_old, :domain_name_new) "; - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['domain_name_old'] = $original_domain_name; - $parameters['domain_name_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - } - - // update ivr_menus (ivr_menu_context, ivr_menu_greet_long, ivr_menu_greet_short) and ivr_menu_options (ivr_menu_option_param) - if (file_exists($_SERVER["PROJECT_ROOT"]."/app/ivr_menus/app_config.php")) { - $sql = "update v_ivr_menus set "; - $sql .= "ivr_menu_context = replace(ivr_menu_context, :domain_name_old, :domain_name_new), "; - $sql .= "ivr_menu_greet_long = replace(ivr_menu_greet_long, :domain_name_old, :domain_name_new), "; - $sql .= "ivr_menu_greet_short = replace(ivr_menu_greet_short, :domain_name_old, :domain_name_new) "; - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['domain_name_old'] = $original_domain_name; - $parameters['domain_name_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - - $sql = "update v_ivr_menu_options set "; - $sql .= "ivr_menu_option_param = replace(ivr_menu_option_param, :domain_name_old, :domain_name_new) "; - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['domain_name_old'] = $original_domain_name; - $parameters['domain_name_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - } - - // update ring_groups (ring_group_context, ring_group_forward_destination, ring_group_timeout_data) - if (file_exists($_SERVER["PROJECT_ROOT"]."/app/ring_groups/app_config.php")) { - $sql = "update v_ring_groups set "; - $sql .= "ring_group_context = replace(ring_group_context, :domain_name_old, :domain_name_new), "; - $sql .= "ring_group_forward_destination = replace(ring_group_forward_destination, :domain_name_old, :domain_name_new), "; - $sql .= "ring_group_timeout_data = replace(ring_group_timeout_data, :domain_name_old, :domain_name_new) "; - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['domain_name_old'] = $original_domain_name; - $parameters['domain_name_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - } - - // update cdr records (domain_name, context) - if (file_exists($_SERVER["PROJECT_ROOT"]."/app/xml_cdr/app_config.php")){ - $sql = "update v_xml_cdr set "; - $sql .= "domain_name = :domain_name_new "; - $sql .= "where domain_name = :domain_name_old "; - $sql .= "and domain_uuid = :domain_uuid "; - $parameters['domain_name_old'] = $original_domain_name; - $parameters['domain_name_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - - $sql = "update v_xml_cdr set "; - $sql .= "context = replace(user_context, :context_old, :context_new), "; - $sql .= "where context = :context_old "; - $sql .= "and domain_uuid = :domain_uuid "; - $parameters['context_old'] = $original_domain_name; - $parameters['context_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - } - - // update billing, if installed - if (file_exists($_SERVER["PROJECT_ROOT"]."/app/billing/app_config.php")){ - $sql = "update v_billings set "; - $sql .= "type_value = :type_value_new "; - $sql .= "where type_value = :type_value_old "; - $sql .= "and domain_uuid = :domain_uuid "; - $parameters['type_value_old'] = $original_domain_name; - $parameters['type_value_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - } - - // update conference session recording paths - if (file_exists($_SERVER["PROJECT_ROOT"]."/app/conference_centers/app_config.php")) { - $sql = "update v_conference_sessions set "; - $sql .= "recording = replace(recording, :domain_name_old, :domain_name_new) "; - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['domain_name_old'] = $original_domain_name; - $parameters['domain_name_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - } - - // update conference center greetings - if (file_exists($_SERVER["PROJECT_ROOT"]."/app/conference_centers/app_config.php")) { - $sql = "update v_conference_centers set "; - $sql .= "conference_center_greeting = replace(conference_center_greeting, :domain_name_old, :domain_name_new) "; - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['domain_name_old'] = $original_domain_name; - $parameters['domain_name_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - } - - // update call center queue record templates - if (file_exists($_SERVER["PROJECT_ROOT"]."/app/call_center/app_config.php")) { - $sql = "update v_call_center_queues set "; - $sql .= "queue_record_template = replace(queue_record_template, :domain_name_old, :domain_name_new) "; - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['domain_name_old'] = $original_domain_name; - $parameters['domain_name_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - } - - // update call center agent contacts - if (file_exists($_SERVER["PROJECT_ROOT"]."/app/call_center/app_config.php")) { - $sql = "update v_call_center_agents set "; - $sql .= "agent_contact = replace(agent_contact, :domain_name_old, :domain_name_new) "; - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['domain_name_old'] = $original_domain_name; - $parameters['domain_name_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - } - - // update call flows data, alternate-data and contexts - if (file_exists($_SERVER["PROJECT_ROOT"]."/app/call_flows/app_config.php")) { - $sql = "update v_call_flows set "; - $sql .= "call_flow_data = replace(call_flow_data, :domain_name_old, :domain_name_new), "; - $sql .= "call_flow_alternate_data = replace(call_flow_alternate_data, :domain_name_old, :domain_name_new), "; - $sql .= "call_flow_context = replace(call_flow_context, :domain_name_old, :domain_name_new) "; - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['domain_name_old'] = $original_domain_name; - $parameters['domain_name_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - } - - // update device lines server_address, server_address_primary, server_address_secondary, outbound_proxy_primary, outbound_proxy_secondary - if (file_exists($_SERVER["PROJECT_ROOT"]."/app/devices/app_config.php")) { - $sql = "update v_device_lines set "; - $sql .= "server_address = replace(server_address, :domain_name_old, :domain_name_new), "; - $sql .= "server_address_primary = replace(server_address_primary, :domain_name_old, :domain_name_new), "; - $sql .= "server_address_secondary = replace(server_address_secondary, :domain_name_old, :domain_name_new), "; - $sql .= "outbound_proxy_primary = replace(outbound_proxy_primary, :domain_name_old, :domain_name_new), "; - $sql .= "outbound_proxy_secondary = replace(outbound_proxy_secondary, :domain_name_old, :domain_name_new) "; - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['domain_name_old'] = $original_domain_name; - $parameters['domain_name_new'] = $domain_name; - $parameters['domain_uuid'] = $domain_uuid; - $database = new database; - $database->execute($sql, $parameters); - unset($sql, $parameters); - } - - // rename switch/storage/voicemail/default/[domain] (folder) - if (isset($_SESSION['switch']['voicemail']['dir']) && file_exists($_SESSION['switch']['voicemail']['dir']."/default/".$original_domain_name)) { - @rename($_SESSION['switch']['voicemail']['dir']."/default/".$original_domain_name, $_SESSION['switch']['voicemail']['dir']."/default/".$domain_name); // folder - } - - // rename switch/storage/fax/[domain] (folder) - if (isset($_SESSION['switch']['storage']['dir']) && file_exists($_SESSION['switch']['storage']['dir']."/fax/".$original_domain_name)) { - @rename($_SESSION['switch']['storage']['dir']."/fax/".$original_domain_name, $_SESSION['switch']['storage']['dir']."/fax/".$domain_name); // folder - } - - // rename switch/conf/dialplan/[domain] (folder/file) - if (isset($_SESSION['switch']['dialplan']['dir'])) { - if (file_exists($_SESSION['switch']['dialplan']['dir']."/".$original_domain_name)) { - @rename($_SESSION['switch']['dialplan']['dir']."/".$original_domain_name, $_SESSION['switch']['dialplan']['dir']."/".$domain_name); // folder - } - if (file_exists($_SESSION['switch']['dialplan']['dir']."/".$original_domain_name.".xml")) { - @rename($_SESSION['switch']['dialplan']['dir']."/".$original_domain_name.".xml", $_SESSION['switch']['dialplan']['dir']."/".$domain_name.".xml"); // file - } - } - - // rename switch/conf/dialplan/public/[domain] (folder/file) - if (isset($_SESSION['switch']['dialplan']['dir'])) { - if (file_exists($_SESSION['switch']['dialplan']['dir']."/public/".$original_domain_name)) { - @rename($_SESSION['switch']['dialplan']['dir']."/public/".$original_domain_name, $_SESSION['switch']['dialplan']['dir']."/public/".$domain_name); // folder - } - if (file_exists($_SESSION['switch']['dialplan']['dir']."/public/".$original_domain_name.".xml")) { - @rename($_SESSION['switch']['dialplan']['dir']."/public/".$original_domain_name.".xml", $_SESSION['switch']['dialplan']['dir']."/public/".$domain_name.".xml"); // file - } - } - - // rename switch/conf/directory/[domain] (folder/file) - if (isset($_SESSION['switch']['extensions']['dir'])) { - if (file_exists($_SESSION['switch']['extensions']['dir']."/".$original_domain_name)) { - @rename($_SESSION['switch']['extensions']['dir']."/".$original_domain_name, $_SESSION['switch']['extensions']['dir']."/".$domain_name); // folder - } - if (file_exists($_SESSION['switch']['extensions']['dir']."/".$original_domain_name.".xml")) { - @rename($_SESSION['switch']['extensions']['dir']."/".$original_domain_name.".xml", $_SESSION['switch']['extensions']['dir']."/".$domain_name.".xml"); // file - } - } - - // rename switch/recordings/[domain] (folder) - if (file_exists($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name'])) { - $switch_recordings_dir = str_replace("/".$_SESSION["domain_name"], "", $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']); - if (file_exists($switch_recordings_dir."/".$original_domain_name)) { - @rename($switch_recordings_dir."/".$original_domain_name, $switch_recordings_dir."/".$domain_name); // folder - } - } - - // update dialplan, dialplan/public xml files - $dialplan_xml = file_get_contents($_SESSION['switch']['dialplan']['dir']."/".$domain_name.".xml"); - $dialplan_xml = str_replace($original_domain_name, $domain_name, $dialplan_xml); - file_put_contents($_SESSION['switch']['dialplan']['dir']."/".$domain_name.".xml", $dialplan_xml); - unset($dialplan_xml); - - $dialplan_public_xml = file_get_contents($_SESSION['switch']['dialplan']['dir']."/public/".$domain_name.".xml"); - $dialplan_public_xml = str_replace($original_domain_name, $domain_name, $dialplan_public_xml); - file_put_contents($_SESSION['switch']['dialplan']['dir']."/public/".$domain_name.".xml", $dialplan_public_xml); - unset($dialplan_public_xml); - - // update session domain name - $_SESSION['domains'][$domain_uuid]['domain_name'] = $domain_name; - - // recreate dialplan and extension xml files - if (is_readable($_SESSION['switch']['dialplan']['dir'])) { - save_dialplan_xml(); - } - if (is_readable($_SESSION['switch']['extensions']['dir'])) { - require_once $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/extensions/resources/classes/extension.php"; - $extension = new extension; - $extension->xml(); - } - - // if single-tenant and variables exist, update variables > domain value to match new domain - if (count($_SESSION['domains']) == 1 && file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/vars/")) { - $sql = "update v_vars set "; - $sql .= "var_value = :var_value "; - $sql .= "where var_name = 'domain' "; - $parameters['var_value'] = $domain_name; - $database = new database; - $database->app_name = 'domains'; - $database->app_uuid = '8b91605b-f6d2-42e6-a56d-5d1ded01bb44'; - $database->execute($sql, $parameters); - unset($sql, $parameters); - } + //redirect the browser + if ($action == "update") { + message::add($text['message-update']); + if (!permission_exists('domain_add')) { //admin, updating own domain + header("Location: domain_edit.php"); + } + else { + header("Location: domains.php"); //superadmin + } } - } - - //upgrade the domains - if (permission_exists('upgrade_apps') || if_group("superadmin")) { - require_once "core/upgrade/upgrade_domains.php"; - } - - //clear the domains session array to update it - unset($_SESSION["domains"]); - unset($_SESSION["domain_uuid"]); - unset($_SESSION["domain_name"]); - unset($_SESSION['domain']); - unset($_SESSION['switch']); - - //redirect the browser - if ($action == "update") { - message::add($text['message-update']); - if (!permission_exists('domain_add')) { //admin, updating own domain - header("Location: domain_edit.php"); + if ($action == "add") { + message::add($text['message-add']); + header("Location: domains.php"); } - else { - header("Location: domains.php"); //superadmin - } - } - if ($action == "add") { - message::add($text['message-add']); - header("Location: domains.php"); - } - return; - } //if ($_POST["persistformvar"] != "true") -} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) + return; + } //if ($_POST["persistformvar"] != "true") + } //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) //pre-populate the form (admin won't have domain_add permissions, but domain_uuid will already be set above) if ((count($_GET) > 0 || (!permission_exists('domain_add') && $domain_uuid != '')) && $_POST["persistformvar"] != "true") {