diff --git a/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs b/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs index 86f84e08ab..c558557740 100644 --- a/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs +++ b/src/Umbraco.Core/Extensions/PublishedContentExtensions.cs @@ -987,6 +987,7 @@ public static class PublishedContentExtensions /// /// Variation context accessor. /// + /// /// /// /// The specific culture to filter for. If null is used the current culture is used. (Default is @@ -1002,9 +1003,69 @@ public static class PublishedContentExtensions IVariationContextAccessor variationContextAccessor, IPublishedCache publishedCache, INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, string docTypeAlias, string? culture = null) => parentNodes.SelectMany(x => - x.DescendantsOrSelfOfType(variationContextAccessor, publishedCache, navigationQueryService, docTypeAlias, culture)); + x.DescendantsOrSelfOfType(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, docTypeAlias, culture)); + + /// + /// Returns all DescendantsOrSelf of all content referenced + /// + /// + /// Variation context accessor. + /// + /// + /// + /// The specific culture to filter for. If null is used the current culture is used. (Default is + /// null) + /// + /// + /// + /// + /// This can be useful in order to return all nodes in an entire site by a type when combined with TypedContentAtRoot + /// + [Obsolete("Use the overload with IPublishStatusQueryService instead, scheduled for removal in v17")] + public static IEnumerable DescendantsOrSelfOfType( + this IEnumerable parentNodes, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + string docTypeAlias, + string? culture = null) => + DescendantsOrSelfOfType( + parentNodes, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + docTypeAlias, + culture); + + /// + /// Returns all DescendantsOrSelf of all content referenced + /// + /// + /// Variation context accessor. + /// + /// + /// + /// The specific culture to filter for. If null is used the current culture is used. (Default is + /// null) + /// + /// + /// + /// + /// This can be useful in order to return all nodes in an entire site by a type when combined with TypedContentAtRoot + /// + public static IEnumerable DescendantsOrSelf( + this IEnumerable parentNodes, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, + string? culture = null) + where T : class, IPublishedContent => + parentNodes.SelectMany(x => x.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, culture)); /// /// Returns all DescendantsOrSelf of all content referenced @@ -1021,6 +1082,7 @@ public static class PublishedContentExtensions /// /// This can be useful in order to return all nodes in an entire site by a type when combined with TypedContentAtRoot /// + [Obsolete("Use the overload with IPublishStatusQueryService instead, scheduled for removal in v17")] public static IEnumerable DescendantsOrSelf( this IEnumerable parentNodes, IVariationContextAccessor variationContextAccessor, @@ -1028,7 +1090,13 @@ public static class PublishedContentExtensions INavigationQueryService navigationQueryService, string? culture = null) where T : class, IPublishedContent => - parentNodes.SelectMany(x => x.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, culture)); + DescendantsOrSelf( + parentNodes, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + culture); // as per XPath 1.0 specs �2.2, // - the descendant axis contains the descendants of the context node; a descendant is a child or a child of a child and so on; thus @@ -1053,9 +1121,43 @@ public static class PublishedContentExtensions IVariationContextAccessor variationContextAccessor, IPublishedCache publishedCache, INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, string? culture = null) => - content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, false, null, culture); + content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, false, null, culture); + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] + public static IEnumerable Descendants( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + string? culture = null) => + Descendants( + content, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + culture); + + public static IEnumerable Descendants( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, + int level, + string? culture = null) => + content.DescendantsOrSelf( + variationContextAccessor, + publishedCache, + navigationQueryService, + publishStatusQueryService, + false, + p => p.Level >= level, + culture); + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] public static IEnumerable Descendants( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, @@ -1063,8 +1165,33 @@ public static class PublishedContentExtensions INavigationQueryService navigationQueryService, int level, string? culture = null) => - content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, false, p => p.Level >= level, culture); + Descendants( + content, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + level, + culture); + public static IEnumerable DescendantsOfType( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, + string contentTypeAlias, + string? culture = null) => + content.EnumerateDescendantsOrSelfInternal( + variationContextAccessor, + publishedCache, + navigationQueryService, + publishStatusQueryService, + culture, + false, + contentTypeAlias); + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] public static IEnumerable DescendantsOfType( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, @@ -1072,14 +1199,26 @@ public static class PublishedContentExtensions INavigationQueryService navigationQueryService, string contentTypeAlias, string? culture = null) => - content.EnumerateDescendantsOrSelfInternal( + DescendantsOfType( + content, variationContextAccessor, publishedCache, navigationQueryService, - culture, - false, - contentTypeAlias); + StaticServiceProvider.Instance.GetRequiredService(), + contentTypeAlias, + culture); + public static IEnumerable Descendants( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, + string? culture = null) + where T : class, IPublishedContent => + content.Descendants(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, culture).OfType(); + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] public static IEnumerable Descendants( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, @@ -1094,19 +1233,65 @@ public static class PublishedContentExtensions IVariationContextAccessor variationContextAccessor, IPublishedCache publishedCache, INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, int level, string? culture = null) where T : class, IPublishedContent => - content.Descendants(variationContextAccessor, publishedCache, navigationQueryService, level, culture).OfType(); + content.Descendants(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, level, culture).OfType(); + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] + public static IEnumerable Descendants( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + int level, + string? culture = null) + where T : class, IPublishedContent => + Descendants( + content, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + level, + culture); public static IEnumerable DescendantsOrSelf( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, IPublishedCache publishedCache, INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, string? culture = null) => - content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, true, null, culture); + content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, true, null, culture); + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] + public static IEnumerable DescendantsOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + string? culture = null) => + DescendantsOrSelf( + content, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + culture); + + public static IEnumerable DescendantsOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, + int level, + string? culture = null) => + content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, true, p => p.Level >= level, culture); + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] public static IEnumerable DescendantsOrSelf( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, @@ -1114,8 +1299,33 @@ public static class PublishedContentExtensions INavigationQueryService navigationQueryService, int level, string? culture = null) => - content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, true, p => p.Level >= level, culture); + DescendantsOrSelf( + content, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + level, + culture); + public static IEnumerable DescendantsOrSelfOfType( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, + string contentTypeAlias, + string? culture = null) => + content.EnumerateDescendantsOrSelfInternal( + variationContextAccessor, + publishedCache, + navigationQueryService, + publishStatusQueryService, + culture, + true, + contentTypeAlias); + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] public static IEnumerable DescendantsOrSelfOfType( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, @@ -1123,14 +1333,26 @@ public static class PublishedContentExtensions INavigationQueryService navigationQueryService, string contentTypeAlias, string? culture = null) => - content.EnumerateDescendantsOrSelfInternal( + DescendantsOrSelfOfType( + content, variationContextAccessor, publishedCache, navigationQueryService, - culture, - true, - contentTypeAlias); + StaticServiceProvider.Instance.GetRequiredService(), + contentTypeAlias, + culture); + public static IEnumerable DescendantsOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, + string? culture = null) + where T : class, IPublishedContent => + content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, culture).OfType(); + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] public static IEnumerable DescendantsOrSelf( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, @@ -1138,8 +1360,25 @@ public static class PublishedContentExtensions INavigationQueryService navigationQueryService, string? culture = null) where T : class, IPublishedContent => - content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, culture).OfType(); + content.DescendantsOrSelf( + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + culture); + public static IEnumerable DescendantsOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, + int level, + string? culture = null) + where T : class, IPublishedContent => + content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, level, culture).OfType(); + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] public static IEnumerable DescendantsOrSelf( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, @@ -1148,41 +1387,118 @@ public static class PublishedContentExtensions int level, string? culture = null) where T : class, IPublishedContent => - content.DescendantsOrSelf(variationContextAccessor, publishedCache, navigationQueryService, level, culture).OfType(); + DescendantsOrSelf( + content, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + level, + culture); + public static IPublishedContent? Descendant( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, + string? culture = null) => + content.Children( + variationContextAccessor, + publishedCache, + navigationQueryService, + publishStatusQueryService, + culture)?.FirstOrDefault(); + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] public static IPublishedContent? Descendant( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, IPublishedCache publishedCache, INavigationQueryService navigationQueryService, string? culture = null) => - content.Children(variationContextAccessor, publishedCache, navigationQueryService, culture)?.FirstOrDefault(); + Descendant( + content, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + culture); public static IPublishedContent? Descendant( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, IPublishedCache publishedCache, INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, int level, string? culture = null) => content - .EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, false, culture).FirstOrDefault(x => x.Level == level); + .EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, false, culture).FirstOrDefault(x => x.Level == level); + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] + public static IPublishedContent? Descendant( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + int level, + string? culture = null) => + content + .EnumerateDescendants( + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + false, + culture) + .FirstOrDefault(x => x.Level == level); public static IPublishedContent? DescendantOfType( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, IPublishedCache publishedCache, INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, string contentTypeAlias, string? culture = null) => content .EnumerateDescendantsOrSelfInternal( variationContextAccessor, publishedCache, navigationQueryService, + publishStatusQueryService, culture, false, contentTypeAlias) .FirstOrDefault(); + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] + public static IPublishedContent? DescendantOfType( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + string contentTypeAlias, + string? culture = null) => + DescendantOfType( + content, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + contentTypeAlias, + culture); + + public static T? Descendant( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, + string? culture = null) + where T : class, IPublishedContent => + content.EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, false, culture).FirstOrDefault(x => x is T) as T; + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] public static T? Descendant( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, @@ -1190,8 +1506,26 @@ public static class PublishedContentExtensions INavigationQueryService navigationQueryService, string? culture = null) where T : class, IPublishedContent => - content.EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, false, culture).FirstOrDefault(x => x is T) as T; + Descendant( + content, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + culture); + public static T? Descendant( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, + int level, + string? culture = null) + where T : class, IPublishedContent => + content.Descendant(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, level, culture) as T; + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] public static T? Descendant( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, @@ -1200,35 +1534,121 @@ public static class PublishedContentExtensions int level, string? culture = null) where T : class, IPublishedContent => - content.Descendant(variationContextAccessor, publishedCache, navigationQueryService, level, culture) as T; + Descendant( + content, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + level, + culture); - public static IPublishedContent DescendantOrSelf(this IPublishedContent content, IVariationContextAccessor variationContextAccessor, string? culture = null) => content; + public static IPublishedContent DescendantOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + string? culture = null) => + content.EnumerateDescendants( + variationContextAccessor, + GetPublishedCache(content), + GetNavigationQueryService(content), + publishStatusQueryService, + true, + culture) + .FirstOrDefault() ?? + content; + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] + public static IPublishedContent DescendantOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + string? culture = null) => + DescendantOrSelf( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + culture); public static IPublishedContent? DescendantOrSelf( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, IPublishedCache publishedCache, INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, int level, string? culture = null) => content - .EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, true, culture).FirstOrDefault(x => x.Level == level); + .EnumerateDescendants( + variationContextAccessor, + publishedCache, + navigationQueryService, + publishStatusQueryService, + true, + culture) + .FirstOrDefault(x => x.Level == level); + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] + public static IPublishedContent? DescendantOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + int level, + string? culture = null) => + DescendantOrSelf( + content, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + level, + culture); public static IPublishedContent? DescendantOrSelfOfType( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, IPublishedCache publishedCache, INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, string contentTypeAlias, string? culture = null) => content .EnumerateDescendantsOrSelfInternal( variationContextAccessor, publishedCache, navigationQueryService, + publishStatusQueryService, culture, true, contentTypeAlias) .FirstOrDefault(); + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] + public static IPublishedContent? DescendantOrSelfOfType( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + string contentTypeAlias, + string? culture = null) => + DescendantOrSelfOfType( + content, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + contentTypeAlias, + culture); + + public static T? DescendantOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, + string? culture = null) + where T : class, IPublishedContent => + content.EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, true, culture).FirstOrDefault(x => x is T) as T; + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] public static T? DescendantOrSelf( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, @@ -1236,8 +1656,26 @@ public static class PublishedContentExtensions INavigationQueryService navigationQueryService, string? culture = null) where T : class, IPublishedContent => - content.EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, true, culture).FirstOrDefault(x => x is T) as T; + DescendantOrSelf( + content, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + culture); + public static T? DescendantOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishedCache publishedCache, + INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, + int level, + string? culture = null) + where T : class, IPublishedContent => + content.DescendantOrSelf(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, level, culture) as T; + + [Obsolete("Use the overload with IPublishStatusQuery instead, scheduled for removal in v17")] public static T? DescendantOrSelf( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, @@ -1246,17 +1684,25 @@ public static class PublishedContentExtensions int level, string? culture = null) where T : class, IPublishedContent => - content.DescendantOrSelf(variationContextAccessor, publishedCache, navigationQueryService, level, culture) as T; + DescendantOrSelf( + content, + variationContextAccessor, + publishedCache, + navigationQueryService, + StaticServiceProvider.Instance.GetRequiredService(), + level, + culture); internal static IEnumerable DescendantsOrSelf( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, IPublishedCache publishedCache, INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, bool orSelf, Func? func, string? culture = null) => - content.EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, orSelf, culture) + content.EnumerateDescendants(variationContextAccessor, publishedCache, navigationQueryService, publishStatusQueryService, orSelf, culture) .Where(x => func == null || func(x)); internal static IEnumerable EnumerateDescendants( @@ -1264,6 +1710,7 @@ public static class PublishedContentExtensions IVariationContextAccessor variationContextAccessor, IPublishedCache publishedCache, INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, bool orSelf, string? culture = null) { @@ -1273,6 +1720,7 @@ public static class PublishedContentExtensions variationContextAccessor, publishedCache, navigationQueryService, + publishStatusQueryService, culture, orSelf)) { @@ -1285,6 +1733,7 @@ public static class PublishedContentExtensions IVariationContextAccessor variationContextAccessor, IPublishedCache publishedCache, INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, string? culture = null) { yield return content; @@ -1293,6 +1742,7 @@ public static class PublishedContentExtensions variationContextAccessor, publishedCache, navigationQueryService, + publishStatusQueryService, culture, false)) { @@ -2291,26 +2741,37 @@ public static class PublishedContentExtensions public static IEnumerable Children( this IPublishedContent content, IVariationContextAccessor? variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, string? culture = null) - => Children(content, variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture); + => Children(content, variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, culture); + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] + public static IEnumerable Children( + this IPublishedContent content, + IVariationContextAccessor? variationContextAccessor, + string? culture = null) + => Children(content, variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), StaticServiceProvider.Instance.GetRequiredService(), culture); + + public static IEnumerable Children( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + Func predicate, + string? culture = null) => + content.Children(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, culture).Where(predicate); + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] public static IEnumerable Children( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, Func predicate, string? culture = null) => - content.Children(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture).Where(predicate); - - [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] - public static IEnumerable ChildrenOfType( - this IPublishedContent content, - IVariationContextAccessor variationContextAccessor, - string? contentTypeAlias, - string? culture = null) - { - IPublishStatusQueryService publishStatusQueryService = StaticServiceProvider.Instance.GetRequiredService(); - return ChildrenOfType(content, variationContextAccessor, publishStatusQueryService, contentTypeAlias, culture); - } + Children( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + predicate, + culture); public static IEnumerable ChildrenOfType( this IPublishedContent content, @@ -2326,13 +2787,32 @@ public static class PublishedContentExtensions return children.FilterByCulture(culture, variationContextAccessor); } + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] + public static IEnumerable ChildrenOfType( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + string? contentTypeAlias, + string? culture = null) + { + IPublishStatusQueryService publishStatusQueryService = StaticServiceProvider.Instance.GetRequiredService(); + return ChildrenOfType(content, variationContextAccessor, publishStatusQueryService, contentTypeAlias, culture); + } + + public static IEnumerable Children( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + string? culture = null) + where T : class, IPublishedContent => + content.Children(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, culture).OfType(); + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] public static IEnumerable Children( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, string? culture = null) where T : class, IPublishedContent => - content.Children(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), culture).OfType(); + Children(content, variationContextAccessor, StaticServiceProvider.Instance.GetRequiredService(), culture); public static DataTable ChildrenAsTable( this IPublishedContent content, @@ -2349,213 +2829,525 @@ public static class PublishedContentExtensions public static IEnumerable DescendantsOrSelfOfType( this IEnumerable parentNodes, IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, string docTypeAlias, - string? culture = null) => parentNodes.SelectMany(x => - x.DescendantsOrSelfOfType(variationContextAccessor, GetPublishedCache(parentNodes.First()), - GetNavigationQueryService(parentNodes.First()), docTypeAlias, culture)); + string? culture = null) => + parentNodes.SelectMany(x => x.DescendantsOrSelfOfType( + variationContextAccessor, + GetPublishedCache(parentNodes.First()), + GetNavigationQueryService(parentNodes.First()), + publishStatusQueryService, + docTypeAlias, + culture)); + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] + public static IEnumerable DescendantsOrSelfOfType( + this IEnumerable parentNodes, + IVariationContextAccessor variationContextAccessor, + string docTypeAlias, + string? culture = null) => + DescendantsOrSelfOfType( + parentNodes, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + docTypeAlias, + culture); + public static IEnumerable DescendantsOrSelf( + this IEnumerable parentNodes, + IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + string? culture = null) + where T : class, IPublishedContent => + parentNodes.SelectMany( + x => x.DescendantsOrSelf( + variationContextAccessor, + GetPublishedCache(parentNodes.First()), + GetNavigationQueryService(parentNodes.First()), + publishStatusQueryService, + culture)); + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] public static IEnumerable DescendantsOrSelf( this IEnumerable parentNodes, IVariationContextAccessor variationContextAccessor, string? culture = null) where T : class, IPublishedContent => - parentNodes.SelectMany(x => x.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(parentNodes.First()), - GetNavigationQueryService(parentNodes.First()), culture)); + DescendantsOrSelf(parentNodes, variationContextAccessor, StaticServiceProvider.Instance.GetRequiredService(), culture); + public static IEnumerable Descendants( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + string? culture = null) => + content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, false, null, culture); + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] + public static IEnumerable Descendants( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + string? culture = null) => + Descendants(content, variationContextAccessor, StaticServiceProvider.Instance.GetRequiredService(), culture); public static IEnumerable Descendants( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + int level, string? culture = null) => - content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), false, null, culture); - + content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, false, p => p.Level >= level, culture); + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] public static IEnumerable Descendants( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, int level, string? culture = null) => - content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), false, p => p.Level >= level, culture); + Descendants( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + level, + culture); public static IEnumerable DescendantsOfType( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, string contentTypeAlias, string? culture = null) => content.EnumerateDescendantsOrSelfInternal( variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), + publishStatusQueryService, culture, false, contentTypeAlias); + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] + public static IEnumerable DescendantsOfType( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + string contentTypeAlias, + string? culture = null) => + DescendantsOfType( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + contentTypeAlias, + culture); + + public static IEnumerable Descendants( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + string? culture = null) + where T : class, IPublishedContent => + content.Descendants(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, culture).OfType(); + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] public static IEnumerable Descendants( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, string? culture = null) where T : class, IPublishedContent => - content.Descendants(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), culture).OfType(); + Descendants(content, variationContextAccessor, StaticServiceProvider.Instance.GetRequiredService(), culture); + public static IEnumerable Descendants( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + int level, + string? culture = null) + where T : class, IPublishedContent => + content.Descendants(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, level, culture).OfType(); + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] public static IEnumerable Descendants( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, int level, string? culture = null) where T : class, IPublishedContent => - content.Descendants(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), level, culture).OfType(); + Descendants( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + level, + culture); public static IEnumerable DescendantsOrSelf( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, string? culture = null) => - content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), true, null, culture); + content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, true, null, culture); + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] + public static IEnumerable DescendantsOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + string? culture = null) => + DescendantsOrSelf( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + culture); + public static IEnumerable DescendantsOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + int level, + string? culture = null) => + content.DescendantsOrSelf( + variationContextAccessor, + GetPublishedCache(content), + GetNavigationQueryService(content), + publishStatusQueryService, + true, + p => p.Level >= level, + culture); + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] public static IEnumerable DescendantsOrSelf( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, int level, string? culture = null) => - content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), true, p => p.Level >= level, culture); - + DescendantsOrSelf( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + level, + culture); public static IEnumerable DescendantsOrSelfOfType( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, string contentTypeAlias, string? culture = null) => content.EnumerateDescendantsOrSelfInternal( variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), + publishStatusQueryService, culture, true, contentTypeAlias); + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] + public static IEnumerable DescendantsOrSelfOfType( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + string contentTypeAlias, + string? culture = null) => + DescendantsOrSelfOfType( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + contentTypeAlias, + culture); + + public static IEnumerable DescendantsOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + string? culture = null) + where T : class, IPublishedContent => + content.DescendantsOrSelf( + variationContextAccessor, + GetPublishedCache(content), + GetNavigationQueryService(content), + publishStatusQueryService, + culture).OfType(); + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] public static IEnumerable DescendantsOrSelf( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, string? culture = null) where T : class, IPublishedContent => - content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), culture).OfType(); + DescendantsOrSelf( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + culture); + public static IEnumerable DescendantsOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + int level, + string? culture = null) + where T : class, IPublishedContent => + content.DescendantsOrSelf( + variationContextAccessor, + GetPublishedCache(content), + GetNavigationQueryService(content), + publishStatusQueryService, + level, + culture).OfType(); + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] public static IEnumerable DescendantsOrSelf( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, int level, string? culture = null) where T : class, IPublishedContent => - content.DescendantsOrSelf(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), level, culture).OfType(); + DescendantsOrSelf( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + level, + culture); + public static IPublishedContent? Descendant( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + string? culture = null) => + content.Children(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, culture)?.FirstOrDefault(); + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] public static IPublishedContent? Descendant( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, string? culture = null) => - content.Children(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), culture)?.FirstOrDefault(); + Descendant( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + culture); public static IPublishedContent? Descendant( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, int level, string? culture = null) => content - .EnumerateDescendants(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), false, culture).FirstOrDefault(x => x.Level == level); + .EnumerateDescendants( + variationContextAccessor, + GetPublishedCache(content), + GetNavigationQueryService(content), + publishStatusQueryService, + false, + culture).FirstOrDefault(x => x.Level == level); + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] + public static IPublishedContent? Descendant( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + int level, + string? culture = null) => + Descendant( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + level, + culture); public static IPublishedContent? DescendantOfType( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, string contentTypeAlias, string? culture = null) => content .EnumerateDescendantsOrSelfInternal( variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), + publishStatusQueryService, culture, false, contentTypeAlias) .FirstOrDefault(); + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] + public static IPublishedContent? DescendantOfType( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + string contentTypeAlias, + string? culture = null) => + DescendantOfType( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + contentTypeAlias, + culture); + + public static T? Descendant( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + string? culture = null) + where T : class, IPublishedContent => + content.EnumerateDescendants( + variationContextAccessor, + GetPublishedCache(content), + GetNavigationQueryService(content), + publishStatusQueryService, + false, + culture) + .FirstOrDefault(x => x is T) as T; + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] public static T? Descendant( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, string? culture = null) where T : class, IPublishedContent => - content.EnumerateDescendants(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), false, culture).FirstOrDefault(x => x is T) as T; + Descendant( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + culture); + public static T? Descendant( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + int level, + string? culture = null) + where T : class, IPublishedContent => + content.Descendant( + variationContextAccessor, + GetPublishedCache(content), + GetNavigationQueryService(content), + publishStatusQueryService, + level, + culture) as T; + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] public static T? Descendant( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, int level, string? culture = null) where T : class, IPublishedContent => - content.Descendant(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), level, culture) as T; + Descendant( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + level, + culture); public static IPublishedContent? DescendantOrSelf( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, int level, string? culture = null) => content - .EnumerateDescendants(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), true, culture).FirstOrDefault(x => x.Level == level); + .EnumerateDescendants( + variationContextAccessor, + GetPublishedCache(content), + GetNavigationQueryService(content), + publishStatusQueryService, + true, + culture).FirstOrDefault(x => x.Level == level); + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] + public static IPublishedContent? DescendantOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + int level, + string? culture = null) => DescendantOrSelf(content, variationContextAccessor, StaticServiceProvider.Instance.GetRequiredService(), level, culture); public static IPublishedContent? DescendantOrSelfOfType( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, string contentTypeAlias, string? culture = null) => content .EnumerateDescendantsOrSelfInternal( variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), + publishStatusQueryService, culture, true, contentTypeAlias) .FirstOrDefault(); + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] + public static IPublishedContent? DescendantOrSelfOfType( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + string contentTypeAlias, + string? culture = null) => + DescendantOrSelfOfType( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + contentTypeAlias, + culture); + + public static T? DescendantOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + string? culture = null) + where T : class, IPublishedContent => + content.EnumerateDescendants( + variationContextAccessor, + GetPublishedCache(content), + GetNavigationQueryService(content), + publishStatusQueryService, + true, + culture).FirstOrDefault(x => x is T) as T; + + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] public static T? DescendantOrSelf( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, string? culture = null) where T : class, IPublishedContent => - content.EnumerateDescendants(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), true, culture).FirstOrDefault(x => x is T) as T; + DescendantOrSelf( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + culture); + public static T? DescendantOrSelf( + this IPublishedContent content, + IVariationContextAccessor variationContextAccessor, + IPublishStatusQueryService publishStatusQueryService, + int level, + string? culture = null) + where T : class, IPublishedContent => + content.DescendantOrSelf(variationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), publishStatusQueryService, level, culture) as T; + [Obsolete("Use the overload with IPublishStatusQueryService, scheduled for removal in v17")] public static T? DescendantOrSelf( this IPublishedContent content, IVariationContextAccessor variationContextAccessor, int level, string? culture = null) where T : class, IPublishedContent => - content.DescendantOrSelf(variationContextAccessor, GetPublishedCache(content), - GetNavigationQueryService(content), level, culture) as T; + DescendantOrSelf( + content, + variationContextAccessor, + StaticServiceProvider.Instance.GetRequiredService(), + level, + culture); @@ -2838,6 +3630,7 @@ public static class PublishedContentExtensions IVariationContextAccessor variationContextAccessor, IPublishedCache publishedCache, INavigationQueryService navigationQueryService, + IPublishStatusQueryService publishStatusQueryService, string? culture, bool orSelf, string? contentTypeAlias = null) @@ -2859,7 +3652,9 @@ public static class PublishedContentExtensions yield break; } + culture ??= variationContextAccessor?.VariationContext?.Culture ?? string.Empty; IEnumerable descendants = descendantsKeys + .Where(x => publishStatusQueryService.IsDocumentPublished(x, culture)) .Select(publishedCache.GetById) .WhereNotNull() .FilterByCulture(culture, variationContextAccessor); diff --git a/src/Umbraco.Web.Common/Extensions/FriendlyPublishedContentExtensions.cs b/src/Umbraco.Web.Common/Extensions/FriendlyPublishedContentExtensions.cs index e25ea4cc4a..3b801bc8d7 100644 --- a/src/Umbraco.Web.Common/Extensions/FriendlyPublishedContentExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/FriendlyPublishedContentExtensions.cs @@ -355,7 +355,7 @@ public static class FriendlyPublishedContentExtensions /// public static IEnumerable DescendantsOrSelfOfType( this IEnumerable parentNodes, string docTypeAlias, string? culture = null) - => parentNodes.DescendantsOrSelfOfType(VariationContextAccessor, GetPublishedCache(parentNodes.First()), GetNavigationQueryService(parentNodes.First()), docTypeAlias, culture); + => parentNodes.DescendantsOrSelfOfType(VariationContextAccessor, GetPublishedCache(parentNodes.First()), GetNavigationQueryService(parentNodes.First()), PublishStatusQueryService, docTypeAlias, culture); /// /// Returns all DescendantsOrSelf of all content referenced @@ -373,77 +373,77 @@ public static class FriendlyPublishedContentExtensions this IEnumerable parentNodes, string? culture = null) where T : class, IPublishedContent - => parentNodes.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(parentNodes.First()), GetNavigationQueryService(parentNodes.First()), culture); + => parentNodes.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(parentNodes.First()), GetNavigationQueryService(parentNodes.First()), PublishStatusQueryService, culture); public static IEnumerable Descendants(this IPublishedContent content, string? culture = null) - => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture); + => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture); public static IEnumerable Descendants(this IPublishedContent content, int level, string? culture = null) - => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture); + => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture); public static IEnumerable DescendantsOfType(this IPublishedContent content, string contentTypeAlias, string? culture = null) - => content.DescendantsOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), contentTypeAlias, culture); + => content.DescendantsOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, contentTypeAlias, culture); public static IEnumerable Descendants(this IPublishedContent content, string? culture = null) where T : class, IPublishedContent - => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture); + => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture); public static IEnumerable Descendants(this IPublishedContent content, int level, string? culture = null) where T : class, IPublishedContent - => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture); + => content.Descendants(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture); public static IEnumerable DescendantsOrSelf( this IPublishedContent content, string? culture = null) - => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture); + => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture); public static IEnumerable DescendantsOrSelf(this IPublishedContent content, int level, string? culture = null) - => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture); + => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture); public static IEnumerable DescendantsOrSelfOfType(this IPublishedContent content, string contentTypeAlias, string? culture = null) - => content.DescendantsOrSelfOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), contentTypeAlias, culture); + => content.DescendantsOrSelfOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, contentTypeAlias, culture); public static IEnumerable DescendantsOrSelf(this IPublishedContent content, string? culture = null) where T : class, IPublishedContent - => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture); + => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture); public static IEnumerable DescendantsOrSelf(this IPublishedContent content, int level, string? culture = null) where T : class, IPublishedContent - => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture); + => content.DescendantsOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture); public static IPublishedContent? Descendant(this IPublishedContent content, string? culture = null) - => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture); + => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture); public static IPublishedContent? Descendant(this IPublishedContent content, int level, string? culture = null) - => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture); + => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture); public static IPublishedContent? DescendantOfType(this IPublishedContent content, string contentTypeAlias, string? culture = null) - => content.DescendantOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), contentTypeAlias, culture); + => content.DescendantOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, contentTypeAlias, culture); public static T? Descendant(this IPublishedContent content, string? culture = null) where T : class, IPublishedContent - => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture); + => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture); public static T? Descendant(this IPublishedContent content, int level, string? culture = null) where T : class, IPublishedContent - => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture); + => content.Descendant(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture); public static IPublishedContent DescendantOrSelf(this IPublishedContent content, string? culture = null) - => content.DescendantOrSelf(VariationContextAccessor, culture); + => content.DescendantOrSelf(VariationContextAccessor, PublishStatusQueryService, culture); public static IPublishedContent? DescendantOrSelf(this IPublishedContent content, int level, string? culture = null) - => content.DescendantOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture); + => content.DescendantOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture); public static IPublishedContent? DescendantOrSelfOfType(this IPublishedContent content, string contentTypeAlias, string? culture = null) - => content.DescendantOrSelfOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), contentTypeAlias, culture); + => content.DescendantOrSelfOfType(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, contentTypeAlias, culture); public static T? DescendantOrSelf(this IPublishedContent content, string? culture = null) where T : class, IPublishedContent - => content.DescendantOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), culture); + => content.DescendantOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, culture); public static T? DescendantOrSelf(this IPublishedContent content, int level, string? culture = null) where T : class, IPublishedContent - => content.DescendantOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), level, culture); + => content.DescendantOrSelf(VariationContextAccessor, GetPublishedCache(content), GetNavigationQueryService(content), PublishStatusQueryService, level, culture); /// /// Gets the children of the content item.