Channel.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using System;
  2. using System.Globalization;
  3. using System.Linq;
  4. using System.Text.Json.Serialization;
  5. using System.Threading;
  6. using MediaBrowser.Common.Progress;
  7. using MediaBrowser.Controller.Entities;
  8. using MediaBrowser.Model.Querying;
  9. namespace MediaBrowser.Controller.Channels
  10. {
  11. public class Channel : Folder
  12. {
  13. public override bool IsVisible(User user)
  14. {
  15. if (user.Policy.BlockedChannels != null)
  16. {
  17. if (user.Policy.BlockedChannels.Contains(Id.ToString("N", CultureInfo.InvariantCulture), StringComparer.OrdinalIgnoreCase))
  18. {
  19. return false;
  20. }
  21. }
  22. else
  23. {
  24. if (!user.Policy.EnableAllChannels && !user.Policy.EnabledChannels.Contains(Id.ToString("N", CultureInfo.InvariantCulture), StringComparer.OrdinalIgnoreCase))
  25. {
  26. return false;
  27. }
  28. }
  29. return base.IsVisible(user);
  30. }
  31. [JsonIgnore]
  32. public override bool SupportsInheritedParentImages => false;
  33. [JsonIgnore]
  34. public override SourceType SourceType => SourceType.Channel;
  35. protected override QueryResult<BaseItem> GetItemsInternal(InternalItemsQuery query)
  36. {
  37. try
  38. {
  39. query.Parent = this;
  40. query.ChannelIds = new Guid[] { Id };
  41. // Don't blow up here because it could cause parent screens with other content to fail
  42. return ChannelManager.GetChannelItemsInternal(query, new SimpleProgress<double>(), CancellationToken.None).Result;
  43. }
  44. catch
  45. {
  46. // Already logged at lower levels
  47. return new QueryResult<BaseItem>();
  48. }
  49. }
  50. protected override string GetInternalMetadataPath(string basePath)
  51. {
  52. return GetInternalMetadataPath(basePath, Id);
  53. }
  54. public static string GetInternalMetadataPath(string basePath, Guid id)
  55. {
  56. return System.IO.Path.Combine(basePath, "channels", id.ToString("N", CultureInfo.InvariantCulture), "metadata");
  57. }
  58. public override bool CanDelete()
  59. {
  60. return false;
  61. }
  62. protected override bool IsAllowTagFilterEnforced()
  63. {
  64. return false;
  65. }
  66. internal static bool IsChannelVisible(BaseItem channelItem, User user)
  67. {
  68. var channel = ChannelManager.GetChannel(channelItem.ChannelId.ToString(""));
  69. return channel.IsVisible(user);
  70. }
  71. }
  72. }