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