aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs26
-rw-r--r--MediaBrowser.Controller/Entities/TV/Series.cs23
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)
{