diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-05-06 22:15:49 -0400 |
|---|---|---|
| committer | Luke <luke.pulverenti@gmail.com> | 2016-05-06 22:15:49 -0400 |
| commit | bb95e7353ac117f9a4c4d7d69f478b9fb32bf9e1 (patch) | |
| tree | 8466d2c9099bb16fd287309ebd1cc0a216635691 /MediaBrowser.Controller/Entities | |
| parent | 80832bc8d3dd2e1e84d27259091eb33a58cb53f8 (diff) | |
| parent | d04b39421e54952241f9a3460a87413923cceb3a (diff) | |
Merge pull request #1714 from MediaBrowser/dev
fix episode query
Diffstat (limited to 'MediaBrowser.Controller/Entities')
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 32 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/TV/Season.cs | 25 |
2 files changed, 24 insertions, 33 deletions
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index d9c0b7bfe..4606a5dc7 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -199,8 +199,8 @@ namespace MediaBrowser.Controller.Entities /// <returns>Dictionary{System.StringFunc{UserIEnumerable{BaseItem}}}.</returns> protected virtual IEnumerable<string> GetIndexByOptions() { - return new List<string> { - {"None"}, + return new List<string> { + {"None"}, {"Performer"}, {"Genre"}, {"Director"}, @@ -1569,7 +1569,15 @@ namespace MediaBrowser.Controller.Entities public override bool IsPlayed(User user) { - return GetRecursiveChildren(user, i => !i.IsFolder && i.LocationType != LocationType.Virtual) + var itemsResult = GetItems(new InternalItemsQuery(user) + { + Recursive = true, + IsFolder = false, + ExcludeLocationTypes = new[] { LocationType.Virtual } + + }).Result; + + return itemsResult.Items .All(i => i.IsPlayed(user)); } @@ -1613,19 +1621,15 @@ namespace MediaBrowser.Controller.Entities double totalPercentPlayed = 0; - IEnumerable<BaseItem> children; - var folder = this; + var itemsResult = GetItems(new InternalItemsQuery(user) + { + Recursive = true, + IsFolder = false, + ExcludeLocationTypes = new[] { LocationType.Virtual } - var season = folder as Season; + }).Result; - if (season != null) - { - children = season.GetEpisodes(user).Where(i => i.LocationType != LocationType.Virtual); - } - else - { - children = folder.GetRecursiveChildren(user, i => !i.IsFolder && i.LocationType != LocationType.Virtual); - } + var children = itemsResult.Items; // Loop through each recursive child foreach (var child in children) diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs index a6894f515..4e6128527 100644 --- a/MediaBrowser.Controller/Entities/TV/Season.cs +++ b/MediaBrowser.Controller/Entities/TV/Season.cs @@ -156,24 +156,16 @@ namespace MediaBrowser.Controller.Entities.TV protected override Task<QueryResult<BaseItem>> GetItemsInternal(InternalItemsQuery query) { + if (query.User == null) + { + return base.GetItemsInternal(query); + } + var user = query.User; Func<BaseItem, bool> filter = i => UserViewBuilder.Filter(i, user, query, UserDataManager, LibraryManager); - IEnumerable<BaseItem> items; - - if (query.User == null) - { - items = query.Recursive - ? GetRecursiveChildren(filter) - : Children.Where(filter); - } - else - { - items = query.Recursive - ? GetRecursiveChildren(user, filter) - : GetChildren(user, true).Where(filter); - } + var items = GetEpisodes(user).Where(filter); var result = PostFilterAndSort(items, query); @@ -269,11 +261,6 @@ namespace MediaBrowser.Controller.Entities.TV return GetEpisodes(user); } - public override IEnumerable<BaseItem> GetRecursiveChildren(User user, Func<BaseItem, bool> filter) - { - return GetEpisodes(user).Where(filter); - } - protected override bool GetBlockUnratedValue(UserPolicy config) { // Don't block. Let either the entire series rating or episode rating determine it |
