update CollectionFolder
This commit is contained in:
parent
1e16ac9f2a
commit
6c62c20a9e
|
@ -1542,7 +1542,7 @@ namespace MediaBrowser.Controller.Entities
|
|||
{
|
||||
if (!string.IsNullOrEmpty(info.Path))
|
||||
{
|
||||
var itemByPath = LibraryManager.FindByPath(info.Path);
|
||||
var itemByPath = LibraryManager.FindByPath(info.Path, null);
|
||||
|
||||
if (itemByPath == null)
|
||||
{
|
||||
|
|
|
@ -8,6 +8,7 @@ using System.Runtime.Serialization;
|
|||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using CommonIO;
|
||||
using MoreLinq;
|
||||
|
||||
namespace MediaBrowser.Controller.Entities
|
||||
{
|
||||
|
@ -97,7 +98,6 @@ namespace MediaBrowser.Controller.Entities
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
return base.IsValidFromResolver(newItem);
|
||||
}
|
||||
|
||||
|
@ -200,9 +200,30 @@ namespace MediaBrowser.Controller.Entities
|
|||
|
||||
public IEnumerable<Folder> GetPhysicalParents()
|
||||
{
|
||||
return LibraryManager.RootFolder.Children
|
||||
var rootChildren = LibraryManager.RootFolder.Children
|
||||
.OfType<Folder>()
|
||||
.Where(i => i.Path != null && PhysicalLocations.Contains(i.Path, StringComparer.OrdinalIgnoreCase));
|
||||
.ToList();
|
||||
|
||||
return PhysicalLocations.Where(i => !string.Equals(i, Path, StringComparison.OrdinalIgnoreCase)).SelectMany(i => GetPhysicalParents(i, rootChildren)).DistinctBy(i => i.Id);
|
||||
}
|
||||
|
||||
private IEnumerable<Folder> GetPhysicalParents(string path, List<Folder> rootChildren)
|
||||
{
|
||||
var result = rootChildren
|
||||
.Where(i => string.Equals(i.Path, path, StringComparison.OrdinalIgnoreCase))
|
||||
.ToList();
|
||||
|
||||
if (result.Count == 0)
|
||||
{
|
||||
var folder = LibraryManager.FindByPath(path, true) as Folder;
|
||||
|
||||
if (folder != null)
|
||||
{
|
||||
result.Add(folder);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
[IgnoreDataMember]
|
||||
|
|
|
@ -59,7 +59,7 @@ namespace MediaBrowser.Controller.Library
|
|||
/// </summary>
|
||||
/// <param name="path">The path.</param>
|
||||
/// <returns>BaseItem.</returns>
|
||||
BaseItem FindByPath(string path);
|
||||
BaseItem FindByPath(string path, bool? isFolder);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the artist.
|
||||
|
|
|
@ -663,7 +663,7 @@ namespace MediaBrowser.Server.Implementations.IO
|
|||
|
||||
while (item == null && !string.IsNullOrEmpty(path))
|
||||
{
|
||||
item = LibraryManager.FindByPath(path);
|
||||
item = LibraryManager.FindByPath(path, null);
|
||||
|
||||
path = Path.GetDirectoryName(path);
|
||||
}
|
||||
|
|
|
@ -801,11 +801,12 @@ namespace MediaBrowser.Server.Implementations.Library
|
|||
return _userRootFolder;
|
||||
}
|
||||
|
||||
public BaseItem FindByPath(string path)
|
||||
public BaseItem FindByPath(string path, bool? isFolder)
|
||||
{
|
||||
var query = new InternalItemsQuery
|
||||
{
|
||||
Path = path
|
||||
Path = path,
|
||||
IsFolder = isFolder
|
||||
};
|
||||
|
||||
// Only use the database result if there's exactly one item, otherwise we run the risk of returning old data that hasn't been cleaned yet.
|
||||
|
|
Loading…
Reference in New Issue
Block a user