diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-03-20 16:10:22 -0400 |
|---|---|---|
| committer | Luke <luke.pulverenti@gmail.com> | 2016-03-20 16:10:22 -0400 |
| commit | c22cf8db0e2ef23addae123e80b8ab83add4409d (patch) | |
| tree | cb934d555f22003a9234cf83f1f1366ae3617271 /MediaBrowser.Controller | |
| parent | efed1b0cf6934bd6e70784669e2eef112d7babec (diff) | |
| parent | 1a00ac0bbe51f8777bcec0ee9ae12f96468a542b (diff) | |
Merge pull request #1568 from MediaBrowser/dev
Dev
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 37 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/InternalItemsQuery.cs | 10 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/UserViewBuilder.cs | 43 |
3 files changed, 70 insertions, 20 deletions
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index efb784153..faa5f7dc5 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -1094,13 +1094,6 @@ namespace MediaBrowser.Controller.Entities return true; } - // Apply year filter - if (query.Years.Length > 0) - { - Logger.Debug("Query requires post-filtering due to Years"); - return true; - } - // Apply official rating filter if (query.OfficialRatings.Length > 0) { @@ -1127,24 +1120,12 @@ namespace MediaBrowser.Controller.Entities return true; } - if (query.MinCommunityRating.HasValue) - { - Logger.Debug("Query requires post-filtering due to MinCommunityRating"); - return true; - } - if (query.MinIndexNumber.HasValue) { Logger.Debug("Query requires post-filtering due to MinIndexNumber"); return true; } - if (query.Years.Length > 0) - { - Logger.Debug("Query requires post-filtering due to Years"); - return true; - } - if (query.OfficialRatings.Length > 0) { Logger.Debug("Query requires post-filtering due to OfficialRatings"); @@ -1205,6 +1186,24 @@ namespace MediaBrowser.Controller.Entities return true; } + if (query.AirDays.Length > 0) + { + Logger.Debug("Query requires post-filtering due to AirDays"); + return true; + } + + if (query.SeriesStatuses.Length > 0) + { + Logger.Debug("Query requires post-filtering due to SeriesStatuses"); + return true; + } + + if (query.AiredDuringSeason.HasValue) + { + Logger.Debug("Query requires post-filtering due to AiredDuringSeason"); + return true; + } + return false; } diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs index 05031691c..2f98ac70d 100644 --- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs @@ -97,23 +97,25 @@ namespace MediaBrowser.Controller.Entities public int? MinPlayers { get; set; } public int? MaxPlayers { get; set; } public int? MinIndexNumber { get; set; } + public int? AiredDuringSeason { get; set; } public double? MinCriticRating { get; set; } public double? MinCommunityRating { get; set; } public string[] ChannelIds { get; set; } internal List<Guid> ItemIdsFromPersonFilters { get; set; } + public int? ParentIndexNumber { get; set; } public int? MaxParentalRating { get; set; } public bool? IsCurrentSchema { get; set; } public bool? HasDeadParentId { get; set; } public bool? IsOffline { get; set; } - public LocationType? LocationType { get; set; } public Guid? ParentId { get; set; } public string[] AncestorIds { get; set; } public string[] TopParentIds { get; set; } + public LocationType[] LocationTypes { get; set; } public LocationType[] ExcludeLocationTypes { get; set; } public string[] PresetViews { get; set; } public SourceType[] SourceTypes { get; set; } @@ -121,6 +123,9 @@ namespace MediaBrowser.Controller.Entities public TrailerType[] TrailerTypes { get; set; } public TrailerType[] ExcludeTrailerTypes { get; set; } + public DayOfWeek[] AirDays { get; set; } + public SeriesStatus[] SeriesStatuses { get; set; } + public InternalItemsQuery() { BlockUnratedItems = new UnratedItem[] { }; @@ -144,12 +149,15 @@ namespace MediaBrowser.Controller.Entities AncestorIds = new string[] { }; TopParentIds = new string[] { }; ExcludeTags = new string[] { }; + LocationTypes = new LocationType[] { }; ExcludeLocationTypes = new LocationType[] { }; PresetViews = new string[] { }; SourceTypes = new SourceType[] { }; ExcludeSourceTypes = new SourceType[] { }; TrailerTypes = new TrailerType[] { }; ExcludeTrailerTypes = new TrailerType[] { }; + AirDays = new DayOfWeek[] { }; + SeriesStatuses = new SeriesStatus[] { }; } public InternalItemsQuery(User user) diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 4439b9c6d..645e6e37d 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -1709,6 +1709,49 @@ namespace MediaBrowser.Controller.Entities } } + if (query.ParentIndexNumber.HasValue) + { + var filterValue = query.ParentIndexNumber.Value; + + if (item.ParentIndexNumber.HasValue && item.ParentIndexNumber.Value != filterValue) + { + return false; + } + } + + if (query.AirDays.Length > 0) + { + var ok = new[] { item }.OfType<Series>().Any(p => p.AirDays != null && query.AirDays.Any(d => p.AirDays.Contains(d))); + if (!ok) + { + return false; + } + } + + if (query.SeriesStatuses.Length > 0) + { + var ok = new[] { item }.OfType<Series>().Any(p => p.Status.HasValue && query.SeriesStatuses.Contains(p.Status.Value)); + if (!ok) + { + return false; + } + } + + if (query.AiredDuringSeason.HasValue) + { + var episode = item as Episode; + + if (episode == null) + { + return false; + } + + if (!Series.FilterEpisodesBySeason(new[] { episode }, query.AiredDuringSeason.Value, true).Any()) + { + return false; + } + } + return true; } |
