diff options
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Entities/InternalItemsQuery.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/UserViewBuilder.cs | 31 |
2 files changed, 35 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs index 1faa6c391..30043682d 100644 --- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs @@ -69,9 +69,13 @@ namespace MediaBrowser.Controller.Entities public ImageType[] ImageTypes { get; set; } public VideoType[] VideoTypes { get; set; } public int[] Years { get; set; } + public string[] Tags { get; set; } + public string[] OfficialRatings { get; set; } public InternalItemsQuery() { + Tags = new string[] { }; + OfficialRatings = new string[] { }; SortBy = new string[] { }; MediaTypes = new string[] { }; IncludeItemTypes = new string[] { }; diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index ff3b5920e..cd579f7ad 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -870,6 +870,16 @@ namespace MediaBrowser.Controller.Entities return false; } + if (request.Tags.Length > 0) + { + return false; + } + + if (request.OfficialRatings.Length > 0) + { + return false; + } + return true; } @@ -1405,6 +1415,12 @@ namespace MediaBrowser.Controller.Entities } } + // Apply official rating filter + if (query.OfficialRatings.Length > 0 && !query.OfficialRatings.Contains(item.OfficialRating ?? string.Empty)) + { + return false; + } + // Apply person filter if (!string.IsNullOrEmpty(query.Person)) { @@ -1431,6 +1447,21 @@ namespace MediaBrowser.Controller.Entities return false; } } + } + + // Apply tag filter + var tags = query.Tags; + if (tags.Length > 0) + { + var hasTags = item as IHasTags; + if (hasTags == null) + { + return false; + } + if (!(tags.Any(v => hasTags.Tags.Contains(v, StringComparer.OrdinalIgnoreCase)))) + { + return false; + } } return true; |
