/*
         * Import all files in the image folder to the Kentico CMS Media library.
         */
        public void Import(bool forceUpdate, string folder)
        {
            try
            {
                //Import files in current folder
                string imagefolderpath = _image_root_folder + folder;
                FileInfo[] fileInfos = (new DirectoryInfo(imagefolderpath)).GetFiles();

                foreach (FileInfo fileInfo in fileInfos)
                {
                    //Check if file exist
                    string relativefilepath = folder + fileInfo.Name;
                    MediaFileInfo existinginfo = MediaFileInfoProvider.GetMediaFileInfo(_libraryId, relativefilepath.TrimStart('\\'));

                    if (existinginfo == null)
                    {
                        //Import file
                        MediaFileInfo mediafileinfo = new MediaFileInfo(_image_root_folder + relativefilepath, _libraryId, "");
                        mediafileinfo.FilePath = relativefilepath.TrimStart('\\').Replace('\\', '/');
                        mediafileinfo.FileMimeType = string.Format("image/{0}", fileInfo.Extension.TrimStart('.'));
                        mediafileinfo.FileSiteID = _siteId;
                        MediaFileInfoProvider.ImportMediaFileInfo(mediafileinfo, _userid);
                    }
                    else
                    {
                        //Update existing file entry
                        if (forceUpdate) MediaFileInfoProvider.UpdateFilesPath(existinginfo.FilePath, relativefilepath, _libraryId);
                    }
                }

                //Import subfolders
                DirectoryInfo[] dirInfos = (new DirectoryInfo(imagefolderpath)).GetDirectories();

                foreach (DirectoryInfo dirInfo in dirInfos)
                {
                    //import subfolder but exclude system folder i.e. __thumbnails
                    if (!dirInfo.Name.StartsWith("__")) Import(forceUpdate, folder + dirInfo.Name + "\\");
                }
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("Media Library Error : Import - {0}", ex.Message));
            }
        }
Пример #2
0
        private void PrepareMetaPropertiesModel(MetaPropertiesModel model, MediaFileInfo fileInfo)
        {
            model.Site     = Url.RouteUrl("HomePage", null, Request.Url.Scheme);
            model.SiteName = Services.StoreContext.CurrentStore.Name;

            var imageUrl = fileInfo?.GetUrl();

            if (fileInfo != null && imageUrl.HasValue())
            {
                imageUrl        = WebHelper.GetAbsoluteUrl(imageUrl, Request, true);
                model.ImageUrl  = imageUrl;
                model.ImageType = fileInfo.MimeType;

                if (fileInfo.Alt.HasValue())
                {
                    model.ImageAlt = fileInfo.Alt;
                }

                if (fileInfo.Dimensions.Width > 0 && fileInfo.Dimensions.Height > 0)
                {
                    model.ImageWidth  = fileInfo.Dimensions.Width;
                    model.ImageHeight = fileInfo.Dimensions.Height;
                }
            }

            var socialSettings = Services.Settings.LoadSetting <SocialSettings>();

            model.TwitterSite   = socialSettings.TwitterSite;
            model.FacebookAppId = socialSettings.FacebookAppId;
        }
Пример #3
0
        protected ActionResult CreateMediaFile(string filePathId, int mediaLibraryId, string imagePath, FileInfo fileInfo)
        {
            MediaFileInfo mediaFileInfo = null;

            try
            {
                mediaFileInfo = CreateMediafileInfo(mediaLibraryId, fileInfo);
            }
            catch (Exception ex)
            {
                return(ErrorHelper.HandleException(
                           nameof(MediaLibraryUploaderController),
                           nameof(CreateMediaFile),
                           ex,
                           ErrorHelper.UnprocessableStatusCode));
            }

            try
            {
                CMS.IO.File.Delete(imagePath);
            }
            catch (Exception ex)
            {
                ErrorHelper.LogException(nameof(Upload), "", ex);
            }

            return(Json(new
            {
                filePathId,
                fileGuid = mediaFileInfo.FileGUID.ToString()
            }));
        }
Пример #4
0
        private static string GetContent(MediaFileInfo mfi)
        {
            if (mfi != null)
            {
                return(string.Empty);
            }

            var content = new StringBuilder();

            content.Append(mfi.FileName);
            content.Append(" ");

            try
            {
                // see if we can use system extractor
                var extractors = GetExtractors();
                if (extractors.Contains(mfi.FileExtension.Trim('.').ToLower()))
                {
                    var cachedValueUsed = false;
                    var data            = CMS.Search.SearchHelper.GetBinaryDataSearchContent(mfi, new ExtractionContext(), out cachedValueUsed);

                    if (data != null)
                    {
                        content.Append(ValidationHelper.GetString(data.GetValue(SearchFieldsConstants.CONTENT), string.Empty));
                    }
                }
            }
            catch (Exception ex)
            {
                EventLogProvider.LogException("MediaLibrarySearchIndex", "GetBinaryContentAsString", ex);
            }

            return(content.ToString());
        }
Пример #5
0
        /// <summary>
        /// Execute -cp action for file f. Update database if needed.
        /// </summary>
        private void DownloadFiles(MediaDevice device, MediaFileInfo f, Dictionary <string, FileSpec> database)
        {
            var localFilename = Path.Combine(localFolder, f.Name.Substring(f.Name.LastIndexOf("\\") + 1));

            Console.Error.WriteLine("writing: " + localFilename); // DEBUG msg
            FileStream fs = File.Create(localFilename);

            device.DownloadFile(f.FullName, fs);

            FileSpec fspec = null;

            if (removeDuplicates || splitFolders)
            {
                fspec = new FileSpec(localFilename, f.CreationTime);
            }

            if (removeDuplicates)
            {
                if (database.ContainsKey(fspec.ContentHash()))
                {
                    Console.Error.WriteLine("ignoring duplicate file: " + localFilename);
                    File.Delete(localFilename);
                }
                else
                {
                    database[fspec.ContentHash()] = fspec;
                }
            }
        }
Пример #6
0
    /// <summary>
    /// Gets and bulk updates media files. Called when the "Get and bulk update files" button is pressed.
    /// Expects the CreateMediaFile method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateMediaFiles()
    {
        // Prepare the parameters
        string where = "FileName LIKE 'MyNew%'";

        // Get the data
        DataSet files = MediaFileInfoProvider.GetMediaFiles(where, null);

        if (!DataHelper.DataSourceIsEmpty(files))
        {
            // Loop through the individual items
            foreach (DataRow fileDr in files.Tables[0].Rows)
            {
                // Create object from DataRow
                MediaFileInfo modifyFile = new MediaFileInfo(fileDr);

                // Update the property
                modifyFile.FileName = modifyFile.FileName.ToUpper();

                // Update the media file
                MediaFileInfoProvider.SetMediaFileInfo(modifyFile);
            }

            return(true);
        }

        return(false);
    }
            public void FakeData()
            {
                Fake <MediaLibraryInfo, MediaLibraryInfoProvider>().WithData(
                    new MediaLibraryInfo()
                {
                    LibraryID     = 1,
                    LibraryFolder = LIBRARY_FOLDER
                }
                    );

                Fake <SiteInfo>();
                site = new SiteInfo()
                {
                    SiteID              = 1,
                    SiteName            = SITE_NAME,
                    DomainName          = SITE_DOMAIN,
                    SitePresentationURL = SITE_PRESENTATION_URL,
                    SiteIsContentOnly   = true
                };
                Fake <SiteInfo, SiteInfoProvider>().WithData(site);

                Fake <MediaFileInfo>();
                mediaFile = new MediaFileInfo
                {
                    FileGUID      = MEDIA_FILE_GUID,
                    FileName      = MEDIA_FILE_NAME,
                    FileExtension = ".jpg",
                    FilePath      = MEDIA_FILE_PATH,
                    FileSiteID    = 1,
                    FileLibraryID = 1
                };
            }
Пример #8
0
    public static string getMediaURL(string Imagepath)
    {
        string link_media = "";

        string[] arr = null;
        if (Imagepath.Trim() != "")
        {
            if (Imagepath.LastIndexOf("media") > 2 || Imagepath.LastIndexOf("images") == -1)
            {
                link_media = Imagepath.Trim().Split('?')[0];
                arr        = link_media.Split('/');
                link_media = arr[arr.Length - 1];
                MediaFileInfo mfi = MediaFileInfoProvider.GetMediaFileInfo(CMSContext.CurrentSiteName, link_media);
                if (mfi != null)
                {
                    return(link_media = "/getmedia/" + mfi.FileGUID.ToString() + "/" + mfi.FileName + ".aspx");
                }
                else
                {
                    Imagepath = "";
                }
            }
        }
        return(Imagepath);
    }
Пример #9
0
        private static MvcHtmlString MediaInternal(
            this HtmlHelper helper,
            MediaFileInfo file,
            bool renderViewer,
            int size,
            string extraCssClasses)
        {
            if (file?.File == null)
            {
                return(MvcHtmlString.Empty);
            }

            // Validate size parameter.
            if (file.MediaType != "image" && !renderViewer)
            {
                Guard.IsPositive(size, nameof(size), $"The size must be greater than 0 to get a thumbnail for type '{file.MediaType.NaIfEmpty()}'.");
            }

            if (size > 0)
            {
                file.ThumbSize = size;
            }

            var f = file?.File;

            var model = new MediaTemplateModel(file, renderViewer)
            {
                ExtraCssClasses = extraCssClasses,
                Title           = f?.GetLocalized(x => x.Title),
                Alt             = f?.GetLocalized(x => x.Alt)
            };

            return(helper.Partial("MediaTemplates/" + file.MediaType, model));
        }
Пример #10
0
        public void PrepareMetaPropertiesModel(MetaPropertiesModel model, MediaFileInfo fileInfo)
        {
            model.Site     = _urlHelper.RouteUrl("HomePage", null, _httpRequest.Scheme);
            model.SiteName = _storeContext.CurrentStore.Name;

            var imageUrl = fileInfo?.GetUrl();

            if (fileInfo != null && imageUrl.HasValue())
            {
                imageUrl        = WebHelper.GetAbsoluteUrl(imageUrl, _httpRequest, true);
                model.ImageUrl  = imageUrl;
                model.ImageType = fileInfo.MimeType;

                if (fileInfo.Alt.HasValue())
                {
                    model.ImageAlt = fileInfo.Alt;
                }

                if (fileInfo.Size.Width > 0 && fileInfo.Size.Height > 0)
                {
                    model.ImageWidth  = fileInfo.Size.Width;
                    model.ImageHeight = fileInfo.Size.Height;
                }
            }

            model.TwitterSite   = _socialSettings.TwitterSite;
            model.FacebookAppId = _socialSettings.FacebookAppId;
        }
Пример #11
0
        public void AdjustVideoSpeedTest()
        {
            Action <VideoManipulator, MediaFileInfo, string, string, float, float, bool> changeVideoSpeedTestHelper = delegate(VideoManipulator vm, MediaFileInfo mfi, string inputPath, string outputPath, float newPlaybackRate, float newFrameRate, bool alsoChangeAudio)
            {
                double inputDuration = mfi.Format.Duration.Value;
                vm.AdjustVideoSpeed(outputPath, inputPath, newPlaybackRate, newFrameRate, alsoChangeAudio);
                double outputDuration   = new MediaFileInfo(outputPath).Format.Duration.Value;
                double expectedDuration = inputDuration / newPlaybackRate;
                Assert.IsTrue(Math.Min(expectedDuration, outputDuration) / Math.Max(expectedDuration, outputDuration) > 0.95);
            };

            string           inputFilepath    = $"{TestMediaDirectory}twwbattles1.mp4";
            string           outputFilepath   = $"{TestMediaDirectory}output.mp4";
            VideoManipulator videoManipulator = new VideoManipulator();
            MediaFileInfo    mfiInput         = new MediaFileInfo(inputFilepath);

            changeVideoSpeedTestHelper(videoManipulator, mfiInput, inputFilepath, outputFilepath, 0.4f, 0, false);
            changeVideoSpeedTestHelper(videoManipulator, mfiInput, inputFilepath, outputFilepath, 3, 0, false);

            inputFilepath = $"{TestMediaDirectory}twwbattlesraw.mp4";
            mfiInput      = new MediaFileInfo(inputFilepath);
            changeVideoSpeedTestHelper(videoManipulator, mfiInput, inputFilepath, outputFilepath, 0.5f, 0, true);
            changeVideoSpeedTestHelper(videoManipulator, mfiInput, inputFilepath, outputFilepath, 2, 0, true);
            try
            {
                changeVideoSpeedTestHelper(videoManipulator, mfiInput, inputFilepath, outputFilepath, 0.4f, 0, true);
                throw new Exception();
            } catch (ArgumentException) { }
            try
            {
                changeVideoSpeedTestHelper(videoManipulator, mfiInput, inputFilepath, outputFilepath, 3, 0, true);
                throw new Exception();
            }
            catch (ArgumentException) { }
        }
Пример #12
0
        public async Task <ImageModel> PrepareCategoryImageModelAsync(Category category, string localizedName, IDictionary <int, MediaFileInfo> fileLookup = null)
        {
            MediaFileInfo file = null;

            if (fileLookup != null)
            {
                fileLookup.TryGetValue(category.MediaFileId ?? 0, out file);
            }
            else
            {
                if (category.MediaFile != null)
                {
                    file = _mediaService.ConvertMediaFile(category.MediaFile);
                }
                else if (category.MediaFileId.HasValue)
                {
                    file = await _mediaService.GetFileByIdAsync(category.MediaFileId.Value, MediaLoadFlags.AsNoTracking);
                }
            }

            var model = new ImageModel
            {
                File       = file,
                ThumbSize  = _mediaSettings.CategoryThumbPictureSize,
                Title      = file?.File?.GetLocalized(x => x.Title)?.Value.NullEmpty() ?? string.Format(T("Media.Category.ImageLinkTitleFormat"), localizedName),
                Alt        = file?.File?.GetLocalized(x => x.Alt)?.Value.NullEmpty() ?? string.Format(T("Media.Category.ImageAlternateTextFormat"), localizedName),
                NoFallback = _catalogSettings.HideCategoryDefaultPictures
            };

            _services.DisplayControl.Announce(file?.File);

            return(model);
        }
        /// <summary>
        /// Returns a relative or an absolute URL for the given media file depending on the media library location.
        /// Media library locations:
        ///  - current site -> relative URL
        ///  - different site / CDN -> absolute URL
        /// </summary>
        /// <param name="mediaFile">Media file for which the URL is generated.</param>
        /// <param name="getUrlMethod">The method which generates a relative URL for the given <paramref name="mediaFile"/>.</param>
        private static string GetMediaFileUrl(MediaFileInfo mediaFile, Func <MediaFileInfo, SiteInfo, string> getUrlMethod)
        {
            var mediaFileSite = SiteInfoProvider.GetSiteInfo(mediaFile.FileSiteID);

            if (mediaFileSite == null)
            {
                return(null);
            }

            string relativeUrl = getUrlMethod(mediaFile, mediaFileSite);

            if (!String.IsNullOrEmpty(relativeUrl))
            {
                bool mediaFileIsOnCurrentSite = (SiteContext.CurrentSiteName == mediaFileSite.SiteName);

                if (!mediaFileIsOnCurrentSite)
                {
                    return(GetAbsoluteUrl(relativeUrl, mediaFileSite));
                }

                return(relativeUrl);
            }

            return(null);
        }
Пример #14
0
    private bool SetJsonInfo()
    {
        // Create the sidecar json object
        SidecarJson ??= new SidecarFileJsonSchema();

        // Schema version
        SidecarJson.SchemaVersion = SidecarFileJsonSchema.CurrentSchemaVersion;

        // Media file info
        MediaFileInfo.Refresh();
        SidecarJson.MediaLastWriteTimeUtc = MediaFileInfo.LastWriteTimeUtc;
        SidecarJson.MediaLength           = MediaFileInfo.Length;
        SidecarJson.MediaHash             = ComputeHash();

        // Tool version info
        SidecarJson.FfProbeToolVersion   = Tools.FfProbe.Info.Version;
        SidecarJson.MkvMergeToolVersion  = Tools.MkvMerge.Info.Version;
        SidecarJson.MediaInfoToolVersion = Tools.MediaInfo.Info.Version;

        // Compressed tool info
        SidecarJson.FfProbeInfoData  = StringCompression.Compress(FfProbeInfoJson);
        SidecarJson.MkvMergeInfoData = StringCompression.Compress(MkvMergeInfoJson);
        SidecarJson.MediaInfoData    = StringCompression.Compress(MediaInfoXml);

        // State
        // TODO: Only update tool and file info if changed, else just update state
        SidecarJson.State = State;

        return(true);
    }
Пример #15
0
    /// <summary>
    /// Gets HTML code of rendered DirectFileUploader control.
    /// </summary>
    /// <param name="mfi">Media file information</param>
    public string GetWebDavHTML(MediaFileInfo mfi)
    {
        SiteInfo si = SiteInfoProvider.GetSiteInfo(mfi.FileSiteID);

        if (si != null)
        {
            // If the WebDAV is enabled and windows authentication and extension is allowed
            if (CMSContext.IsWebDAVEnabled(si.SiteName) && RequestHelper.IsWindowsAuthentication() && WebDAVSettings.IsExtensionAllowedForEditMode(mfi.FileExtension, si.SiteName))
            {
                StringBuilder sb = new StringBuilder();
                using (StringWriter tw = new StringWriter(sb))
                {
                    HtmlTextWriter    hw         = new HtmlTextWriter(tw);
                    WebDAVEditControl wabDavElem = Page.LoadUserControl("~/CMSModules/MediaLibrary/Controls/WebDAV/MediaFileWebDAVEditControl.ascx") as WebDAVEditControl;
                    if (wabDavElem != null)
                    {
                        // Initialize update control
                        innermedia.GetWebDAVEditControl(ref wabDavElem, mfi);
                        wabDavElem.ReloadData(true);
                        wabDavElem.RenderControl(hw);
                    }
                }

                return(sb.ToString());
            }
        }
        return(null);
    }
Пример #16
0
        private dynamic ToDynamic(MediaFileInfo file, int thumbPictureSize, int detailsPictureSize, DataExporterContext ctx)
        {
            if (file == null)
            {
                return(null);
            }

            try
            {
                var     host   = ctx.Store.GetHost();
                dynamic result = new DynamicEntity(file.File);

                result._FileName         = file.Name;
                result._RelativeUrl      = _mediaService.GetUrl(file, null, null);
                result._ThumbImageUrl    = _mediaService.GetUrl(file, thumbPictureSize, host);
                result._ImageUrl         = _mediaService.GetUrl(file, detailsPictureSize, host);
                result._FullSizeImageUrl = _mediaService.GetUrl(file, null, host);

                return(result);
            }
            catch (Exception ex)
            {
                ctx.Log.Error(ex, $"Failed to get details for file with ID {file.File.Id}.");
                return(null);
            }
        }
    /// <summary>
    /// Stores new media file info into the DB.
    /// </summary>
    /// <param name="fi">Info on file to be stored</param>
    /// <param name="description">Description of new media file</param>
    /// <param name="name">Name of new media file</param>
    public MediaFileInfo SaveNewFile(FileInfo fi, string title, string description, string name, string filePath)
    {
        string path     = MediaLibraryHelper.EnsurePath(filePath);
        string fileName = name;

        string fullPath  = fi.FullName;
        string extension = URLHelper.GetSafeFileName(fi.Extension, CMSContext.CurrentSiteName);

        // Check if filename is changed ad move file if necessary
        if (fileName + extension != fi.Name)
        {
            string oldPath = path;
            fullPath = MediaLibraryHelper.EnsureUniqueFileName(Path.GetDirectoryName(fullPath) + "\\" + fileName + extension);
            path     = MediaLibraryHelper.EnsurePath(Path.GetDirectoryName(path) + "/" + Path.GetFileName(fullPath)).TrimStart('/');
            MediaFileInfoProvider.MoveMediaFile(CMSContext.CurrentSiteName, MediaLibraryID, oldPath, path, true);
            fileName = Path.GetFileNameWithoutExtension(fullPath);
        }

        // Create media file info
        MediaFileInfo fileInfo = new MediaFileInfo(fullPath, LibraryInfo.LibraryID, MediaLibraryHelper.EnsurePath(Path.GetDirectoryName(path)), 0, 0, 0);

        fileInfo.FileTitle       = title;
        fileInfo.FileDescription = description;

        // Save media file info
        MediaFileInfoProvider.ImportMediaFileInfo(fileInfo);

        // Save FileID in ViewState
        FileID   = fileInfo.FileID;
        FilePath = fileInfo.FilePath;

        return(fileInfo);
    }
Пример #18
0
        /// <inheritdoc/>
        public IMediaFile GetMediaFile(int mediaFileId)
        {
            MediaFileInfo file = MediaFileInfoProvider.GetMediaFileInfo(mediaFileId);

            file = SetFileBinary(file);
            return(file?.ActLike <IMediaFile>());
        }
        protected override void DoStartRenderer()
        {
            if (renderMediaName == null || renderMediaName.Length <= 0)
            {
                return;
            }

            renderMediaInfo = MediaFileInfo.FromPath(renderMediaName, true);

            GC.Collect();

            InitMedia();
            InitAudioAndVideo();

            int hr = mediaPosition.put_Rate(1);

            DsError.ThrowExceptionForHR(hr);

            // Run the graph to play the media file
            hr = mediaControl.Run();
            DsError.ThrowExceptionForHR(hr);

            // HACK: call GetMedialenght once here to ensure that durationScaleFactor is buuilt up
            double len = GetMediaLength();
        }
Пример #20
0
        private async Task <ImageModel> PrepareOrderItemImageModelAsync(
            Product product,
            int pictureSize,
            string productName,
            ProductVariantAttributeSelection attributeSelection,
            CatalogSettings catalogSettings)
        {
            Guard.NotNull(product, nameof(product));

            MediaFileInfo file        = null;
            var           combination = await _productAttributeMaterializer.FindAttributeCombinationAsync(product.Id, attributeSelection);

            if (combination != null)
            {
                var mediaIds = combination.GetAssignedMediaIds();
                if (mediaIds.Any())
                {
                    file = await _mediaService.GetFileByIdAsync(mediaIds[0], MediaLoadFlags.AsNoTracking);
                }
            }

            // No attribute combination image, then load product picture.
            if (file == null)
            {
                var mediaFile = await _db.ProductMediaFiles
                                .AsNoTracking()
                                .Include(x => x.MediaFile)
                                .ApplyProductFilter(product.Id)
                                .FirstOrDefaultAsync();

                if (mediaFile?.MediaFile != null)
                {
                    file = _mediaService.ConvertMediaFile(mediaFile.MediaFile);
                }
            }

            // Let's check whether this product has some parent "grouped" product.
            if (file == null && product.Visibility == ProductVisibility.Hidden && product.ParentGroupedProductId > 0)
            {
                var mediaFile = await _db.ProductMediaFiles
                                .AsNoTracking()
                                .Include(x => x.MediaFile)
                                .ApplyProductFilter(product.ParentGroupedProductId)
                                .FirstOrDefaultAsync();

                if (mediaFile?.MediaFile != null)
                {
                    file = _mediaService.ConvertMediaFile(mediaFile.MediaFile);
                }
            }

            return(new ImageModel
            {
                File = file,
                ThumbSize = pictureSize,
                Title = file?.File?.GetLocalized(x => x.Title)?.Value.NullEmpty() ?? T("Media.Product.ImageLinkTitleFormat", productName),
                Alt = file?.File?.GetLocalized(x => x.Alt)?.Value.NullEmpty() ?? T("Media.Product.ImageAlternateTextFormat", productName),
                NoFallback = catalogSettings.HideProductDefaultPictures
            });
        }
Пример #21
0
        public void WritablePersistentUniqueIdTest()
        {
            var devices = MediaDevice.GetDevices();
            var device  = devices.FirstOrDefault(this.deviceSelect);

            Assert.IsNotNull(device, "Device");
            device.Connect();

            UploadTestTree(device);

            MediaDirectoryInfo dir    = device.GetDirectoryInfo(Path.Combine(this.workingFolder, @"UploadTree\Aaa\Abb"));
            string             dirPui = dir.PersistentUniqueId;
            MediaDirectoryInfo dirGet = device.GetFileSystemInfoFromPersistentUniqueId(dirPui) as MediaDirectoryInfo;

            MediaFileInfo file    = device.GetFileInfo(Path.Combine(this.workingFolder, @"UploadTree\Aaa\Abb\Acc\Ctest.txt"));
            string        filePui = file.PersistentUniqueId;
            MediaFileInfo fileGet = device.GetFileSystemInfoFromPersistentUniqueId(filePui) as MediaFileInfo;

            string tmp = Path.GetTempFileName();

            device.DownloadFileFromPersistentUniqueId(filePui, tmp);
            var text = File.ReadAllText(tmp);

            device.Disconnect();

            Assert.IsNotNull(dirPui, "dirPui");
            Assert.AreEqual(dir, dirGet, "dirGet");

            Assert.IsNotNull(filePui, "filePui");
            Assert.AreEqual(file, fileGet, "fileGet");

            Assert.AreEqual("test", text, "text");
        }
Пример #22
0
    /// <summary>
    /// Gets media file info object representing the updated version of original file.
    /// </summary>
    /// <param name="originalFile">Original file data</param>
    private MediaFileInfo GetUpdatedFile(IDataClass originalFile)
    {
        // Get info on media file from uploaded file
        MediaFileInfo mediaFile = new MediaFileInfo(ucFileUpload.PostedFile, LibraryID, LibraryFolderPath, ResizeToWidth, ResizeToHeight, ResizeToMaxSideSize, LibraryInfo.LibrarySiteID);

        // Create new file based on original
        MediaFileInfo updatedMediaFile = new MediaFileInfo(originalFile);

        // Update necessary information
        updatedMediaFile.FileID               = MediaFileID;
        updatedMediaFile.FileName             = mediaFile.FileName;
        updatedMediaFile.FileExtension        = mediaFile.FileExtension;
        updatedMediaFile.FileSize             = mediaFile.FileSize;
        updatedMediaFile.FileMimeType         = mediaFile.FileMimeType;
        updatedMediaFile.FilePath             = mediaFile.FilePath;
        updatedMediaFile.FileCreatedWhen      = mediaFile.FileCreatedWhen;
        updatedMediaFile.FileCreatedByUserID  = mediaFile.FileCreatedByUserID;
        updatedMediaFile.FileModifiedByUserID = mediaFile.FileModifiedByUserID;
        updatedMediaFile.FileBinary           = mediaFile.FileBinary;
        updatedMediaFile.FileImageHeight      = mediaFile.FileImageHeight;
        updatedMediaFile.FileImageWidth       = mediaFile.FileImageWidth;
        updatedMediaFile.FileBinaryStream     = mediaFile.FileBinaryStream;

        return(updatedMediaFile);
    }
Пример #23
0
        public async Task <MediaFileProcessingResult> Process(MediaFileInfo file, RssFeedDto feed, CancellationToken ct)
        {
            string tempDirectory = null;

            try
            {
                tempDirectory = _tempDirectoryService.Create(feed.Id.ToString());
                var alternativeFileName = Guid.NewGuid().ToString();
                var downloadService     = _fileDownloadResolver(feed.Type);

                var tempFile = await downloadService
                               .DownloadMediaFile(file.Url, tempDirectory, alternativeFileName, ct)
                               .ConfigureAwait(false);

                var fileResult = await ProcessFile(tempFile, tempDirectory, ct);

                var newEntry = new MediaFileDto
                {
                    FeedId   = feed.Id,
                    Title    = file.Name,
                    FileName = fileResult,
                    Url      = file.VideoId
                };
                _context.MediaFiles.Add(newEntry);
                await _context.SaveChangesAsync();

                return(new MediaFileSuccessResult(feed.Url, newEntry.Id));
            } catch (Exception ex)
            {
                return(new MediaFileErrorResult(feed.Url, ex));
            }
        }
Пример #24
0
        static void ttclient_OnUserAudioFile(int nUserID, MediaFileInfo mediafileinfo)
        {
            User user = new User();

            if (ttclient.GetUser(nUserID, ref user))
            {
                switch (mediafileinfo.nStatus)
                {
                case MediaFileStatus.MFS_ERROR:
                    Console.WriteLine("Failed to store audio file for #{0} {1}.",
                                      user.nUserID, user.szNickname);
                    break;

                case MediaFileStatus.MFS_STARTED:
                    Console.WriteLine("Storing audio from #{0} for {1} to file.",
                                      user.nUserID, user.szNickname);
                    break;

                case MediaFileStatus.MFS_FINISHED:
                    Console.WriteLine("Finished storing audio from #{0} {1} to file.",
                                      user.nUserID, user.szNickname);
                    break;

                case MediaFileStatus.MFS_ABORTED:
                    Console.WriteLine("Aborted storing audio from #{0} {1} to file.",
                                      user.nUserID, user.szNickname);
                    break;
                }
            }
        }
    /// <summary>
    /// Initializes media file info.
    /// </summary>
    /// <param name="objectGuid">Media file GUID</param>
    /// <param name="siteName">Site name</param>
    private void metaDataEditor_InitializeObject(Guid objectGuid, string siteName)
    {
        // Get mediafile
        mediaFileInfo = MediaFileInfoProvider.GetMediaFileInfo(objectGuid, siteName);

        // If media file is not null
        if (mediaFileInfo != null)
        {
            MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(ValidationHelper.GetInteger(mediaFileInfo.FileLibraryID, 0));

            // Check permission 'FileModify'
            if (metaDataEditor.CheckPermissions && !MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "filemodify"))
            {
                RedirectToAccessDenied(GetString("metadata.errors.filemodify"));
            }

            // Fire event GetObjectExtension
            if (GetObjectExtension != null)
            {
                GetObjectExtension(mediaFileInfo.FileExtension);
            }
        }
        else
        {
            RedirectToInformation(GetString("editedobject.notexists"));
        }
    }
Пример #26
0
 public static MvcHtmlString MediaViewer(
     this HtmlHelper helper,
     MediaFileInfo file,
     string extraCssClasses = null)
 {
     return(MediaInternal(helper, file, true, 0, extraCssClasses));
 }
Пример #27
0
        protected async Task <ImageModel> PrepareCartItemPictureModelAsync(Product product, int pictureSize, string productName, ProductVariantAttributeSelection attributeSelection)
        {
            Guard.NotNull(product, nameof(product));
            Guard.NotNull(attributeSelection, nameof(attributeSelection));

            MediaFileInfo file        = null;
            var           combination = await _productAttributeMaterializer.FindAttributeCombinationAsync(product.Id, attributeSelection);

            if (combination != null)
            {
                var fileIds = combination.GetAssignedMediaIds();
                if (fileIds?.Any() ?? false)
                {
                    file = await _mediaService.GetFileByIdAsync(fileIds[0], MediaLoadFlags.AsNoTracking);
                }
            }

            // No attribute combination image, then load product picture.
            if (file == null)
            {
                var productMediaFile = await _db.ProductMediaFiles
                                       .Include(x => x.MediaFile)
                                       .Where(x => x.Id == product.Id)
                                       .OrderBy(x => x.DisplayOrder)
                                       .FirstOrDefaultAsync();

                if (productMediaFile != null)
                {
                    file = _mediaService.ConvertMediaFile(productMediaFile.MediaFile);
                }
            }

            // Let's check whether this product has some parent "grouped" product.
            if (file == null && product.Visibility == ProductVisibility.Hidden && product.ParentGroupedProductId > 0)
            {
                var productMediaFile = await _db.ProductMediaFiles
                                       .Include(x => x.MediaFile)
                                       .Where(x => x.Id == product.ParentGroupedProductId)
                                       .OrderBy(x => x.DisplayOrder)
                                       .FirstOrDefaultAsync();

                if (productMediaFile != null)
                {
                    file = _mediaService.ConvertMediaFile(productMediaFile.MediaFile);
                }
            }

            var pm = new ImageModel
            {
                Id        = file?.Id ?? 0,
                ThumbSize = pictureSize,
                Host      = _mediaService.GetUrl(file, pictureSize, null, !_catalogSettings.HideProductDefaultPictures),
                Title     = file?.File?.GetLocalized(x => x.Title)?.Value.NullEmpty() ?? T("Media.Product.ImageLinkTitleFormat", productName),
                Alt       = file?.File?.GetLocalized(x => x.Alt)?.Value.NullEmpty() ?? T("Media.Product.ImageAlternateTextFormat", productName),
                File      = file
            };

            return(pm);
        }
Пример #28
0
        private Guid AddMediaFile(IFormFile requestFile, MediaLibraryInfo library)
        {
            var mediaFile = new MediaFileInfo(requestFile.ToUploadedFile(), library.LibraryID);

            MediaFileInfo.Provider.Set(mediaFile);

            return(mediaFile.FileGUID);
        }
Пример #29
0
        public static string BuildNewPathByDate(MediaFileInfo mediaFileInfo, DateInterval interval)
        {
            var newDirectoryName = mediaFileInfo.ModifiedDate.GetName(interval);
            var fileInfo         = new FileInfo(mediaFileInfo.CurrentPath);
            var oldDirectoryPath = fileInfo.Directory?.FullName;

            return(Path.Combine(oldDirectoryPath, newDirectoryName, fileInfo.Name));
        }
Пример #30
0
        public MediaTemplateModel(MediaFileInfo file, bool renderViewer)
        {
            Guard.NotNull(file, nameof(file));

            Id           = file.Id;
            File         = file;
            RenderViewer = renderViewer;
        }
Пример #31
0
 public static MvcHtmlString MediaThumbnail(
     this HtmlHelper helper,
     MediaFileInfo file,
     int size,
     string extraCssClasses = null)
 {
     return(MediaInternal(helper, file, false, size, extraCssClasses));
 }
    /// <summary>
    /// Initializes media file info.
    /// </summary>
    /// <param name="objectGuid">Media file GUID</param>
    /// <param name="siteName">Site name</param>
    private void metaDataEditor_InitializeObject(Guid objectGuid, string siteName)
    {
        // Get mediafile
        mediaFileInfo = MediaFileInfoProvider.GetMediaFileInfo(objectGuid, siteName);

        // If media file is not null
        if (mediaFileInfo != null)
        {
            MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(ValidationHelper.GetInteger(mediaFileInfo.FileLibraryID, 0));

            // Check permission 'FileModify'
            if (metaDataEditor.CheckPermissions && !MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "filemodify"))
            {
                RedirectToAccessDenied(GetString("metadata.errors.filemodify"));
            }

            // Fire event GetObjectExtension
            if (GetObjectExtension != null)
            {
                GetObjectExtension(mediaFileInfo.FileExtension);
            }
        }
        else
        {
            RedirectToInformation(GetString("editedobject.notexists"));
        }
    }
    /// <summary>
    /// Performs actions necessary to select particular item from a list.
    /// </summary>
    private void SelectMediaItem(string argument)
    {
        if (!string.IsNullOrEmpty(argument) && (LibraryInfo != null))
        {
            Hashtable argTable = CMSModules_MediaLibrary_Controls_Dialogs_MediaView.GetArgumentsTable(argument);
            if (argTable.Count >= 2)
            {
                // Get file name
                string fileName = string.Empty;
                if (DisplayOnlyImportedFiles)
                {
                    if (argTable.Contains("extension"))
                    {
                        // File name + file extension
                        fileName = argTable["filename"].ToString() + argTable["extension"].ToString();
                    }
                    else
                    {
                        // File name + file extension
                        fileName = argTable["filename"].ToString() + argTable["fileextension"].ToString();
                    }
                }
                else
                {
                    // File name - already contains extension
                    fileName = argTable["filename"].ToString();
                }

                // Get media file path
                string filePath = CreateFilePath(fileName);

                // Try to get media file info based on its path
                FileInfo fi = FileInfo.New(MediaFileInfoProvider.GetMediaFilePath(LibrarySiteInfo.SiteName, LibraryInfo.LibraryFolder, filePath));
                if (fi != null)
                {
                    string path = MediaLibraryHelper.EnsurePath(filePath);
                    string where = String.Format("(FileLibraryID = {0}) AND (FilePath = N'{1}')", LibraryID, path.TrimStart('/').Replace("'", "''"));

                    // Try to get file from DB
                    using (DataSet ds = MediaFileInfoProvider.GetMediaFiles(where, null))
                    {
                        if (!DataHelper.DataSourceIsEmpty(ds))
                        {
                            // If in DB get file info
                            MediaFileInfo fileInfo = new MediaFileInfo(ds.Tables[0].Rows[0]);
                            if (fileInfo != null)
                            {
                                DisplayEditProperties(fileInfo);
                            }
                        }
                    }

                    // FileGUID for imported and FileName for non-imported media file
                    if (argTable.Contains("fileguid"))
                    {
                        ItemToColorize = argTable["fileguid"].ToString();
                    }
                    else
                    {
                        ItemToColorize = EnsureFileName(argTable["filename"].ToString());
                    }
                }
            }
        }

        wasLoaded = true;
    }
    /// <summary>
    /// Provides operations necessary to create and store new library file.
    /// </summary>
    private void HandleLibrariesUpload()
    {
        // Get related library info
        if (LibraryInfo != null)
        {
            MediaFileInfo mediaFile = null;

            // Get the site name
            string siteName = CMSContext.CurrentSiteName;
            SiteInfo si = SiteInfoProvider.GetSiteInfo(LibraryInfo.LibrarySiteID);
            if (si != null)
            {
                siteName = si.SiteName;
            }

            string message = string.Empty;
            try
            {
                // Check the allowed extensions
                CheckAllowedExtensions();

                if (MediaFileID > 0)
                {
                    #region "Check permissions"

                    if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "FileModify"))
                    {
                        throw new Exception(GetString("media.security.nofilemodify"));
                    }

                    #endregion

                    mediaFile = MediaFileInfoProvider.GetMediaFileInfo(MediaFileID);
                    if (mediaFile != null)
                    {
                        // Ensure object version
                        SynchronizationHelper.EnsureObjectVersion(mediaFile);

                        if (IsMediaThumbnail)
                        {
                            string newFileExt = Path.GetExtension(ucFileUpload.FileName).TrimStart('.');
                            if ((ImageHelper.IsImage(newFileExt)) && (newFileExt.ToLowerCSafe() != "ico") &&
                                (newFileExt.ToLowerCSafe() != "wmf"))
                            {
                                // Update or creation of Media File update
                                string previewSuffix = MediaLibraryHelper.GetMediaFilePreviewSuffix(siteName);

                                if (!String.IsNullOrEmpty(previewSuffix))
                                {
                                    string previewExtension = Path.GetExtension(ucFileUpload.PostedFile.FileName);
                                    string previewName = Path.GetFileNameWithoutExtension(MediaLibraryHelper.GetPreviewFileName(mediaFile.FileName, mediaFile.FileExtension, previewExtension, siteName, previewSuffix));
                                    string previewFolder = DirectoryHelper.CombinePath(MediaLibraryHelper.EnsurePath(LibraryFolderPath.TrimEnd('/')), MediaLibraryHelper.GetMediaFileHiddenFolder(siteName));

                                    byte[] previewFileBinary = new byte[ucFileUpload.PostedFile.ContentLength];
                                    ucFileUpload.PostedFile.InputStream.Read(previewFileBinary, 0, ucFileUpload.PostedFile.ContentLength);

                                    // Delete current preview thumbnails
                                    MediaFileInfoProvider.DeleteMediaFilePreview(siteName, mediaFile.FileLibraryID, mediaFile.FilePath, false);

                                    // Save preview file
                                    MediaFileInfoProvider.SaveFileToDisk(siteName, LibraryInfo.LibraryFolder, previewFolder, previewName, previewExtension, mediaFile.FileGUID, previewFileBinary, false, false);

                                    // Log synchronization task
                                    SynchronizationHelper.LogObjectChange(mediaFile, TaskTypeEnum.UpdateObject);
                                }

                                // Drop the cache dependencies
                                CacheHelper.TouchKeys(MediaFileInfoProvider.GetDependencyCacheKeys(mediaFile, true));
                            }
                            else
                            {
                                message = GetString("media.file.onlyimgthumb");
                            }
                        }
                        else
                        {
                            // Delete existing media file
                            MediaFileInfoProvider.DeleteMediaFile(LibraryInfo.LibrarySiteID, LibraryInfo.LibraryID, mediaFile.FilePath, true, false);

                            // Update media file preview
                            if (MediaLibraryHelper.HasPreview(siteName, LibraryInfo.LibraryID, mediaFile.FilePath))
                            {
                                // Get new file path
                                string newPath = DirectoryHelper.CombinePath(Path.GetDirectoryName(mediaFile.FilePath).TrimEnd('/'), ucFileUpload.PostedFile.FileName);
                                newPath = MediaLibraryHelper.EnsureUniqueFileName(newPath);

                                // Get new unique file name
                                string newName = Path.GetFileName(newPath);

                                // Rename preview
                                MediaLibraryHelper.MoveMediaFilePreview(mediaFile, newName);

                                // Delete preview thumbnails
                                MediaFileInfoProvider.DeleteMediaFilePreviewThumbnails(mediaFile);
                            }

                            // Receive media info on newly posted file
                            mediaFile = GetUpdatedFile(mediaFile.Generalized.DataClass);

                            MediaFileInfoProvider.SetMediaFileInfo(mediaFile);
                        }
                    }
                }
                else
                {
                    // Creation of new media file

                    #region "Check permissions"

                    if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "FileCreate"))
                    {
                        throw new Exception(GetString("media.security.nofilecreate"));
                    }

                    #endregion

                    // No file for upload specified
                    if (!ucFileUpload.HasFile)
                    {
                        throw new Exception(GetString("media.newfile.errorempty"));
                    }

                    // Create new media file record
                    mediaFile = new MediaFileInfo(ucFileUpload.PostedFile, LibraryID, LibraryFolderPath, ResizeToWidth, ResizeToHeight, ResizeToMaxSideSize, LibraryInfo.LibrarySiteID);

                    mediaFile.FileDescription = "";

                    // Save the new file info
                    MediaFileInfoProvider.SetMediaFileInfo(mediaFile);
                }
            }
            catch (Exception ex)
            {
                // Creation of new media file failed
                message = ex.Message;
            }
            finally
            {
                // Create media file info string
                string mediaInfo = "";
                if ((mediaFile != null) && (mediaFile.FileID > 0) && (IncludeNewItemInfo))
                {
                    mediaInfo = mediaFile.FileID + "|" + LibraryFolderPath.Replace('\\', '>').Replace("'", "\\'");
                }

                // Ensure message text
                message = HTMLHelper.EnsureLineEnding(message, " ");

                // Call function to refresh parent window
                ScriptHelper.RegisterStartupScript(Page, typeof(Page), "refresh", ScriptHelper.GetScript("if ((wopener.parent != null) && (wopener.parent.InitRefresh_" + ParentElemID + " != null)){wopener.parent.InitRefresh_" + ParentElemID + "(" + ScriptHelper.GetString(message.Trim()) + ", false" + ((mediaInfo != "") ? ", '" + mediaInfo + "'" : "") + (InsertMode ? ", 'insert'" : ", 'update'") + ");}CloseDialog();"));
            }
        }
    }
Пример #35
0
    /// <summary>
    /// Initializes common properties used for processing image.
    /// </summary>
    void baseImageEditor_InitializeProperties()
    {
        // Process media file
        if (baseImageEditor.ImageType == ImageHelper.ImageTypeEnum.MediaFile)
        {

            // Get mediafile
            mfi = MediaFileInfoProvider.GetMediaFileInfo(mediafileGuid, this.CurrentSiteName);
            // If file is not null
            if (mfi != null)
            {
                MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(mfi.FileLibraryID);

                if ((mli != null) && (MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "filemodify")))
                {
                    // Load media file thumbnail
                    if (isPreview)
                    {
                        PreviewPath = MediaFileInfoProvider.GetPreviewFilePath(mfi);
                        if (PreviewPath != null)
                        {
                            OldPreviewExt = Path.GetExtension(PreviewPath);
                            try
                            {
                                // Get file contents from file system
                                previewFile = File.ReadAllBytes(PreviewPath);
                            }
                            catch (Exception ex)
                            {
                                EventLogProvider ev = new EventLogProvider();
                                ev.LogEvent("ImageEditor", "GetPreviewFile", ex);
                            }
                            if (previewFile != null)
                            {
                                baseImageEditor.ImgHelper = new ImageHelper(previewFile);
                            }
                            else
                            {
                                baseImageEditor.LoadingFailed = true;
                                baseImageEditor.LblLoadFailed.ResourceString = "img.errors.loading";
                            }
                        }
                        else
                        {
                            baseImageEditor.LoadingFailed = true;
                            baseImageEditor.LblLoadFailed.ResourceString = "img.errors.loading";
                        }
                    }
                    // Load media file
                    else
                    {
                        mfi.FileBinary = MediaFileInfoProvider.GetFile(mfi, mli.LibraryFolder, this.CurrentSiteName);
                        // Ensure metafile binary data
                        if (mfi.FileBinary != null)
                        {
                            baseImageEditor.ImgHelper = new ImageHelper(mfi.FileBinary);
                        }
                        else
                        {
                            baseImageEditor.LoadingFailed = true;
                            baseImageEditor.LblLoadFailed.ResourceString = "img.errors.loading";
                        }
                    }
                }
                else
                {
                    baseImageEditor.LoadingFailed = true;
                    baseImageEditor.LblLoadFailed.ResourceString = "img.errors.filemodify";
                }
            }
            else
            {
                baseImageEditor.LoadingFailed = true;
                baseImageEditor.LblLoadFailed.ResourceString = "img.errors.loading";
            }
        }

        // Check that image is in supported formats
        if ((!baseImageEditor.LoadingFailed) && (baseImageEditor.ImgHelper.ImageFormatToString() == null))
        {
            baseImageEditor.LoadingFailed = true;
            baseImageEditor.LblLoadFailed.ResourceString = "img.errors.format";
        }
    }
Пример #36
0
    protected void Page_Load(object sender, EventArgs e)
    {
        mediafileGuid = QueryHelper.GetGuid("mediafileguid", Guid.Empty);
        isPreview = QueryHelper.GetBoolean("isPreview", false);

        // Get media file information
        if (this.mfi == null)
        {
            mfi = MediaFileInfoProvider.GetMediaFileInfo(mediafileGuid, this.CurrentSiteName);
        }

        if (this.mfi != null)
        {
            // Get media library information
            MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(mfi.FileLibraryID);

            if (mli != null)
            {
                // Get path to media file folder
                string path = Path.GetDirectoryName(DirectoryHelper.CombinePath(MediaLibraryInfoProvider.GetMediaLibraryFolderPath(mli.LibraryID), mfi.FilePath));

                // Enable control if permissions are sufficient to edit image
                this.Enabled = DirectoryHelper.CheckPermissions(path, false, true, true, true);

                if (!this.Enabled)
                {
                    // Set error message
                    this.baseImageEditor.LblLoadFailed.Visible = true;
                    this.baseImageEditor.LblLoadFailed.ResourceString = "img.errors.filesystempermissions";
                }
            }
        }

        // Enable or disable image editor
        this.baseImageEditor.Enabled = this.Enabled;

        baseImageEditor.LoadImageType += new CMSAdminControls_ImageEditor_BaseImageEditor.OnLoadImageType(baseImageEditor_LoadImageType);
        baseImageEditor.InitializeProperties += new CMSAdminControls_ImageEditor_BaseImageEditor.OnInitializeProperties(baseImageEditor_InitializeProperties);
        baseImageEditor.InitializeLabels += new CMSAdminControls_ImageEditor_BaseImageEditor.OnInitializeLabels(baseImageEditor_InitializeLabels);
        baseImageEditor.SaveImage += new CMSAdminControls_ImageEditor_BaseImageEditor.OnSaveImage(baseImageEditor_SaveImage);
        baseImageEditor.GetMetaData += new CMSAdminControls_ImageEditor_BaseImageEditor.OnGetMetaData(baseImageEditor_GetMetaData);
        baseImageEditor.LoadImageUrl += new CMSAdminControls_ImageEditor_BaseImageEditor.OnLoadImageUrl(baseImageEditor_LoadImageUrl);
    }
    /// <summary>
    /// Creates media file. Called when the "Create file" button is pressed.
    /// Expects the CreateMediaLibrary method to be run first.
    /// </summary>
    private bool CreateMediaFile()
    {
        // Prepare the parameters
        string filePath = "~/CMSAPIExamples/Code/Tools/MediaLibrary/Files/Powered_by_kentico2.gif";

        // Get media library
        MediaLibraryInfo library = MediaLibraryInfoProvider.GetMediaLibraryInfo("MyNewLibrary", CMSContext.CurrentSiteName);
        if (library != null)
        {
            // Create new media file object
            MediaFileInfo mediaFile = new MediaFileInfo(Server.MapPath(filePath), library.LibraryID);

            // Create file info
            FileInfo file = FileInfo.New(Server.MapPath(filePath));
            if (file != null)
            {
                // Set the properties
                mediaFile.FileName = "MyNewFile";
                mediaFile.FileTitle = "My new file title";
                mediaFile.FileDescription = "My new file description.";
                mediaFile.FilePath = "MyNewFolder/MyNewFile.gif";
                mediaFile.FileExtension = file.Extension;
                mediaFile.FileMimeType = "image/gif";
                mediaFile.FileSiteID = CMSContext.CurrentSiteID;
                mediaFile.FileLibraryID = library.LibraryID;
                mediaFile.FileSize = file.Length;

                // Create the media file
                MediaFileInfoProvider.SetMediaFileInfo(mediaFile);

                return true;
            }
        }

        return false;
    }
    /// <summary>
    /// Gets media file info object representing the updated version of original file.
    /// </summary>
    /// <param name="originalFile">Original file data</param>
    private MediaFileInfo GetUpdatedFile(IDataClass originalFile)
    {
        // Get info on media file from uploaded file
        MediaFileInfo mediaFile = new MediaFileInfo(ucFileUpload.PostedFile, LibraryID, LibraryFolderPath, ResizeToWidth, ResizeToHeight, ResizeToMaxSideSize, LibraryInfo.LibrarySiteID);

        // Create new file based on original
        MediaFileInfo updatedMediaFile = new MediaFileInfo(originalFile)
        {
            // Update necessary information
            FileName = mediaFile.FileName,
            FileExtension = mediaFile.FileExtension,
            FileSize = mediaFile.FileSize,
            FileMimeType = mediaFile.FileMimeType,
            FilePath = mediaFile.FilePath,
            FileModifiedByUserID = mediaFile.FileModifiedByUserID,
            FileBinary = mediaFile.FileBinary,
            FileImageHeight = mediaFile.FileImageHeight,
            FileImageWidth = mediaFile.FileImageWidth,
            FileBinaryStream = mediaFile.FileBinaryStream
        };

        return updatedMediaFile;
    }
Пример #39
0
        public void LoadMediaFile(StorageFile file) {
            IRandomAccessStream stream = file.OpenReadAsync().AsTask().Result;

            if (stream == null) {
                ShowMessageDialog(StringLoader.Get("Invalid_Media_File"));

                return;
            }

            sourceFile = file;

            mediaFileInfo = new MediaFileInfo(sourceFile);
            
            if (UpdateMediaInfo(mediaFileInfo) == false) {
                ShowMessageDialog(StringLoader.Get("Invalid_Media_File"));

                mediaFileInfo = null;
                sourceFile = null;
                stream.Dispose();
                stream = null;

                return;
            }

            Preview.SetSource(stream, sourceFile.ContentType);

            Stop();

            double width = this.ActualWidth;
            double height = this.ActualHeight;

            Preview.Width = width;
            Preview.Height = height;

            SegmentSelector.Width = (width);

            SegmentSelector.Reset();

            Canvas.SetTop(SegmentSelector, height - 100);
        }
Пример #40
0
        private bool UpdateMediaInfo(MediaFileInfo mediaFileInfo) {
            if (mediaFileInfo == null) {
                return false;
            }

            string videoMimeType = "unknown";
            string audioMimeType = "unknown";

            videoFormat = mediaFileInfo.getVideoFormat();
            audioFormat = mediaFileInfo.getAudioFormat();

            try
            {
                videoMimeType = videoFormat.mimeType.asString();
            }
            catch (Exception) 
            {
                videoFormat = null;
            }

            try 
            {
                audioMimeType = audioFormat.mimeType.asString();
            }
            catch (Exception) 
            {
                audioFormat = null;
            }

            if (videoFormat != null) {
                float frameRate = videoFormat.frameRate.Numerator;

                if (videoFormat.frameRate.Denominator != 0) {
                    frameRate /= videoFormat.frameRate.Denominator;
                }

                VideoCodecText.Text = videoMimeType;
                ResolutionText.Text = String.Format("{0} x {1}", videoFormat.resolution.Width, videoFormat.resolution.Height);
                FramerateText.Text = String.Format("{0}", frameRate);
                BitrateVideoText.Text = String.Format("{0}", videoFormat.bitrate);
            }
            else {
                ResolutionText.Text = "";
                FramerateText.Text = "";
                BitrateVideoText.Text = "";
            }

            if (audioFormat != null) {
                AudioCodecText.Text = audioMimeType;
                ChannelsText.Text = String.Format("{0}", audioFormat.channelCount);
                SamplerateText.Text = String.Format("{0}", audioFormat.sampleRate);
                BitspersampleText.Text = String.Format("{0}", audioFormat.bitsPerSample);
                BitrateAudioText.Text = String.Format("{0}", audioFormat.bitrate);
            }

            if (videoFormat == null && audioFormat == null) {
                return false;
            }

            Info.Visibility = Visibility.Visible;

            return true;
        }
    /// <summary>
    /// Initializes and displays file info properties.
    /// </summary>
    /// <param name="fileInfo">File to edit</param>
    private void DisplayEditProperties(MediaFileInfo fileInfo)
    {
        plcFileEdit.Visible = true;

        plcEditFolder.Visible = false;
        folderEdit.StopProcessing = true;

        plcMultipleImport.Visible = false;
        plcImportFile.Visible = false;
        plcCopyMove.Visible = false;
        folderCopyMove.StopProcessing = true;

        fileEdit.StopProcessing = false;
        fileEdit.FileID = fileInfo.FileID;
        fileEdit.IsLiveSite = IsLiveSite;
        fileEdit.FileInfo = fileInfo;
        fileEdit.FilePath = fileInfo.FilePath;
        fileEdit.FolderPath = LastFolderPath;
        fileEdit.LibraryInfo = LibraryInfo;
        fileEdit.LibrarySiteInfo = LibrarySiteInfo;
        fileEdit.MediaLibraryID = LibraryID;
        fileEdit.IsLiveSite = IsLiveSite;
        fileEdit.ReloadControl();

        pnlUpdateProperties.Update();
    }
Пример #42
0
    /// <summary>
    /// Initializes the control properties.
    /// </summary>
    public void ReloadData(bool forceReload)
    {
        if (!binded || forceReload)
        {
            if (this.mData != null)
            {
                MediaFileInfo mfi = new MediaFileInfo(this.mData);
                if (mfi != null)
                {
                    bool completeUrl = false;

                    // Get the site
                    SiteInfo si = null;
                    SiteInfo currentSite = CMSContext.CurrentSite;
                    if (mfi.FileSiteID == currentSite.SiteID)
                    {
                        si = currentSite;
                    }
                    else
                    {
                        si = SiteInfoProvider.GetSiteInfo(mfi.FileSiteID);
                    }

                    if (si != null)
                    {
                        // Complete URL only for other site than current
                        if (si.SiteID != currentSite.SiteID)
                        {
                            completeUrl = true;
                        }

                        string url = "";

                        if (this.UseSecureLinks)
                        {
                            if (completeUrl)
                            {
                                url = MediaFileInfoProvider.GetMediaFileAbsoluteUrl(si.SiteName, mfi.FileGUID, mfi.FileName);
                            }
                            else
                            {
                                url = MediaFileInfoProvider.GetMediaFileUrl(mfi.FileGUID, mfi.FileName);
                            }
                        }
                        else
                        {
                            MediaLibraryInfo li = MediaLibraryInfoProvider.GetMediaLibraryInfo(mfi.FileLibraryID);
                            if (li != null)
                            {
                                if (completeUrl)
                                {
                                    url = MediaFileInfoProvider.GetMediaFileAbsoluteUrl(si.SiteName, li.LibraryFolder, mfi.FilePath);
                                }
                                else
                                {
                                    url = MediaFileInfoProvider.GetMediaFileUrl(si.SiteName, li.LibraryFolder, mfi.FilePath);
                                }
                            }
                        }

                        if (this.DisplayActiveContent)
                        {
                            if (ImageHelper.IsImage(mfi.FileExtension) && File.Exists(MediaFileInfoProvider.GetMediaFilePath(mfi.FileLibraryID, mfi.FilePath)))
                            {
                                // Get new dimensions
                                int[] newDims = ImageHelper.EnsureImageDimensions(Width, Height, MaxSideSize, mfi.FileImageWidth, mfi.FileImageHeight);

                                // If dimensions changed use secure link
                                if ((newDims[0] != mfi.FileImageWidth) || (newDims[1] != mfi.FileImageHeight))
                                {
                                    if (completeUrl)
                                    {
                                        url = MediaFileInfoProvider.GetMediaFileAbsoluteUrl(si.SiteName, mfi.FileGUID, mfi.FileName);
                                    }
                                    else
                                    {
                                        url = MediaFileInfoProvider.GetMediaFileUrl(mfi.FileGUID, mfi.FileName);
                                    }
                                }
                                else
                                {
                                    // Use width and height from properties in case dimensions are bigger than original
                                    newDims[0] = Width;
                                    newDims[1] = Height;
                                }

                                // Initialize image parameters
                                ImageParameters imgParams = new ImageParameters();
                                imgParams.Alt = mfi.FileDescription;
                                imgParams.Width = newDims[0];
                                imgParams.Height = newDims[1];
                                imgParams.Url = url;

                                this.ltlOutput.Text = CMS.GlobalHelper.MediaHelper.GetImage(imgParams);
                            }
                            else if (CMS.GlobalHelper.MediaHelper.IsFlash(mfi.FileExtension))
                            {
                                // Initialize flash parameters
                                FlashParameters flashParams = new FlashParameters();
                                flashParams.Url = url;
                                flashParams.Width = this.Width;
                                flashParams.Height = this.Height;

                                this.ltlOutput.Text = CMS.GlobalHelper.MediaHelper.GetFlash(flashParams);
                            }
                            else if (CMS.GlobalHelper.MediaHelper.IsAudio(mfi.FileExtension))
                            {
                                // Initialize audio/video parameters
                                AudioVideoParameters audioParams = new AudioVideoParameters();

                                audioParams.SiteName = CMSContext.CurrentSiteName;
                                audioParams.Url = url;
                                audioParams.Width = this.Width;
                                audioParams.Height = this.Height;
                                audioParams.Extension = mfi.FileExtension;

                                this.ltlOutput.Text = CMS.GlobalHelper.MediaHelper.GetAudioVideo(audioParams);
                            }
                            else if (CMS.GlobalHelper.MediaHelper.IsVideo(mfi.FileExtension))
                            {
                                // Initialize audio/video parameters
                                AudioVideoParameters videoParams = new AudioVideoParameters();

                                videoParams.SiteName = CMSContext.CurrentSiteName;
                                videoParams.Url = url;
                                videoParams.Width = this.Width;
                                videoParams.Height = this.Height;
                                videoParams.Extension = mfi.FileExtension;

                                this.ltlOutput.Text = CMS.GlobalHelper.MediaHelper.GetAudioVideo(videoParams);
                            }
                            else
                            {
                                this.ltlOutput.Text = MediaLibraryHelper.ShowPreviewOrIcon(mfi, this.Width, this.Height, this.MaxSideSize, this.PreviewSuffix, this.IconSet, this.Page, this.DefaultImageUrl);
                            }
                        }
                        else
                        {
                            this.ltlOutput.Text = MediaLibraryHelper.ShowPreviewOrIcon(mfi, this.Width, this.Height, this.MaxSideSize, this.PreviewSuffix, this.IconSet, this.Page, this.DefaultImageUrl);
                        }
                    }
                }
            }
            binded = true;
        }
    }
    /// <summary>
    /// Stores new media file info into the DB.
    /// </summary>
    /// <param name="fi">Info on file to be stored</param>
    /// <param name="description">Description of new media file</param>
    /// <param name="name">Name of new media file</param>
    private MediaFileInfo SaveNewFile(FileInfo fi, string title, string description, string name, string filePath)
    {
        string path = MediaLibraryHelper.EnsurePath(filePath);
        string fileName = name;

        string fullPath = fi.FullName;
        string extension = URLHelper.GetSafeFileName(fi.Extension, CMSContext.CurrentSiteName);

        // Check if filename is changed ad move file if necessary
        if (fileName + extension != fi.Name)
        {
            string oldPath = path;
            fullPath = MediaLibraryHelper.EnsureUniqueFileName(DirectoryHelper.CombinePath(Path.GetDirectoryName(fullPath), fileName) + extension);
            path = MediaLibraryHelper.EnsurePath(Path.GetDirectoryName(path) + "/" + Path.GetFileName(fullPath)).TrimStart('/');
            fileName = Path.GetFileNameWithoutExtension(fullPath);
            // Rename file to new safe file name
            File.Move(fi.FullName, fullPath);
        }

        // Create media file info
        MediaFileInfo fileInfo = new MediaFileInfo(fullPath, LibraryInfo.LibraryID, MediaLibraryHelper.EnsurePath(Path.GetDirectoryName(path)));

        fileInfo.FileTitle = title;
        fileInfo.FileDescription = description;

        // Save media file info
        MediaFileInfoProvider.ImportMediaFileInfo(fileInfo);

        // Save FileID in ViewState
        fileEdit.FileID = fileInfo.FileID;
        fileEdit.FilePath = fileInfo.FilePath;

        return fileInfo;
    }
    //protected void printResults(WorldPayDirectDotNet.PaymentRequest.PaymentResult PaymentResult)
    //{
    //    if(PaymentResult.PaymentSuccessful)
    //    {
    //        double giftAidTotal;
    //        giftAidTotal = (order.OrderTotalPrice / 100) * 25;
    //        if (ValidationHelper.GetBoolean(order.GetValue("IsGiftAid"),false))
    //        {
    //            giftAidTotal = Math.Truncate(giftAidTotal * 100) / 100;
    //        }
    //        else
    //        {
    //            giftAidTotal = 0;
    //        }
    //        double orderPriceTotal = Math.Truncate(order.OrderTotalPrice*100) /100;
    //        double total=0;
    //        pnlResult.Visible = true;
    //        litDonationAmmountRestult.Text = order.OrderTotalPrice.ToString("0.00");
    //        if (gift_aid.Checked && order.OrderTotalPrice !=0)
    //        {
    //            litGiftAidResult.Text = giftAidTotal.ToString("0.00");
    //        }
    //        else
    //        {
    //            litGiftAidResult.Text="0.00";
    //        }
    //        //Show total price
    //        total = giftAidTotal + orderPriceTotal;
    //        litTotalResult.Text = total.ToString("0.00");
    //    }else
    //    {
    //        pnlResultError.Visible = true;
    //        litReturnError.Text=PaymentResult.errorMessage.ToString();
    //    }
    //}
    protected void GetImagePath()
    {
        string filePath = "";
        Guid filenameGuid = Guid.NewGuid();
        if (docUpload.HasFile)
        {
            string fileName = Server.MapPath(docUpload.FileName);

            MediaLibraryInfo libInfo = MediaLibraryInfoProvider.GetMediaLibraryInfo("COMPANYNAME", CMSContext.CurrentSiteName);
            filePath = Server.MapPath(string.Format("//_MediaLibraries///DonationUploads//{0}{1}", filenameGuid, System.IO.Path.GetExtension(docUpload.FileName)));
            File.WriteAllBytes(filePath, docUpload.FileBytes);
            if (File.Exists(filePath))
            {
                string path = MediaLibraryHelper.EnsurePath(filePath);
                MediaFileInfo fileInfo = new MediaFileInfo(filePath, libInfo.LibraryID, "");
                fileInfo.FileSiteID = CMSContext.CurrentSiteID;
                MediaFileInfoProvider.ImportMediaFileInfo(fileInfo);
            }
            ViewState["PhotoPath"]=  "/_MediaLibraries/DonationUploads/" + filenameGuid + System.IO.Path.GetExtension(docUpload.FileName);
            return;
        }
        ViewState["PhotoPath"]="";
        return;
    }
    /// <summary>
    /// Provides operations necessary to create and store new library file.
    /// </summary>
    private void HandleLibrariesUpload()
    {
        // Get related library info
        if (LibraryInfo != null)
        {
            MediaFileInfo mediaFile = null;

            // Get the site name
            SiteInfo si = SiteInfoProvider.GetSiteInfo(LibraryInfo.LibrarySiteID);
            string siteName = (si != null) ? si.SiteName : CMSContext.CurrentSiteName;

            string message = string.Empty;
            try
            {
                // Check the allowed extensions
                CheckAllowedExtensions();

                if (MediaFileID > 0)
                {
                    #region "Check permissions"

                    if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "FileModify"))
                    {
                        throw new Exception(GetString("media.security.nofilemodify"));
                    }

                    #endregion

                    mediaFile = MediaFileInfoProvider.GetMediaFileInfo(MediaFileID);
                    if (mediaFile != null)
                    {
                        // Ensure object version
                        SynchronizationHelper.EnsureObjectVersion(mediaFile);

                        if (IsMediaThumbnail)
                        {
                            string newFileExt = Path.GetExtension(ucFileUpload.FileName).TrimStart('.');
                            if ((ImageHelper.IsImage(newFileExt)) && (newFileExt.ToLower() != "ico") &&
                                (newFileExt.ToLower() != "wmf"))
                            {
                                // Update or creation of Media File update
                                string previewSuffix = MediaLibraryHelper.GetMediaFilePreviewSuffix(siteName);

                                if (!String.IsNullOrEmpty(previewSuffix))
                                {
                                    string previewExtension = Path.GetExtension(ucFileUpload.PostedFile.FileName);
                                    string previewName = Path.GetFileNameWithoutExtension(MediaLibraryHelper.GetPreviewFileName(mediaFile.FileName, mediaFile.FileExtension, previewExtension, siteName, previewSuffix));
                                    string previewFolder = DirectoryHelper.CombinePath(MediaLibraryHelper.EnsurePath(LibraryFolderPath.TrimEnd('/')), MediaLibraryHelper.GetMediaFileHiddenFolder(siteName));

                                    byte[] previewFileBinary = new byte[ucFileUpload.PostedFile.ContentLength];
                                    ucFileUpload.PostedFile.InputStream.Read(previewFileBinary, 0, ucFileUpload.PostedFile.ContentLength);

                                    // Delete current preview thumbnails
                                    MediaFileInfoProvider.DeleteMediaFilePreview(siteName, mediaFile.FileLibraryID, mediaFile.FilePath, false);

                                    // Save preview file
                                    MediaFileInfoProvider.SaveFileToDisk(siteName, LibraryInfo.LibraryFolder, previewFolder, previewName, previewExtension, mediaFile.FileGUID, previewFileBinary, false, false);

                                    // Log synchronization task
                                    SynchronizationHelper.LogObjectChange(mediaFile, TaskTypeEnum.UpdateObject);
                                }

                                // Drop the cache dependencies
                                CacheHelper.TouchKeys(MediaFileInfoProvider.GetDependencyCacheKeys(mediaFile, true));
                            }
                            else
                            {
                                message = GetString("media.file.onlyimgthumb");
                            }
                        }
                        else
                        {
                            // Get folder path
                            string path = Path.GetDirectoryName(DirectoryHelper.CombinePath(MediaLibraryInfoProvider.GetMediaLibraryFolderPath(this.LibraryInfo.LibraryID), mediaFile.FilePath));

                            // If file system permissions are sufficient for file update
                            if (DirectoryHelper.CheckPermissions(path, false, true, true, true))
                            {
                                // Delete existing media file
                                MediaFileInfoProvider.DeleteMediaFile(LibraryInfo.LibrarySiteID, LibraryInfo.LibraryID, mediaFile.FilePath, true, false);

                                // Update media file preview
                                if (MediaLibraryHelper.HasPreview(siteName, LibraryInfo.LibraryID, mediaFile.FilePath))
                                {
                                    // Get new unique file name
                                    string newName = URLHelper.GetSafeFileName(ucFileUpload.PostedFile.FileName, siteName);

                                    // Get new file path
                                    string newPath = DirectoryHelper.CombinePath(path, newName);
                                    newPath = MediaLibraryHelper.EnsureUniqueFileName(newPath);
                                    newName = Path.GetFileName(newPath);

                                    // Rename preview
                                    MediaLibraryHelper.MoveMediaFilePreview(mediaFile, newName);

                                    // Delete preview thumbnails
                                    MediaFileInfoProvider.DeleteMediaFilePreviewThumbnails(mediaFile);
                                }

                                // Receive media info on newly posted file
                                mediaFile = GetUpdatedFile(mediaFile.Generalized.DataClass);

                                // Save media file information
                                MediaFileInfoProvider.SetMediaFileInfo(mediaFile);
                            }
                            else
                            {
                                // Set error message
                                message = String.Format(GetString("media.accessdeniedtopath"), path);
                            }
                        }
                    }
                }
                else
                {
                    #region "Check permissions"

                    // Creation of new media file
                    if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(LibraryInfo, "FileCreate"))
                    {
                        throw new Exception(GetString("media.security.nofilecreate"));
                    }

                    #endregion

                    // No file for upload specified
                    if (!ucFileUpload.HasFile)
                    {
                        throw new Exception(GetString("media.newfile.errorempty"));
                    }

                    // Create new media file record
                    mediaFile = new MediaFileInfo(ucFileUpload.PostedFile, LibraryID, LibraryFolderPath, ResizeToWidth, ResizeToHeight, ResizeToMaxSideSize, LibraryInfo.LibrarySiteID);

                    mediaFile.FileDescription = "";

                    // Save the new file info
                    MediaFileInfoProvider.SetMediaFileInfo(mediaFile);

                }
            }
            catch (Exception ex)
            {
                // Creation of new media file failed
                message = ex.Message;
            }
            finally
            {
                // Create media file info string
                string mediaInfo = "";
                if ((mediaFile != null) && (mediaFile.FileID > 0) && (IncludeNewItemInfo))
                {
                    mediaInfo = mediaFile.FileID + "|" + LibraryFolderPath.Replace('\\', '>').Replace("'", "\\'");
                }

                // Ensure message text
                message = HTMLHelper.EnsureLineEnding(message, " ");

                if (RaiseOnClick)
                {
                    ScriptHelper.RegisterStartupScript(Page, typeof(Page), "UploaderOnClick", ScriptHelper.GetScript("if (parent.UploaderOnClick) { parent.UploaderOnClick('" + MediaFileName.Replace(" ", "").Replace(".", "").Replace("-", "") + "'); }"));
                }

                string script = String.Format(@"
        if (typeof(parent.DFU) !== 'undefined') {{
        parent.DFU.OnUploadCompleted('{0}');
        }}
        if ((window.parent != null) && (/parentelemid={1}/i.test(window.location.href)) && (window.parent.InitRefresh_{1} != null)){{
        window.parent.InitRefresh_{1}({2}, false, '{3}'{4});
        }}", QueryHelper.GetString("containerid", ""), ParentElemID, ScriptHelper.GetString(message.Trim()), mediaInfo, (InsertMode ? ", 'insert'" : ", 'update'"));

                // Call function to refresh parent window
                ScriptHelper.RegisterStartupScript(Page, typeof(Page), "RefreshParrent", ScriptHelper.GetScript(script));
            }
        }
    }
    /// <summary>
    /// Stores new media file info into the DB.
    /// </summary>
    /// <param name="fi">Info on file to be stored</param>
    /// <param name="title">Title of new media file</param>
    /// <param name="description">Description of new media file</param>
    /// <param name="name">Name of new media file</param>
    /// <param name="filePath">File path</param>
    public MediaFileInfo SaveNewFile(FileInfo fi, string title, string description, string name, string filePath)
    {
        string path = Path.EnsureSlashes(filePath);
        string fileName = name;

        string fullPath = fi.FullName;
        string extension = URLHelper.GetSafeFileName(fi.Extension, SiteContext.CurrentSiteName);

        // Check if filename is changed ad move file if necessary
        if (fileName + extension != fi.Name)
        {
            string oldPath = path;
            fullPath = MediaLibraryHelper.EnsureUniqueFileName(Path.GetDirectoryName(fullPath) + "\\" + fileName + extension);
            path = Path.EnsureSlashes(Path.GetDirectoryName(path) + "/" + Path.GetFileName(fullPath)).TrimStart('/');
            MediaFileInfoProvider.MoveMediaFile(SiteContext.CurrentSiteName, MediaLibraryID, oldPath, path, true);
        }

        // Create media file info
        MediaFileInfo fileInfo = new MediaFileInfo(fullPath, LibraryInfo.LibraryID, Path.EnsureSlashes(Path.GetDirectoryName(path)), 0, 0, 0);

        fileInfo.FileTitle = title;
        fileInfo.FileDescription = description;

        // Save media file info
        MediaFileInfoProvider.ImportMediaFileInfo(fileInfo);

        // Save FileID in ViewState
        FileID = fileInfo.FileID;
        FilePath = fileInfo.FilePath;

        return fileInfo;
    }
        /// <summary>
        /// Provides operations necessary to create and store new files in media library.
        /// </summary>
        /// <param name="args">Upload arguments.</param>
        /// <param name="context">HttpContext instance.</param>
        private void HandleMediaLibraryUpload(UploaderHelper args, HttpContext context)
        {
            string uploadPath = Path.Combine(MediaLibraryInfoProvider.GetMediaLibraryFolderPath(args.MediaLibraryArgs.LibraryID), args.MediaLibraryArgs.FolderPath);
            string filePath = Path.Combine(uploadPath, args.FileName);

            MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(args.MediaLibraryArgs.LibraryID);
            if (mli != null)
            {
                MediaFileInfo mediaFile = null;

                // Get the site name
                SiteInfo si = SiteInfoProvider.GetSiteInfo(mli.LibrarySiteID);
                string siteName = (si != null) ? si.SiteName : CMSContext.CurrentSiteName;

                try
                {
                    args.IsExtensionAllowed();

                    if (args.MediaLibraryArgs.MediaFileID > 0)
                    {
                        if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "FileModify"))
                        {
                            throw new Exception(ResHelper.GetString("media.security.nofilemodify"));
                        }

                        mediaFile = MediaFileInfoProvider.GetMediaFileInfo(args.MediaLibraryArgs.MediaFileID);
                        if (mediaFile != null)
                        {
                            // Ensure object version
                            SynchronizationHelper.EnsureObjectVersion(mediaFile);

                            if (args.MediaLibraryArgs.IsMediaThumbnail)
                            {
                                if ((ImageHelper.IsImage(args.Extension)) && (args.Extension.ToLower() != "ico") && (args.Extension.ToLower() != "wmf"))
                                {
                                    // Update or creation of Media File update
                                    string previewSuffix = MediaLibraryHelper.GetMediaFilePreviewSuffix(siteName);

                                    if (!String.IsNullOrEmpty(previewSuffix))
                                    {
                                        //string previewExtension = Path.GetExtension(ucFileUpload.PostedFile.FileName);
                                        string previewName = Path.GetFileNameWithoutExtension(MediaLibraryHelper.GetPreviewFileName(mediaFile.FileName, mediaFile.FileExtension, args.Extension, siteName, previewSuffix));
                                        string previewFolder = String.Format("{0}\\{1}", MediaLibraryHelper.EnsurePath(args.MediaLibraryArgs.FolderPath.TrimEnd('/')), MediaLibraryHelper.GetMediaFileHiddenFolder(siteName));

                                        // This method is limited to 2^32 byte files (4.2 GB)
                                        using (FileStream fs = File.OpenRead(args.FilePath))
                                        {
                                            byte[] previewFileBinary = new byte[fs.Length];
                                            fs.Read(previewFileBinary, 0, Convert.ToInt32(fs.Length));

                                            // Delete current preview thumbnails
                                            MediaFileInfoProvider.DeleteMediaFilePreview(siteName, mediaFile.FileLibraryID, mediaFile.FilePath, false);

                                            // Save preview file
                                            MediaFileInfoProvider.SaveFileToDisk(siteName, mli.LibraryFolder, previewFolder, previewName, args.Extension, mediaFile.FileGUID, previewFileBinary, false, false);

                                            // Log synchronization task
                                            SynchronizationHelper.LogObjectChange(mediaFile, TaskTypeEnum.UpdateObject);
                                            fs.Close();
                                        }
                                    }
                                    // Drop the cache dependencies
                                    CacheHelper.TouchKeys(MediaFileInfoProvider.GetDependencyCacheKeys(mediaFile, true));
                                }
                                else
                                {
                                    args.Message = ResHelper.GetString("media.file.onlyimgthumb");
                                }
                            }
                            else
                            {
                                // Get folder path
                                string path = Path.GetDirectoryName(DirectoryHelper.CombinePath(MediaLibraryInfoProvider.GetMediaLibraryFolderPath(mli.LibraryID), mediaFile.FilePath));

                                // If file system permissions are sufficient for file update
                                if (DirectoryHelper.CheckPermissions(path, false, true, true, true))
                                {
                                    // Delete existing media file
                                    MediaFileInfoProvider.DeleteMediaFile(mli.LibrarySiteID, mli.LibraryID, mediaFile.FilePath, true, false);

                                    // Update media file preview
                                    if (MediaLibraryHelper.HasPreview(siteName, mli.LibraryID, mediaFile.FilePath))
                                    {
                                        // Get new unique file name
                                        string newName = URLHelper.GetSafeFileName(Path.GetFileName(args.Name), siteName);

                                        // Get new file path
                                        string newPath = DirectoryHelper.CombinePath(path, newName);
                                        newPath = MediaLibraryHelper.EnsureUniqueFileName(newPath);
                                        newName = Path.GetFileName(newPath);

                                        // Rename preview
                                        MediaLibraryHelper.MoveMediaFilePreview(mediaFile, newName);

                                        // Delete preview thumbnails
                                        MediaFileInfoProvider.DeleteMediaFilePreviewThumbnails(mediaFile);
                                    }

                                    // Receive media info on newly posted file
                                    mediaFile = GetUpdatedFile(mediaFile.Generalized.DataClass, args, mli);

                                    MediaFileInfoProvider.SetMediaFileInfo(mediaFile);
                                }
                            }
                        }
                    }
                    else
                    {
                        // Check 'File create' permission
                        if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "filecreate"))
                        {
                            throw new Exception(ResHelper.GetString("media.security.nofilecreate"));
                        }
                        mediaFile = new MediaFileInfo(args.FilePath, args.MediaLibraryArgs.LibraryID, args.MediaLibraryArgs.FolderPath, args.ResizeToWidth, args.ResizeToHeight, args.ResizeToMaxSide);
                        MediaFileInfoProvider.SetMediaFileInfo(mediaFile);
                    }
                }
                catch (Exception ex)
                {
                    // Creation of new media file failed
                    args.Message = ex.Message;
                }
                finally
                {
                    if (args.RaiseOnClick)
                    {
                        args.AfterScript += string.Format(@"
                        if(window.UploaderOnClick)
                        {{
                            window.UploaderOnClick('{0}');
                        }}", args.MediaLibraryArgs.MediaFileName.Replace(" ", "").Replace(".", "").Replace("-", ""));
                    }

                    // Create media library info string
                    string mediaInfo = ((mediaFile != null) && (mediaFile.FileID > 0) && (args.IncludeNewItemInfo)) ? String.Format("'{0}|{1}', ", mediaFile.FileID, args.MediaLibraryArgs.FolderPath.Replace('\\', '>').Replace("'", "\\'")) : "";

                    // Create after script and return it to the silverlight application, this script will be evaluated by the SL application in the end
                    args.AfterScript += string.Format(@"
                    if (window.InitRefresh_{0})
                    {{
                        window.InitRefresh_{0}('{1}', false, {2});
                    }}
                    else {{
                        if ('{1}' != '') {{
                            alert('{1}');
                        }}
                    }}", args.ParentElementID, ScriptHelper.GetString(args.Message.Trim(), false), mediaInfo + (args.IsInsertMode ? "'insert'" : "'update'"));

                    args.AddEventTargetPostbackReference();
                    context.Response.Write(args.AfterScript);
                    context.Response.Flush();
                }
            }
        }
    /// <summary>
    /// Gets and bulk updates media files. Called when the "Get and bulk update files" button is pressed.
    /// Expects the CreateMediaFile method to be run first.
    /// </summary>
    private bool GetAndBulkUpdateMediaFiles()
    {
        // Prepare the parameters
        string where = "FileName LIKE 'MyNew%'";

        // Get the data
        DataSet files = MediaFileInfoProvider.GetMediaFiles(where, null);
        if (!DataHelper.DataSourceIsEmpty(files))
        {
            // Loop through the individual items
            foreach (DataRow fileDr in files.Tables[0].Rows)
            {
                // Create object from DataRow
                MediaFileInfo modifyFile = new MediaFileInfo(fileDr);

                // Update the property
                modifyFile.FileName = modifyFile.FileName.ToUpper();

                // Update the media file
                MediaFileInfoProvider.SetMediaFileInfo(modifyFile);
            }

            return true;
        }

        return false;
    }
    /// <summary>
    /// Gets HTML code of rendered DirectFileUploader control.
    /// </summary>
    /// <param name="mfi">Media file information</param>
    public string GetWebDavHTML(MediaFileInfo mfi)
    {
        SiteInfo si = SiteInfoProvider.GetSiteInfo(mfi.FileSiteID);
        if (si != null)
        {
            // If the WebDAV is enabled and windows authentication and extension is allowed
            if (CMSContext.IsWebDAVEnabled(si.SiteName) && RequestHelper.IsWindowsAuthentication() && WebDAVSettings.IsExtensionAllowedForEditMode(mfi.FileExtension, si.SiteName))
            {
                StringBuilder sb = new StringBuilder();
                using (StringWriter tw = new StringWriter(sb))
                {
                    HtmlTextWriter hw = new HtmlTextWriter(tw);
                    WebDAVEditControl wabDavElem = Page.LoadControl("~/CMSModules/MediaLibrary/Controls/WebDAV/MediaFileWebDAVEditControl.ascx") as WebDAVEditControl;
                    if (wabDavElem != null)
                    {
                        // Initialize update control
                        innermedia.GetWebDAVEditControl(ref wabDavElem, mfi);
                        wabDavElem.ReloadData(true);
                        wabDavElem.RenderControl(hw);
                    }
                }

                return sb.ToString();
            }
        }
        return null;
    }
Пример #50
0
    /// <summary>
    /// Returns image name, title and description according to image type.
    /// </summary>
    /// <returns>Image name, title and description</returns>
    void baseImageEditor_GetMetaData()
    {
        if (mfi == null)
        {
            mfi = MediaFileInfoProvider.GetMediaFileInfo(mediafileGuid, this.CurrentSiteName);
        }

        if (mfi != null)
        {
            string name = mfi.FileName;
            baseImageEditor.GetNameResult = name;
            baseImageEditor.GetTitleResult = mfi.FileTitle;
            baseImageEditor.GetDescriptionResult = mfi.FileDescription;
        }
    }
    /// <summary>
    /// Gets HTML code of rendered DirectFileUploader control.
    /// </summary>
    /// <param name="mfi">Media file information</param>
    public string GetDirectFileUploaderHTML(MediaFileInfo mfi)
    {
        StringBuilder sb = new StringBuilder();
        using (StringWriter tw = new StringWriter(sb))
        {
            HtmlTextWriter hw = new HtmlTextWriter(tw);
            DirectFileUploader dfuElem = Page.LoadControl("~/CMSModules/Content/Controls/Attachments/DirectFileUploader/DirectFileUploader.ascx") as DirectFileUploader;
            if (dfuElem != null)
            {
                using (Panel updatePanel = new Panel())
                {
                    // Initialize update control
                    innermedia.GetLibraryUpdateControl(ref dfuElem, mfi);
                    dfuElem.ReloadData();
                    updatePanel.Attributes["style"] = "height:16px;display:inline;";
                    updatePanel.Controls.Add(dfuElem);
                    updatePanel.RenderControl(hw);
                }
            }
        }

        return sb.ToString();
    }
Пример #52
0
    /// <summary>
    /// Saves modified image data.
    /// </summary>
    /// <param name="name">Image name</param>
    /// <param name="extension">Image extension</param>
    /// <param name="mimetype">Image mimetype</param>
    /// <param name="title">Image title</param>
    /// <param name="description">Image description</param>
    /// <param name="binary">Image binary data</param>
    /// <param name="width">Image width</param>
    /// <param name="height">Image height</param>
    private void SaveImage(string name, string extension, string mimetype, string title, string description, byte[] binary, int width, int height)
    {
        // Process media file
        if (mfi == null)
        {
            mfi = MediaFileInfoProvider.GetMediaFileInfo(mediafileGuid, this.CurrentSiteName);
        }

        if (mfi != null)
        {
            MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(mfi.FileLibraryID);
            if (mli != null)
            {
                string path = Path.GetDirectoryName(DirectoryHelper.CombinePath(MediaLibraryInfoProvider.GetMediaLibraryFolderPath(mli.LibraryID), mfi.FilePath));
                bool permissionsOK = DirectoryHelper.CheckPermissions(path, false, true, true, true);

                if (permissionsOK)
                {
                    MediaFileInfo originalMfi = mfi.Clone(true);

                    try
                    {
                        // Ensure object version
                        SynchronizationHelper.EnsureObjectVersion(mfi);

                        if (isPreview && !String.IsNullOrEmpty(PreviewPath))
                        {
                            SiteInfo si = SiteInfoProvider.GetSiteInfo(mfi.FileSiteID);
                            if (si != null)
                            {
                                string previewExt = (!String.IsNullOrEmpty(extension) && (extension != OldPreviewExt)) ? extension : OldPreviewExt;
                                string previewName = Path.GetFileNameWithoutExtension(PreviewPath);
                                string previewFolder = MediaLibraryHelper.EnsurePath(DirectoryHelper.CombinePath(Path.GetDirectoryName(mfi.FilePath).TrimEnd('/'), MediaLibraryHelper.GetMediaFileHiddenFolder(si.SiteName)));

                                // Delete old preview files with thumbnails
                                MediaFileInfoProvider.DeleteMediaFilePreview(CMSContext.CurrentSiteName, mli.LibraryID, mfi.FilePath, false);
                                MediaFileInfoProvider.DeleteMediaFilePreviewThumbnails(mfi);

                                // Save preview file
                                MediaFileInfoProvider.SaveFileToDisk(si.SiteName, mli.LibraryFolder, previewFolder, previewName, previewExt, mfi.FileGUID, binary, false, false);

                                // Log synchronization task
                                SynchronizationHelper.LogObjectChange(mfi, TaskTypeEnum.UpdateObject);
                            }
                        }
                        else
                        {
                            string newExt = null;
                            string newName = null;

                            if (!String.IsNullOrEmpty(extension))
                            {
                                newExt = extension;
                            }
                            if (!String.IsNullOrEmpty(mimetype))
                            {
                                mfi.FileMimeType = mimetype;
                            }

                            mfi.FileTitle = title;
                            mfi.FileDescription = description;

                            if (width > 0)
                            {
                                mfi.FileImageWidth = width;
                            }
                            if (height > 0)
                            {
                                mfi.FileImageHeight = height;
                            }
                            if (binary != null)
                            {
                                mfi.FileBinary = binary;
                                mfi.FileSize = binary.Length;
                            }
                            // Test all parameters to empty values and update new value if available
                            if (!String.IsNullOrEmpty(name))
                            {
                                newName = name;
                            }
                            // If filename changed move preview file and remove all ald thumbnails
                            if ((!String.IsNullOrEmpty(newName) && (mfi.FileName != newName)) || (!String.IsNullOrEmpty(newExt) && (mfi.FileExtension.ToLower() != newExt.ToLower())))
                            {
                                SiteInfo si = SiteInfoProvider.GetSiteInfo(mfi.FileSiteID);
                                if (si != null)
                                {
                                    string fileName = (newName != null ? newName : mfi.FileName);
                                    string fileExt = (newExt != null ? newExt : mfi.FileExtension);

                                    string newPath = MediaFileInfoProvider.GetMediaFilePath(mfi.FileLibraryID, DirectoryHelper.CombinePath(Path.GetDirectoryName(mfi.FilePath), fileName) + fileExt);
                                    string filePath = MediaFileInfoProvider.GetMediaFilePath(mfi.FileLibraryID, mfi.FilePath);

                                    // Rename file only if file with same name does not exsists
                                    if (!File.Exists(newPath))
                                    {
                                        // Ensure max length of file path
                                        if (newPath.Length < 260)
                                        {
                                            // Remove old thumbnails
                                            MediaFileInfoProvider.DeleteMediaFileThumbnails(mfi);
                                            MediaFileInfoProvider.DeleteMediaFilePreviewThumbnails(mfi);

                                            // Move media file
                                            MediaFileInfoProvider.MoveMediaFile(si.SiteName, mli.LibraryID, mfi.FilePath, DirectoryHelper.CombinePath(Path.GetDirectoryName(mfi.FilePath), fileName) + fileExt, false);

                                            // Set new file name or extension
                                            mfi.FileName = fileName;
                                            mfi.FileExtension = fileExt;

                                            // Ensure new binary
                                            if (binary != null)
                                            {
                                                mfi.FileBinary = binary;
                                                mfi.FileSize = binary.Length;
                                            }
                                        }
                                        else
                                        {
                                            throw new IOExceptions.PathTooLongException();
                                        }
                                    }
                                    else
                                    {
                                        baseImageEditor.LblLoadFailed.Visible = true;
                                        baseImageEditor.LblLoadFailed.ResourceString = "img.errors.fileexists";
                                        SavingFailed = true;
                                        return;
                                    }
                                }
                            }
                            else
                            {
                                // Remove old thumbnails
                                MediaFileInfoProvider.DeleteMediaFileThumbnails(mfi);

                                // Remove original media file before save
                                string filePath = MediaFileInfoProvider.GetMediaFilePath(mfi.FileLibraryID, mfi.FilePath);
                                if (File.Exists(filePath))
                                {
                                    File.Delete(filePath);
                                }
                            }

                            // Save new data
                            MediaFileInfoProvider.SetMediaFileInfo(mfi, false);
                        }
                    }
                    catch (Exception e)
                    {
                        // Log exception
                        EventLogProvider ev = new EventLogProvider();
                        ev.LogEvent("ImageEditor", "Save file", e);

                        baseImageEditor.LblLoadFailed.Visible = true;
                        baseImageEditor.LblLoadFailed.ResourceString = "img.errors.processing";
                        ScriptHelper.AppendTooltip(baseImageEditor.LblLoadFailed, e.Message, "help");
                        this.SavingFailed = true;
                        // Save original media file info
                        MediaFileInfoProvider.SetMediaFileInfo(originalMfi, false);
                    }
                }
            }
        }
    }
    protected void btnUpload_Click(object sender, EventArgs e)
    {
        MediaLibraryInfo mli = MediaLibraryInfoProvider.GetMediaLibraryInfo(LibraryID);
        if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "manage"))
        {
            // Check 'File create' permission
            if (!MediaLibraryInfoProvider.IsUserAuthorizedPerLibrary(mli, "filecreate"))
            {
                RaiseOnNotAllowed("filecreate");
                return;
            }
        }

        if (!fileUploader.HasFile)
        {
            lblError.Text = GetString("media.selectfile");
            lblError.Visible = true;
            return;
        }

        // Check if preview file is image
        if ((previewUploader.HasFile) &&
            (!ImageHelper.IsImage(Path.GetExtension(previewUploader.FileName))) &&
            (Path.GetExtension(previewUploader.FileName).ToLowerCSafe() != ".ico") &&
            (Path.GetExtension(previewUploader.FileName).ToLowerCSafe() != ".tif") &&
            (Path.GetExtension(previewUploader.FileName).ToLowerCSafe() != ".tiff") &&
            (Path.GetExtension(previewUploader.FileName).ToLowerCSafe() != ".wmf"))
        {
            lblError.Text = GetString("Media.File.PreviewIsNotImage");
            lblError.Visible = true;
            return;
        }

        // Check if the preview file with given extension is allowed for library module
        // Check if file with given extension is allowed for library module
        string fileExt = Path.GetExtension(fileUploader.FileName).TrimStart('.');
        string previewFileExt = Path.GetExtension(previewUploader.FileName).TrimStart('.');

        // Check file extension
        if (!MediaLibraryHelper.IsExtensionAllowed(fileExt))
        {
            lblError.Text = String.Format(GetString("media.newfile.extensionnotallowed"), fileExt);
            lblError.Visible = true;
            return;
        }

        // Check preview extension
        if ((previewFileExt.Trim() != "") && !MediaLibraryHelper.IsExtensionAllowed(previewFileExt))
        {
            lblError.Text = String.Format(GetString("media.newfile.extensionnotallowed"), previewFileExt);
            lblError.Visible = true;
            return;
        }

        if (mli != null)
        {
            try
            {
                // Create new Media file
                MediaFileInfo mfi = new MediaFileInfo(fileUploader.PostedFile, LibraryID, DestinationPath);

                // Save preview if presented
                if (previewUploader.HasFile)
                {
                    // Get preview suffix if not set
                    if (String.IsNullOrEmpty(PreviewSuffix))
                    {
                        PreviewSuffix = MediaLibraryHelper.GetMediaFilePreviewSuffix(CMSContext.CurrentSiteName);
                    }

                    if (!String.IsNullOrEmpty(PreviewSuffix))
                    {
                        // Get physical path whithin the media library
                        String path = null;
                        if ((DestinationPath != null) && DestinationPath.TrimEnd('/') != "")
                        {
                            path = DirectoryHelper.CombinePath(DestinationPath.Trim('/').Replace('/', '\\'), MediaLibraryHelper.GetMediaFileHiddenFolder(CMSContext.CurrentSiteName));
                        }
                        else
                        {
                            path = MediaLibraryHelper.GetMediaFileHiddenFolder(CMSContext.CurrentSiteName);
                        }

                        string previewExtension = Path.GetExtension(previewUploader.PostedFile.FileName);
                        string previewName = Path.GetFileNameWithoutExtension(MediaLibraryHelper.GetPreviewFileName(mfi.FileName, mfi.FileExtension, previewExtension, CMSContext.CurrentSiteName, PreviewSuffix));

                        // Save preview file
                        MediaFileInfoProvider.SaveFileToDisk(CMSContext.CurrentSiteName, mli.LibraryFolder, path, previewName, previewExtension, mfi.FileGUID, previewUploader.PostedFile.InputStream, false);
                    }
                }

                // Save record to the database
                MediaFileInfoProvider.SetMediaFileInfo(mfi);

                // Clear cache
                if (CMSControlsHelper.CurrentPageManager != null)
                {
                    CMSControlsHelper.CurrentPageManager.ClearCache();
                }

                // Display info to the user
                lblInfo.Text = GetString("media.fileuploaded");
                lblInfo.Visible = true;

                if (OnAfterFileUpload != null)
                {
                    OnAfterFileUpload();
                }
            }
            catch (Exception ex)
            {
                lblError.Visible = true;
                lblError.Text = ex.Message;
                lblError.ToolTip = ex.StackTrace;
            }
        }
    }
    /// <summary>
    /// Returns URL of the media item according site settings.
    /// </summary>
    /// <param name="argument">Argument containing information on current media item</param>
    /// <param name="data">Data row object holding all the data on the current file</param>
    /// <param name="isPreview">Indicates whether the file has a preview file or not</param>
    /// <param name="height">Specifies height of the image</param>
    /// <param name="width">Specifies width of the image</param>
    /// <param name="maxSideSize">Specifies maximum size of the image</param>
    /// <param name="notAttachment">Indicates whether the file is attachment</param>
    private string GetItemUrlInternal(string argument, IDataContainer data, bool isPreview, int height, int width, int maxSideSize, bool notAttachment)
    {
        MediaFileInfo mfi = null;

        // Get filename with extension
        string fileName;
        if (data.ContainsColumn("FileExtension"))
        {
            string ext = ValidationHelper.GetString(data.GetValue("FileExtension"), "");
            // In format 'name'
            fileName = ValidationHelper.GetString(data.GetValue("FileName"), "");

            fileName = AttachmentHelper.GetFullFileName(fileName, ext);
        }
        else
        {
            // In format 'name.ext'
            fileName = data.GetValue("FileName").ToString();
        }

        // Try to get imported data row
        DataRow importedRow = GetInformationInternal("fileisnotindatabase", fileName) as DataRow;
        if (importedRow != null)
        {
            mfi = new MediaFileInfo(importedRow);
        }

        // If data row is not from DB check external library
        if (!data.ContainsColumn("FileGUID"))
        {
            bool isExternal = false;
            // Check if is external media library
            if (data.ContainsColumn("FilePath"))
            {
                // Get file path
                string filePath = ValidationHelper.GetString(data.GetValue("FilePath"), String.Empty);
                if (!String.IsNullOrEmpty(filePath))
                {
                    // Test if file path is inside system root folder
                    string rootPath = Server.MapPath("~/");
                    if (!filePath.StartsWithCSafe(rootPath))
                    {
                        isExternal = true;
                    }
                }
            }

            if (isExternal && data.ContainsColumn("FileName"))
            {
                return (mfi != null ? GetItemUrl(mfi, isPreview, height, width, maxSideSize) : String.Empty);
            }
        }

        // Files are obtained from the FS
        if (data.ContainsColumn("FileURL"))
        {
            // Information comming from FileSystem (FS)
            return URLHelper.GetAbsoluteUrl(data.GetValue("FileURL").ToString());
        }
        else
        {
            return (mfi != null ? GetItemUrl(mfi, isPreview, height, width, maxSideSize) : GetItemUrl(argument, isPreview, height, width, maxSideSize));
        }
    }
    /// <summary>
    /// Returns URL of the media item according site settings.
    /// </summary>
    /// <param name="fileInfo">Media file information</param>
    /// <param name="isPreview">Indicates whether the file has a preview file or not</param>
    /// <param name="height">Height of the requested image</param>
    /// <param name="width">Width of the requested image</param>
    /// <param name="maxSideSize">Maximum dimension for images displayed for thumbnails view</param>
    public string GetItemUrl(MediaFileInfo fileInfo, bool isPreview, int height, int width, int maxSideSize)
    {
        if (fileInfo != null)
        {
            return GetItemUrl(fileInfo, LibrarySite, fileInfo.FileGUID, fileInfo.FileName, fileInfo.FileExtension, fileInfo.FilePath, isPreview, height, width, maxSideSize);
        }

        return "";
    }
    /// <summary>
    /// Processes the specified file.
    /// </summary>
    /// <param name="fileGuid">File guid</param>
    /// <param name="preview">Use preview</param>
    protected void ProcessFile(Guid fileGuid, bool preview)
    {
        // Get the file info if doesn't retrieved yet
        fileInfo = (fileInfo ?? MediaFileInfoProvider.GetMediaFileInfo(fileGuid, CurrentSiteName));
        if (fileInfo != null)
        {
            if (preview)
            {
                // Get file path
                string path = MediaFileInfoProvider.GetMediaFilePath(fileInfo.FileLibraryID, fileInfo.FilePath);
                string pathDirectory = Path.GetDirectoryName(path);
                string hiddenFolderPath = MediaLibraryHelper.GetMediaFileHiddenFolder(CurrentSiteName);
                string folderPath = DirectoryHelper.CombinePath(pathDirectory, hiddenFolderPath);

                // Ensure hidden folder exists
                DirectoryHelper.EnsureDiskPath(folderPath, pathDirectory);
                // Get preview file
                string[] files = Directory.GetFiles(folderPath, MediaLibraryHelper.GetPreviewFileName(fileInfo.FileName, fileInfo.FileExtension, ".*", CurrentSiteName));
                if (files.Length > 0)
                {
                    bool resizeImage = (ImageHelper.IsImage(Path.GetExtension(files[0])) && MediaFileInfoProvider.CanResizeImage(files[0], Width, Height, MaxSideSize));

                    // Get the data
                    if ((outputFile == null) || (outputFile.MediaFile == null))
                    {
                        outputFile = NewOutputFile(fileInfo, null);
                        outputFile.UsePreview = true;
                        outputFile.Width = Width;
                        outputFile.Height = Height;
                        outputFile.MaxSideSize = MaxSideSize;
                        outputFile.Resized = resizeImage;
                        outputFile.FileExtension = Path.GetExtension(files[0]);
                        outputFile.MimeType = MimeTypeHelper.GetMimetype(outputFile.FileExtension);
                    }
                }
            }
            else
            {
                bool resizeImage = (ImageHelper.IsImage(fileInfo.FileExtension) && MediaFileInfoProvider.CanResizeImage(fileInfo, Width, Height, MaxSideSize));

                // Get the data
                if ((outputFile == null) || (outputFile.MediaFile == null))
                {
                    outputFile = NewOutputFile(fileInfo, null);
                    outputFile.Width = Width;
                    outputFile.Height = Height;
                    outputFile.MaxSideSize = MaxSideSize;
                    outputFile.Resized = resizeImage;
                }
            }
        }
    }
    /// <summary>
    /// Returns URL of the media item according site settings.
    /// </summary>
    /// <param name="fileInfo">File info object</param>
    /// <param name="site">Information on site file belongs to</param>
    /// <param name="fileGuid">GUID of the file URL is generated for</param>
    /// <param name="fileName">Name of the file URL is generated for</param>
    /// <param name="fileExtension">Extension of the file URL is generated for</param>
    /// <param name="filePath">Media file path of the file URL is generated for</param>
    /// <param name="isPreview">Indicates whether the file URL is generated for preview</param>
    /// <param name="height">Specifies height of the image</param>
    /// <param name="width">Specifies width of the image</param>
    /// <param name="maxSideSize">Maximum dimension for images displayed for thumbnails view</param>
    public string GetItemUrl(MediaFileInfo fileInfo, SiteInfo site, Guid fileGuid, string fileName, string fileExtension, string filePath, bool isPreview, int height, int width, int maxSideSize)
    {
        string result;
        bool resize = (maxSideSize > 0);

        fileName = UsePermanentUrls ? AttachmentHelper.GetFullFileName(fileName, fileExtension) : fileName;

        bool generateFullURL = ValidationHelper.GetBoolean(SettingsHelper.AppSettings["CMSUseMediaFileAbsoluteURLs"], false);

        if ((Config != null) && (Config.UseFullURL || generateFullURL || (SiteContext.CurrentSiteID != LibraryInfo.LibrarySiteID) || (SiteContext.CurrentSiteID != GetCurrentSiteId())))
        {
            // If permanent URLs should be generated
            if (UsePermanentUrls || resize || isPreview)
            {
                // URL in format 'http://domainame/getmedia/123456-25245-45454-45455-5455555545/testfile.gif'
                result = MediaFileURLProvider.GetMediaFileAbsoluteUrl(site.SiteName, fileGuid, fileName);
            }
            else
            {
                // URL in format 'http://domainame/cms/EcommerceSite/media/testlibrary/folder1/testfile.gif'
                result = MediaFileURLProvider.GetMediaFileAbsoluteUrl(site.SiteName, LibraryInfo.LibraryFolder, filePath);
            }
        }
        else
        {
            if (UsePermanentUrls || resize || isPreview)
            {
                // URL in format '/cms/getmedia/123456-25245-45454-45455-5455555545/testfile.gif'
                result = MediaFileURLProvider.GetMediaFileUrl(fileGuid, fileName);
            }
            else
            {
                if (fileInfo != null)
                {
                    result = MediaFileURLProvider.GetMediaFileUrl(fileInfo, SiteContext.CurrentSiteName, LibraryInfo.LibraryFolder);
                }
                else
                {
                    // URL in format '/cms/EcommerceSite/media/testlibrary/folder1/testfile.gif'
                    result = MediaFileURLProvider.GetMediaFileUrl(SiteContext.CurrentSiteName, LibraryInfo.LibraryFolder, filePath);
                }
            }
        }

        // If image dimensions are specified
        if (resize)
        {
            result = URLHelper.AddParameterToUrl(result, "maxsidesize", maxSideSize.ToString());
        }
        if (height > 0)
        {
            result = URLHelper.AddParameterToUrl(result, "height", height.ToString());
        }
        if (width > 0)
        {
            result = URLHelper.AddParameterToUrl(result, "width", width.ToString());
        }

        // Media selctor should returns non-resolved URL in all cases
        bool isMediaSelector = (OutputFormat == OutputFormatEnum.URL) && (SelectableContent == SelectableContentEnum.OnlyMedia);

        return (isMediaSelector ? result : URLHelper.ResolveUrl(result));
    }
    /// <summary>
    /// Gets the new output MediaFile object.
    /// </summary>
    /// <param name="mfi">Media file info</param>
    /// <param name="data">Output MediaFile data</param>
    public CMSOutputMediaFile NewOutputFile(MediaFileInfo mfi, byte[] data)
    {
        CMSOutputMediaFile mf = new CMSOutputMediaFile(mfi, data)
        {
            Watermark = Watermark,
            WatermarkPosition = WatermarkPosition
        };

        return mf;
    }
    /// <summary>
    /// Returns the output data dependency based on the given attachment record.
    /// </summary>
    /// <param name="mi">MediaFile object</param>
    protected CacheDependency GetOutputDataDependency(MediaFileInfo mi)
    {
        if (mi == null)
        {
            return null;
        }

        return CacheHelper.GetCacheDependency(MediaFileInfoProvider.GetDependencyCacheKeys(mi, Preview));
    }
        /// <summary>
        /// Gets media file info object representing the updated version of original file
        /// </summary>
        private MediaFileInfo GetUpdatedFile(CMS.DataEngine.IDataClass origFileDataClass, UploaderHelper args, MediaLibraryInfo mli)
        {
            // Get info on media file from uploaded file
            MediaFileInfo mediaFile = new MediaFileInfo(args.FilePath, args.MediaLibraryArgs.LibraryID, args.MediaLibraryArgs.FolderPath, args.ResizeToWidth, args.ResizeToHeight, args.ResizeToMaxSide);

            // Create new file based on original
            MediaFileInfo updatedMediaFile = new MediaFileInfo(origFileDataClass)
            {
                // Update necessary information
                FileName = mediaFile.FileName,
                FileExtension = mediaFile.FileExtension,
                FileSize = mediaFile.FileSize,
                FileMimeType = mediaFile.FileMimeType,
                FilePath = mediaFile.FilePath,
                FileModifiedByUserID = mediaFile.FileModifiedByUserID,
                FileBinary = mediaFile.FileBinary,
                FileImageHeight = mediaFile.FileImageHeight,
                FileImageWidth = mediaFile.FileImageWidth,
                FileBinaryStream = mediaFile.FileBinaryStream
            };

            return updatedMediaFile;
        }