tighter control of shortcuts

This commit is contained in:
Luke Pulverenti 2013-04-19 14:03:21 -04:00
parent 5bcb7fe67f
commit 6c1bfe661b
3 changed files with 14 additions and 9 deletions

View File

@ -338,10 +338,12 @@ namespace MediaBrowser.Controller.Entities
if (args.IsDirectory)
{
// When resolving the root, we need it's grandchildren (children of user views)
var flattenFolderDepth = args.IsPhysicalRoot ? 2 : 0;
var isPhysicalRoot = args.IsPhysicalRoot;
args.FileSystemDictionary = FileData.GetFilteredFileSystemEntries(args.Path, Logger, flattenFolderDepth: flattenFolderDepth, args: args);
// When resolving the root, we need it's grandchildren (children of user views)
var flattenFolderDepth = isPhysicalRoot ? 2 : 0;
args.FileSystemDictionary = FileData.GetFilteredFileSystemEntries(args.Path, Logger, flattenFolderDepth: flattenFolderDepth, args: args, resolveShortcuts: isPhysicalRoot || args.IsVf);
}
//update our dates

View File

@ -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;
}

View File

@ -413,10 +413,12 @@ namespace MediaBrowser.Server.Implementations.Library
// Gather child folder and files
if (args.IsDirectory)
{
// When resolving the root, we need it's grandchildren (children of user views)
var flattenFolderDepth = args.IsPhysicalRoot ? 2 : 0;
var isPhysicalRoot = args.IsPhysicalRoot;
args.FileSystemDictionary = FileData.GetFilteredFileSystemEntries(args.Path, _logger, flattenFolderDepth: flattenFolderDepth, args: args);
// When resolving the root, we need it's grandchildren (children of user views)
var flattenFolderDepth = isPhysicalRoot ? 2 : 0;
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