/// <summary> /// Sets pathes for new original image. /// </summary> /// <param name="newOriginalImage">The new original image object.</param> /// <param name="folderName">The folder name.</param> /// <param name="fileName">The file name.</param> /// <param name="archivedImageOriginalUri">The original Uri for archived image.</param> /// <param name="archivedImagePublicOriginalUrl">The public original Url for archived image.</param> public void SetPathForNewOriginal(MediaImage newOriginalImage, string folderName, string fileName, Uri archivedImageOriginalUri = null, string archivedImagePublicOriginalUrl = "") { newOriginalImage.FileUri = mediaFileService.GetFileUri(MediaType.Image, folderName, fileName); newOriginalImage.PublicUrl = mediaFileService.GetPublicFileUrl(MediaType.Image, folderName, fileName); if (!newOriginalImage.IsEdited()) { newOriginalImage.OriginalUri = mediaFileService.GetFileUri(MediaType.Image, folderName, MediaImageHelper.OriginalImageFilePrefix + fileName); newOriginalImage.PublicOriginallUrl = mediaFileService.GetPublicFileUrl(MediaType.Image, folderName, MediaImageHelper.OriginalImageFilePrefix + fileName); } else { if (archivedImageOriginalUri == null || archivedImagePublicOriginalUrl == null) { throw new CmsException("Not valid Url or Uri for original image"); } newOriginalImage.OriginalUri = archivedImageOriginalUri; newOriginalImage.PublicOriginallUrl = archivedImagePublicOriginalUrl; } newOriginalImage.ThumbnailUri = mediaFileService.GetFileUri(MediaType.Image, folderName, ThumbnailImageFilePrefix + Path.GetFileNameWithoutExtension(fileName) + ".png"); newOriginalImage.PublicThumbnailUrl = mediaFileService.GetPublicFileUrl(MediaType.Image, folderName, ThumbnailImageFilePrefix + Path.GetFileNameWithoutExtension(fileName) + ".png"); }
/// <summary> /// Makes image as original. /// </summary> /// <param name="image">The new original image.</param> /// <param name="originalImage">The current original image.</param> /// <param name="archivedImage">The archived image.</param> /// <returns>The new original image.</returns> public MediaImage MakeAsOriginal(MediaImage image, MediaImage originalImage, MediaImage archivedImage) { var folderName = Path.GetFileName(Path.GetDirectoryName(originalImage.FileUri.OriginalString)); var publicFileName = MediaImageHelper.CreatePublicFileName(originalImage.OriginalFileName, originalImage.OriginalFileExtension); using (var fileStream = DownloadFileStream(image.PublicUrl)) { image.CopyDataTo(originalImage); originalImage.Original = null; originalImage.PublishedOn = DateTime.Now; mediaImageVersionPathService.SetPathForNewOriginal(originalImage, folderName, publicFileName, archivedImage.OriginalUri, archivedImage.PublicOriginallUrl); if (image.IsEdited()) { originalImage.PublicOriginallUrl = image.PublicOriginallUrl; originalImage.OriginalUri = image.OriginalUri; } archivedImage.Original = originalImage; unitOfWork.BeginTransaction(); repository.Save(originalImage); repository.Save(archivedImage); unitOfWork.Commit(); storageService.UploadObject(new UploadRequest { InputStream = fileStream, Uri = originalImage.FileUri, IgnoreAccessControl = true }); if (!image.IsEdited()) { storageService.UploadObject(new UploadRequest { InputStream = fileStream, Uri = originalImage.OriginalUri, IgnoreAccessControl = true }); } UpdateThumbnail(originalImage, Size.Empty); return(originalImage); } }
/// <summary> /// Sets pathes for archive image. /// </summary> /// <param name="archivedImage">The archived image object.</param> /// <param name="folderName">The folder name.</param> /// <param name="fileName">The file name.</param> public void SetPathForArchive(MediaImage archivedImage, string folderName, string fileName) { archivedImage.FileUri = mediaFileService.GetFileUri(MediaType.Image, folderName, fileName); archivedImage.PublicUrl = mediaFileService.GetPublicFileUrl(MediaType.Image, folderName, fileName); if (!archivedImage.IsEdited()) { archivedImage.OriginalUri = mediaFileService.GetFileUri(MediaType.Image, folderName, MediaImageHelper.OriginalImageFilePrefix + fileName); archivedImage.PublicOriginallUrl = mediaFileService.GetPublicFileUrl(MediaType.Image, folderName, MediaImageHelper.OriginalImageFilePrefix + fileName); } archivedImage.ThumbnailUri = mediaFileService.GetFileUri(MediaType.Image, folderName, ThumbnailImageFilePrefix + Path.GetFileNameWithoutExtension(fileName) + ".png"); archivedImage.PublicThumbnailUrl = mediaFileService.GetPublicFileUrl(MediaType.Image, folderName, ThumbnailImageFilePrefix + Path.GetFileNameWithoutExtension(fileName) + ".png"); }
/// <summary> /// Moves current original image to history. /// </summary> /// <param name="originalImage">The current original image.</param> /// <returns>The archived image.</returns> public MediaImage MoveToHistory(MediaImage originalImage) { var clonnedOriginalImage = (MediaImage)originalImage.Clone(); clonnedOriginalImage.Original = originalImage; var historicalFileName = MediaImageHelper.CreateHistoricalVersionedFileName( originalImage.OriginalFileName, originalImage.OriginalFileExtension); var folderName = Path.GetFileName(Path.GetDirectoryName(originalImage.FileUri.OriginalString)); using (var originalFileStream = DownloadFileStream(clonnedOriginalImage.PublicUrl)) { using (var originalThumbnailFileStream = DownloadFileStream(clonnedOriginalImage.PublicThumbnailUrl)) { mediaImageVersionPathService.SetPathForArchive(clonnedOriginalImage, folderName, historicalFileName); unitOfWork.BeginTransaction(); repository.Save(clonnedOriginalImage); unitOfWork.Commit(); StartTasksForImage(clonnedOriginalImage, originalFileStream, originalThumbnailFileStream, originalImage.IsEdited()); } } return(clonnedOriginalImage); }
/// <summary> /// Makes image as original. /// </summary> /// <param name="image">The new original image.</param> /// <param name="originalImage">The current original image.</param> /// <param name="archivedImage">The archived image.</param> /// <param name="overrideUrl">To override public Url ot not.</param> /// <returns>The new original image.</returns> public MediaImage MakeAsOriginal(MediaImage image, MediaImage originalImage, MediaImage archivedImage, bool overrideUrl = true) { overrideUrl = false; // TODO: temporary disabling feature #1055. var folderName = Path.GetFileName(Path.GetDirectoryName(originalImage.FileUri.OriginalString)); using (var fileStream = DownloadFileStream(image.PublicUrl)) { string publicUrlTemp = string.Empty, publicThumbnailUrlTemp = string.Empty, publicOriginallUrlTemp = string.Empty; Uri fileUriTemp = null, thumbnailUriTemp = null, originalUriTemp = null; if (overrideUrl) { publicUrlTemp = originalImage.PublicUrl; fileUriTemp = originalImage.FileUri; publicThumbnailUrlTemp = originalImage.PublicThumbnailUrl; thumbnailUriTemp = originalImage.ThumbnailUri; publicOriginallUrlTemp = originalImage.PublicOriginallUrl; originalUriTemp = originalImage.OriginalUri; } image.CopyDataTo(originalImage, false); MediaHelper.SetCollections(repository, image, originalImage); if (!overrideUrl) { var publicFileName = MediaHelper.RemoveInvalidPathSymbols(MediaImageHelper.CreateVersionedFileName(originalImage.OriginalFileName, GetVersion(originalImage))); mediaImageVersionPathService.SetPathForNewOriginal(originalImage, folderName, publicFileName, ImageHelper.GetImageType(originalImage.OriginalFileExtension), archivedImage.OriginalUri, archivedImage.PublicOriginallUrl); } else { originalImage.PublicUrl = publicUrlTemp; originalImage.FileUri = fileUriTemp; originalImage.PublicThumbnailUrl = publicThumbnailUrlTemp; originalImage.ThumbnailUri = thumbnailUriTemp; originalImage.PublicOriginallUrl = publicOriginallUrlTemp; originalImage.OriginalUri = originalUriTemp; } originalImage.Original = null; originalImage.PublishedOn = DateTime.Now; if (image.IsEdited()) { originalImage.PublicOriginallUrl = image.PublicOriginallUrl; originalImage.OriginalUri = image.OriginalUri; } unitOfWork.BeginTransaction(); repository.Save(originalImage); unitOfWork.Commit(); if (!image.IsEdited()) { using (var fileStreamReplica = new MemoryStream()) { fileStream.CopyTo(fileStreamReplica); storageService.UploadObject(new UploadRequest { InputStream = fileStreamReplica, Uri = originalImage.OriginalUri, IgnoreAccessControl = true }); } } storageService.UploadObject(new UploadRequest { InputStream = fileStream, Uri = originalImage.FileUri, IgnoreAccessControl = true }); UpdateThumbnail(originalImage, Size.Empty); return(originalImage); } }