Global Replace should include settings

This commit is contained in:
sbwalker
2026-03-04 10:31:21 -05:00
parent 91b15b5e2a
commit 8de67fdaec
3 changed files with 52 additions and 11 deletions

View File

@@ -20,7 +20,8 @@ namespace Oqtane.Infrastructure
var siteRepository = provider.GetRequiredService<ISiteRepository>();
var pageRepository = provider.GetRequiredService<IPageRepository>();
var pageModuleRepository = provider.GetRequiredService<IPageModuleRepository>();
var TenantManager = provider.GetRequiredService<ITenantManager>();
var settingRepository = provider.GetRequiredService<ISettingRepository>();
var tenantManager = provider.GetRequiredService<ITenantManager>();
var syncManager = provider.GetRequiredService<ISyncManager>();
if (!string.IsNullOrEmpty(parameters))
@@ -59,6 +60,14 @@ namespace Oqtane.Infrastructure
log += $"Site Updated<br />";
refresh = true;
}
if (globalReplace.Site)
{
if (UpdateSettings(settingRepository, EntityNames.Site, site.SiteId, find, replace, comparisonType))
{
log += $"Site Settings Updated<br />";
refresh = true;
}
}
var pages = pageRepository.GetPages(site.SiteId).ToList();
var pageModules = pageModuleRepository.GetPageModules(site.SiteId).ToList();
@@ -94,6 +103,14 @@ namespace Oqtane.Infrastructure
log += $"Page Updated: /{page.Path}<br />";
refresh = true;
}
if (globalReplace.Pages)
{
if (UpdateSettings(settingRepository, EntityNames.Page, page.PageId, find, replace, comparisonType))
{
log += $"Page Settings Updated<br />";
refresh = true;
}
}
foreach (var pageModule in pageModules.Where(item => item.PageId == page.PageId))
{
@@ -120,6 +137,14 @@ namespace Oqtane.Infrastructure
log += $"Module Updated: {pageModule.Title} Page: /{page.Path}<br />";
refresh = true;
}
if (globalReplace.Modules)
{
if (UpdateSettings(settingRepository, EntityNames.Module, pageModule.ModuleId, find, replace, comparisonType))
{
log += $"Module Settings Updated<br />";
refresh = true;
}
}
// module content
if (pageModule.Module.ModuleDefinition != null && pageModule.Module.ModuleDefinition.ServerManagerType != "")
@@ -150,7 +175,7 @@ namespace Oqtane.Infrastructure
if (refresh)
{
// clear cache
syncManager.AddSyncEvent(TenantManager.GetAlias(), EntityNames.Site, site.SiteId, SyncEventActions.Refresh);
syncManager.AddSyncEvent(tenantManager.GetAlias(), EntityNames.Site, site.SiteId, SyncEventActions.Refresh);
}
}
else
@@ -160,5 +185,21 @@ namespace Oqtane.Infrastructure
return log;
}
private bool UpdateSettings(ISettingRepository settingRepository, string entityName, int entityId, string find, string replace, StringComparison comparisonType)
{
var changed = false;
var settings = settingRepository.GetSettings(entityName, entityId).ToList();
foreach (var setting in settings)
{
if (setting.SettingValue != null && setting.SettingValue.Contains(find, comparisonType))
{
setting.SettingValue = setting.SettingValue.Replace(find, replace, comparisonType);
settingRepository.UpdateSetting(setting);
changed = true;
}
}
return changed;
}
}
}