aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-09-19 22:06:56 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-09-19 22:06:56 -0400
commit718545a79b0ba8709609b176ebb3922d6fa8eb6d (patch)
tree1d5283619ffbf5146b7bd9b6c6037c57d3eabb13 /MediaBrowser.Server.Implementations
parentc3d6c19cc32f1ec16aa5aa1e1691a9d101c1251c (diff)
update metadata editor
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs20
-rw-r--r--MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj1
-rw-r--r--MediaBrowser.Server.Implementations/Notifications/IConfigurableNotificationService.cs14
-rw-r--r--MediaBrowser.Server.Implementations/Notifications/InternalNotificationService.cs21
-rw-r--r--MediaBrowser.Server.Implementations/Notifications/NotificationManager.cs23
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs59
6 files changed, 114 insertions, 24 deletions
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index 0a33d7383..a64327dbb 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -650,11 +650,18 @@ namespace MediaBrowser.Server.Implementations.LiveTv
{
await _libraryManager.CreateItem(item, cancellationToken).ConfigureAwait(false);
}
+ else if (string.IsNullOrWhiteSpace(info.Etag))
+ {
+ await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false);
+ }
else
{
- if (string.IsNullOrWhiteSpace(info.Etag) || !string.Equals(info.Etag, item.Etag, StringComparison.OrdinalIgnoreCase))
+ // Increment this whenver some internal change deems it necessary
+ var etag = info.Etag + "1";
+
+ if (!string.Equals(etag, item.Etag, StringComparison.OrdinalIgnoreCase))
{
- item.Etag = info.Etag;
+ item.Etag = etag;
await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false);
}
}
@@ -1162,15 +1169,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv
foreach (var program in channelPrograms)
{
- if (program.StartDate.Kind != DateTimeKind.Utc)
- {
- _logger.Error("{0} returned StartDate.DateTimeKind.{1} instead of UTC for program {2}", service.Name, program.StartDate.Kind.ToString(), program.Name);
- }
- else if (program.EndDate.Kind != DateTimeKind.Utc)
- {
- _logger.Error("{0} returned EndDate.DateTimeKind.{1} instead of UTC for program {2}", service.Name, program.EndDate.Kind.ToString(), program.Name);
- }
-
var programItem = await GetProgram(program, channelId, currentChannel.ChannelType, service.Name, cancellationToken).ConfigureAwait(false);
programs.Add(programItem.Id);
diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
index 7d2d74140..75b903c99 100644
--- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
+++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
@@ -232,6 +232,7 @@
<Compile Include="Localization\LocalizationManager.cs" />
<Compile Include="Logging\PatternsLogger.cs" />
<Compile Include="MediaEncoder\EncodingManager.cs" />
+ <Compile Include="Notifications\IConfigurableNotificationService.cs" />
<Compile Include="Persistence\BaseSqliteRepository.cs" />
<Compile Include="Persistence\CleanDatabaseScheduledTask.cs" />
<Compile Include="Social\SharingManager.cs" />
diff --git a/MediaBrowser.Server.Implementations/Notifications/IConfigurableNotificationService.cs b/MediaBrowser.Server.Implementations/Notifications/IConfigurableNotificationService.cs
new file mode 100644
index 000000000..5c4f400b0
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Notifications/IConfigurableNotificationService.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MediaBrowser.Server.Implementations.Notifications
+{
+ public interface IConfigurableNotificationService
+ {
+ bool IsHidden { get; }
+ bool IsEnabled(string notificationType);
+ }
+}
diff --git a/MediaBrowser.Server.Implementations/Notifications/InternalNotificationService.cs b/MediaBrowser.Server.Implementations/Notifications/InternalNotificationService.cs
index 56cb52f10..4a625f0fb 100644
--- a/MediaBrowser.Server.Implementations/Notifications/InternalNotificationService.cs
+++ b/MediaBrowser.Server.Implementations/Notifications/InternalNotificationService.cs
@@ -3,10 +3,11 @@ using MediaBrowser.Controller.Notifications;
using MediaBrowser.Model.Notifications;
using System.Threading;
using System.Threading.Tasks;
+using System;
namespace MediaBrowser.Server.Implementations.Notifications
{
- public class InternalNotificationService : INotificationService
+ public class InternalNotificationService : INotificationService, IConfigurableNotificationService
{
private readonly INotificationsRepository _repo;
@@ -36,6 +37,24 @@ namespace MediaBrowser.Server.Implementations.Notifications
public bool IsEnabledForUser(User user)
{
+ return user.Policy.IsAdministrator;
+ }
+
+ public bool IsHidden
+ {
+ get { return true; }
+ }
+
+ public bool IsEnabled(string notificationType)
+ {
+ if (notificationType.IndexOf("playback", StringComparison.OrdinalIgnoreCase) != -1)
+ {
+ return false;
+ }
+ if (notificationType.IndexOf("newlibrarycontent", StringComparison.OrdinalIgnoreCase) != -1)
+ {
+ return false;
+ }
return true;
}
}
diff --git a/MediaBrowser.Server.Implementations/Notifications/NotificationManager.cs b/MediaBrowser.Server.Implementations/Notifications/NotificationManager.cs
index 1ff928cd5..f19ff8a5f 100644
--- a/MediaBrowser.Server.Implementations/Notifications/NotificationManager.cs
+++ b/MediaBrowser.Server.Implementations/Notifications/NotificationManager.cs
@@ -230,8 +230,19 @@ namespace MediaBrowser.Server.Implementations.Notifications
private bool IsEnabled(INotificationService service, string notificationType)
{
- return string.IsNullOrEmpty(notificationType) ||
- GetConfiguration().IsServiceEnabled(service.Name, notificationType);
+ if (string.IsNullOrEmpty(notificationType))
+ {
+ return true;
+ }
+
+ var configurable = service as IConfigurableNotificationService;
+
+ if (configurable != null)
+ {
+ return configurable.IsEnabled(notificationType);
+ }
+
+ return GetConfiguration().IsServiceEnabled(service.Name, notificationType);
}
public void AddParts(IEnumerable<INotificationService> services, IEnumerable<INotificationTypeFactory> notificationTypeFactories)
@@ -268,7 +279,13 @@ namespace MediaBrowser.Server.Implementations.Notifications
public IEnumerable<NotificationServiceInfo> GetNotificationServices()
{
- return _services.Select(i => new NotificationServiceInfo
+ return _services.Where(i =>
+ {
+ var configurable = i as IConfigurableNotificationService;
+
+ return configurable == null || !configurable.IsHidden;
+
+ }).Select(i => new NotificationServiceInfo
{
Name = i.Name,
Id = i.Name.GetMD5().ToString("N")
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
index 3c06973b4..adadea894 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
@@ -72,7 +72,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
private IDbCommand _deletePeopleCommand;
private IDbCommand _savePersonCommand;
- private const int LatestSchemaVersion = 7;
+ private const int LatestSchemaVersion = 9;
/// <summary>
/// Initializes a new instance of the <see cref="SqliteItemRepository"/> class.
@@ -177,6 +177,11 @@ namespace MediaBrowser.Server.Implementations.Persistence
_connection.AddColumn(_logger, "TypedBaseItems", "IsOffline", "BIT");
_connection.AddColumn(_logger, "TypedBaseItems", "LocationType", "Text");
+ _connection.AddColumn(_logger, "TypedBaseItems", "IsSeries", "BIT");
+ _connection.AddColumn(_logger, "TypedBaseItems", "IsLive", "BIT");
+ _connection.AddColumn(_logger, "TypedBaseItems", "IsNews", "BIT");
+ _connection.AddColumn(_logger, "TypedBaseItems", "IsPremiere", "BIT");
+
PrepareStatements();
_mediaStreamsRepository.Initialize();
@@ -199,6 +204,10 @@ namespace MediaBrowser.Server.Implementations.Persistence
"IsMovie",
"IsSports",
"IsKids",
+ "IsSeries",
+ "IsLive",
+ "IsNews",
+ "IsPremiere",
"CommunityRating",
"CustomRating",
"IndexNumber",
@@ -222,6 +231,10 @@ namespace MediaBrowser.Server.Implementations.Persistence
"IsKids",
"IsMovie",
"IsSports",
+ "IsSeries",
+ "IsLive",
+ "IsNews",
+ "IsPremiere",
"CommunityRating",
"CustomRating",
"IndexNumber",
@@ -369,12 +382,20 @@ namespace MediaBrowser.Server.Implementations.Persistence
_saveItemCommand.GetParameter(index++).Value = hasProgramAttributes.IsKids;
_saveItemCommand.GetParameter(index++).Value = hasProgramAttributes.IsMovie;
_saveItemCommand.GetParameter(index++).Value = hasProgramAttributes.IsSports;
+ _saveItemCommand.GetParameter(index++).Value = hasProgramAttributes.IsSeries;
+ _saveItemCommand.GetParameter(index++).Value = hasProgramAttributes.IsLive;
+ _saveItemCommand.GetParameter(index++).Value = hasProgramAttributes.IsNews;
+ _saveItemCommand.GetParameter(index++).Value = hasProgramAttributes.IsPremiere;
}
else
{
_saveItemCommand.GetParameter(index++).Value = null;
_saveItemCommand.GetParameter(index++).Value = null;
_saveItemCommand.GetParameter(index++).Value = null;
+ _saveItemCommand.GetParameter(index++).Value = null;
+ _saveItemCommand.GetParameter(index++).Value = null;
+ _saveItemCommand.GetParameter(index++).Value = null;
+ _saveItemCommand.GetParameter(index++).Value = null;
}
_saveItemCommand.GetParameter(index++).Value = item.CommunityRating;
@@ -563,26 +584,46 @@ namespace MediaBrowser.Server.Implementations.Persistence
{
hasProgramAttributes.IsKids = reader.GetBoolean(8);
}
+
+ if (!reader.IsDBNull(9))
+ {
+ hasProgramAttributes.IsSeries = reader.GetBoolean(9);
+ }
+
+ if (!reader.IsDBNull(10))
+ {
+ hasProgramAttributes.IsLive = reader.GetBoolean(10);
+ }
+
+ if (!reader.IsDBNull(11))
+ {
+ hasProgramAttributes.IsNews = reader.GetBoolean(11);
+ }
+
+ if (!reader.IsDBNull(12))
+ {
+ hasProgramAttributes.IsPremiere = reader.GetBoolean(12);
+ }
}
- if (!reader.IsDBNull(9))
+ if (!reader.IsDBNull(13))
{
- item.CommunityRating = reader.GetFloat(9);
+ item.CommunityRating = reader.GetFloat(13);
}
- if (!reader.IsDBNull(10))
+ if (!reader.IsDBNull(14))
{
- item.CustomRating = reader.GetString(10);
+ item.CustomRating = reader.GetString(14);
}
- if (!reader.IsDBNull(11))
+ if (!reader.IsDBNull(15))
{
- item.IndexNumber = reader.GetInt32(11);
+ item.IndexNumber = reader.GetInt32(15);
}
- if (!reader.IsDBNull(12))
+ if (!reader.IsDBNull(16))
{
- item.IsLocked = reader.GetBoolean(12);
+ item.IsLocked = reader.GetBoolean(16);
}
return item;