/// <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> /// 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); } }