Fix to GetCultureFromDomains extensions following changes to routing and published content cache (#17884)

This commit is contained in:
Andy Butland
2025-01-08 10:29:06 +01:00
committed by GitHub
parent 22e993f44c
commit e7ee7c63c3
3 changed files with 107 additions and 17 deletions

View File

@@ -19,6 +19,9 @@ public static class FriendlyPublishedContentExtensions
private static IVariationContextAccessor VariationContextAccessor { get; } =
StaticServiceProvider.Instance.GetRequiredService<IVariationContextAccessor>();
private static IDomainCache DomainCache { get; } =
StaticServiceProvider.Instance.GetRequiredService<IDomainCache>();
private static IPublishedContentCache PublishedContentCache { get; } =
StaticServiceProvider.Instance.GetRequiredService<IPublishedContentCache>();
@@ -731,7 +734,7 @@ public static class FriendlyPublishedContentExtensions
public static string? GetCultureFromDomains(
this IPublishedContent content,
Uri? current = null)
=> content.GetCultureFromDomains(UmbracoContextAccessor, SiteDomainHelper, current);
=> content.GetCultureFromDomains(UmbracoContextAccessor, SiteDomainHelper, DomainCache, PublishedContentCache, DocumentNavigationQueryService, current);
public static IEnumerable<PublishedSearchResult> SearchDescendants(
this IPublishedContent content,

View File

@@ -4,8 +4,10 @@ using Examine.Search;
using Microsoft.AspNetCore.Html;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Models.PublishedContent;
using Umbraco.Cms.Core.PublishedCache;
using Umbraco.Cms.Core.Routing;
using Umbraco.Cms.Core.Services;
using Umbraco.Cms.Core.Services.Navigation;
using Umbraco.Cms.Core.Web;
using Umbraco.Cms.Infrastructure.Examine;
@@ -20,7 +22,36 @@ public static class PublishedContentExtensions
/// </summary>
/// <param name="content">The document.</param>
/// <param name="umbracoContextAccessor"></param>
/// <param name="siteDomainHelper"></param>
/// <param name="siteDomainHelper">The site domain helper.</param>
/// <param name="current">An optional current Uri.</param>
/// <returns>The culture assigned to the document by domains.</returns>
/// <remarks>
/// <para>
/// In 1:1 multilingual setup, a document contains several cultures (there is not
/// one document per culture), and domains, withing the context of a current Uri, assign
/// a culture to that document.
/// </para>
/// </remarks>
[Obsolete("Please use the method taking all parameters. This overload will be removed in V17.")]
public static string? GetCultureFromDomains(
this IPublishedContent content,
IUmbracoContextAccessor umbracoContextAccessor,
ISiteDomainMapper siteDomainHelper,
Uri? current = null)
{
IUmbracoContext umbracoContext = umbracoContextAccessor.GetRequiredUmbracoContext();
return DomainUtilities.GetCultureFromDomains(content.Id, content.Path, current, umbracoContext, siteDomainHelper);
}
/// <summary>
/// Gets the culture assigned to a document by domains, in the context of a current Uri.
/// </summary>
/// <param name="content">The document.</param>
/// <param name="umbracoContextAccessor"></param>
/// <param name="siteDomainHelper">The site domain helper.</param>
/// <param name="domainCache">The domain cache.</param>
/// <param name="publishedCache">The published content cache.</param>
/// <param name="navigationQueryService">The navigation query service.</param>
/// <param name="current">An optional current Uri.</param>
/// <returns>The culture assigned to the document by domains.</returns>
/// <remarks>
@@ -34,10 +65,13 @@ public static class PublishedContentExtensions
this IPublishedContent content,
IUmbracoContextAccessor umbracoContextAccessor,
ISiteDomainMapper siteDomainHelper,
IDomainCache domainCache,
IPublishedCache publishedCache,
INavigationQueryService navigationQueryService,
Uri? current = null)
{
IUmbracoContext umbracoContext = umbracoContextAccessor.GetRequiredUmbracoContext();
return DomainUtilities.GetCultureFromDomains(content.Id, content.Path, current, umbracoContext, siteDomainHelper);
return DomainUtilities.GetCultureFromDomains(content.Id, content.Path, current, umbracoContext, siteDomainHelper, domainCache, publishedCache, navigationQueryService);
}
#endregion