aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/InternalItemsQuery.cs4
-rw-r--r--MediaBrowser.Controller/Entities/UserViewBuilder.cs31
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;