diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-04-19 14:03:21 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-04-19 14:03:21 -0400 |
| commit | 6c1bfe661bf2d0c2e988793bd760148d57014bb4 (patch) | |
| tree | 613f74f31faa75a94fc75a9dfa4364150f48956b | |
| parent | 5bcb7fe67fee478abacd795071959224931dcdbd (diff) | |
tighter control of shortcuts
| -rw-r--r-- | MediaBrowser.Controller/Entities/BaseItem.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Controller/IO/FileData.cs | 7 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Library/LibraryManager.cs | 6 |
3 files changed, 12 insertions, 7 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index a2d045a5f..f7963c6e6 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -338,10 +338,12 @@ namespace MediaBrowser.Controller.Entities if (args.IsDirectory) { + var isPhysicalRoot = args.IsPhysicalRoot; + // When resolving the root, we need it's grandchildren (children of user views) - var flattenFolderDepth = args.IsPhysicalRoot ? 2 : 0; + var flattenFolderDepth = isPhysicalRoot ? 2 : 0; - args.FileSystemDictionary = FileData.GetFilteredFileSystemEntries(args.Path, Logger, flattenFolderDepth: flattenFolderDepth, args: args); + args.FileSystemDictionary = FileData.GetFilteredFileSystemEntries(args.Path, Logger, flattenFolderDepth: flattenFolderDepth, args: args, resolveShortcuts: isPhysicalRoot || args.IsVf); } //update our dates diff --git a/MediaBrowser.Controller/IO/FileData.cs b/MediaBrowser.Controller/IO/FileData.cs index 7cefcd71a..4571c1ad0 100644 --- a/MediaBrowser.Controller/IO/FileData.cs +++ b/MediaBrowser.Controller/IO/FileData.cs @@ -21,11 +21,12 @@ namespace MediaBrowser.Controller.IO /// <param name="includeFiles">if set to <c>true</c> [include files].</param> /// <param name="includeDirectories">if set to <c>true</c> [include directories].</param> /// <param name="flattenFolderDepth">The flatten folder depth.</param> + /// <param name="resolveShortcuts">if set to <c>true</c> [resolve shortcuts].</param> /// <param name="args">The args.</param> /// <returns>Dictionary{System.StringWIN32_FIND_DATA}.</returns> /// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="System.IO.IOException">GetFileSystemEntries failed</exception> - public static Dictionary<string, WIN32_FIND_DATA> GetFilteredFileSystemEntries(string path, ILogger logger, string searchPattern = "*", bool includeFiles = true, bool includeDirectories = true, int flattenFolderDepth = 0, ItemResolveArgs args = null) + public static Dictionary<string, WIN32_FIND_DATA> GetFilteredFileSystemEntries(string path, ILogger logger, string searchPattern = "*", bool includeFiles = true, bool includeDirectories = true, int flattenFolderDepth = 0, bool resolveShortcuts = true, ItemResolveArgs args = null) { if (string.IsNullOrEmpty(path)) { @@ -80,7 +81,7 @@ namespace MediaBrowser.Controller.IO lpFindFileData.Path = Path.Combine(path, lpFindFileData.cFileName); - if (FileSystem.IsShortcut(lpFindFileData.Path)) + if (resolveShortcuts && FileSystem.IsShortcut(lpFindFileData.Path)) { var newPath = FileSystem.ResolveShortcut(lpFindFileData.Path); if (string.IsNullOrWhiteSpace(newPath)) @@ -110,7 +111,7 @@ namespace MediaBrowser.Controller.IO } else if (flattenFolderDepth > 0 && lpFindFileData.IsDirectory) { - foreach (var child in GetFilteredFileSystemEntries(lpFindFileData.Path, logger, flattenFolderDepth: flattenFolderDepth - 1)) + foreach (var child in GetFilteredFileSystemEntries(lpFindFileData.Path, logger, flattenFolderDepth: flattenFolderDepth - 1, resolveShortcuts: resolveShortcuts)) { dict[child.Key] = child.Value; } diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 46e8b261f..e1d2e42b5 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -413,10 +413,12 @@ namespace MediaBrowser.Server.Implementations.Library // Gather child folder and files if (args.IsDirectory) { + var isPhysicalRoot = args.IsPhysicalRoot; + // When resolving the root, we need it's grandchildren (children of user views) - var flattenFolderDepth = args.IsPhysicalRoot ? 2 : 0; + var flattenFolderDepth = isPhysicalRoot ? 2 : 0; - args.FileSystemDictionary = FileData.GetFilteredFileSystemEntries(args.Path, _logger, flattenFolderDepth: flattenFolderDepth, args: args); + args.FileSystemDictionary = FileData.GetFilteredFileSystemEntries(args.Path, _logger, flattenFolderDepth: flattenFolderDepth, args: args, resolveShortcuts: isPhysicalRoot || args.IsVf); } // Check to see if we should resolve based on our contents |
