aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-01-11 12:58:44 -0500
committerGitHub <noreply@github.com>2017-01-11 12:58:44 -0500
commitfb31918f9cea1cd13d9aa8c7468f961cc4f43833 (patch)
tree0a3d696a0e32ff4b646d899912f2b6ffe9ea4807
parentcce6484b6c52b37609d09fb5112ff04b166fab72 (diff)
parent0b5d4ce3f839118a0a5903ec278321ecfecf1c32 (diff)
Merge pull request #2392 from MediaBrowser/dev
Dev
-rw-r--r--Emby.Common.Implementations/IO/ManagedFileSystem.cs18
-rw-r--r--Emby.Server.Core/IO/LibraryMonitor.cs2
-rw-r--r--Emby.Server.Implementations/Connect/ConnectManager.cs6
-rw-r--r--Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs8
-rw-r--r--Emby.Server.Implementations/Dto/DtoService.cs5
-rw-r--r--Emby.Server.Implementations/Library/LibraryManager.cs4
-rw-r--r--Emby.Server.Implementations/Library/UserViewManager.cs8
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs2
-rw-r--r--Emby.Server.Implementations/UserViews/DynamicImageProvider.cs4
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs17
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs40
-rw-r--r--MediaBrowser.Controller/Entities/ICollectionFolder.cs13
-rw-r--r--MediaBrowser.Model/Configuration/UserConfiguration.cs3
-rw-r--r--MediaBrowser.Model/IO/IFileSystem.cs2
-rw-r--r--MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs25
15 files changed, 71 insertions, 86 deletions
diff --git a/Emby.Common.Implementations/IO/ManagedFileSystem.cs b/Emby.Common.Implementations/IO/ManagedFileSystem.cs
index 78070a5d9..72b9d55eb 100644
--- a/Emby.Common.Implementations/IO/ManagedFileSystem.cs
+++ b/Emby.Common.Implementations/IO/ManagedFileSystem.cs
@@ -499,6 +499,24 @@ namespace Emby.Common.Implementations.IO
CopyFile(temp1, file2, true);
}
+ public bool AreEqual(string path1, string path2)
+ {
+ if (path1 == null && path2 == null)
+ {
+ return true;
+ }
+
+ if (path1 == null || path2 == null)
+ {
+ return false;
+ }
+
+ path1 = path1.TrimEnd(DirectorySeparatorChar);
+ path2 = path2.TrimEnd(DirectorySeparatorChar);
+
+ return string.Equals(path1, path2, StringComparison.OrdinalIgnoreCase);
+ }
+
public bool ContainsSubPath(string parentPath, string path)
{
if (string.IsNullOrEmpty(parentPath))
diff --git a/Emby.Server.Core/IO/LibraryMonitor.cs b/Emby.Server.Core/IO/LibraryMonitor.cs
index 87b70d047..f0ecb9d89 100644
--- a/Emby.Server.Core/IO/LibraryMonitor.cs
+++ b/Emby.Server.Core/IO/LibraryMonitor.cs
@@ -87,7 +87,7 @@ namespace Emby.Server.Core.IO
public bool IsPathLocked(string path)
{
var lockedPaths = _tempIgnoredPaths.Keys.ToList();
- return lockedPaths.Any(i => string.Equals(i, path, StringComparison.OrdinalIgnoreCase) || _fileSystem.ContainsSubPath(i, path));
+ return lockedPaths.Any(i => _fileSystem.AreEqual(i, path) || _fileSystem.ContainsSubPath(i, path));
}
public async void ReportFileSystemChangeComplete(string path, bool refreshPath)
diff --git a/Emby.Server.Implementations/Connect/ConnectManager.cs b/Emby.Server.Implementations/Connect/ConnectManager.cs
index 8c8b7b026..23fafed15 100644
--- a/Emby.Server.Implementations/Connect/ConnectManager.cs
+++ b/Emby.Server.Implementations/Connect/ConnectManager.cs
@@ -925,7 +925,11 @@ namespace Emby.Server.Implementations.Connect
}
_data.PendingAuthorizations = newPendingList;
- CacheData();
+
+ if (!newPendingList.Select(i => i.Id).SequenceEqual(currentPendingList.Select(i => i.Id), StringComparer.Ordinal))
+ {
+ CacheData();
+ }
await RefreshGuestNames(list, refreshImages).ConfigureAwait(false);
}
diff --git a/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs b/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs
index 5bc3a625f..2819a249f 100644
--- a/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs
+++ b/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs
@@ -137,6 +137,11 @@ namespace Emby.Server.Implementations.Data
var numComplete = 0;
var numItems = result.Count;
+ var allLibraryPaths = _libraryManager
+ .GetVirtualFolders()
+ .SelectMany(i => i.Locations)
+ .ToList();
+
foreach (var item in result)
{
cancellationToken.ThrowIfCancellationRequested();
@@ -170,9 +175,8 @@ namespace Emby.Server.Implementations.Data
continue;
}
- if (Folder.IsPathOffline(path))
+ if (Folder.IsPathOffline(path, allLibraryPaths))
{
- await libraryItem.UpdateIsOffline(true).ConfigureAwait(false);
continue;
}
diff --git a/Emby.Server.Implementations/Dto/DtoService.cs b/Emby.Server.Implementations/Dto/DtoService.cs
index 8e6c1263d..06ac7031a 100644
--- a/Emby.Server.Implementations/Dto/DtoService.cs
+++ b/Emby.Server.Implementations/Dto/DtoService.cs
@@ -361,10 +361,7 @@ namespace Emby.Server.Implementations.Dto
if (collectionFolder != null)
{
dto.OriginalCollectionType = collectionFolder.CollectionType;
-
- dto.CollectionType = user == null ?
- collectionFolder.CollectionType :
- collectionFolder.GetViewType(user);
+ dto.CollectionType = collectionFolder.CollectionType;
}
if (fields.Contains(ItemFields.CanDelete))
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs
index db514af76..71ba465df 100644
--- a/Emby.Server.Implementations/Library/LibraryManager.cs
+++ b/Emby.Server.Implementations/Library/LibraryManager.cs
@@ -2010,7 +2010,7 @@ namespace Emby.Server.Implementations.Library
private string GetContentTypeOverride(string path, bool inherit)
{
- var nameValuePair = ConfigurationManager.Configuration.ContentTypes.FirstOrDefault(i => string.Equals(i.Name, path, StringComparison.OrdinalIgnoreCase) || (inherit && !string.IsNullOrWhiteSpace(i.Name) && _fileSystem.ContainsSubPath(i.Name, path)));
+ var nameValuePair = ConfigurationManager.Configuration.ContentTypes.FirstOrDefault(i => _fileSystem.AreEqual(i.Name, path) || (inherit && !string.IsNullOrWhiteSpace(i.Name) && _fileSystem.ContainsSubPath(i.Name, path)));
if (nameValuePair != null)
{
return nameValuePair.Value;
@@ -3066,7 +3066,7 @@ namespace Emby.Server.Implementations.Library
{
removeList.Add(contentType);
}
- else if (string.Equals(path, contentType.Name, StringComparison.OrdinalIgnoreCase)
+ else if (_fileSystem.AreEqual(path, contentType.Name)
|| _fileSystem.ContainsSubPath(path, contentType.Name))
{
removeList.Add(contentType);
diff --git a/Emby.Server.Implementations/Library/UserViewManager.cs b/Emby.Server.Implementations/Library/UserViewManager.cs
index 0a8b1c681..f11cbd498 100644
--- a/Emby.Server.Implementations/Library/UserViewManager.cs
+++ b/Emby.Server.Implementations/Library/UserViewManager.cs
@@ -55,8 +55,6 @@ namespace Emby.Server.Implementations.Library
}).ToList();
}
- var plainFolderIds = user.Configuration.PlainFolderViews.Select(i => new Guid(i)).ToList();
-
var groupedFolders = new List<ICollectionFolder>();
var list = new List<Folder>();
@@ -72,12 +70,6 @@ namespace Emby.Server.Implementations.Library
continue;
}
- if (plainFolderIds.Contains(folder.Id) && UserView.IsEligibleForEnhancedView(folderViewType))
- {
- list.Add(folder);
- continue;
- }
-
if (collectionFolder != null && UserView.IsEligibleForGrouping(folder) && user.IsFolderGrouped(folder.Id))
{
groupedFolders.Add(collectionFolder);
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
index 2e591711b..639621a98 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
@@ -150,7 +150,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
foreach (var recordingFolder in recordingFolders)
{
var pathsToCreate = recordingFolder.Locations
- .Where(i => !allExistingPaths.Contains(i, StringComparer.OrdinalIgnoreCase))
+ .Where(i => !allExistingPaths.Any(p => _fileSystem.AreEqual(p, i)))
.ToList();
if (pathsToCreate.Count == 0)
diff --git a/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs b/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs
index bef964c6f..b8d03db3d 100644
--- a/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs
+++ b/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs
@@ -151,7 +151,9 @@ namespace Emby.Server.Implementations.UserViews
string[] collectionStripViewTypes =
{
CollectionType.Movies,
- CollectionType.TvShows
+ CollectionType.TvShows,
+ CollectionType.Playlists,
+ CollectionType.Photos
};
return collectionStripViewTypes.Contains(view.ViewType ?? string.Empty);
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index c8f49820f..3651ba363 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -273,9 +273,6 @@ namespace MediaBrowser.Controller.Entities
public virtual string Path { get; set; }
[IgnoreDataMember]
- public bool IsOffline { get; set; }
-
- [IgnoreDataMember]
public virtual SourceType SourceType { get; set; }
/// <summary>
@@ -339,20 +336,6 @@ namespace MediaBrowser.Controller.Entities
}
}
- public Task UpdateIsOffline(bool newValue)
- {
- var item = this;
-
- if (item.IsOffline != newValue)
- {
- item.IsOffline = newValue;
- // this is creating too many repeated db updates
- //return item.UpdateToRepository(ItemUpdateType.None, CancellationToken.None);
- }
-
- return Task.FromResult(true);
- }
-
/// <summary>
/// Gets or sets the type of the location.
/// </summary>
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index 61747bd14..cdd503bba 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -369,6 +369,11 @@ namespace MediaBrowser.Controller.Entities
var validChildren = new List<BaseItem>();
+ var allLibraryPaths = LibraryManager
+ .GetVirtualFolders()
+ .SelectMany(i => i.Locations)
+ .ToList();
+
if (locationType != LocationType.Remote && locationType != LocationType.Virtual)
{
IEnumerable<BaseItem> nonCachedChildren;
@@ -402,7 +407,6 @@ namespace MediaBrowser.Controller.Entities
if (currentChildren.TryGetValue(child.Id, out currentChild) && IsValidFromResolver(currentChild, child))
{
- await currentChild.UpdateIsOffline(false).ConfigureAwait(false);
validChildren.Add(currentChild);
continue;
@@ -429,9 +433,8 @@ namespace MediaBrowser.Controller.Entities
{
}
- else if (!string.IsNullOrEmpty(item.Path) && IsPathOffline(item.Path))
+ else if (!string.IsNullOrEmpty(item.Path) && IsPathOffline(item.Path, allLibraryPaths))
{
- await item.UpdateIsOffline(true).ConfigureAwait(false);
}
else
{
@@ -446,7 +449,6 @@ namespace MediaBrowser.Controller.Entities
Logger.Debug("Removed item: " + item.Path);
item.SetParent(null);
- item.IsOffline = false;
await LibraryManager.DeleteItem(item, new DeleteOptions { DeleteFileLocation = false }).ConfigureAwait(false);
LibraryManager.ReportItemRemoved(item);
}
@@ -612,6 +614,11 @@ namespace MediaBrowser.Controller.Entities
/// <returns><c>true</c> if the specified path is offline; otherwise, <c>false</c>.</returns>
public static bool IsPathOffline(string path)
{
+ return IsPathOffline(path, LibraryManager.GetVirtualFolders().SelectMany(i => i.Locations).ToList());
+ }
+
+ public static bool IsPathOffline(string path, List<string> allLibraryPaths)
+ {
if (FileSystem.FileExists(path))
{
return false;
@@ -627,31 +634,20 @@ namespace MediaBrowser.Controller.Entities
return false;
}
- path = System.IO.Path.GetDirectoryName(path);
- }
+ if (allLibraryPaths.Contains(path, StringComparer.OrdinalIgnoreCase))
+ {
+ return true;
+ }
- if (ContainsPath(LibraryManager.GetVirtualFolders(), originalPath))
- {
- return true;
+ path = System.IO.Path.GetDirectoryName(path);
}
- return false;
- }
-
- /// <summary>
- /// Determines whether the specified folders contains path.
- /// </summary>
- /// <param name="folders">The folders.</param>
- /// <param name="path">The path.</param>
- /// <returns><c>true</c> if the specified folders contains path; otherwise, <c>false</c>.</returns>
- private static bool ContainsPath(IEnumerable<VirtualFolderInfo> folders, string path)
- {
- return folders.SelectMany(i => i.Locations).Any(i => ContainsPath(i, path));
+ return allLibraryPaths.Any(i => ContainsPath(i, originalPath));
}
private static bool ContainsPath(string parent, string path)
{
- return string.Equals(parent, path, StringComparison.OrdinalIgnoreCase) || FileSystem.ContainsSubPath(parent, path);
+ return FileSystem.AreEqual(parent, path) || FileSystem.ContainsSubPath(parent, path);
}
/// <summary>
diff --git a/MediaBrowser.Controller/Entities/ICollectionFolder.cs b/MediaBrowser.Controller/Entities/ICollectionFolder.cs
index f4544f173..d8b02034c 100644
--- a/MediaBrowser.Controller/Entities/ICollectionFolder.cs
+++ b/MediaBrowser.Controller/Entities/ICollectionFolder.cs
@@ -20,17 +20,4 @@ namespace MediaBrowser.Controller.Entities
{
bool EnableUserSpecificView { get; }
}
-
- public static class CollectionFolderExtensions
- {
- public static string GetViewType(this ICollectionFolder folder, User user)
- {
- if (user.Configuration.PlainFolderViews.Contains(folder.Id.ToString("N"), StringComparer.OrdinalIgnoreCase))
- {
- return null;
- }
-
- return folder.CollectionType;
- }
- }
}
diff --git a/MediaBrowser.Model/Configuration/UserConfiguration.cs b/MediaBrowser.Model/Configuration/UserConfiguration.cs
index efd3d6b67..5567063fe 100644
--- a/MediaBrowser.Model/Configuration/UserConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/UserConfiguration.cs
@@ -37,7 +37,6 @@ namespace MediaBrowser.Model.Configuration
public string[] OrderedViews { get; set; }
public string[] LatestItemsExcludes { get; set; }
- public string[] PlainFolderViews { get; set; }
public bool HidePlayedInLatest { get; set; }
@@ -61,8 +60,6 @@ namespace MediaBrowser.Model.Configuration
LatestItemsExcludes = new string[] { };
OrderedViews = new string[] { };
- PlainFolderViews = new string[] { };
-
GroupedFolders = new string[] { };
}
}
diff --git a/MediaBrowser.Model/IO/IFileSystem.cs b/MediaBrowser.Model/IO/IFileSystem.cs
index 62bb66ea8..f6d1bb351 100644
--- a/MediaBrowser.Model/IO/IFileSystem.cs
+++ b/MediaBrowser.Model/IO/IFileSystem.cs
@@ -120,6 +120,8 @@ namespace MediaBrowser.Model.IO
/// <param name="file2">The file2.</param>
void SwapFiles(string file1, string file2);
+ bool AreEqual(string path1, string path2);
+
/// <summary>
/// Determines whether [contains sub path] [the specified parent path].
/// </summary>
diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
index 18936df01..5e023c5db 100644
--- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
+++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
@@ -846,7 +846,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
AddUserData(item, writer, userManager, userDataRepo, options);
- AddActors(people, writer, libraryManager, fileSystem, config);
+ AddActors(people, writer, libraryManager, fileSystem, config, options.SaveImagePathsInNfo);
var folder = item as BoxSet;
if (folder != null)
@@ -974,7 +974,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
writer.WriteEndElement();
}
- private static void AddActors(List<PersonInfo> people, XmlWriter writer, ILibraryManager libraryManager, IFileSystem fileSystem, IServerConfigurationManager config)
+ private static void AddActors(List<PersonInfo> people, XmlWriter writer, ILibraryManager libraryManager, IFileSystem fileSystem, IServerConfigurationManager config, bool saveImagePath)
{
var actors = people
.Where(i => !IsPersonType(i, PersonType.Director) && !IsPersonType(i, PersonType.Writer))
@@ -1004,20 +1004,23 @@ namespace MediaBrowser.XbmcMetadata.Savers
writer.WriteElementString("sortorder", person.SortOrder.Value.ToString(UsCulture));
}
- try
+ if (saveImagePath)
{
- var personEntity = libraryManager.GetPerson(person.Name);
- var image = personEntity.GetImageInfo(ImageType.Primary, 0);
+ try
+ {
+ var personEntity = libraryManager.GetPerson(person.Name);
+ var image = personEntity.GetImageInfo(ImageType.Primary, 0);
- if (image != null)
+ if (image != null)
+ {
+ writer.WriteElementString("thumb", GetImagePathToSave(image, libraryManager, config));
+ }
+ }
+ catch (Exception)
{
- writer.WriteElementString("thumb", GetImagePathToSave(image, libraryManager, config));
+ // Already logged in core
}
}
- catch (Exception)
- {
- // Already logged in core
- }
writer.WriteEndElement();
}