aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/Channels/ChannelManager.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Channels/ChannelManager.cs24
1 files changed, 22 insertions, 2 deletions
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
index b777e8a9c..382d0077a 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
+++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
@@ -533,6 +533,12 @@ namespace MediaBrowser.Server.Implementations.Channels
? null
: _userManager.GetUserById(query.UserId);
+ // See below about parental control
+ if (user != null)
+ {
+ query.StartIndex = null;
+ }
+
var internalResult = await GetLatestChannelItemsInternal(query, cancellationToken).ConfigureAwait(false);
// Get everything
@@ -540,13 +546,27 @@ namespace MediaBrowser.Server.Implementations.Channels
.Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true))
.ToList();
- var returnItems = internalResult.Items.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
+ var items = internalResult.Items;
+ var totalRecordCount = internalResult.TotalRecordCount;
+
+ // Supporting parental control is a hack because it has to be done after querying the remote data source
+ // This will get screwy if apps try to page, so limit to 10 results in an attempt to always keep them on the first page
+ if (user != null)
+ {
+ items = items.Where(i => i.IsVisible(user))
+ .Take(10)
+ .ToArray();
+
+ totalRecordCount = items.Length;
+ }
+
+ var returnItems = items.Select(i => _dtoService.GetBaseItemDto(i, fields, user))
.ToArray();
var result = new QueryResult<BaseItemDto>
{
Items = returnItems,
- TotalRecordCount = internalResult.TotalRecordCount
+ TotalRecordCount = totalRecordCount
};
return result;