From 950cc50ae6f231ae04aa7297e5d173c42c4a3635 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 23 Aug 2013 18:13:18 -0400 Subject: [PATCH] added full support for linked children --- MediaBrowser.Controller/Entities/Folder.cs | 27 +++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index ca43ca616..f453f283c 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -16,6 +16,7 @@ using System.Linq; using System.Runtime.Serialization; using System.Threading; using System.Threading.Tasks; +using MoreLinq; namespace MediaBrowser.Controller.Entities { @@ -981,6 +982,30 @@ namespace MediaBrowser.Controller.Entities throw new ArgumentNullException(); } + var children = GetRecursiveChildrenInternal(user, includeLinkedChildren); + + if (includeLinkedChildren) + { + children = children.DistinctBy(i => i.Id); + } + + return children; + } + + /// + /// Gets allowed recursive children of an item + /// + /// The user. + /// if set to true [include linked children]. + /// IEnumerable{BaseItem}. + /// + private IEnumerable GetRecursiveChildrenInternal(User user, bool includeLinkedChildren = true) + { + if (user == null) + { + throw new ArgumentNullException(); + } + foreach (var item in GetChildren(user, includeLinkedChildren)) { yield return item; @@ -989,7 +1014,7 @@ namespace MediaBrowser.Controller.Entities if (subFolder != null) { - foreach (var subitem in subFolder.GetRecursiveChildren(user, includeLinkedChildren)) + foreach (var subitem in subFolder.GetRecursiveChildrenInternal(user, includeLinkedChildren)) { yield return subitem; }