Пример #1
0
        /// <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);
            }
        }
Пример #3
0
        /// <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");
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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);
            }
        }