Esempio n. 1
0
        /// <summary>
        /// </summary>
        /// <param name="file"></param>
        public FileWrapper(File file)
            : base(file)
        {
            FolderId = file.FolderID;
            if (file.RootFolderType == FolderType.USER &&
                !Equals(file.RootFolderCreator, SecurityContext.CurrentAccount.ID))
            {
                RootFolderType = FolderType.SHARE;
                using (var folderDao = Global.DaoFactory.GetFolderDao())
                {
                    var parentFolder = folderDao.GetFolder(file.FolderID);
                    if (!Global.GetFilesSecurity().CanRead(parentFolder))
                    {
                        FolderId = Global.FolderShare;
                    }
                }
            }

            Version           = file.Version;
            ContentLength     = file.ContentLengthString;
            FileStatus        = file.FileStatus;
            PureContentLength = file.ContentLength;
            try
            {
                ViewUrl = file.ViewUrl;

                WebUrl = CommonLinkUtility.GetFileWebPreviewUrl(file.Title, file.ID);
            }
            catch (Exception)
            {
                //Don't catch anything here because of httpcontext
            }
        }
Esempio n. 2
0
        public static void SendShareNotice(FileEntry fileEntry, List <Guid> recipientsId, string message)
        {
            if (fileEntry == null || recipientsId.Count == 0)
            {
                return;
            }

            using (var folderDao = Global.DaoFactory.GetFolderDao())
            {
                if (fileEntry is File &&
                    folderDao.GetFolder(((File)fileEntry).FolderID) == null)
                {
                    return;
                }

                String url;
                if (fileEntry is File)
                {
                    url = CommonLinkUtility.GetFileWebPreviewUrl(fileEntry.Title, fileEntry.ID);
                }
                else
                {
                    url = PathProvider.GetFolderUrl(((Folder)fileEntry));
                }

                var recipientsProvider = NotifySource.Instance.GetRecipientsProvider();

                foreach (var recipientId in recipientsId)
                {
                    var u       = CoreContext.UserManager.GetUsers(recipientId);
                    var culture = string.IsNullOrEmpty(u.CultureName)
                                      ? CoreContext.TenantManager.GetCurrentTenant().GetCulture()
                                      : CultureInfo.GetCultureInfo(u.CultureName);

                    var aceString = GetAccessString(fileEntry.Access, culture);
                    var recipient = recipientsProvider.GetRecipient(recipientId.ToString());

                    Instance.SendNoticeAsync(
                        fileEntry is File ? NotifyConstants.Event_ShareDocument : NotifyConstants.Event_ShareFolder,
                        fileEntry.UniqID,
                        recipient,
                        true,
                        new TagValue(NotifyConstants.Tag_DocumentTitle, fileEntry.Title),
                        new TagValue(NotifyConstants.Tag_FolderID, fileEntry.ID),
                        new TagValue(NotifyConstants.Tag_DocumentUrl, CommonLinkUtility.GetFullAbsolutePath(url)),
                        new TagValue(NotifyConstants.Tag_AccessRights, aceString),
                        new TagValue(NotifyConstants.Tag_Message, message.HtmlEncode())
                        );
                }
            }
        }
Esempio n. 3
0
        private static void Redirect(HttpContext context)
        {
            var urlRedirect = string.Empty;
            int id;
            var folderId = context.Request[CommonLinkUtility.FolderId];

            if (!string.IsNullOrEmpty(folderId) && int.TryParse(folderId, out id))
            {
                try
                {
                    urlRedirect = PathProvider.GetFolderUrl(id);
                }
                catch (ArgumentNullException e)
                {
                    throw new HttpException((int)HttpStatusCode.BadRequest, e.Message);
                }
            }

            var fileId = context.Request[CommonLinkUtility.FileId];

            if (!string.IsNullOrEmpty(fileId) && int.TryParse(fileId, out id))
            {
                using (var fileDao = Global.DaoFactory.GetFileDao())
                {
                    var file = fileDao.GetFile(id);
                    if (file == null)
                    {
                        context.Response.Redirect(PathProvider.StartURL
                                                  + "#" + UrlConstant.Error + "/" +
                                                  HttpUtility.UrlEncode(FilesCommonResource.ErrorMassage_FileNotFound));
                        return;
                    }

                    urlRedirect = CommonLinkUtility.GetFileWebPreviewUrl(file.Title, file.ID);
                }
            }

            if (string.IsNullOrEmpty(urlRedirect))
            {
                throw new HttpException((int)HttpStatusCode.BadRequest, FilesCommonResource.ErrorMassage_BadRequest);
            }
            context.Response.Redirect(urlRedirect);
        }
Esempio n. 4
0
        public override SearchResultItem[] Search(string text)
        {
            var security = Global.GetFilesSecurity();

            using (var folderDao = Global.DaoFactory.GetFolderDao())
                using (var fileDao = Global.DaoFactory.GetFileDao())
                {
                    var files = fileDao.Search(text, FolderType.USER | FolderType.COMMON)
                                .Where(security.CanRead)
                                .Select(r => new SearchResultItem
                    {
                        Name        = r.Title ?? string.Empty,
                        Description = string.Empty,
                        URL         = CommonLinkUtility.GetFileWebPreviewUrl(r.Title, r.ID),
                        Date        = r.ModifiedOn,
                        Additional  = new Dictionary <string, object>
                        {
                            { "Author", r.CreateByString.HtmlEncode() },
                            { "Path", FolderPathBuilder(EntryManager.GetBreadCrumbs(r.FolderID, folderDao)) },
                            { "Size", FileSizeComment.FilesSizeToString(r.ContentLength) }
                        }
                    });

                    var folders = folderDao.Search(text, FolderType.USER | FolderType.COMMON)
                                  .Where(security.CanRead)
                                  .Select(f => new SearchResultItem
                    {
                        Name        = f.Title ?? string.Empty,
                        Description = String.Empty,
                        URL         = PathProvider.GetFolderUrl(f),
                        Date        = f.ModifiedOn,
                        Additional  = new Dictionary <string, object>
                        {
                            { "Author", f.CreateByString.HtmlEncode() },
                            { "Path", FolderPathBuilder(EntryManager.GetBreadCrumbs(f.ID, folderDao)) },
                            { "IsFolder", true }
                        }
                    });

                    return(folders.Concat(files).ToArray());
                }
        }