public override string MoveFile(string path, string newPath) { try { string virtualPathAndFile = FileSystemValidation.ToVirtualPath(path); string virtualNewPathAndFile = FileSystemValidation.ToVirtualPath(newPath); string virtualPath = FileSystemValidation.RemoveFileName(virtualPathAndFile); string virtualNewPath = FileSystemValidation.RemoveFileName(virtualNewPathAndFile); string returnValue; if (virtualPath == virtualNewPath) { //rename file returnValue = DNNValidator.OnRenameFile(virtualPathAndFile); if (!(string.IsNullOrEmpty(returnValue))) { return(returnValue); } } else { //move file returnValue = DNNValidator.OnMoveFile(virtualPathAndFile, virtualNewPathAndFile); if (!(string.IsNullOrEmpty(returnValue))) { return(returnValue); } } //Returns errors or empty string when successful (ie: NewFileAlreadyExists) //returnValue = TelerikContent.MoveFile(virtualPathAndFile, virtualNewPathAndFile); var folderPath = FileSystemValidation.ToDBPath(path); var folder = FolderManager.Instance.GetFolder(PortalSettings.PortalId, folderPath); if (folder != null) { var file = FileManager.Instance.GetFile(folder, GetFileName(virtualPathAndFile)); if (file != null) { var destFolderPath = FileSystemValidation.ToDBPath(newPath); var destFolder = FolderManager.Instance.GetFolder(PortalSettings.PortalId, destFolderPath); var destFileName = GetFileName(virtualNewPathAndFile); if (destFolder != null) { if (file.FolderId != destFolder.FolderID && FileManager.Instance.GetFile(destFolder, file.FileName) != null) { returnValue = "FileExists"; } else { FileManager.Instance.MoveFile(file, destFolder); FileManager.Instance.RenameFile(file, destFileName); } } } else { returnValue = "FileNotFound"; } } if (!(string.IsNullOrEmpty(returnValue))) { return(GetTelerikMessage(returnValue)); } return(returnValue); } catch (Exception ex) { return(DNNValidator.LogUnknownError(ex, path, newPath)); } }
private DirectoryItem[] AddChildDirectoriesToList(ref DirectoryItem[] radDirectories, bool recursive, bool loadFiles) { var newDirectories = new ArrayList(); var invalidFolders = new List <DirectoryItem>(); foreach (var radDirectory in radDirectories) { System.Diagnostics.Debug.WriteLine(DateTime.Now.ToLongTimeString() + " AddChildDirectoriesToList " + radDirectory.Name); var endUserPath = (string)FileSystemValidation.ToEndUserPath(radDirectory.FullPath); var folderPath = radDirectory.FullPath.EndsWith("/") ? radDirectory.FullPath : radDirectory.FullPath + "/"; var dnnFolder = DNNValidator.GetUserFolder(folderPath); if (dnnFolder == null) { invalidFolders.Add(radDirectory); continue; } //Don't show protected folders if (!string.IsNullOrEmpty(dnnFolder.FolderPath) && dnnFolder.IsProtected) { invalidFolders.Add(radDirectory); continue; } //Don't show Cache folder if (dnnFolder.FolderPath.ToLowerInvariant() == "cache/") { invalidFolders.Add(radDirectory); continue; } var showFiles = new ArrayList(); var folderPermissions = PathPermissions.Read; if (DNNValidator.CanViewFilesInFolder(dnnFolder)) { if (DNNValidator.CanAddToFolder(dnnFolder)) { folderPermissions = folderPermissions | PathPermissions.Upload; } if (DNNValidator.CanDeleteFolder(dnnFolder)) { folderPermissions = folderPermissions | PathPermissions.Delete; } if (loadFiles) { var files = FolderManager.Instance.GetFiles(dnnFolder); foreach (var fileInfo in files) { showFiles.Add(new FileItem(fileInfo.FileName, fileInfo.Extension, fileInfo.Size, "", GetFileUrl(fileInfo), "", folderPermissions)); } } var folderFiles = (FileItem[])showFiles.ToArray(typeof(FileItem)); //Root folder name var dirName = radDirectory.Name; if (dnnFolder.FolderPath == "" && dnnFolder.FolderName == "") { dirName = FileSystemValidation.EndUserHomeDirectory; } DirectoryItem newDirectory; if (recursive) { var directory = TelerikContent.ResolveRootDirectoryAsTree(radDirectory.Path); var tempVar2 = directory.Directories; if (dnnFolder.FolderPath == "" && dnnFolder.FolderName == "") //Replace USERS folder by the particular User Folder { AddUserFolder(ref tempVar2, loadFiles); } AddChildDirectoriesToList(ref tempVar2, false, false); newDirectory = new DirectoryItem(dirName, "", endUserPath, "", folderPermissions, folderFiles, tempVar2); radDirectory.Directories = tempVar2; } else { newDirectory = new DirectoryItem(dirName, "", endUserPath, "", folderPermissions, folderFiles, new DirectoryItem[0]); } newDirectories.Add(newDirectory); } else { invalidFolders.Add(radDirectory); } } //remove invalid folders radDirectories = radDirectories.Where(d => !invalidFolders.Contains(d)).ToArray(); return((DirectoryItem[])newDirectories.ToArray(typeof(DirectoryItem))); }