aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
authorTim Hobbs <jesus.tesh@gmail.com>2014-03-30 01:29:17 -0700
committerTim Hobbs <jesus.tesh@gmail.com>2014-03-30 01:29:17 -0700
commit28681ebce04769d65ca7be236b018fe3cee74367 (patch)
tree81d651c2a9dc5e42bd71c0aed808438a627ae607 /MediaBrowser.Server.Implementations
parent40d07e89ad1ace9647aeab82978e43077e0ce572 (diff)
parenta90d892ecab78a8f11fa7a4efda65ee70eceafe1 (diff)
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs4
-rw-r--r--MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs12
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs8
-rw-r--r--MediaBrowser.Server.Implementations/Roku/RokuSessionController.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Session/SessionManager.cs45
5 files changed, 51 insertions, 20 deletions
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index 1833b708f..2e0b3cb17 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -1297,7 +1297,7 @@ namespace MediaBrowser.Server.Implementations.Dto
{
var result = new List<MediaSourceInfo>
{
- GetVersionInfo(item, true)
+ GetVersionInfo(item)
};
return result;
@@ -1321,7 +1321,7 @@ namespace MediaBrowser.Server.Implementations.Dto
};
}
- private MediaSourceInfo GetVersionInfo(Audio i, bool isPrimary)
+ private MediaSourceInfo GetVersionInfo(Audio i)
{
return new MediaSourceInfo
{
diff --git a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs
index 9279fd8d7..08add952a 100644
--- a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs
+++ b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs
@@ -349,13 +349,13 @@ namespace MediaBrowser.Server.Implementations.IO
{
try
{
- Logger.Debug("Watcher sees change of type " + e.ChangeType + " to " + e.FullPath);
+ Logger.Debug("Changed detected of type " + e.ChangeType + " to " + e.FullPath);
ReportFileSystemChanged(e.FullPath);
}
catch (Exception ex)
{
- Logger.ErrorException("Exception in watcher changed. Path: {0}", ex, e.FullPath);
+ Logger.ErrorException("Exception in ReportFileSystemChanged. Path: {0}", ex, e.FullPath);
}
}
@@ -397,14 +397,6 @@ namespace MediaBrowser.Server.Implementations.IO
Logger.Debug("Ignoring change to {0}", path);
return true;
}
-
- // Go up another level
- parent = Path.GetDirectoryName(i);
- if (string.Equals(parent, path, StringComparison.OrdinalIgnoreCase))
- {
- Logger.Debug("Ignoring change to {0}", path);
- return true;
- }
}
return false;
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index db8786d62..b828dc0de 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -134,6 +134,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return number;
});
+
+ if (query.IsFavorite.HasValue)
+ {
+ var val = query.IsFavorite.Value;
+
+ channels = channels
+ .Where(i => _userDataManager.GetUserData(user.Id, i.GetUserDataKey()).IsFavorite == val);
+ }
}
channels = channels.OrderBy(i =>
diff --git a/MediaBrowser.Server.Implementations/Roku/RokuSessionController.cs b/MediaBrowser.Server.Implementations/Roku/RokuSessionController.cs
index d806db1e0..7c8d71b4f 100644
--- a/MediaBrowser.Server.Implementations/Roku/RokuSessionController.cs
+++ b/MediaBrowser.Server.Implementations/Roku/RokuSessionController.cs
@@ -30,7 +30,7 @@ namespace MediaBrowser.Server.Implementations.Roku
public bool SupportsMediaRemoteControl
{
- get { return true; }
+ get { return false; }
}
public bool IsSessionActive
diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
index 9d405a175..4f748a6a8 100644
--- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs
+++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
@@ -3,6 +3,8 @@ using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
+using MediaBrowser.Controller.Entities.Movies;
+using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Session;
@@ -564,7 +566,7 @@ namespace MediaBrowser.Server.Implementations.Session
return playedToCompletion;
}
-
+
/// <summary>
/// Updates playstate position for an item but does not save
/// </summary>
@@ -666,7 +668,7 @@ namespace MediaBrowser.Server.Implementations.Session
var controllingSession = GetSession(controllingSessionId);
AssertCanControl(session, controllingSession);
-
+
return session.SessionController.SendSystemCommand(command, cancellationToken);
}
@@ -676,7 +678,7 @@ namespace MediaBrowser.Server.Implementations.Session
var controllingSession = GetSession(controllingSessionId);
AssertCanControl(session, controllingSession);
-
+
return session.SessionController.SendMessageCommand(command, cancellationToken);
}
@@ -684,14 +686,22 @@ namespace MediaBrowser.Server.Implementations.Session
{
var session = GetSessionForRemoteControl(sessionId);
- var items = command.ItemIds.Select(i => _libraryManager.GetItemById(new Guid(i)))
+ var user = session.UserId.HasValue ? _userManager.GetUserById(session.UserId.Value) : null;
+
+ var items = command.ItemIds.SelectMany(i => TranslateItemForPlayback(i, user))
.Where(i => i.LocationType != LocationType.Virtual)
.ToList();
- if (session.UserId.HasValue)
+ if (command.PlayCommand == PlayCommand.PlayShuffle)
{
- var user = _userManager.GetUserById(session.UserId.Value);
+ items = items.OrderBy(i => Guid.NewGuid()).ToList();
+ command.PlayCommand = PlayCommand.PlayNow;
+ }
+
+ command.ItemIds = items.Select(i => i.Id.ToString("N")).ToArray();
+ if (user != null)
+ {
if (items.Any(i => i.GetPlayAccess(user) != PlayAccess.Full))
{
throw new ArgumentException(string.Format("{0} is not allowed to play media.", user.Name));
@@ -723,13 +733,34 @@ namespace MediaBrowser.Server.Implementations.Session
return session.SessionController.SendPlayCommand(command, cancellationToken);
}
+ private IEnumerable<BaseItem> TranslateItemForPlayback(string id, User user)
+ {
+ var item = _libraryManager.GetItemById(new Guid(id));
+
+ if (item.IsFolder)
+ {
+ var folder = (Folder)item;
+
+ var items = user == null ? folder.RecursiveChildren:
+ folder.GetRecursiveChildren(user);
+
+ items = items.Where(i => !i.IsFolder);
+
+ items = items.OrderBy(i => i.SortName);
+
+ return items;
+ }
+
+ return new[] { item };
+ }
+
public Task SendBrowseCommand(Guid controllingSessionId, Guid sessionId, BrowseRequest command, CancellationToken cancellationToken)
{
var session = GetSessionForRemoteControl(sessionId);
var controllingSession = GetSession(controllingSessionId);
AssertCanControl(session, controllingSession);
-
+
return session.SessionController.SendBrowseCommand(command, cancellationToken);
}