diff options
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 26 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/TV/Series.cs | 23 |
2 files changed, 37 insertions, 12 deletions
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index d4ddab7b2..4705f03fa 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -681,6 +681,19 @@ namespace MediaBrowser.Controller.Entities return result.TotalRecordCount; } + public virtual int GetRecursiveChildCount(User user) + { + return GetItems(new InternalItemsQuery(user) + { + Recursive = true, + IsFolder = false, + IsVirtualItem = false, + EnableTotalRecordCount = true, + Limit = 0 + + }).Result.TotalRecordCount; + } + public QueryResult<BaseItem> QueryRecursive(InternalItemsQuery query) { var user = query.User; @@ -1404,20 +1417,11 @@ namespace MediaBrowser.Controller.Entities return; } - var allItemsQueryResult = await GetItems(new InternalItemsQuery(user) - { - Recursive = true, - IsFolder = false, - IsVirtualItem = false, - EnableTotalRecordCount = true, - Limit = 0 - - }).ConfigureAwait(false); - var recursiveItemCount = allItemsQueryResult.TotalRecordCount; + var recursiveItemCount = GetRecursiveChildCount(user); if (itemDto != null) { - itemDto.RecursiveItemCount = allItemsQueryResult.TotalRecordCount; + itemDto.RecursiveItemCount = recursiveItemCount; } if (recursiveItemCount > 0 && SupportsPlayedStatus) diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index 69a3a67c8..ef25faf91 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -142,6 +142,24 @@ namespace MediaBrowser.Controller.Entities.TV return result.TotalRecordCount; } + public override int GetRecursiveChildCount(User user) + { + var query = new InternalItemsQuery(user); + + query.AncestorWithPresentationUniqueKey = GetUniqueSeriesKey(this); + if (query.SortBy.Length == 0) + { + query.SortBy = new[] { ItemSortBy.SortName }; + } + if (query.IncludeItemTypes.Length == 0) + { + query.IncludeItemTypes = new[] { typeof(Episode).Name, typeof(Season).Name }; + } + query.IsVirtualItem = false; + query.Limit = 0; + return LibraryManager.GetItemsResult(query).TotalRecordCount; + } + /// <summary> /// Gets the user data key. /// </summary> @@ -369,7 +387,10 @@ namespace MediaBrowser.Controller.Entities.TV public IEnumerable<Episode> GetSeasonEpisodes(Season parentSeason, User user) { - var seriesKey = GetUniqueSeriesKey(this); + // add optimization when this setting is not enabled + var seriesKey = ConfigurationManager.Configuration.DisplaySpecialsWithinSeasons ? + GetUniqueSeriesKey(this) : + GetUniqueSeriesKey(parentSeason); var query = new InternalItemsQuery(user) { |
