diff options
| author | Luke <luke.pulverenti@gmail.com> | 2017-05-04 15:05:22 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-05-04 15:05:22 -0400 |
| commit | 6e53aa0e076c2ce2bd7b1a462196b099c77f90e5 (patch) | |
| tree | 0fb73d80406fffe26b77c40c288389a291ddd3af /Emby.Server.Implementations/Library/LibraryManager.cs | |
| parent | fb74ee3bb616f7532c79bec0113a14fec3a65be1 (diff) | |
| parent | 364c8206bf500ac466d5360ddfe01b67fa8b59a9 (diff) | |
Merge pull request #2613 from MediaBrowser/dev
Dev
Diffstat (limited to 'Emby.Server.Implementations/Library/LibraryManager.cs')
| -rw-r--r-- | Emby.Server.Implementations/Library/LibraryManager.cs | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index 684ad6284..685c794b7 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -1962,8 +1962,34 @@ namespace Emby.Server.Implementations.Library return new List<Folder>(); } - return GetUserRootFolder().Children - .OfType<Folder>() + return GetCollectionFoldersInternal(item, GetUserRootFolder().Children.OfType<Folder>().ToList()); + } + + public List<Folder> GetCollectionFolders(BaseItem item, List<Folder> allUserRootChildren) + { + while (item != null) + { + var parent = item.GetParent(); + + if (parent == null || parent is AggregateFolder) + { + break; + } + + item = parent; + } + + if (item == null) + { + return new List<Folder>(); + } + + return GetCollectionFoldersInternal(item, allUserRootChildren); + } + + private List<Folder> GetCollectionFoldersInternal(BaseItem item, List<Folder> allUserRootChildren) + { + return allUserRootChildren .Where(i => string.Equals(i.Path, item.Path, StringComparison.OrdinalIgnoreCase) || i.PhysicalLocations.Contains(item.Path, StringComparer.OrdinalIgnoreCase)) .ToList(); } |
