add fileHelper
This commit is contained in:
parent
50f0bef484
commit
a82efce2a1
@ -29,6 +29,7 @@ using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace ASC.Core.ChunkedUploader
|
||||
{
|
||||
@ -58,6 +59,8 @@ namespace ASC.Core.ChunkedUploader
|
||||
public Dictionary<string, object> Items { get; set; } = new Dictionary<string, object>();
|
||||
|
||||
private const string TempPathKey = "TempPath";
|
||||
|
||||
[JsonIgnore]
|
||||
public string TempPath
|
||||
{
|
||||
get { return GetItemOrDefault<string>(TempPathKey); }
|
||||
@ -65,6 +68,8 @@ namespace ASC.Core.ChunkedUploader
|
||||
}
|
||||
|
||||
private const string UploadIdKey = "UploadId";
|
||||
|
||||
[JsonIgnore]
|
||||
public string UploadId
|
||||
{
|
||||
get { return GetItemOrDefault<string>(UploadIdKey); }
|
||||
@ -72,6 +77,8 @@ namespace ASC.Core.ChunkedUploader
|
||||
}
|
||||
|
||||
private const string ChunksBufferKey = "ChunksBuffer";
|
||||
|
||||
[JsonIgnore]
|
||||
public string ChunksBuffer
|
||||
{
|
||||
get { return GetItemOrDefault<string>(ChunksBufferKey); }
|
||||
@ -120,6 +127,10 @@ namespace ASC.Core.ChunkedUploader
|
||||
{
|
||||
newItems.Add(item.Key, item.Value.ToString());
|
||||
}
|
||||
if (value.ValueKind == JsonValueKind.Number)
|
||||
{
|
||||
newItems.Add(item.Key, Int32.Parse(item.Value.ToString()));
|
||||
}
|
||||
if (value.ValueKind == JsonValueKind.Array)
|
||||
{
|
||||
newItems.Add(item.Key, value.EnumerateArray().Select(o => o.ToString()).ToList());
|
||||
@ -131,6 +142,7 @@ namespace ASC.Core.ChunkedUploader
|
||||
}
|
||||
}
|
||||
}
|
||||
Items = newItems;
|
||||
}
|
||||
|
||||
public virtual object Clone()
|
||||
|
@ -145,7 +145,7 @@ namespace ASC.Data.Backup.Storage
|
||||
}
|
||||
|
||||
using var source = File.OpenRead(localPath);
|
||||
var newFile = ServiceProvider.GetService<File<T>>();
|
||||
var newFile = new File<T>();
|
||||
newFile.Title = Path.GetFileName(localPath);
|
||||
newFile.FolderID = folder.ID;
|
||||
newFile.ContentLength = source.Length;
|
||||
|
@ -71,16 +71,13 @@ namespace ASC.Files.Core.Data
|
||||
{
|
||||
public static void Register(DIHelper services)
|
||||
{
|
||||
services.TryAdd<File<int>>();
|
||||
services.TryAdd<IFileDao<int>, FileDao>();
|
||||
services.TryAdd<FileHelper<int>>();
|
||||
services.TryAdd<FileHelper<string>>();
|
||||
|
||||
services.TryAdd<File<string>>();
|
||||
services.TryAdd<IFileDao<int>, FileDao>();
|
||||
services.TryAdd<IFileDao<string>, ProviderFileDao>();
|
||||
|
||||
services.TryAdd<Folder<int>>();
|
||||
services.TryAdd<IFolderDao<int>, FolderDao>();
|
||||
|
||||
services.TryAdd<Folder<string>>();
|
||||
services.TryAdd<IFolderDao<string>, ProviderFolderDao>();
|
||||
|
||||
services.TryAdd<SecurityDao<int>>();
|
||||
|
@ -823,8 +823,10 @@ namespace ASC.Files.Core.Data
|
||||
var file = GetFile(fileId);
|
||||
if (file != null)
|
||||
{
|
||||
var copy = ServiceProvider.GetService<File<int>>();
|
||||
copy.FileStatus = file.FileStatus;
|
||||
var copy = new File<int>();
|
||||
var fileHelper = ServiceProvider.GetService<FileHelper<int>>();
|
||||
fileHelper.FileEntry = file;
|
||||
copy._status = fileHelper.FileStatus;
|
||||
copy.FolderID = toFolderId;
|
||||
copy.Title = file.Title;
|
||||
copy.ConvertedType = file.ConvertedType;
|
||||
@ -1039,7 +1041,7 @@ namespace ASC.Files.Core.Data
|
||||
|
||||
return file;
|
||||
}
|
||||
var result = ServiceProvider.GetService<File<int>>();
|
||||
var result = new File<int>();
|
||||
result.FolderID = uploadSession.File.FolderID;
|
||||
result.Title = uploadSession.File.Title;
|
||||
result.ContentLength = uploadSession.BytesTotal;
|
||||
@ -1429,7 +1431,7 @@ namespace ASC.Files.Core.Data
|
||||
|
||||
public File<int> ToFile(DbFileQuery r)
|
||||
{
|
||||
var file = ServiceProvider.GetService<File<int>>();
|
||||
var file = new File<int>();
|
||||
if (r == null) return null;
|
||||
file.ID = r.File.Id;
|
||||
file.Title = r.File.Title;
|
||||
@ -1479,7 +1481,7 @@ namespace ASC.Files.Core.Data
|
||||
return dbFile;
|
||||
}
|
||||
|
||||
var file = ServiceProvider.GetService<File<int>>();
|
||||
var file = new File<int>();
|
||||
file.ID = dbFile.Id;
|
||||
file.Title = dbFile.Title;
|
||||
file.Version = dbFile.Version;
|
||||
@ -1513,7 +1515,7 @@ namespace ASC.Files.Core.Data
|
||||
return dbFile;
|
||||
}
|
||||
|
||||
var file = ServiceProvider.GetService<File<int>>();
|
||||
var file = new File<int>();
|
||||
file.ID = dbFile.Id;
|
||||
file.Title = dbFile.Title;
|
||||
file.Version = dbFile.Version;
|
||||
|
@ -50,7 +50,6 @@ using ASC.Web.Studio.Utility;
|
||||
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Storage;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace ASC.Files.Core.Data
|
||||
{
|
||||
@ -576,7 +575,7 @@ namespace ASC.Files.Core.Data
|
||||
if (folder.FolderType == FolderType.BUNCH)
|
||||
folder.FolderType = FolderType.DEFAULT;
|
||||
|
||||
var copy = ServiceProvider.GetService<Folder<int>>();
|
||||
var copy = new Folder<int>();
|
||||
copy.FolderID = toFolderId;
|
||||
copy.RootFolderId = toFolder.RootFolderId;
|
||||
copy.RootFolderCreator = toFolder.RootFolderCreator;
|
||||
@ -834,7 +833,7 @@ namespace ASC.Files.Core.Data
|
||||
var newFolderId = 0;
|
||||
if (createIfNotExists && !folderIdsDictionary.TryGetValue(key, out var folderId))
|
||||
{
|
||||
var folder = ServiceProvider.GetService<Folder<int>>();
|
||||
var folder = new Folder<int>();
|
||||
switch (bunch)
|
||||
{
|
||||
case my:
|
||||
@ -918,7 +917,7 @@ namespace ASC.Files.Core.Data
|
||||
var newFolderId = 0;
|
||||
if (createIfNotExists)
|
||||
{
|
||||
var folder = ServiceProvider.GetService<Folder<int>>();
|
||||
var folder = new Folder<int>();
|
||||
folder.FolderID = 0;
|
||||
switch (bunch)
|
||||
{
|
||||
@ -1090,7 +1089,7 @@ namespace ASC.Files.Core.Data
|
||||
public Folder<int> ToFolder(DbFolderQuery r)
|
||||
{
|
||||
if (r == null) return null;
|
||||
var result = ServiceProvider.GetService<Folder<int>>();
|
||||
var result = new Folder<int>();
|
||||
result.ID = r.Folder.Id;
|
||||
result.FolderID = r.Folder.ParentId;
|
||||
result.Title = r.Folder.Title;
|
||||
|
@ -30,8 +30,6 @@ using System.Text.Json.Serialization;
|
||||
|
||||
using ASC.Common;
|
||||
using ASC.Web.Core.Files;
|
||||
using ASC.Web.Files.Classes;
|
||||
using ASC.Web.Files.Utils;
|
||||
using ASC.Web.Studio.Core;
|
||||
|
||||
namespace ASC.Files.Core
|
||||
@ -61,63 +59,38 @@ namespace ASC.Files.Core
|
||||
[DebuggerDisplay("{Title} ({ID} v{Version})")]
|
||||
public class File<T> : FileEntry<T>
|
||||
{
|
||||
private FileStatus _status;
|
||||
|
||||
public File(Global global,
|
||||
FilesLinkUtility filesLinkUtility,
|
||||
FileUtility fileUtility,
|
||||
FileConverter fileConverter,
|
||||
FileTrackerHelper fileTracker)
|
||||
: base(global)
|
||||
{
|
||||
Version = 1;
|
||||
VersionGroup = 1;
|
||||
FileEntryType = FileEntryType.File;
|
||||
FilesLinkUtility = filesLinkUtility;
|
||||
FileUtility = fileUtility;
|
||||
FileConverter = fileConverter;
|
||||
FileTracker = fileTracker;
|
||||
}
|
||||
public FileStatus _status;
|
||||
|
||||
|
||||
public File()
|
||||
{
|
||||
|
||||
Version = 1;
|
||||
VersionGroup = 1;
|
||||
FileEntryType = FileEntryType.File;
|
||||
}
|
||||
|
||||
public int Version { get; set; }
|
||||
|
||||
[JsonPropertyName("version_group")]
|
||||
public int VersionGroup { get; set; }
|
||||
|
||||
public string Comment { get; set; }
|
||||
|
||||
|
||||
[JsonIgnore]
|
||||
public string PureTitle
|
||||
{
|
||||
get { return base.Title; }
|
||||
set { base.Title = value; }
|
||||
get { return Title; }
|
||||
set { Title = value; }
|
||||
}
|
||||
|
||||
public override string Title
|
||||
{
|
||||
get
|
||||
{
|
||||
return string.IsNullOrEmpty(ConvertedType)
|
||||
? base.Title
|
||||
: FileUtility.ReplaceFileExtension(base.Title, FileUtility.GetInternalExtension(base.Title));
|
||||
}
|
||||
set { base.Title = value; }
|
||||
}
|
||||
|
||||
[JsonPropertyName("content_length")]
|
||||
public long ContentLength { get; set; }
|
||||
|
||||
[JsonPropertyName("content_length_string")]
|
||||
|
||||
[JsonIgnore]
|
||||
public string ContentLengthString
|
||||
{
|
||||
get { return FileSizeComment.FilesSizeToString(ContentLength); }
|
||||
set { }
|
||||
}
|
||||
|
||||
|
||||
[JsonIgnore]
|
||||
public FilterType FilterType
|
||||
{
|
||||
get
|
||||
@ -143,36 +116,11 @@ namespace ASC.Files.Core
|
||||
}
|
||||
}
|
||||
|
||||
[JsonPropertyName("file_status")]
|
||||
public FileStatus FileStatus
|
||||
{
|
||||
get
|
||||
{
|
||||
if (FileTracker.IsEditing(ID))
|
||||
{
|
||||
_status |= FileStatus.IsEditing;
|
||||
}
|
||||
|
||||
if (FileTracker.IsEditingAlone(ID))
|
||||
{
|
||||
_status |= FileStatus.IsEditingAlone;
|
||||
}
|
||||
|
||||
if (FileConverter.IsConverting(this))
|
||||
{
|
||||
_status |= FileStatus.IsConverting;
|
||||
}
|
||||
|
||||
return _status;
|
||||
}
|
||||
set { _status = value; }
|
||||
}
|
||||
|
||||
public bool Locked { get; set; }
|
||||
|
||||
[JsonPropertyName("locked_by")]
|
||||
public string LockedBy { get; set; }
|
||||
|
||||
|
||||
[JsonIgnore]
|
||||
public override bool IsNew
|
||||
{
|
||||
get { return (_status & FileStatus.IsNew) == FileStatus.IsNew; }
|
||||
@ -211,18 +159,13 @@ namespace ASC.Files.Core
|
||||
|
||||
public bool Encrypted { get; set; }
|
||||
|
||||
[JsonPropertyName("thumbnail_status")]
|
||||
public Thumbnail ThumbnailStatus { get; set; }
|
||||
|
||||
public ForcesaveType Forcesave { get; set; }
|
||||
|
||||
public string DownloadUrl
|
||||
{
|
||||
get { return FilesLinkUtility.GetFileDownloadUrl(ID); }
|
||||
}
|
||||
|
||||
public string ConvertedType { get; set; }
|
||||
|
||||
|
||||
[JsonIgnore]
|
||||
public string ConvertedExtension
|
||||
{
|
||||
get
|
||||
@ -241,17 +184,6 @@ namespace ASC.Files.Core
|
||||
}
|
||||
|
||||
public object NativeAccessor { get; set; }
|
||||
|
||||
[NonSerialized]
|
||||
public FileTrackerHelper FileTracker;
|
||||
|
||||
[NonSerialized]
|
||||
public FilesLinkUtility FilesLinkUtility;
|
||||
|
||||
[NonSerialized]
|
||||
public FileUtility FileUtility;
|
||||
|
||||
[NonSerialized]
|
||||
public FileConverter FileConverter;
|
||||
}
|
||||
}
|
@ -28,68 +28,41 @@ using System;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
using ASC.Files.Core.Security;
|
||||
using ASC.Web.Files.Classes;
|
||||
|
||||
namespace ASC.Files.Core
|
||||
{
|
||||
[Serializable]
|
||||
public abstract class FileEntry : ICloneable
|
||||
{
|
||||
public FileEntry(Global global)
|
||||
{
|
||||
Global = global;
|
||||
}
|
||||
|
||||
public FileEntry()
|
||||
{
|
||||
|
||||
}
|
||||
public string Title { get; set; }
|
||||
|
||||
public virtual string Title { get; set; }
|
||||
|
||||
[JsonPropertyName("create_by_id")]
|
||||
public Guid CreateBy { get; set; }
|
||||
|
||||
[JsonPropertyName("create_by")]
|
||||
public string CreateByString
|
||||
{
|
||||
get { return !CreateBy.Equals(Guid.Empty) ? Global.GetUserName(CreateBy) : _createByString; }
|
||||
set { _createByString = value; }
|
||||
}
|
||||
|
||||
[JsonPropertyName("create_on")]
|
||||
|
||||
[JsonIgnore]
|
||||
public string CreateOnString
|
||||
{
|
||||
get { return CreateOn.Equals(default) ? null : CreateOn.ToString("g"); }
|
||||
}
|
||||
|
||||
[JsonPropertyName("modified_on")]
|
||||
|
||||
[JsonIgnore]
|
||||
public string ModifiedOnString
|
||||
{
|
||||
get { return ModifiedOn.Equals(default) ? null : ModifiedOn.ToString("g"); }
|
||||
}
|
||||
|
||||
[JsonPropertyName("modified_by_id")]
|
||||
public Guid ModifiedBy { get; set; }
|
||||
|
||||
[JsonPropertyName("modified_by")]
|
||||
public string ModifiedByString
|
||||
{
|
||||
get { return !ModifiedBy.Equals(Guid.Empty) ? Global.GetUserName(ModifiedBy) : _modifiedByString; }
|
||||
set { _modifiedByString = value; }
|
||||
}
|
||||
|
||||
public string Error { get; set; }
|
||||
|
||||
public FileShare Access { get; set; }
|
||||
|
||||
public bool Shared { get; set; }
|
||||
|
||||
[JsonPropertyName("provider_id")]
|
||||
public int ProviderId { get; set; }
|
||||
|
||||
[JsonPropertyName("provider_key")]
|
||||
public string ProviderKey { get; set; }
|
||||
public string ProviderKey { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool ProviderEntry
|
||||
{
|
||||
get { return !string.IsNullOrEmpty(ProviderKey); }
|
||||
@ -107,12 +80,8 @@ namespace ASC.Files.Core
|
||||
|
||||
public FileEntryType FileEntryType;
|
||||
|
||||
[NonSerialized]
|
||||
public Global Global;
|
||||
|
||||
private string _modifiedByString;
|
||||
private string _createByString;
|
||||
|
||||
public string _modifiedByString;
|
||||
public string _createByString;
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
@ -128,14 +97,6 @@ namespace ASC.Files.Core
|
||||
[Serializable]
|
||||
public abstract class FileEntry<T> : FileEntry, ICloneable
|
||||
{
|
||||
public FileEntry(Global global) : base(global)
|
||||
{
|
||||
}
|
||||
|
||||
public FileEntry()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public T ID { get; set; }
|
||||
|
||||
@ -143,7 +104,6 @@ namespace ASC.Files.Core
|
||||
|
||||
private T _folderIdDisplay;
|
||||
|
||||
[JsonPropertyName("folder_id")]
|
||||
public T FolderIdDisplay
|
||||
{
|
||||
get
|
||||
@ -155,7 +115,9 @@ namespace ASC.Files.Core
|
||||
set { _folderIdDisplay = value; }
|
||||
}
|
||||
|
||||
public T RootFolderId { get; set; }
|
||||
public T RootFolderId { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public string UniqID
|
||||
{
|
||||
get { return string.Format("{0}_{1}", GetType().Name.ToLower(), ID); }
|
||||
|
110
products/ASC.Files/Core/Core/Entries/FileHelper.cs
Normal file
110
products/ASC.Files/Core/Core/Entries/FileHelper.cs
Normal file
@ -0,0 +1,110 @@
|
||||
/*
|
||||
*
|
||||
* (c) Copyright Ascensio System Limited 2010-2021
|
||||
*
|
||||
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
|
||||
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
|
||||
* In accordance with Section 7(a) of the GNU GPL its Section 15 shall be amended to the effect that
|
||||
* Ascensio System SIA expressly excludes the warranty of non-infringement of any third-party rights.
|
||||
*
|
||||
* THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. For more details, see GNU GPL at https://www.gnu.org/copyleft/gpl.html
|
||||
*
|
||||
* You can contact Ascensio System SIA by email at sales@onlyoffice.com
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions of ONLYOFFICE must display
|
||||
* Appropriate Legal Notices, as required under Section 5 of the GNU GPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7 § 3(b) of the GNU GPL you must retain the original ONLYOFFICE logo which contains
|
||||
* relevant author attributions when distributing the software. If the display of the logo in its graphic
|
||||
* form is not reasonably feasible for technical reasons, you must include the words "Powered by ONLYOFFICE"
|
||||
* in every copy of the program you distribute.
|
||||
* Pursuant to Section 7 § 3(e) we decline to grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
*/
|
||||
|
||||
using System;
|
||||
|
||||
using ASC.Common;
|
||||
using ASC.Web.Core.Files;
|
||||
using ASC.Web.Files.Classes;
|
||||
using ASC.Web.Files.Utils;
|
||||
|
||||
namespace ASC.Files.Core
|
||||
{
|
||||
[Transient]
|
||||
public class FileHelper<T>
|
||||
{
|
||||
private FileTrackerHelper FileTracker { get; set; }
|
||||
|
||||
private FilesLinkUtility FilesLinkUtility { get; set; }
|
||||
|
||||
private FileUtility FileUtility { get; set; }
|
||||
|
||||
private FileConverter FileConverter { get; set; }
|
||||
|
||||
private Global Global { get; set; }
|
||||
|
||||
public FileEntry FileEntry { get; set; }
|
||||
|
||||
public FileHelper(FileTrackerHelper fileTracker, FilesLinkUtility filesLinkUtility, FileUtility fileUtility, FileConverter fileConverter, Global global)
|
||||
{
|
||||
FileTracker = fileTracker;
|
||||
FilesLinkUtility = filesLinkUtility;
|
||||
FileUtility = fileUtility;
|
||||
FileConverter = fileConverter;
|
||||
Global = global;
|
||||
}
|
||||
|
||||
public string CreateByString
|
||||
{
|
||||
get { return !FileEntry.CreateBy.Equals(Guid.Empty) ? Global.GetUserName(FileEntry.CreateBy) : FileEntry._createByString; }
|
||||
}
|
||||
|
||||
public string ModifiedByString
|
||||
{
|
||||
get { return !FileEntry.ModifiedBy.Equals(Guid.Empty) ? Global.GetUserName(FileEntry.ModifiedBy) : FileEntry._modifiedByString; }
|
||||
}
|
||||
|
||||
public string Title
|
||||
{
|
||||
get
|
||||
{
|
||||
var File = (File<T>)FileEntry;
|
||||
return string.IsNullOrEmpty(File.ConvertedType)
|
||||
? File.Title
|
||||
: FileUtility.ReplaceFileExtension(File.Title, FileUtility.GetInternalExtension(File.Title));
|
||||
}
|
||||
}
|
||||
|
||||
public FileStatus FileStatus
|
||||
{
|
||||
get
|
||||
{
|
||||
|
||||
var File = (File<T>)FileEntry;
|
||||
if (FileTracker.IsEditing(File.ID))
|
||||
{
|
||||
File._status |= FileStatus.IsEditing;
|
||||
}
|
||||
|
||||
if (FileTracker.IsEditingAlone(File.ID))
|
||||
{
|
||||
File._status |= FileStatus.IsEditingAlone;
|
||||
}
|
||||
|
||||
if (FileConverter.IsConverting(File))
|
||||
{
|
||||
File._status |= FileStatus.IsConverting;
|
||||
}
|
||||
|
||||
return File._status;
|
||||
}
|
||||
}
|
||||
|
||||
public string DownloadUrl
|
||||
{
|
||||
get { return FilesLinkUtility.GetFileDownloadUrl(((FileEntry<T>)FileEntry).ID); }
|
||||
}
|
||||
}
|
||||
}
|
@ -28,7 +28,6 @@ using System;
|
||||
using System.Diagnostics;
|
||||
|
||||
using ASC.Common;
|
||||
using ASC.Web.Files.Classes;
|
||||
|
||||
namespace ASC.Files.Core
|
||||
{
|
||||
@ -84,8 +83,7 @@ namespace ASC.Files.Core
|
||||
set { NewForMe = Convert.ToInt32(value); }
|
||||
}
|
||||
|
||||
public Folder(Global global)
|
||||
: base(global)
|
||||
public Folder()
|
||||
{
|
||||
Title = string.Empty;
|
||||
FileEntryType = FileEntryType.Folder;
|
||||
|
@ -405,7 +405,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
|
||||
try
|
||||
{
|
||||
var newFolder = ServiceProvider.GetService<Folder<T>>();
|
||||
var newFolder = new Folder<T>();
|
||||
newFolder.Title = title;
|
||||
newFolder.FolderID = parent.ID;
|
||||
|
||||
@ -578,7 +578,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
}
|
||||
|
||||
|
||||
var file = ServiceProvider.GetService<File<T>>();
|
||||
var file = new File<T>();
|
||||
file.FolderID = folder.ID;
|
||||
file.Comment = FilesCommonResource.CommentCreate;
|
||||
|
||||
@ -1532,7 +1532,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
|
||||
if (file == null)
|
||||
{
|
||||
var newFile = ServiceProvider.GetService<File<T>>();
|
||||
var newFile = new File<T>();
|
||||
newFile.ID = fileId;
|
||||
newFile.Version = version;
|
||||
|
||||
@ -1602,7 +1602,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
{
|
||||
//create folder with name userFrom in folder userTo
|
||||
var folderIdToMy = folderDao.GetFolderIDUser(true, userTo.ID);
|
||||
var newFolder = ServiceProvider.GetService<Folder<T>>();
|
||||
var newFolder = new Folder<T>();
|
||||
newFolder.Title = string.Format(CustomNamingPeople.Substitute<FilesCommonResource>("TitleDeletedUserFolder"), userFrom.DisplayUserName(false, DisplayUserSettingsHelper));
|
||||
newFolder.FolderID = folderIdToMy;
|
||||
|
||||
@ -2138,12 +2138,14 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
var newFile = file;
|
||||
if (file.CreateBy != userInfo.ID)
|
||||
{
|
||||
newFile = ServiceProvider.GetService<File<T>>();
|
||||
newFile = new File<T>();
|
||||
var fileHelper = ServiceProvider.GetService<FileHelper<T>>();
|
||||
fileHelper.FileEntry = file;
|
||||
newFile.ID = file.ID;
|
||||
newFile.Version = file.Version + 1;
|
||||
newFile.VersionGroup = file.VersionGroup + 1;
|
||||
newFile.Title = file.Title;
|
||||
newFile.FileStatus = file.FileStatus;
|
||||
newFile._status = fileHelper.FileStatus;
|
||||
newFile.FolderID = file.FolderID;
|
||||
newFile.CreateBy = userInfo.ID;
|
||||
newFile.CreateOn = file.CreateOn;
|
||||
|
@ -118,7 +118,7 @@ namespace ASC.Files.Core.Thirdparty
|
||||
{
|
||||
var fromFolder = fromFolderDao.GetFolder(fromConverter(fromFolderId));
|
||||
|
||||
var toFolder1 = ServiceProvider.GetService<Folder<TTo>>();
|
||||
var toFolder1 = new Folder<TTo>();
|
||||
toFolder1.Title = fromFolder.Title;
|
||||
toFolder1.FolderID = toConverter(toRootFolderId);
|
||||
|
||||
|
@ -20,7 +20,6 @@ using ASC.Web.Files.Services.DocumentService;
|
||||
using ASC.Web.Studio.Core;
|
||||
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
using FileShare = ASC.Files.Core.Security.FileShare;
|
||||
@ -290,7 +289,7 @@ namespace ASC.Files.Thirdparty
|
||||
|
||||
protected Folder<string> GetFolder()
|
||||
{
|
||||
var folder = ServiceProvider.GetService<Folder<string>>();
|
||||
var folder = new Folder<string>();
|
||||
|
||||
InitFileEntry(folder);
|
||||
|
||||
@ -315,12 +314,11 @@ namespace ASC.Files.Thirdparty
|
||||
|
||||
protected File<string> GetFile()
|
||||
{
|
||||
var file = ServiceProvider.GetService<File<string>>();
|
||||
var file = new File<string>();
|
||||
|
||||
InitFileEntry(file);
|
||||
|
||||
file.Access = FileShare.None;
|
||||
file.FileStatus = FileStatus.None;
|
||||
file.Shared = false;
|
||||
file.Version = 1;
|
||||
|
||||
|
@ -35,8 +35,6 @@ using ASC.Files.Core.Data;
|
||||
using ASC.Files.Core.Security;
|
||||
using ASC.Files.Core.Thirdparty;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace ASC.Files.Thirdparty.ProviderDao
|
||||
{
|
||||
[Scope]
|
||||
@ -155,7 +153,7 @@ namespace ASC.Files.Thirdparty.ProviderDao
|
||||
foreach (var pureShareRecord in pureShareRecords)
|
||||
{
|
||||
if (pureShareRecord == null) continue;
|
||||
var f = ServiceProvider.GetService<Folder<string>>();
|
||||
var f = new Folder<string>();
|
||||
f.ID = pureShareRecord.EntryId.ToString();
|
||||
|
||||
pureShareRecord.Level = parentFolders.IndexOf(f);
|
||||
|
@ -37,9 +37,8 @@ using ASC.Common.Caching;
|
||||
using ASC.Common.Logging;
|
||||
using ASC.Core.Tenants;
|
||||
using ASC.Files.Core;
|
||||
using ASC.Web.Files.Classes;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using ASC.Web.Files.Classes;
|
||||
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.SharePoint.Client;
|
||||
|
||||
@ -281,7 +280,7 @@ namespace ASC.Files.Thirdparty.SharePoint
|
||||
if (file == null)
|
||||
return null;
|
||||
|
||||
var result = ServiceProvider.GetService<File<string>>();
|
||||
var result = new File<string>();
|
||||
|
||||
if (file is SharePointFileErrorEntry errorFile)
|
||||
{
|
||||
@ -307,7 +306,6 @@ namespace ASC.Files.Thirdparty.SharePoint
|
||||
//ContentLength = file.Length,
|
||||
result.CreateBy = Owner;
|
||||
result.CreateOn = file.TimeCreated.Kind == DateTimeKind.Utc ? TenantUtil.DateTimeFromUtc(file.TimeCreated) : file.TimeCreated;
|
||||
result.FileStatus = FileStatus.None;
|
||||
result.FolderID = MakeId(GetParentFolderId(file.ServerRelativeUrl));
|
||||
result.ModifiedBy = Owner;
|
||||
result.ModifiedOn = file.TimeLastModified.Kind == DateTimeKind.Utc ? TenantUtil.DateTimeFromUtc(file.TimeLastModified) : file.TimeLastModified;
|
||||
@ -498,7 +496,7 @@ namespace ASC.Files.Thirdparty.SharePoint
|
||||
{
|
||||
if (folder == null) return null;
|
||||
|
||||
var result = ServiceProvider.GetService<Folder<string>>();
|
||||
var result = new Folder<string>();
|
||||
|
||||
if (folder is SharePointFolderErrorEntry errorFolder)
|
||||
{
|
||||
|
@ -55,9 +55,8 @@ using ASC.Web.Studio.Core;
|
||||
|
||||
using DocuSign.eSign.Api;
|
||||
using DocuSign.eSign.Client;
|
||||
using DocuSign.eSign.Model;
|
||||
using DocuSign.eSign.Model;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
@ -408,7 +407,7 @@ namespace ASC.Web.Files.Helpers
|
||||
}
|
||||
}
|
||||
|
||||
var file = ServiceProvider.GetService<File<T>>();
|
||||
var file = new File<T>();
|
||||
file.FolderID = folderId;
|
||||
file.Comment = FilesCommonResource.CommentCreateByDocuSign;
|
||||
file.Title = FileUtility.ReplaceFileExtension(documentName, ".pdf");
|
||||
|
@ -47,7 +47,6 @@ using ASC.Web.Core.WhiteLabel;
|
||||
using ASC.Web.Files.Utils;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
using Constants = ASC.Core.Configuration.Constants;
|
||||
@ -572,7 +571,7 @@ namespace ASC.Web.Files.Classes
|
||||
|
||||
foreach (var folderName in storeTemplate.ListDirectoriesRelative(path, false))
|
||||
{
|
||||
var folder = ServiceProvider.GetService<Folder<T>>();
|
||||
var folder = new Folder<T>();
|
||||
folder.Title = folderName;
|
||||
folder.FolderID = folderId;
|
||||
|
||||
@ -591,7 +590,7 @@ namespace ASC.Web.Files.Classes
|
||||
return;
|
||||
|
||||
var fileName = Path.GetFileName(filePath);
|
||||
var file = ServiceProvider.GetService<File<T>>();
|
||||
var file = new File<T>();
|
||||
|
||||
file.Title = fileName;
|
||||
file.FolderID = folder;
|
||||
|
@ -1144,7 +1144,7 @@ namespace ASC.Web.Files
|
||||
fileTitle += fileExt;
|
||||
}
|
||||
|
||||
var file = ServiceProvider.GetService<File<T>>();
|
||||
var file = new File<T>();
|
||||
file.Title = fileTitle;
|
||||
file.FolderID = folder.ID;
|
||||
file.Comment = FilesCommonResource.CommentCreate;
|
||||
@ -1160,7 +1160,7 @@ namespace ASC.Web.Files
|
||||
if (string.IsNullOrEmpty(fileTitle))
|
||||
fileTitle = Path.GetFileName(HttpUtility.UrlDecode(fileUri));
|
||||
|
||||
var file = ServiceProvider.GetService<File<T>>();
|
||||
var file = new File<T>();
|
||||
file.Title = fileTitle;
|
||||
file.FolderID = folder.ID;
|
||||
file.Comment = FilesCommonResource.CommentCreate;
|
||||
|
@ -39,6 +39,8 @@ using ASC.Web.Files.Helpers;
|
||||
using ASC.Web.Files.Utils;
|
||||
using ASC.Web.Studio.Core;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace ASC.Web.Files.Configuration
|
||||
{
|
||||
public class SearchHandler
|
||||
@ -72,6 +74,7 @@ namespace ASC.Web.Files.Configuration
|
||||
private FileUtility FileUtility { get; }
|
||||
private PathProvider PathProvider { get; }
|
||||
private ThirdpartyConfiguration ThirdpartyConfiguration { get; }
|
||||
private IServiceProvider ServiceProvider { get; }
|
||||
|
||||
public SearchHandler(
|
||||
FileSecurity fileSecurity,
|
||||
@ -82,7 +85,8 @@ namespace ASC.Web.Files.Configuration
|
||||
FilesLinkUtility filesLinkUtility,
|
||||
FileUtility fileUtility,
|
||||
PathProvider pathProvider,
|
||||
ThirdpartyConfiguration thirdpartyConfiguration)
|
||||
ThirdpartyConfiguration thirdpartyConfiguration,
|
||||
IServiceProvider serviceProvider)
|
||||
{
|
||||
FileSecurity = fileSecurity;
|
||||
DaoFactory = daoFactory;
|
||||
@ -93,6 +97,7 @@ namespace ASC.Web.Files.Configuration
|
||||
FileUtility = fileUtility;
|
||||
PathProvider = pathProvider;
|
||||
ThirdpartyConfiguration = thirdpartyConfiguration;
|
||||
ServiceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
public IEnumerable<File<int>> SearchFiles(string text)
|
||||
@ -130,39 +135,49 @@ namespace ASC.Web.Files.Configuration
|
||||
public SearchResultItem[] Search(string text)
|
||||
{
|
||||
var folderDao = DaoFactory.GetFolderDao<int>();
|
||||
var result = SearchFiles(text)
|
||||
.Select(r => new SearchResultItem
|
||||
{
|
||||
Name = r.Title ?? string.Empty,
|
||||
Description = string.Empty,
|
||||
URL = FilesLinkUtility.GetFileWebPreviewUrl(FileUtility, r.Title, r.ID),
|
||||
Date = r.ModifiedOn,
|
||||
Additional = new Dictionary<string, object>
|
||||
var files = SearchFiles(text);
|
||||
var helper = ServiceProvider.GetService<FileHelper<int>>();
|
||||
List<SearchResultItem> list = new List<SearchResultItem>();
|
||||
foreach (var file in files)
|
||||
{
|
||||
helper.FileEntry = file;
|
||||
var searchResultItem = new SearchResultItem
|
||||
{
|
||||
Name = file.Title ?? string.Empty,
|
||||
Description = string.Empty,
|
||||
URL = FilesLinkUtility.GetFileWebPreviewUrl(FileUtility, file.Title, file.ID),
|
||||
Date = file.ModifiedOn,
|
||||
Additional = new Dictionary<string, object>
|
||||
{
|
||||
{ "Author", r.CreateByString.HtmlEncode() },
|
||||
{ "Path", FolderPathBuilder<int>(EntryManager.GetBreadCrumbs(r.FolderID, folderDao)) },
|
||||
{ "Size", FileSizeComment.FilesSizeToString(r.ContentLength) }
|
||||
{ "Author", helper.CreateByString.HtmlEncode() },
|
||||
{ "Path", FolderPathBuilder<int>(EntryManager.GetBreadCrumbs(file.FolderID, folderDao)) },
|
||||
{ "Size", FileSizeComment.FilesSizeToString(file.ContentLength) }
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
list.Add(searchResultItem);
|
||||
}
|
||||
|
||||
var resultFolder = SearchFolders(text)
|
||||
.Select(f =>
|
||||
new SearchResultItem
|
||||
{
|
||||
Name = f.Title ?? string.Empty,
|
||||
Description = string.Empty,
|
||||
URL = PathProvider.GetFolderUrl(f),
|
||||
Date = f.ModifiedOn,
|
||||
Additional = new Dictionary<string, object>
|
||||
var folders = SearchFolders(text);
|
||||
foreach (var folder in folders)
|
||||
{
|
||||
helper.FileEntry = folder;
|
||||
var searchResultItem = new SearchResultItem
|
||||
{
|
||||
Name = folder.Title ?? string.Empty,
|
||||
Description = string.Empty,
|
||||
URL = PathProvider.GetFolderUrl(folder),
|
||||
Date = folder.ModifiedOn,
|
||||
Additional = new Dictionary<string, object>
|
||||
{
|
||||
{ "Author", f.CreateByString.HtmlEncode() },
|
||||
{ "Path", FolderPathBuilder<int>(EntryManager.GetBreadCrumbs(f.ID, folderDao)) },
|
||||
{ "Author", helper.CreateByString.HtmlEncode() },
|
||||
{ "Path", FolderPathBuilder<int>(EntryManager.GetBreadCrumbs(folder.ID, folderDao)) },
|
||||
{ "IsFolder", true }
|
||||
}
|
||||
});
|
||||
};
|
||||
list.Add(searchResultItem);
|
||||
}
|
||||
|
||||
return result.Concat(resultFolder).ToArray();
|
||||
return list.ToArray();
|
||||
}
|
||||
|
||||
private static string FolderPathBuilder<T>(IEnumerable<FileEntry> folders)
|
||||
|
@ -40,6 +40,8 @@ using ASC.Web.Core.Files;
|
||||
using ASC.Web.Files.Classes;
|
||||
using ASC.Web.Studio.Utility;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
using FileShare = ASC.Files.Core.Security.FileShare;
|
||||
namespace ASC.Api.Documents
|
||||
{
|
||||
@ -153,7 +155,8 @@ namespace ASC.Api.Documents
|
||||
private GlobalFolderHelper GlobalFolderHelper { get; }
|
||||
private CommonLinkUtility CommonLinkUtility { get; }
|
||||
private FilesLinkUtility FilesLinkUtility { get; }
|
||||
private FileUtility FileUtility { get; }
|
||||
private FileUtility FileUtility { get; }
|
||||
private IServiceProvider ServiceProvider { get; }
|
||||
|
||||
public FileWrapperHelper(
|
||||
ApiDateTimeHelper apiDateTimeHelper,
|
||||
@ -164,7 +167,8 @@ namespace ASC.Api.Documents
|
||||
GlobalFolderHelper globalFolderHelper,
|
||||
CommonLinkUtility commonLinkUtility,
|
||||
FilesLinkUtility filesLinkUtility,
|
||||
FileUtility fileUtility)
|
||||
FileUtility fileUtility,
|
||||
IServiceProvider serviceProvider)
|
||||
: base(apiDateTimeHelper, employeeWrapperHelper)
|
||||
{
|
||||
AuthContext = authContext;
|
||||
@ -173,7 +177,8 @@ namespace ASC.Api.Documents
|
||||
GlobalFolderHelper = globalFolderHelper;
|
||||
CommonLinkUtility = commonLinkUtility;
|
||||
FilesLinkUtility = filesLinkUtility;
|
||||
FileUtility = fileUtility;
|
||||
FileUtility = fileUtility;
|
||||
ServiceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
public FileWrapper<T> Get<T>(File<T> file, List<Tuple<FileEntry<T>, bool>> folders = null)
|
||||
@ -212,6 +217,9 @@ namespace ASC.Api.Documents
|
||||
|
||||
private FileWrapper<T> GetFileWrapper<T>(File<T> file)
|
||||
{
|
||||
var fileHelper = ServiceProvider.GetService<FileHelper<T>>();
|
||||
fileHelper.FileEntry = file;
|
||||
|
||||
var result = Get<FileWrapper<T>, T>(file);
|
||||
|
||||
result.FileExst = FileUtility.GetFileExtension(file.Title);
|
||||
@ -219,7 +227,7 @@ namespace ASC.Api.Documents
|
||||
result.Version = file.Version;
|
||||
result.VersionGroup = file.VersionGroup;
|
||||
result.ContentLength = file.ContentLengthString;
|
||||
result.FileStatus = file.FileStatus;
|
||||
result.FileStatus = fileHelper.FileStatus;
|
||||
result.PureContentLength = file.ContentLength.NullIfDefault();
|
||||
result.Comment = file.Comment;
|
||||
result.Encrypted = file.Encrypted.NullIfDefault();
|
||||
@ -228,7 +236,7 @@ namespace ASC.Api.Documents
|
||||
|
||||
try
|
||||
{
|
||||
result.ViewUrl = CommonLinkUtility.GetFullAbsolutePath(file.DownloadUrl);
|
||||
result.ViewUrl = CommonLinkUtility.GetFullAbsolutePath(fileHelper.DownloadUrl);
|
||||
|
||||
result.WebUrl = CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.GetFileWebPreviewUrl(FileUtility, file.Title, file.ID, file.Version));
|
||||
|
||||
|
@ -200,17 +200,19 @@ namespace ASC.Web.Files.Services.DocumentService
|
||||
[Transient]
|
||||
public class InfoConfig<T>
|
||||
{
|
||||
public File<T> File;
|
||||
public File<T> File;
|
||||
private FileHelper<T> FileHelper;
|
||||
|
||||
public EditorType Type = EditorType.Desktop;
|
||||
private string _breadCrumbs;
|
||||
|
||||
public InfoConfig(BreadCrumbsManager breadCrumbsManager, FileSharing fileSharing, SecurityContext securityContext, UserManager userManager)
|
||||
public InfoConfig(BreadCrumbsManager breadCrumbsManager, FileSharing fileSharing, SecurityContext securityContext, UserManager userManager, FileHelper<T> fileHelper)
|
||||
{
|
||||
BreadCrumbsManager = breadCrumbsManager;
|
||||
FileSharing = fileSharing;
|
||||
SecurityContext = securityContext;
|
||||
UserManager = userManager;
|
||||
FileHelper = fileHelper;
|
||||
}
|
||||
|
||||
public bool? Favorite
|
||||
@ -245,7 +247,10 @@ namespace ASC.Web.Files.Services.DocumentService
|
||||
public string Owner
|
||||
{
|
||||
set { }
|
||||
get { return File.CreateByString; }
|
||||
get {
|
||||
FileHelper.FileEntry = File;
|
||||
return FileHelper.CreateByString;
|
||||
}
|
||||
}
|
||||
|
||||
public string Uploaded
|
||||
|
@ -62,7 +62,6 @@ using ASC.Web.Studio.Utility;
|
||||
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
using Newtonsoft.Json.Linq;
|
||||
@ -207,7 +206,7 @@ namespace ASC.Web.Files.ThirdPartyApp
|
||||
|
||||
var jsonFile = JObject.Parse(boxFile);
|
||||
|
||||
var file = ServiceProvider.GetService<File<string>>();
|
||||
var file = new File<string>();
|
||||
file.ID = ThirdPartySelector.BuildAppFileId(AppAttr, jsonFile.Value<string>("id"));
|
||||
file.Title = Global.ReplaceInvalidCharsAndTruncate(jsonFile.Value<string>("name"));
|
||||
file.CreateOn = TenantUtil.DateTimeFromUtc(jsonFile.Value<DateTime>("created_at"));
|
||||
@ -218,13 +217,13 @@ namespace ASC.Web.Files.ThirdPartyApp
|
||||
var modifiedBy = jsonFile.Value<JObject>("modified_by");
|
||||
if (modifiedBy != null)
|
||||
{
|
||||
file.ModifiedByString = modifiedBy.Value<string>("name");
|
||||
file._modifiedByString = modifiedBy.Value<string>("name");
|
||||
}
|
||||
|
||||
var createdBy = jsonFile.Value<JObject>("created_by");
|
||||
if (createdBy != null)
|
||||
{
|
||||
file.CreateByString = createdBy.Value<string>("name");
|
||||
file._createByString = createdBy.Value<string>("name");
|
||||
}
|
||||
|
||||
|
||||
|
@ -63,7 +63,6 @@ using ASC.Web.Studio.Utility;
|
||||
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
using Newtonsoft.Json.Linq;
|
||||
@ -227,19 +226,19 @@ namespace ASC.Web.Files.ThirdPartyApp
|
||||
|
||||
var jsonFile = JObject.Parse(driveFile);
|
||||
|
||||
var file = ServiceProvider.GetService<File<string>>();
|
||||
var file = new File<string>();
|
||||
file.ID = ThirdPartySelector.BuildAppFileId(AppAttr, jsonFile.Value<string>("id"));
|
||||
file.Title = Global.ReplaceInvalidCharsAndTruncate(GetCorrectTitle(jsonFile));
|
||||
file.CreateOn = TenantUtil.DateTimeFromUtc(jsonFile.Value<DateTime>("createdTime"));
|
||||
file.ModifiedOn = TenantUtil.DateTimeFromUtc(jsonFile.Value<DateTime>("modifiedTime"));
|
||||
file.ContentLength = Convert.ToInt64(jsonFile.Value<string>("size"));
|
||||
file.ModifiedByString = jsonFile["lastModifyingUser"]["displayName"].Value<string>();
|
||||
file._modifiedByString = jsonFile["lastModifyingUser"]["displayName"].Value<string>();
|
||||
file.ProviderKey = "Google";
|
||||
|
||||
var owners = jsonFile["owners"];
|
||||
if (owners != null)
|
||||
{
|
||||
file.CreateByString = owners[0]["displayName"].Value<string>();
|
||||
file._createByString = owners[0]["displayName"].Value<string>();
|
||||
}
|
||||
|
||||
editable = jsonFile["capabilities"]["canEdit"].Value<bool>();
|
||||
|
@ -31,11 +31,8 @@ using ASC.Common;
|
||||
using ASC.Common.Logging;
|
||||
using ASC.Core.ChunkedUploader;
|
||||
using ASC.Files.Core;
|
||||
using ASC.Web.Core.Files;
|
||||
using ASC.Web.Files.Classes;
|
||||
using ASC.Web.Studio.Core;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
@ -46,21 +43,18 @@ namespace ASC.Web.Files.Utils
|
||||
{
|
||||
public static readonly TimeSpan SlidingExpiration = TimeSpan.FromHours(12);
|
||||
|
||||
private IOptionsMonitor<ILog> Options { get; }
|
||||
private IServiceProvider ServiceProvider { get; }
|
||||
private IOptionsMonitor<ILog> Options { get; }
|
||||
private GlobalStore GlobalStore { get; }
|
||||
private SetupInfo SetupInfo { get; }
|
||||
private TempPath TempPath { get; }
|
||||
|
||||
public ChunkedUploadSessionHolder(
|
||||
IOptionsMonitor<ILog> options,
|
||||
IServiceProvider serviceProvider,
|
||||
GlobalStore globalStore,
|
||||
SetupInfo setupInfo,
|
||||
TempPath tempPath)
|
||||
{
|
||||
Options = options;
|
||||
ServiceProvider = serviceProvider;
|
||||
Options = options;
|
||||
GlobalStore = globalStore;
|
||||
SetupInfo = setupInfo;
|
||||
TempPath = tempPath;
|
||||
@ -90,11 +84,6 @@ namespace ASC.Web.Files.Utils
|
||||
{
|
||||
using var stream = CommonSessionHolder(false).GetStream(sessionId);
|
||||
var chunkedUploadSession = ChunkedUploadSession<T>.Deserialize(stream);
|
||||
chunkedUploadSession.File.Global = ServiceProvider.GetService<Global>();
|
||||
chunkedUploadSession.File.FilesLinkUtility = ServiceProvider.GetService<FilesLinkUtility>();
|
||||
chunkedUploadSession.File.FileUtility = ServiceProvider.GetService<FileUtility>();
|
||||
chunkedUploadSession.File.FileConverter = ServiceProvider.GetService<FileConverter>();
|
||||
chunkedUploadSession.File.FileTracker = ServiceProvider.GetService<FileTrackerHelper>();
|
||||
return chunkedUploadSession;
|
||||
}
|
||||
|
||||
|
@ -777,7 +777,14 @@ namespace ASC.Web.Files.Utils
|
||||
,
|
||||
SortedByType.Author => (x, y) =>
|
||||
{
|
||||
var cmp = c * string.Compare(x.CreateByString, y.CreateByString);
|
||||
var fileHelper = ServiceProvider.GetService<FileHelper<T>>();
|
||||
fileHelper.FileEntry = x;
|
||||
var xCreateByString = fileHelper.CreateByString;
|
||||
|
||||
fileHelper.FileEntry = y;
|
||||
var yCreateByString = fileHelper.CreateByString;
|
||||
|
||||
var cmp = c * string.Compare(xCreateByString, yCreateByString);
|
||||
return cmp == 0 ? x.Title.EnumerableComparer(y.Title) : cmp;
|
||||
}
|
||||
,
|
||||
@ -831,7 +838,7 @@ namespace ASC.Web.Files.Utils
|
||||
public Folder<string> GetFakeThirdpartyFolder<T>(IProviderInfo providerInfo, string parentFolderId = null)
|
||||
{
|
||||
//Fake folder. Don't send request to third party
|
||||
var folder = ServiceProvider.GetService<Folder<string>>();
|
||||
var folder = new Folder<string>();
|
||||
|
||||
folder.FolderID = parentFolderId;
|
||||
|
||||
@ -1105,13 +1112,15 @@ namespace ASC.Web.Files.Utils
|
||||
try
|
||||
{
|
||||
var currFile = fileDao.GetFile(fileId);
|
||||
var newFile = ServiceProvider.GetService<File<T>>();
|
||||
var newFile = new File<T>();
|
||||
var fileHelper = ServiceProvider.GetService<FileHelper<T>>();
|
||||
fileHelper.FileEntry = currFile;
|
||||
|
||||
newFile.ID = fromFile.ID;
|
||||
newFile.Version = currFile.Version + 1;
|
||||
newFile.VersionGroup = currFile.VersionGroup;
|
||||
newFile.Title = FileUtility.ReplaceFileExtension(currFile.Title, FileUtility.GetFileExtension(fromFile.Title));
|
||||
newFile.FileStatus = currFile.FileStatus;
|
||||
newFile._status = fileHelper.FileStatus;
|
||||
newFile.FolderID = currFile.FolderID;
|
||||
newFile.CreateBy = currFile.CreateBy;
|
||||
newFile.CreateOn = currFile.CreateOn;
|
||||
|
@ -769,7 +769,7 @@ namespace ASC.Web.Files.Utils
|
||||
|
||||
if (newFile == null)
|
||||
{
|
||||
newFile = ServiceProvider.GetService<File<T>>();
|
||||
newFile = new File<T>();
|
||||
newFile.FolderID = folderId;
|
||||
}
|
||||
}
|
||||
|
@ -24,15 +24,18 @@
|
||||
*/
|
||||
|
||||
|
||||
using System;
|
||||
using System.Web;
|
||||
|
||||
using ASC.Common;
|
||||
using ASC.Common.Utils;
|
||||
using ASC.Core.Common;
|
||||
using ASC.Files.Core;
|
||||
using ASC.Files.Core;
|
||||
using ASC.Files.Core.Security;
|
||||
using ASC.Web.Core.Files;
|
||||
using ASC.Web.Files.Classes;
|
||||
using ASC.Web.Files.Classes;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
using FileShare = ASC.Files.Core.Security.FileShare;
|
||||
|
||||
@ -45,25 +48,30 @@ namespace ASC.Web.Files.Utils
|
||||
private FilesLinkUtility FilesLinkUtility { get; }
|
||||
private BaseCommonLinkUtility BaseCommonLinkUtility { get; }
|
||||
private Global Global { get; }
|
||||
private FileSecurity FileSecurity { get; }
|
||||
private FileSecurity FileSecurity { get; }
|
||||
private IServiceProvider ServiceProvider { get; }
|
||||
|
||||
public FileShareLink(
|
||||
FileUtility fileUtility,
|
||||
FilesLinkUtility filesLinkUtility,
|
||||
BaseCommonLinkUtility baseCommonLinkUtility,
|
||||
Global global,
|
||||
FileSecurity fileSecurity)
|
||||
FileSecurity fileSecurity,
|
||||
IServiceProvider serviceProvider)
|
||||
{
|
||||
FileUtility = fileUtility;
|
||||
FilesLinkUtility = filesLinkUtility;
|
||||
BaseCommonLinkUtility = baseCommonLinkUtility;
|
||||
Global = global;
|
||||
FileSecurity = fileSecurity;
|
||||
FileSecurity = fileSecurity;
|
||||
ServiceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
public string GetLink<T>(File<T> file, bool withHash = true)
|
||||
{
|
||||
var url = file.DownloadUrl;
|
||||
{
|
||||
var fileHelper = ServiceProvider.GetService<FileHelper<T>>();
|
||||
fileHelper.FileEntry = file;
|
||||
var url = fileHelper.DownloadUrl;
|
||||
|
||||
if (FileUtility.CanWebView(file.Title))
|
||||
url = FilesLinkUtility.GetFileWebPreviewUrl(FileUtility, file.Title, file.ID);
|
||||
|
@ -44,8 +44,6 @@ using ASC.Web.Files.Helpers;
|
||||
using ASC.Web.Studio.Core;
|
||||
using ASC.Web.Studio.UserControls.Statistics;
|
||||
using ASC.Web.Studio.Utility;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace ASC.Web.Files.Utils
|
||||
{
|
||||
@ -162,7 +160,7 @@ namespace ASC.Web.Files.Utils
|
||||
return file;
|
||||
}
|
||||
|
||||
var newFile = ServiceProvider.GetService<File<T>>();
|
||||
var newFile = new File<T>();
|
||||
newFile.FolderID = folderId;
|
||||
newFile.Title = fileName;
|
||||
return newFile;
|
||||
@ -215,7 +213,7 @@ namespace ASC.Web.Files.Utils
|
||||
|
||||
if (folder == null)
|
||||
{
|
||||
var newFolder = ServiceProvider.GetService<Folder<T>>();
|
||||
var newFolder = new Folder<T>();
|
||||
newFolder.Title = subFolderTitle;
|
||||
newFolder.FolderID = folderId;
|
||||
|
||||
@ -252,7 +250,7 @@ namespace ASC.Web.Files.Utils
|
||||
|
||||
public ChunkedUploadSession<T> InitiateUpload<T>(T folderId, T fileId, string fileName, long contentLength, bool encrypted)
|
||||
{
|
||||
var file = ServiceProvider.GetService<File<T>>();
|
||||
var file = new File<T>();
|
||||
file.ID = fileId;
|
||||
file.FolderID = folderId;
|
||||
file.Title = fileName;
|
||||
|
Loading…
Reference in New Issue
Block a user