using FluentMigrator; using Nop.Core.Domain.Catalog; using Nop.Core.Domain.Common; using Nop.Core.Domain.Configuration; using Nop.Core.Domain.Customers; using Nop.Core.Domain.Orders; using Nop.Core.Domain.Seo; using Nop.Core.Domain.Shipping; using Nop.Core.Infrastructure; using Nop.Data; using Nop.Data.Migrations; using Nop.Services.Catalog; using Nop.Services.Configuration; using Nop.Services.Seo; namespace Nop.Web.Framework.Migrations.UpgradeTo440; [NopUpdateMigration("2020-06-10 00:00:00", "4.40", UpdateMigrationType.Settings)] public class SettingMigration : MigrationBase { /// Collect the UP migration expressions public override void Up() { if (!DataSettingsManager.IsDatabaseInstalled()) return; //do not use DI, because it produces exception on the installation process var settingRepository = EngineContext.Current.Resolve>(); var settingService = EngineContext.Current.Resolve(); //#4904 External authentication errors logging var externalAuthenticationSettings = settingService.LoadSetting(); if (!settingService.SettingExists(externalAuthenticationSettings, settings => settings.LogErrors)) { externalAuthenticationSettings.LogErrors = false; settingService.SaveSetting(externalAuthenticationSettings, settings => settings.LogErrors); } var multiFactorAuthenticationSettings = settingService.LoadSetting(); if (!settingService.SettingExists(multiFactorAuthenticationSettings, settings => settings.ForceMultifactorAuthentication)) { multiFactorAuthenticationSettings.ForceMultifactorAuthentication = false; settingService.SaveSetting(multiFactorAuthenticationSettings, settings => settings.ForceMultifactorAuthentication); } //#5102 Delete Full-text settings settingRepository .Delete(setting => setting.Name == "commonsettings.usefulltextsearch" || setting.Name == "commonsettings.fulltextmode"); //#4196 settingRepository .Delete(setting => setting.Name == "commonsettings.scheduletaskruntimeout" || setting.Name == "commonsettings.staticfilescachecontrol" || setting.Name == "commonsettings.supportpreviousnopcommerceversions" || setting.Name == "securitysettings.pluginstaticfileextensionsBlacklist"); //#5384 var seoSettings = settingService.LoadSetting(); foreach (var slug in NopSeoDefaults.ReservedUrlRecordSlugs) { if (!seoSettings.ReservedUrlRecordSlugs.Contains(slug)) seoSettings.ReservedUrlRecordSlugs.Add(slug); } settingService.SaveSetting(seoSettings, settings => seoSettings.ReservedUrlRecordSlugs); //#3015 var homepageTitleKey = $"{nameof(SeoSettings)}.HomepageTitle".ToLower(); if (settingService.GetSettingByKey(homepageTitleKey) == null) settingService.SetSetting(homepageTitleKey, settingService.GetSettingByKey($"{nameof(SeoSettings)}.DefaultTitle")); var homepageDescriptionKey = $"{nameof(SeoSettings)}.HomepageDescription".ToLower(); if (settingService.GetSettingByKey(homepageDescriptionKey) == null) settingService.SetSetting(homepageDescriptionKey, "Your home page description"); //#5210 var adminAreaSettings = settingService.LoadSetting(); if (!settingService.SettingExists(adminAreaSettings, settings => settings.ShowDocumentationReferenceLinks)) { adminAreaSettings.ShowDocumentationReferenceLinks = true; settingService.SaveSetting(adminAreaSettings, settings => settings.ShowDocumentationReferenceLinks); } //#4944 var shippingSettings = settingService.LoadSetting(); if (!settingService.SettingExists(shippingSettings, settings => settings.RequestDelay)) { shippingSettings.RequestDelay = 300; settingService.SaveSetting(shippingSettings, settings => settings.RequestDelay); } //#276 AJAX filters var catalogSettings = settingService.LoadSetting(); if (!settingService.SettingExists(catalogSettings, settings => settings.UseAjaxCatalogProductsLoading)) { catalogSettings.UseAjaxCatalogProductsLoading = true; settingService.SaveSetting(catalogSettings, settings => settings.UseAjaxCatalogProductsLoading); } if (!settingService.SettingExists(catalogSettings, settings => settings.EnableManufacturerFiltering)) { catalogSettings.EnableManufacturerFiltering = true; settingService.SaveSetting(catalogSettings, settings => settings.EnableManufacturerFiltering); } if (!settingService.SettingExists(catalogSettings, settings => settings.EnablePriceRangeFiltering)) { catalogSettings.EnablePriceRangeFiltering = true; settingService.SaveSetting(catalogSettings, settings => settings.EnablePriceRangeFiltering); } if (!settingService.SettingExists(catalogSettings, settings => settings.SearchPagePriceRangeFiltering)) { catalogSettings.SearchPagePriceRangeFiltering = true; settingService.SaveSetting(catalogSettings, settings => settings.SearchPagePriceRangeFiltering); } if (!settingService.SettingExists(catalogSettings, settings => settings.SearchPagePriceFrom)) { catalogSettings.SearchPagePriceFrom = NopCatalogDefaults.DefaultPriceRangeFrom; settingService.SaveSetting(catalogSettings, settings => settings.SearchPagePriceFrom); } if (!settingService.SettingExists(catalogSettings, settings => settings.SearchPagePriceTo)) { catalogSettings.SearchPagePriceTo = NopCatalogDefaults.DefaultPriceRangeTo; settingService.SaveSetting(catalogSettings, settings => settings.SearchPagePriceTo); } if (!settingService.SettingExists(catalogSettings, settings => settings.SearchPageManuallyPriceRange)) { catalogSettings.SearchPageManuallyPriceRange = false; settingService.SaveSetting(catalogSettings, settings => settings.SearchPageManuallyPriceRange); } if (!settingService.SettingExists(catalogSettings, settings => settings.ProductsByTagPriceRangeFiltering)) { catalogSettings.ProductsByTagPriceRangeFiltering = true; settingService.SaveSetting(catalogSettings, settings => settings.ProductsByTagPriceRangeFiltering); } if (!settingService.SettingExists(catalogSettings, settings => settings.ProductsByTagPriceFrom)) { catalogSettings.ProductsByTagPriceFrom = NopCatalogDefaults.DefaultPriceRangeFrom; settingService.SaveSetting(catalogSettings, settings => settings.ProductsByTagPriceFrom); } if (!settingService.SettingExists(catalogSettings, settings => settings.ProductsByTagPriceTo)) { catalogSettings.ProductsByTagPriceTo = NopCatalogDefaults.DefaultPriceRangeTo; settingService.SaveSetting(catalogSettings, settings => settings.ProductsByTagPriceTo); } if (!settingService.SettingExists(catalogSettings, settings => settings.ProductsByTagManuallyPriceRange)) { catalogSettings.ProductsByTagManuallyPriceRange = false; settingService.SaveSetting(catalogSettings, settings => settings.ProductsByTagManuallyPriceRange); } //#4303 var orderSettings = settingService.LoadSetting(); if (!settingService.SettingExists(orderSettings, settings => settings.DisplayCustomerCurrencyOnOrders)) { orderSettings.DisplayCustomerCurrencyOnOrders = false; settingService.SaveSetting(orderSettings, settings => settings.DisplayCustomerCurrencyOnOrders); } //#16 #2909 if (!settingService.SettingExists(catalogSettings, settings => settings.AttributeValueOutOfStockDisplayType)) { catalogSettings.AttributeValueOutOfStockDisplayType = AttributeValueOutOfStockDisplayType.AlwaysDisplay; settingService.SaveSetting(catalogSettings, settings => settings.AttributeValueOutOfStockDisplayType); } //#5482 settingService.SetSetting("avalarataxsettings.gettaxratebyaddressonly", true); settingService.SetSetting("avalarataxsettings.taxratebyaddresscachetime", 480); //#5349 if (!settingService.SettingExists(shippingSettings, settings => settings.EstimateShippingCityNameEnabled)) { shippingSettings.EstimateShippingCityNameEnabled = false; settingService.SaveSetting(shippingSettings, settings => settings.EstimateShippingCityNameEnabled); } } public override void Down() { //add the downgrade logic if necessary } }