/// -----------------------------------------------------------------------------
        /// <summary>
        /// InitialiseHostSettings gets the Host Settings from the Install Template
        /// </summary>
        /// <remarks>
        /// </remarks>
        ///	<param name="xmlTemplate">The install Templae</param>
        ///	<param name="writeFeedback">a flag to determine whether to output feedback</param>
        /// <history>
        /// [cnurse]	02/16/2007	created
        /// </history>
        /// -----------------------------------------------------------------------------
        public static void InitialiseHostSettings(XmlDocument xmlTemplate, bool writeFeedback)
        {
            XmlNode node = xmlTemplate.SelectSingleNode("//dotnetnuke/settings");
            if ((node != null))
            {
                if (writeFeedback)
                {
                    HtmlUtils.WriteFeedback(HttpContext.Current.Response, 0, "Loading Host Settings:<br>");
                }

                HostSettingsController objController = new HostSettingsController();

                //Parse the Settings nodes
                foreach (XmlNode settingNode in node.ChildNodes)
                {
                    string strSettingName = settingNode.Name;
                    string strSettingValue = settingNode.InnerText;
                    XmlAttribute SecureAttrib = settingNode.Attributes["Secure"];
                    bool SettingIsSecure = false;
                    if ((SecureAttrib != null))
                    {
                        if (SecureAttrib.Value.ToLower() == "true")
                        {
                            SettingIsSecure = true;
                        }
                    }

                    string strDomainName = Globals.GetDomainName(HttpContext.Current.Request);

                    switch (strSettingName)
                    {
                        case "HostURL":
                            if (string.IsNullOrEmpty(strSettingValue))
                            {
                                strSettingValue = strDomainName;
                            }
                            break;
                        case "HostEmail":
                            if (string.IsNullOrEmpty(strSettingValue))
                            {
                                strSettingValue = "support@" + strDomainName;

                                //Remove any folders
                                strSettingValue = strSettingValue.Substring(0, strSettingValue.IndexOf("/"));

                                //Remove port number
                                if (strSettingValue.IndexOf(":") != -1)
                                {
                                    strSettingValue = strSettingValue.Substring(0, strSettingValue.IndexOf(":"));
                                }
                            }

                            break;
                    }


                    objController.UpdateHostSetting(strSettingName, strSettingValue, SettingIsSecure);
                }
                //Need to clear the cache to pick up new HostSettings from the SQLDataProvider script
                DataCache.RemoveCache("GetHostSettings");
            }
        }
 public static void ProcessLegacyLanguages()
 {
     string filePath = Common.Globals.ApplicationMapPath + Localization.Localization.SupportedLocalesFile.Substring(1).Replace("/", "\\");
     if (File.Exists(filePath))
     {
         XPathDocument doc = new XPathDocument(filePath);
         HostSettingsController controller = new HostSettingsController();
         XPathNavigator browserNav = doc.CreateNavigator().SelectSingleNode("root/browserDetection");
         if (browserNav != null)
         {
             controller.UpdateHostSetting("EnableBrowserLanguage", Util.ReadAttribute(browserNav, "enabled", false, null, Null.NullString, "true"));
         }
         XPathNavigator urlNav = doc.CreateNavigator().SelectSingleNode("root/languageInUrl");
         if (urlNav != null)
         {
             controller.UpdateHostSetting("EnableUrlLanguage", Util.ReadAttribute(urlNav, "enabled", false, null, Null.NullString, "true"));
         }
         foreach (XPathNavigator nav in doc.CreateNavigator().Select("root/language"))
         {
             if (nav.NodeType != XPathNodeType.Comment)
             {
                 Locale language = new Locale();
                 language.Text = Util.ReadAttribute(nav, "name");
                 language.Code = Util.ReadAttribute(nav, "key");
                 language.Fallback = Util.ReadAttribute(nav, "fallback");
                 if (language.Code != Localization.Localization.SystemLocale)
                 {
                     PackageInfo package = new PackageInfo(new InstallerInfo());
                     package.Name = language.Text;
                     package.FriendlyName = language.Text;
                     package.Description = Null.NullString;
                     package.Version = new Version(1, 0, 0);
                     package.PackageType = "CoreLanguagePack";
                     package.License = Util.PACKAGE_NoLicense;
                     LanguagePackWriter packageWriter = new LanguagePackWriter(language, package);
                     package.Manifest = packageWriter.WriteManifest(true);
                     PackageController.SavePackage(package);
                     Localization.Localization.SaveLanguage(language);
                     LanguagePackInfo languagePack = new LanguagePackInfo();
                     languagePack.LanguageID = language.LanguageID;
                     languagePack.PackageID = package.PackageID;
                     languagePack.DependentPackageID = -2;
                     LanguagePackController.SaveLanguagePack(languagePack);
                 }
             }
         }
     }
     foreach (PortalInfo portal in new PortalController().GetPortals())
     {
         int portalID = portal.PortalID;
         filePath = string.Format(Common.Globals.ApplicationMapPath + Localization.Localization.ApplicationResourceDirectory.Substring(1).Replace("/", "\\") + "\\Locales.Portal-{0}.xml", portalID.ToString());
         if (File.Exists(filePath))
         {
             XPathDocument doc = new XPathDocument(filePath);
             XPathNavigator browserNav = doc.CreateNavigator().SelectSingleNode("locales/browserDetection");
             if (browserNav != null)
             {
                 PortalController.UpdatePortalSetting(portalID, "EnableBrowserLanguage", Util.ReadAttribute(browserNav, "enabled", false, null, Null.NullString, "true"));
             }
             XPathNavigator urlNav = doc.CreateNavigator().SelectSingleNode("locales/languageInUrl");
             if (urlNav != null)
             {
                 PortalController.UpdatePortalSetting(portalID, "EnableUrlLanguage", Util.ReadAttribute(urlNav, "enabled", false, null, Null.NullString, "true"));
             }
             foreach (Locale installedLanguage in Localization.Localization.GetLocales(Null.NullInteger).Values)
             {
                 string code = installedLanguage.Code;
                 bool bFound = false;
                 foreach (XPathNavigator inactiveNav in doc.CreateNavigator().Select("locales/inactive/locale"))
                 {
                     if (inactiveNav.Value == code)
                     {
                         bFound = true;
                         break;
                     }
                 }
                 if (!bFound)
                 {
                     Localization.Localization.AddLanguageToPortal(portalID, installedLanguage.LanguageID, false);
                 }
             }
         }
         else
         {
             foreach (Locale installedLanguage in Localization.Localization.GetLocales(Null.NullInteger).Values)
             {
                 Localization.Localization.AddLanguageToPortal(portalID, installedLanguage.LanguageID, false);
             }
         }
     }
 }