Merge pull request #1741 from MediaBrowser/dev

Dev
This commit is contained in:
Luke 2016-05-16 14:21:08 -04:00
commit d44d64477c

View File

@ -250,9 +250,16 @@ namespace MediaBrowser.Controller.Entities
{ {
if (query.Recursive) 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);
return PostFilterAndSort(items, parent, null, query); if (query.IncludeItemTypes.Length == 0)
{
query.IncludeItemTypes = new[] { typeof(MusicArtist).Name, typeof(MusicAlbum).Name, typeof(Audio.Audio).Name, typeof(MusicVideo).Name };
}
return _libraryManager.GetItemsResult(query);
} }
var list = new List<BaseItem>(); var list = new List<BaseItem>();
@ -444,7 +451,10 @@ namespace MediaBrowser.Controller.Entities
query.ParentId = parent.Id; query.ParentId = parent.Id;
query.SetUser(user); 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); return _libraryManager.GetItemsResult(query);
} }
@ -540,8 +550,13 @@ namespace MediaBrowser.Controller.Entities
private async Task<QueryResult<BaseItem>> GetMovieGenres(Folder parent, User user, InternalItemsQuery query) private async Task<QueryResult<BaseItem>> GetMovieGenres(Folder parent, User user, InternalItemsQuery query)
{ {
var tasks = GetRecursiveChildren(parent, user, new[] { CollectionType.Movies, CollectionType.BoxSets, string.Empty }) var tasks = parent.QueryRecursive(new InternalItemsQuery(user)
.Where(i => i is Movie) {
IncludeItemTypes = new[] { typeof(Movie).Name },
Recursive = true,
EnableTotalRecordCount = false
}).Items
.SelectMany(i => i.Genres) .SelectMany(i => i.Genres)
.DistinctNames() .DistinctNames()
.Select(i => .Select(i =>
@ -601,7 +616,10 @@ namespace MediaBrowser.Controller.Entities
query.ParentId = parent.Id; query.ParentId = parent.Id;
query.SetUser(user); 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); return _libraryManager.GetItemsResult(query);
} }
@ -675,8 +693,13 @@ namespace MediaBrowser.Controller.Entities
private async Task<QueryResult<BaseItem>> GetTvGenres(Folder parent, User user, InternalItemsQuery query) private async Task<QueryResult<BaseItem>> GetTvGenres(Folder parent, User user, InternalItemsQuery query)
{ {
var tasks = GetRecursiveChildren(parent, user, new[] { CollectionType.TvShows, string.Empty }) var tasks = parent.QueryRecursive(new InternalItemsQuery(user)
.OfType<Series>() {
IncludeItemTypes = new[] { typeof(Series).Name },
Recursive = true,
EnableTotalRecordCount = false
}).Items
.SelectMany(i => i.Genres) .SelectMany(i => i.Genres)
.DistinctNames() .DistinctNames()
.Select(i => .Select(i =>
@ -1929,26 +1952,6 @@ namespace MediaBrowser.Controller.Entities
return parent.GetRecursiveChildren(user); 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) private async Task<QueryResult<BaseItem>> GetLiveTvView(Folder queryParent, User user, InternalItemsQuery query)
{ {
if (query.Recursive) if (query.Recursive)