diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-05-16 14:21:08 -0400 |
|---|---|---|
| committer | Luke <luke.pulverenti@gmail.com> | 2016-05-16 14:21:08 -0400 |
| commit | d44d64477c41ee8d5d5703d0f74e638d3cd6d034 (patch) | |
| tree | 30a18b1843e02f7d4db1ff85729c871dbca50aa9 | |
| parent | bf89f347e84e7d2120319c7c59510e8bce151b80 (diff) | |
| parent | e1718a5fa6b8f1dc30c60f7b2d649c320679a1b7 (diff) | |
Merge pull request #1741 from MediaBrowser/dev
Dev
| -rw-r--r-- | MediaBrowser.Controller/Entities/UserViewBuilder.cs | 59 |
1 files changed, 31 insertions, 28 deletions
diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index a4fe2e178..b88e8493d 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -250,9 +250,16 @@ namespace MediaBrowser.Controller.Entities { if (query.Recursive) { - var items = GetRecursiveChildren(parent, user, new[] { CollectionType.Music, CollectionType.MusicVideos }, i => FilterItem(i, query)); + query.Recursive = true; + query.ParentId = parent.Id; + query.SetUser(user); + + if (query.IncludeItemTypes.Length == 0) + { + query.IncludeItemTypes = new[] { typeof(MusicArtist).Name, typeof(MusicAlbum).Name, typeof(Audio.Audio).Name, typeof(MusicVideo).Name }; + } - return PostFilterAndSort(items, parent, null, query); + return _libraryManager.GetItemsResult(query); } var list = new List<BaseItem>(); @@ -444,7 +451,10 @@ namespace MediaBrowser.Controller.Entities query.ParentId = parent.Id; query.SetUser(user); - query.IncludeItemTypes = new[] { typeof(Movie).Name, typeof(BoxSet).Name }; + if (query.IncludeItemTypes.Length == 0) + { + query.IncludeItemTypes = new[] { typeof(Movie).Name, typeof(BoxSet).Name }; + } return _libraryManager.GetItemsResult(query); } @@ -540,8 +550,13 @@ namespace MediaBrowser.Controller.Entities private async Task<QueryResult<BaseItem>> GetMovieGenres(Folder parent, User user, InternalItemsQuery query) { - var tasks = GetRecursiveChildren(parent, user, new[] { CollectionType.Movies, CollectionType.BoxSets, string.Empty }) - .Where(i => i is Movie) + var tasks = parent.QueryRecursive(new InternalItemsQuery(user) + { + IncludeItemTypes = new[] { typeof(Movie).Name }, + Recursive = true, + EnableTotalRecordCount = false + + }).Items .SelectMany(i => i.Genres) .DistinctNames() .Select(i => @@ -601,7 +616,10 @@ namespace MediaBrowser.Controller.Entities query.ParentId = parent.Id; query.SetUser(user); - query.IncludeItemTypes = new[] { typeof(Series).Name, typeof(Season).Name, typeof(Episode).Name }; + if (query.IncludeItemTypes.Length == 0) + { + query.IncludeItemTypes = new[] { typeof(Series).Name, typeof(Season).Name, typeof(Episode).Name }; + } return _libraryManager.GetItemsResult(query); } @@ -675,8 +693,13 @@ namespace MediaBrowser.Controller.Entities private async Task<QueryResult<BaseItem>> GetTvGenres(Folder parent, User user, InternalItemsQuery query) { - var tasks = GetRecursiveChildren(parent, user, new[] { CollectionType.TvShows, string.Empty }) - .OfType<Series>() + var tasks = parent.QueryRecursive(new InternalItemsQuery(user) + { + IncludeItemTypes = new[] { typeof(Series).Name }, + Recursive = true, + EnableTotalRecordCount = false + + }).Items .SelectMany(i => i.Genres) .DistinctNames() .Select(i => @@ -1929,26 +1952,6 @@ namespace MediaBrowser.Controller.Entities return parent.GetRecursiveChildren(user); } - private IEnumerable<BaseItem> GetRecursiveChildren(Folder parent, User user, IEnumerable<string> viewTypes, Func<BaseItem, bool> filter) - { - if (parent == null || parent is UserView) - { - if (user == null) - { - return GetMediaFolders(null, viewTypes).SelectMany(i => i.GetRecursiveChildren(filter)); - } - - return GetMediaFolders(user, viewTypes).SelectMany(i => i.GetRecursiveChildren(user, filter)); - } - - if (user == null) - { - return parent.GetRecursiveChildren(filter); - } - - return parent.GetRecursiveChildren(user, filter); - } - private async Task<QueryResult<BaseItem>> GetLiveTvView(Folder queryParent, User user, InternalItemsQuery query) { if (query.Recursive) |
