using FluentMigrator; using Nop.Core.Domain; using Nop.Core.Domain.Catalog; using Nop.Core.Domain.Common; using Nop.Core.Domain.Configuration; using Nop.Core.Domain.Gdpr; using Nop.Core.Domain.Media; using Nop.Core.Domain.Messages; using Nop.Core.Domain.Orders; using Nop.Core.Domain.Security; using Nop.Core.Domain.Seo; using Nop.Core.Domain.Tax; using Nop.Core.Infrastructure; using Nop.Data; using Nop.Data.Migrations; using Nop.Services.Configuration; using Nop.Services.Stores; namespace Nop.Web.Framework.Migrations.UpgradeTo460; [NopUpdateMigration("2023-07-26 14:00:00", "4.60", 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 settingService = EngineContext.Current.Resolve(); var catalogSettings = settingService.LoadSetting(); //#3075 if (!settingService.SettingExists(catalogSettings, settings => settings.AllowCustomersToSearchWithManufacturerName)) { catalogSettings.AllowCustomersToSearchWithManufacturerName = true; settingService.SaveSetting(catalogSettings, settings => settings.AllowCustomersToSearchWithManufacturerName); } if (!settingService.SettingExists(catalogSettings, settings => settings.AllowCustomersToSearchWithCategoryName)) { catalogSettings.AllowCustomersToSearchWithCategoryName = true; settingService.SaveSetting(catalogSettings, settings => settings.AllowCustomersToSearchWithCategoryName); } //#1933 if (!settingService.SettingExists(catalogSettings, settings => settings.DisplayAllPicturesOnCatalogPages)) { catalogSettings.DisplayAllPicturesOnCatalogPages = false; settingService.SaveSetting(catalogSettings, settings => settings.DisplayAllPicturesOnCatalogPages); } //#3511 var newProductsNumber = settingService.GetSetting("catalogsettings.newproductsnumber"); if (newProductsNumber is not null && int.TryParse(newProductsNumber.Value, out var newProductsPageSize)) { catalogSettings.NewProductsPageSize = newProductsPageSize; settingService.SaveSetting(catalogSettings, settings => settings.NewProductsPageSize); settingService.DeleteSetting(newProductsNumber); } else if (!settingService.SettingExists(catalogSettings, settings => settings.NewProductsPageSize)) { catalogSettings.NewProductsPageSize = 6; settingService.SaveSetting(catalogSettings, settings => settings.NewProductsPageSize); } if (!settingService.SettingExists(catalogSettings, settings => settings.NewProductsAllowCustomersToSelectPageSize)) { catalogSettings.NewProductsAllowCustomersToSelectPageSize = false; settingService.SaveSetting(catalogSettings, settings => settings.NewProductsAllowCustomersToSelectPageSize); } if (!settingService.SettingExists(catalogSettings, settings => settings.NewProductsPageSizeOptions)) { catalogSettings.NewProductsPageSizeOptions = "6, 3, 9"; settingService.SaveSetting(catalogSettings, settings => settings.NewProductsPageSizeOptions); } //#29 if (!settingService.SettingExists(catalogSettings, settings => settings.DisplayFromPrices)) { catalogSettings.DisplayFromPrices = false; settingService.SaveSetting(catalogSettings, settings => settings.DisplayFromPrices); } //#6115 if (!settingService.SettingExists(catalogSettings, settings => settings.ShowShortDescriptionOnCatalogPages)) { catalogSettings.ShowShortDescriptionOnCatalogPages = false; settingService.SaveSetting(catalogSettings, settings => settings.ShowShortDescriptionOnCatalogPages); } var storeInformationSettings = settingService.LoadSetting(); //#3997 if (!settingService.SettingExists(storeInformationSettings, settings => settings.InstagramLink)) { storeInformationSettings.InstagramLink = ""; settingService.SaveSetting(storeInformationSettings, settings => settings.InstagramLink); } var commonSettings = settingService.LoadSetting(); //#5802 if (!settingService.SettingExists(commonSettings, settings => settings.HeaderCustomHtml)) { commonSettings.HeaderCustomHtml = ""; settingService.SaveSetting(commonSettings, settings => settings.HeaderCustomHtml); } if (!settingService.SettingExists(commonSettings, settings => settings.FooterCustomHtml)) { commonSettings.FooterCustomHtml = ""; settingService.SaveSetting(commonSettings, settings => settings.FooterCustomHtml); } var orderSettings = settingService.LoadSetting(); //#5604 if (!settingService.SettingExists(orderSettings, settings => settings.ShowProductThumbnailInOrderDetailsPage)) { orderSettings.ShowProductThumbnailInOrderDetailsPage = true; settingService.SaveSetting(orderSettings, settings => settings.ShowProductThumbnailInOrderDetailsPage); } var mediaSettings = settingService.LoadSetting(); //#5604 if (!settingService.SettingExists(mediaSettings, settings => settings.OrderThumbPictureSize)) { mediaSettings.OrderThumbPictureSize = 80; settingService.SaveSetting(mediaSettings, settings => settings.OrderThumbPictureSize); } var adminSettings = settingService.LoadSetting(); if (!settingService.SettingExists(adminSettings, settings => settings.CheckLicense)) { adminSettings.CheckLicense = true; settingService.SaveSetting(adminSettings, settings => settings.CheckLicense); } var gdprSettings = settingService.LoadSetting(); //#5809 if (!settingService.SettingExists(gdprSettings, settings => settings.DeleteInactiveCustomersAfterMonths)) { gdprSettings.DeleteInactiveCustomersAfterMonths = 36; settingService.SaveSetting(gdprSettings, settings => settings.DeleteInactiveCustomersAfterMonths); } var captchaSettings = settingService.LoadSetting(); //#6182 if (!settingService.SettingExists(captchaSettings, settings => settings.ShowOnCheckoutPageForGuests)) { captchaSettings.ShowOnCheckoutPageForGuests = false; settingService.SaveSetting(captchaSettings, settings => settings.ShowOnCheckoutPageForGuests); } //#7 if (!settingService.SettingExists(mediaSettings, settings => settings.VideoIframeAllow)) { mediaSettings.VideoIframeAllow = "fullscreen"; settingService.SaveSetting(mediaSettings, settings => settings.VideoIframeAllow); } //#7 if (!settingService.SettingExists(mediaSettings, settings => settings.VideoIframeWidth)) { mediaSettings.VideoIframeWidth = 300; settingService.SaveSetting(mediaSettings, settings => settings.VideoIframeWidth); } //#7 if (!settingService.SettingExists(mediaSettings, settings => settings.VideoIframeHeight)) { mediaSettings.VideoIframeHeight = 150; settingService.SaveSetting(mediaSettings, settings => settings.VideoIframeHeight); } //#385 if (!settingService.SettingExists(catalogSettings, settings => settings.ProductUrlStructureTypeId)) { catalogSettings.ProductUrlStructureTypeId = (int)ProductUrlStructureType.Product; settingService.SaveSetting(catalogSettings, settings => settings.ProductUrlStructureTypeId); } //#5261 var robotsTxtSettings = settingService.LoadSetting(); if (!settingService.SettingExists(robotsTxtSettings, settings => settings.DisallowPaths)) { robotsTxtSettings.DisallowPaths.AddRange(new[] { "/admin", "/bin/", "/files/", "/files/exportimport/", "/country/getstatesbycountryid", "/install", "/setproductreviewhelpfulness", "/*?*returnUrl=" }); settingService.SaveSetting(robotsTxtSettings, settings => settings.DisallowPaths); } if (!settingService.SettingExists(robotsTxtSettings, settings => settings.LocalizableDisallowPaths)) { robotsTxtSettings.LocalizableDisallowPaths.AddRange(new[] { "/addproducttocart/catalog/", "/addproducttocart/details/", "/backinstocksubscriptions/manage", "/boards/forumsubscriptions", "/boards/forumwatch", "/boards/postedit", "/boards/postdelete", "/boards/postcreate", "/boards/topicedit", "/boards/topicdelete", "/boards/topiccreate", "/boards/topicmove", "/boards/topicwatch", "/cart$", "/changecurrency", "/changelanguage", "/changetaxtype", "/checkout", "/checkout/billingaddress", "/checkout/completed", "/checkout/confirm", "/checkout/shippingaddress", "/checkout/shippingmethod", "/checkout/paymentinfo", "/checkout/paymentmethod", "/clearcomparelist", "/compareproducts", "/compareproducts/add/*", "/customer/avatar", "/customer/activation", "/customer/addresses", "/customer/changepassword", "/customer/checkusernameavailability", "/customer/downloadableproducts", "/customer/info", "/customer/productreviews", "/deletepm", "/emailwishlist", "/eucookielawaccept", "/inboxupdate", "/newsletter/subscriptionactivation", "/onepagecheckout", "/order/history", "/orderdetails", "/passwordrecovery/confirm", "/poll/vote", "/privatemessages", "/recentlyviewedproducts", "/returnrequest", "/returnrequest/history", "/rewardpoints/history", "/search?", "/sendpm", "/sentupdate", "/shoppingcart/*", "/storeclosed", "/subscribenewsletter", "/topic/authenticate", "/viewpm", "/uploadfilecheckoutattribute", "/uploadfileproductattribute", "/uploadfilereturnrequest", "/wishlist" }); settingService.SaveSetting(robotsTxtSettings, settings => settings.LocalizableDisallowPaths); } if (!settingService.SettingExists(robotsTxtSettings, settings => settings.DisallowLanguages)) settingService.SaveSetting(robotsTxtSettings, settings => settings.DisallowLanguages); if (!settingService.SettingExists(robotsTxtSettings, settings => settings.AdditionsRules)) settingService.SaveSetting(robotsTxtSettings, settings => settings.AdditionsRules); if (!settingService.SettingExists(robotsTxtSettings, settings => settings.AllowSitemapXml)) settingService.SaveSetting(robotsTxtSettings, settings => settings.AllowSitemapXml); //#5753 if (!settingService.SettingExists(mediaSettings, settings => settings.ProductDefaultImageId)) { mediaSettings.ProductDefaultImageId = 0; settingService.SaveSetting(mediaSettings, settings => settings.ProductDefaultImageId); } //#3651 if (!settingService.SettingExists(orderSettings, settings => settings.AttachPdfInvoiceToOrderProcessingEmail)) { orderSettings.AttachPdfInvoiceToOrderProcessingEmail = false; settingService.SaveSetting(orderSettings, settings => settings.AttachPdfInvoiceToOrderProcessingEmail); } var taxSettings = settingService.LoadSetting(); //#1961 if (!settingService.SettingExists(taxSettings, settings => settings.EuVatEnabledForGuests)) { taxSettings.EuVatEnabledForGuests = false; settingService.SaveSetting(taxSettings, settings => settings.EuVatEnabledForGuests); } //#5570 var sitemapXmlSettings = settingService.LoadSetting(); if (!settingService.SettingExists(sitemapXmlSettings, settings => settings.RebuildSitemapXmlAfterHours)) { sitemapXmlSettings.RebuildSitemapXmlAfterHours = 2 * 24; settingService.SaveSetting(sitemapXmlSettings, settings => settings.RebuildSitemapXmlAfterHours); } if (!settingService.SettingExists(sitemapXmlSettings, settings => settings.SitemapBuildOperationDelay)) { sitemapXmlSettings.SitemapBuildOperationDelay = 60; settingService.SaveSetting(sitemapXmlSettings, settings => settings.SitemapBuildOperationDelay); } //#6378 if (!settingService.SettingExists(mediaSettings, settings => settings.AllowSVGUploads)) { mediaSettings.AllowSVGUploads = false; settingService.SaveSetting(mediaSettings, settings => settings.AllowSVGUploads); } //#5599 var messagesSettings = settingService.LoadSetting(); if (!settingService.SettingExists(messagesSettings, settings => settings.UseDefaultEmailAccountForSendStoreOwnerEmails)) { messagesSettings.UseDefaultEmailAccountForSendStoreOwnerEmails = false; settingService.SaveSetting(messagesSettings, settings => settings.UseDefaultEmailAccountForSendStoreOwnerEmails); } //#228 if (!settingService.SettingExists(catalogSettings, settings => settings.ActiveSearchProviderSystemName)) { catalogSettings.ActiveSearchProviderSystemName = string.Empty; settingService.SaveSetting(catalogSettings, settings => settings.ActiveSearchProviderSystemName); } //#43 var metaTitleKey = $"{nameof(SeoSettings)}.DefaultTitle".ToLower(); var metaKeywordsKey = $"{nameof(SeoSettings)}.DefaultMetaKeywords".ToLower(); var metaDescriptionKey = $"{nameof(SeoSettings)}.DefaultMetaDescription".ToLower(); var homepageTitleKey = $"{nameof(SeoSettings)}.HomepageTitle".ToLower(); var homepageDescriptionKey = $"{nameof(SeoSettings)}.HomepageDescription".ToLower(); var settingRepository = EngineContext.Current.Resolve>(); var storeService = EngineContext.Current.Resolve(); foreach (var store in storeService.GetAllStores()) { var metaTitle = settingService.GetSettingByKey(metaTitleKey, storeId: store.Id) ?? settingService.GetSettingByKey(metaTitleKey); var metaKeywords = settingService.GetSettingByKey(metaKeywordsKey, storeId: store.Id) ?? settingService.GetSettingByKey(metaKeywordsKey); var metaDescription = settingService.GetSettingByKey(metaDescriptionKey, storeId: store.Id) ?? settingService.GetSettingByKey(metaDescriptionKey); var homepageTitle = settingService.GetSettingByKey(homepageTitleKey, storeId: store.Id) ?? settingService.GetSettingByKey(homepageTitleKey); var homepageDescription = settingService.GetSettingByKey(homepageDescriptionKey, storeId: store.Id) ?? settingService.GetSettingByKey(homepageDescriptionKey); if (metaTitle != null) store.DefaultTitle = metaTitle; if (metaKeywords != null) store.DefaultMetaKeywords = metaKeywords; if (metaDescription != null) store.DefaultMetaDescription = metaDescription; if (homepageTitle != null) store.HomepageTitle = homepageTitle; if (homepageDescription != null) store.HomepageDescription = homepageDescription; storeService.UpdateStore(store); } settingRepository.Delete(setting => setting.Name == metaTitleKey); settingRepository.Delete(setting => setting.Name == metaKeywordsKey); settingRepository.Delete(setting => setting.Name == metaDescriptionKey); settingRepository.Delete(setting => setting.Name == homepageTitleKey); settingRepository.Delete(setting => setting.Name == homepageDescriptionKey); //#6464 var pdfSettings = settingService.LoadSetting(); if (!settingService.SettingExists(pdfSettings, settings => settings.FontFamily)) { pdfSettings.FontFamily = "FreeSerif"; settingService.SaveSetting(pdfSettings, settings => settings.FontFamily); //delete old setting settingRepository.Delete(setting => setting.Name == $"{nameof(PdfSettings)}.FontFileName".ToLower()); } } public override void Down() { //add the downgrade logic if necessary } }