diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-08-23 18:13:18 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-08-23 18:13:18 -0400 |
| commit | 950cc50ae6f231ae04aa7297e5d173c42c4a3635 (patch) | |
| tree | 7eaa1d1ccea5f262dd2838669218c9188f18a142 | |
| parent | 6aa3164092b441ce84f9eab84e3340077e154568 (diff) | |
added full support for linked children
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 27 |
1 files changed, 26 insertions, 1 deletions
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; + } + + /// <summary> + /// Gets allowed recursive children of an item + /// </summary> + /// <param name="user">The user.</param> + /// <param name="includeLinkedChildren">if set to <c>true</c> [include linked children].</param> + /// <returns>IEnumerable{BaseItem}.</returns> + /// <exception cref="System.ArgumentNullException"></exception> + private IEnumerable<BaseItem> 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; } |
