/// <summary> /// Сopy the directory with the embedded files and directories /// </summary> /// <param name="sourcePath">Path to the source directory</param> /// <param name="destinationPath">Path to the destination directory</param> protected virtual void CopyDirectory(string sourcePath, string destinationPath) { var existingFiles = _fileProvider.GetFiles(sourcePath); var existingDirectories = _fileProvider.GetDirectories(sourcePath); if (!_fileProvider.DirectoryExists(destinationPath)) { _fileProvider.CreateDirectory(destinationPath); } foreach (var file in existingFiles) { var filePath = _fileProvider.Combine(destinationPath, _fileProvider.GetFileName(file)); if (!_fileProvider.FileExists(filePath)) { _fileProvider.FileCopy(file, filePath); } } foreach (var directory in existingDirectories) { var directoryPath = _fileProvider.Combine(destinationPath, _fileProvider.GetDirectoryName(directory)); CopyDirectory(directory, directoryPath); } }
/// <summary> /// Get directory path for backs /// </summary> /// <param name="ensureFolderCreated">A value indicating whether a directory should be created if it doesn't exist</param> /// <returns></returns> protected virtual string GetBackupDirectoryPath(bool ensureFolderCreated = true) { var path = _fileProvider.GetAbsolutePath(GSCommonDefaults.DbBackupsPath); if (ensureFolderCreated) { _fileProvider.CreateDirectory(path); } return(path); }
/// <summary> /// Luu work file /// </summary> /// <param name="item"></param> /// <param name="fileContent"></param> void SaveWorkFileOnDisk(WorkFile item, byte[] fileContent) { string _pathStore = item.CreatedDate.ToPathFolderStore(); _pathStore = _fileProvider.Combine(_fileProvider.MapPath(GSDataSettingsDefaults.FolderWorkFiles), _pathStore); _fileProvider.CreateDirectory(_pathStore); var _fileStore = _fileProvider.Combine(_pathStore, item.FileGuid.ToString() + item.Extension); _fileProvider.WriteAllBytes(_fileStore, fileContent); }
/// <summary> /// Get picture (thumb) local path /// </summary> /// <param name="thumbFileName">Filename</param> /// <returns>Local picture thumb path</returns> protected virtual string GetThumbLocalPath(string thumbFileName) { var thumbsDirectoryPath = _fileProvider.GetAbsolutePath(GSMediaDefaults.ImageThumbsPath); if (_mediaSettings.MultipleThumbDirectories) { //get the first two letters of the file name var fileNameWithoutExtension = _fileProvider.GetFileNameWithoutExtension(thumbFileName); if (fileNameWithoutExtension != null && fileNameWithoutExtension.Length > GSMediaDefaults.MultipleThumbDirectoriesLength) { var subDirectoryName = fileNameWithoutExtension.Substring(0, GSMediaDefaults.MultipleThumbDirectoriesLength); thumbsDirectoryPath = _fileProvider.GetAbsolutePath(GSMediaDefaults.ImageThumbsPath, subDirectoryName); _fileProvider.CreateDirectory(thumbsDirectoryPath); } } var thumbFilePath = _fileProvider.Combine(thumbsDirectoryPath, thumbFileName); return(thumbFilePath); }
/// <summary> /// Perform file deploy /// </summary> /// <param name="plug">Plugin file info</param> /// <param name="applicationPartManager">Application part manager</param> /// <param name="config">Config</param> /// <param name="shadowCopyPath">Shadow copy path</param> /// <returns>Assembly</returns> private static Assembly PerformFileDeploy(string plug, ApplicationPartManager applicationPartManager, GSConfig config, string shadowCopyPath = "") { var parent = string.IsNullOrEmpty(plug) ? string.Empty : _fileProvider.GetParentDirectory(plug); if (string.IsNullOrEmpty(parent)) { throw new InvalidOperationException($"The plugin directory for the {_fileProvider.GetFileName(plug)} file exists in a folder outside of the allowed nopCommerce folder hierarchy"); } if (!config.UsePluginsShadowCopy) { return(RegisterPluginDefinition(config, applicationPartManager, plug)); } //in order to avoid possible issues we still copy libraries into ~/Plugins/bin/ directory if (string.IsNullOrEmpty(shadowCopyPath)) { shadowCopyPath = _shadowCopyFolder; } _fileProvider.CreateDirectory(shadowCopyPath); var shadowCopiedPlug = ShadowCopyFile(plug, shadowCopyPath); Assembly shadowCopiedAssembly = null; try { shadowCopiedAssembly = RegisterPluginDefinition(config, applicationPartManager, shadowCopiedPlug); } catch (FileLoadException) { if (!config.CopyLockedPluginAssembilesToSubdirectoriesOnStartup || !shadowCopyPath.Equals(_shadowCopyFolder)) { throw; } } return(shadowCopiedAssembly ?? PerformFileDeploy(plug, applicationPartManager, config, _reserveShadowCopyFolder)); }