aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Notifications
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-07-02 14:34:08 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-07-02 14:34:08 -0400
commit59dc591f66c20b6417aa2baa9503a154585386f9 (patch)
tree68ee71de2e4162550bb95f5e661ef413ddf1e046 /MediaBrowser.Model/Notifications
parent9bab99d4d8659e69478722d72028e84b64575ab2 (diff)
update to jquery mobile 1.4.3
Diffstat (limited to 'MediaBrowser.Model/Notifications')
-rw-r--r--MediaBrowser.Model/Notifications/NotificationOption.cs56
-rw-r--r--MediaBrowser.Model/Notifications/NotificationOptions.cs125
-rw-r--r--MediaBrowser.Model/Notifications/NotificationType.cs23
-rw-r--r--MediaBrowser.Model/Notifications/SendToUserType.cs9
4 files changed, 213 insertions, 0 deletions
diff --git a/MediaBrowser.Model/Notifications/NotificationOption.cs b/MediaBrowser.Model/Notifications/NotificationOption.cs
new file mode 100644
index 000000000..09f7072dd
--- /dev/null
+++ b/MediaBrowser.Model/Notifications/NotificationOption.cs
@@ -0,0 +1,56 @@
+using MediaBrowser.Model.Configuration;
+
+namespace MediaBrowser.Model.Notifications
+{
+ public class NotificationOption
+ {
+ public string Type { get; set; }
+
+ /// <summary>
+ /// User Ids to not monitor (it's opt out)
+ /// </summary>
+ public string[] DisabledMonitorUsers { get; set; }
+
+ /// <summary>
+ /// User Ids to send to (if SendToUserMode == Custom)
+ /// </summary>
+ public string[] SendToUsers { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this <see cref="NotificationOption"/> is enabled.
+ /// </summary>
+ /// <value><c>true</c> if enabled; otherwise, <c>false</c>.</value>
+ public bool Enabled { get; set; }
+
+ /// <summary>
+ /// Gets or sets the title format string.
+ /// </summary>
+ /// <value>The title format string.</value>
+ public string Title { get; set; }
+
+ /// <summary>
+ /// Gets or sets the description.
+ /// </summary>
+ /// <value>The description.</value>
+ public string Description { get; set; }
+
+ /// <summary>
+ /// Gets or sets the disabled services.
+ /// </summary>
+ /// <value>The disabled services.</value>
+ public string[] DisabledServices { get; set; }
+
+ /// <summary>
+ /// Gets or sets the send to user mode.
+ /// </summary>
+ /// <value>The send to user mode.</value>
+ public SendToUserType SendToUserMode { get; set; }
+
+ public NotificationOption()
+ {
+ DisabledServices = new string[] { };
+ DisabledMonitorUsers = new string[] { };
+ SendToUsers = new string[] { };
+ }
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/Notifications/NotificationOptions.cs b/MediaBrowser.Model/Notifications/NotificationOptions.cs
new file mode 100644
index 000000000..7d80f3177
--- /dev/null
+++ b/MediaBrowser.Model/Notifications/NotificationOptions.cs
@@ -0,0 +1,125 @@
+using MediaBrowser.Model.Configuration;
+using MediaBrowser.Model.Extensions;
+
+namespace MediaBrowser.Model.Notifications
+{
+ public class NotificationOptions
+ {
+ public NotificationOption[] Options { get; set; }
+
+ public NotificationOptions()
+ {
+ Options = new[]
+ {
+ new NotificationOption
+ {
+ Type = NotificationType.TaskFailed.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.ServerRestartRequired.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.ApplicationUpdateAvailable.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.ApplicationUpdateInstalled.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.PluginUpdateInstalled.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.PluginUninstalled.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.InstallationFailed.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.PluginInstalled.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ },
+ new NotificationOption
+ {
+ Type = NotificationType.PluginError.ToString(),
+ Enabled = true,
+ SendToUserMode = SendToUserType.Admins
+ }
+ };
+ }
+
+ public NotificationOption GetOptions(string type)
+ {
+ foreach (NotificationOption i in Options)
+ {
+ if (StringHelper.EqualsIgnoreCase(type, i.Type)) return i;
+ }
+ return null;
+ }
+
+ public bool IsEnabled(string type)
+ {
+ NotificationOption opt = GetOptions(type);
+
+ return opt != null && opt.Enabled;
+ }
+
+ public bool IsServiceEnabled(string service, string notificationType)
+ {
+ NotificationOption opt = GetOptions(notificationType);
+
+ return opt == null ||
+ !ListHelper.ContainsIgnoreCase(opt.DisabledServices, service);
+ }
+
+ public bool IsEnabledToMonitorUser(string type, string userId)
+ {
+ NotificationOption opt = GetOptions(type);
+
+ return opt != null && opt.Enabled &&
+ !ListHelper.ContainsIgnoreCase(opt.DisabledMonitorUsers, userId);
+ }
+
+ public bool IsEnabledToSendToUser(string type, string userId, UserConfiguration userConfig)
+ {
+ NotificationOption opt = GetOptions(type);
+
+ if (opt != null && opt.Enabled)
+ {
+ if (opt.SendToUserMode == SendToUserType.All)
+ {
+ return true;
+ }
+
+ if (opt.SendToUserMode == SendToUserType.Admins && userConfig.IsAdministrator)
+ {
+ return true;
+ }
+
+ return ListHelper.ContainsIgnoreCase(opt.SendToUsers, userId);
+ }
+
+ return false;
+ }
+ }
+}
diff --git a/MediaBrowser.Model/Notifications/NotificationType.cs b/MediaBrowser.Model/Notifications/NotificationType.cs
new file mode 100644
index 000000000..34e4d32b5
--- /dev/null
+++ b/MediaBrowser.Model/Notifications/NotificationType.cs
@@ -0,0 +1,23 @@
+namespace MediaBrowser.Model.Notifications
+{
+ public enum NotificationType
+ {
+ ApplicationUpdateAvailable,
+ ApplicationUpdateInstalled,
+ AudioPlayback,
+ GamePlayback,
+ VideoPlayback,
+ AudioPlaybackStopped,
+ GamePlaybackStopped,
+ VideoPlaybackStopped,
+ InstallationFailed,
+ PluginError,
+ PluginInstalled,
+ PluginUpdateInstalled,
+ PluginUninstalled,
+ NewLibraryContent,
+ NewLibraryContentMultiple,
+ ServerRestartRequired,
+ TaskFailed
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Model/Notifications/SendToUserType.cs b/MediaBrowser.Model/Notifications/SendToUserType.cs
new file mode 100644
index 000000000..1998d3102
--- /dev/null
+++ b/MediaBrowser.Model/Notifications/SendToUserType.cs
@@ -0,0 +1,9 @@
+namespace MediaBrowser.Model.Notifications
+{
+ public enum SendToUserType
+ {
+ All = 0,
+ Admins = 1,
+ Custom = 2
+ }
+} \ No newline at end of file