diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
index df728ee0d3..0b54541e5e 100644
--- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
+++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
@@ -169,6 +169,24 @@ namespace MediaBrowser.Api.UserLibrary
});
}
+ if (filters.Contains(ItemFilter.IsFavoriteOrLikes))
+ {
+ items = items.Where(i =>
+ {
+ var userdata = i.GetUserItemData(UserDataRepository, user.Id).Result;
+
+ if (userdata == null)
+ {
+ return false;
+ }
+
+ var likes = userdata.Likes ?? false;
+ var favorite = userdata.IsFavorite;
+
+ return likes || favorite;
+ });
+ }
+
if (filters.Contains(ItemFilter.IsFavorite))
{
items = items.Where(i =>
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index b52696efa9..a8b54f10c3 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -335,6 +335,22 @@ namespace MediaBrowser.Api.UserLibrary
{
switch (filter)
{
+ case ItemFilter.IsFavoriteOrLikes:
+ return items.Where(item =>
+ {
+ var userdata = repository.GetUserData(user.Id, item.GetUserDataKey());
+
+ if (userdata == null)
+ {
+ return false;
+ }
+
+ var likes = userdata.Likes ?? false;
+ var favorite = userdata.IsFavorite;
+
+ return likes || favorite;
+ });
+
case ItemFilter.Likes:
return items.Where(item =>
{
diff --git a/MediaBrowser.Model/Querying/ItemFilter.cs b/MediaBrowser.Model/Querying/ItemFilter.cs
index 38ca67fa2c..ee6df06260 100644
--- a/MediaBrowser.Model/Querying/ItemFilter.cs
+++ b/MediaBrowser.Model/Querying/ItemFilter.cs
@@ -41,6 +41,10 @@ namespace MediaBrowser.Model.Querying
///
/// The dislikes
///
- Dislikes = 9
+ Dislikes = 9,
+ ///
+ /// The is favorite or likes
+ ///
+ IsFavoriteOrLikes = 10,
}
}
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index c9fb95c863..230cee47f2 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -850,7 +850,7 @@ namespace MediaBrowser.Server.Implementations.Library
var people = RootFolder.RecursiveChildren
.Where(c => c.People != null)
- .SelectMany(c => c.People.Where(p => includedPersonTypes.Contains(p.Type)))
+ .SelectMany(c => c.People.Where(p => includedPersonTypes.Contains(p.Type, StringComparer.OrdinalIgnoreCase) || includedPersonTypes.Contains(p.Role, StringComparer.OrdinalIgnoreCase)))
.DistinctBy(p => p.Name, StringComparer.OrdinalIgnoreCase)
.ToList();
diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs
index 75ced23029..11e842b2c2 100644
--- a/MediaBrowser.WebDashboard/Api/DashboardService.cs
+++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs
@@ -454,6 +454,7 @@ namespace MediaBrowser.WebDashboard.Api
"edititempeople.js",
"edititemimages.js",
"edituserpage.js",
+ "favoritetv.js",
"gamesrecommendedpage.js",
"gamesystemspage.js",
"gamespage.js",
diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
index e38d470d59..dbe0ba4ee4 100644
--- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
+++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
@@ -291,6 +291,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest
@@ -378,6 +381,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest