diff options
Diffstat (limited to 'MediaBrowser.Server.Implementations/Channels/ChannelManager.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Channels/ChannelManager.cs | 24 |
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; |
