Channel.cs 3.0 KB

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