فهرست منبع

Allow video extras to use owner library options

Joe Rogers 3 سال پیش
والد
کامیت
e4040ab812

+ 17 - 20
Emby.Server.Implementations/Library/LibraryManager.cs

@@ -1998,39 +1998,36 @@ namespace Emby.Server.Implementations.Library
         }
 
         public List<Folder> GetCollectionFolders(BaseItem item)
+        {
+            return GetCollectionFolders(item, GetUserRootFolder().Children.OfType<Folder>());
+        }
+
+        public List<Folder> GetCollectionFolders(BaseItem item, IEnumerable<Folder> allUserRootChildren)
         {
             while (item is not null)
             {
                 var parent = item.GetParent();
 
-                if (parent is null || parent is AggregateFolder)
+                if (parent is AggregateFolder)
                 {
                     break;
                 }
 
-                item = parent;
-            }
-
-            if (item is null)
-            {
-                return new List<Folder>();
-            }
-
-            return GetCollectionFoldersInternal(item, GetUserRootFolder().Children.OfType<Folder>());
-        }
+                if (parent is null)
+                {
+                    var owner = item.GetOwner();
 
-        public List<Folder> GetCollectionFolders(BaseItem item, List<Folder> allUserRootChildren)
-        {
-            while (item is not null)
-            {
-                var parent = item.GetParent();
+                    if (owner is null)
+                    {
+                        break;
+                    }
 
-                if (parent is null || parent is AggregateFolder)
+                    item = owner;
+                }
+                else
                 {
-                    break;
+                    item = parent;
                 }
-
-                item = parent;
             }
 
             if (item is null)

+ 5 - 0
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -2451,6 +2451,11 @@ namespace MediaBrowser.Controller.Entities
                 return Task.FromResult(true);
             }
 
+            if (video.OwnerId.Equals(default))
+            {
+                video.OwnerId = this.Id;
+            }
+
             return RefreshMetadataForOwnedItem(video, copyTitleMetadata, newOptions, cancellationToken);
         }
 

+ 8 - 2
MediaBrowser.Controller/Library/ILibraryManager.cs

@@ -429,10 +429,16 @@ namespace MediaBrowser.Controller.Library
         /// Gets the collection folders.
         /// </summary>
         /// <param name="item">The item.</param>
-        /// <returns>IEnumerable&lt;Folder&gt;.</returns>
+        /// <returns>The folders that contain the item.</returns>
         List<Folder> GetCollectionFolders(BaseItem item);
 
-        List<Folder> GetCollectionFolders(BaseItem item, List<Folder> allUserRootChildren);
+        /// <summary>
+        /// Gets the collection folders.
+        /// </summary>
+        /// <param name="item">The item.</param>
+        /// <param name="allUserRootChildren">The root folders to consider.</param>
+        /// <returns>The folders that contain the item.</returns>
+        List<Folder> GetCollectionFolders(BaseItem item, IEnumerable<Folder> allUserRootChildren);
 
         LibraryOptions GetLibraryOptions(BaseItem item);