aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2016-05-16 14:21:08 -0400
committerLuke <luke.pulverenti@gmail.com>2016-05-16 14:21:08 -0400
commitd44d64477c41ee8d5d5703d0f74e638d3cd6d034 (patch)
tree30a18b1843e02f7d4db1ff85729c871dbca50aa9
parentbf89f347e84e7d2120319c7c59510e8bce151b80 (diff)
parente1718a5fa6b8f1dc30c60f7b2d649c320679a1b7 (diff)
Merge pull request #1741 from MediaBrowser/dev
Dev
-rw-r--r--MediaBrowser.Controller/Entities/UserViewBuilder.cs59
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)