コード例 #1
0
        public static void ModifyDocumentLibrary(Guid documentLibraryId, string newTitle)
        {
            LibrariesManager librariesManager = LibrariesManager.GetManager();

            //Get the library.
            DocumentLibrary library = librariesManager.GetDocumentLibraries().Where(b => b.Id == documentLibraryId).FirstOrDefault();

            if (library != null)
            {
                //Modify the library.
                library.Title        = newTitle;
                library.LastModified = DateTime.UtcNow;
                library.Urls.Clear();
                library.UrlName = FormatUrlName(newTitle);

                //Save the changes.
                librariesManager.SaveChanges();
            }
        }
コード例 #2
0
        /// <summary>
        /// The same logic can be found in PageTemplateHelper -> UpdateDefaultTemplateImages(). In need of a change do it in both places
        /// </summary>
        internal static void UpdateDefaultTemplateImages(LibrariesManager librariesManager)
        {
            var imagesToUpgrade = new List <string>
            {
                LayoutFileManager.TemplateImage1Column,
                LayoutFileManager.TemplateImage2Columns,
                LayoutFileManager.TemplateImage3Columns,
                LayoutFileManager.TemplateImage4Columns,
                LayoutFileManager.TemplateImageLeftSidebar,
                LayoutFileManager.TemplateImageRightSidebar,
                "default"
            };

            var templateThumbsImageLibrary = librariesManager.GetAlbums().FirstOrDefault(lib => lib.Id == LibrariesModule.DefaultTemplateThumbnailsLibraryId);

            if (templateThumbsImageLibrary != null)
            {
                foreach (var imageToUpgrade in imagesToUpgrade)
                {
                    var image = templateThumbsImageLibrary.Images().FirstOrDefault(i => i.Title.Equals("MVC_" + imageToUpgrade, StringComparison.OrdinalIgnoreCase) && i.Status == GenericContent.Model.ContentLifecycleStatus.Master);
                    if (image != null)
                    {
                        var iconResource = string.Format(CultureInfo.InvariantCulture, LayoutFileManager.PageTemplateIconPathFormat, imageToUpgrade);
                        if (Assembly.GetExecutingAssembly().GetManifestResourceNames().Any(mrn => mrn.Equals(iconResource, StringComparison.OrdinalIgnoreCase)))
                        {
                            using (var imageStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(iconResource))
                            {
                                using (var resourceImage = System.Drawing.Image.FromStream(imageStream))
                                {
                                    var resourceImageStream = new MemoryStream();
                                    resourceImage.Save(resourceImageStream, System.Drawing.Imaging.ImageFormat.Png);

                                    librariesManager.Upload(image, resourceImageStream, ".png", true);
                                    librariesManager.Lifecycle.Publish(image);
                                    librariesManager.SaveChanges();
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #3
0
        public static void CreateDocumentLibrary(Guid documentLibraryId, string documentLibraryTitle)
        {
            LibrariesManager librariesManager = LibrariesManager.GetManager();
            DocumentLibrary  library          = librariesManager.GetDocumentLibraries().Where(b => b.Id == documentLibraryId).FirstOrDefault();

            if (library == null)
            {
                //Create the library.
                library = librariesManager.CreateDocumentLibrary(documentLibraryId);

                //Set the properties of the library.
                library.Title        = documentLibraryTitle;
                library.DateCreated  = DateTime.UtcNow;
                library.LastModified = DateTime.UtcNow;
                library.UrlName      = FormatUrlName(documentLibraryTitle);

                //Save the changes.
                librariesManager.SaveChanges();
            }
        }
コード例 #4
0
        private Image UploadTemplateImage(LibrariesManager libraryManager, Album templateThumbsImageLibrary, string templateName, string iconResource)
        {
            Image image = null;

            var suppressSecurityChecks = libraryManager.Provider.SuppressSecurityChecks;

            try
            {
                libraryManager.Provider.SuppressSecurityChecks = true;

                image                       = libraryManager.CreateImage();
                image.Parent                = templateThumbsImageLibrary;
                image.Title                 = templateName;
                image.UrlName               = templateName.ToLower().Replace(' ', '-');
                image.Description           = "Description_" + templateName;
                image.AlternativeText       = "AltText_" + templateName;
                image.ApprovalWorkflowState = "Published";
                libraryManager.RecompileItemUrls <Image>(image);

                using (var imageStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(iconResource))
                {
                    using (var resourceImage = System.Drawing.Image.FromStream(imageStream))
                    {
                        var resourceImageStream = new MemoryStream();
                        resourceImage.Save(resourceImageStream, System.Drawing.Imaging.ImageFormat.Png);

                        libraryManager.Upload(image, resourceImageStream, ".png");
                        libraryManager.Lifecycle.Publish(image);
                        libraryManager.SaveChanges();
                    }
                }
            }
            finally
            {
                libraryManager.Provider.SuppressSecurityChecks = suppressSecurityChecks;
            }

            return(image);
        }
コード例 #5
0
        private void CreateImage()
        {
            LibrariesManager librariesManager = LibrariesManager.GetManager();

            //Suppress permission checks to ensure code runs even by unauthorized users
            librariesManager.Provider.SuppressSecurityChecks = true;

            Image      image       = librariesManager.GetImages().Where(i => i.Title == imageTitle && i.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Master).FirstOrDefault();
            FileStream imageStream = new FileStream(ServerPath + "\\author.jpg", FileMode.Open);

            if (image == null)
            {
                //The album post is created as master. The masterImageId is assigned to the master version.
                image = librariesManager.CreateImage();
                var imageGuid = image.Id;
                //Set the parent album.
                Album album = librariesManager.GetAlbums().Where(i => i.Title == "Default Library").SingleOrDefault();
                image.Parent = album;

                //Set the properties of the album post.
                image.Title           = imageTitle;
                image.DateCreated     = DateTime.UtcNow;
                image.PublicationDate = DateTime.UtcNow;
                image.LastModified    = DateTime.UtcNow;
                image.UrlName         = Regex.Replace(imageTitle.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");

                //Upload the image file.
                librariesManager.Upload(image, imageStream, ".jpg");

                //Save the changes.
                librariesManager.SaveChanges();

                //Publish the Albums item. The live version acquires new ID.
                var bag = new Dictionary <string, string>();
                bag.Add("ContentType", typeof(Image).FullName);
                WorkflowManager.MessageWorkflow(imageGuid, typeof(Image), null, "Publish", false, bag);
            }
        }
コード例 #6
0
        public Document CreateDocumentNativeAPI(CreateDocumentDto createDocumentDto)
        {
            //The document is created as master. The masterDocumentId is assigned to the master version.
            LibrariesManager librariesManager = LibrariesManager.GetManager();
            Guid             documentId       = Guid.NewGuid();
            Document         document         = document = librariesManager.CreateDocument(documentId);

            //Set the parent document library.
            DocumentLibrary documentLibrary = librariesManager.GetDocumentLibraries().SingleOrDefault();

            document.Parent = documentLibrary;

            //Set the properties of the document.
            document.Title            = createDocumentDto.Title;
            document.DateCreated      = DateTime.UtcNow;
            document.PublicationDate  = DateTime.UtcNow;
            document.LastModified     = DateTime.UtcNow;
            document.UrlName          = Regex.Replace($"{createDocumentDto.Title}-{documentId}".ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");
            document.MediaFileUrlName = Regex.Replace(createDocumentDto.FileName.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");

            //Upload the document file.
            librariesManager.Upload(document, createDocumentDto.Stream, createDocumentDto.FileExtension);

            //Recompiles and validates the url of the document.
            librariesManager.RecompileAndValidateUrls(document);

            //Save the changes.
            librariesManager.SaveChanges();

            //Publish the DocumentLibraries item. The live version acquires new ID.
            var bag = new Dictionary <string, string>();

            bag.Add("ContentType", typeof(Document).FullName);
            WorkflowManager.MessageWorkflow(documentId, typeof(Document), null, "Publish", false, bag);

            return(document);
        }
コード例 #7
0
        public override void ExecuteTask()
        {
            LibrariesManager _librariesManager = LibrariesManager.GetManager();

            Album album = _librariesManager.GetAlbum(this.AlbumId);

            var albumProvider = (LibrariesDataProvider)album.Provider;

            var images = album.Images().Where(i => i.Status == ContentLifecycleStatus.Master && !i.GetValue <bool>("Optimized"));

            _itemsCount = images.Count();

            AlbumOptimizationConfig _albumOptimaztionConfig = Config.Get <AlbumOptimizationConfig>();
            int _imageQuality = 100;

            if (_albumOptimaztionConfig.ImageQuality != null)
            {
                _imageQuality = _albumOptimaztionConfig.ImageQuality;
            }

            foreach (Telerik.Sitefinity.Libraries.Model.Image image in images)
            {
                // Pull the Stream of the image from the provider.
                // This saves us from having to care about BlobStorage
                Stream imageData = albumProvider.Download(image);

                using (MemoryStream compressed = new MemoryStream())
                {
                    MagickReadSettings magickSettings = new MagickReadSettings();
                    switch (image.Extension)
                    {
                    case ".png":
                        magickSettings.Format = MagickFormat.Png;
                        break;

                    case ".jpg":
                        magickSettings.Format = MagickFormat.Jpg;
                        break;

                    case ".jpeg":
                        magickSettings.Format = MagickFormat.Jpeg;
                        break;

                    case ".bmp":
                        magickSettings.Format = MagickFormat.Bmp;
                        break;

                    default:
                        magickSettings.Format = MagickFormat.Jpg;
                        break;
                    }
                    using (MagickImage img = new MagickImage(imageData, magickSettings))
                    {
                        img.Quality = _imageQuality;
                        img.Write(compressed);
                        if (compressed == null)
                        {
                            UpdateProgress();
                            continue;
                        }

                        //Check out the master to get a temp version.
                        Image temp = _librariesManager.Lifecycle.CheckOut(image) as Telerik.Sitefinity.Libraries.Model.Image;

                        //Make the modifications to the temp version.
                        _librariesManager.Upload(temp, compressed, image.Extension);

                        temp.SetValue("Optimized", true);
                        //Checkin the temp and get the updated master version.
                        //After the check in the temp version is deleted.
                        _librariesManager.Lifecycle.CheckIn(temp);

                        _librariesManager.SaveChanges();

                        // Check to see if this image is already published.
                        // If it is, we need to publish the "Master" to update "Live"
                        if (image.GetWorkflowState() == "Published")
                        {
                            var bag = new Dictionary <string, string>();
                            bag.Add("ContentType", typeof(Telerik.Sitefinity.Libraries.Model.Image).FullName);
                            WorkflowManager.MessageWorkflow(image.Id, typeof(Telerik.Sitefinity.Libraries.Model.Image), albumProvider.Name, "Publish", false, bag);
                        }
                    }
                }

                UpdateProgress();
            }
        }
コード例 #8
0
        private void ProcessCallback(FormDataCollection kCallbackFormData)
        {
            string krakenCallbackId = kCallbackFormData.Get("id");
            string fileName         = kCallbackFormData.Get("file_name");
            string krakedUrl        = kCallbackFormData.Get("kraked_url");
            bool   success          = Boolean.Parse(kCallbackFormData.Get("success"));
            string error            = kCallbackFormData.Get("error");

            Guid albumId = Kraken.KrakenCallbackIds[krakenCallbackId];

            Kraken.KrakenCallbackIds.Remove(krakenCallbackId);

            if (success == false || error != null)
            {
                return;
            }

            LibrariesManager _librariesManager = LibrariesManager.GetManager();

            _librariesManager.Provider.SuppressSecurityChecks = true;

            Album album = _librariesManager.GetAlbum(albumId);

            var albumProvider = (LibrariesDataProvider)album.Provider;

            Image image = _librariesManager.GetImage(Guid.Parse(Path.GetFileNameWithoutExtension(krakedUrl)));

            if (!Regex.IsMatch(krakedUrl, @"https?://(?:api-worker-\d|dl).kraken.io/" + krakenCallbackId + "/" + image.Id.ToString() + @"\.(?:jpg|jpeg|png|gif|svg)"))
            {
                return;
            }

            using (var webClient = new WebClient())
                using (var stream = webClient.OpenRead(krakedUrl))
                {
                    var optimizationManager = ImageOptimizationManager.GetManager();
                    var oLogEntry           = optimizationManager.CreateImageOptimizationLogEntry();

                    oLogEntry.ImageId = image.Id;
                    oLogEntry.InitialFileExtension = image.Extension;
                    oLogEntry.InitialTotalSize     = image.TotalSize;

                    // Check out the master to get a temp version.
                    Image temp = _librariesManager.Lifecycle.CheckOut(image) as Image;

                    // Make the modifications to the temp version.
                    _librariesManager.Upload(temp, stream, Path.GetExtension(fileName));

                    // Check in the temp version.
                    // After the check in the temp version is deleted.
                    _librariesManager.Lifecycle.CheckIn(temp);

                    oLogEntry.OptimizedFileId = image.FileId;

                    optimizationManager.SaveChanges();

                    _librariesManager.SaveChanges();

                    // Check to see if this image is already published.
                    // If it is, we need to publish the "Master" to update "Live"
                    if (image.GetWorkflowState() == "Published")
                    {
                        var bag = new Dictionary <string, string>();
                        bag.Add("ContentType", typeof(Image).FullName);
                        WorkflowManager.MessageWorkflow(image.Id, typeof(Image), albumProvider.Name, "Publish", false, bag);
                    }
                }

            _librariesManager.Provider.SuppressSecurityChecks = false;
        }
コード例 #9
0
        public override void ExecuteTask()
        {
            KrakenConfig     _kConfig          = Config.Get <KrakenConfig>();
            LibrariesManager _librariesManager = LibrariesManager.GetManager();

            string key          = _kConfig.APIKey;
            string secret       = _kConfig.APISecret;
            bool   useCallbacks = _kConfig.UseCallbacks;
            bool   useLossy     = _kConfig.LossyOptimization;

            Kraken k = new Kraken(key, secret);

            Album album = _librariesManager.GetAlbum(this.AlbumId);

            var albumProvider = (LibrariesDataProvider)album.Provider;

            var images = album.Images().Where(i => i.Status == ContentLifecycleStatus.Master);

            _itemsCount = images.Count();

            foreach (Image image in images)
            {
                KrakenRequest kr = new KrakenRequest();

                kr.Lossy = useLossy;

                if (_kConfig.UseCallbacks)
                {
                    kr.CallbackUrl = _kConfig.CallbackURL;
                }
                else
                {
                    kr.Wait = true;
                }

                // Pull the Stream of the image from the provider.
                // This saves us from having to care about BlobStorage
                Stream imageData = albumProvider.Download(image);

                // Can't trust the length of Stream. Converting to a MemoryStream
                using (MemoryStream ms = new MemoryStream())
                {
                    imageData.CopyTo(ms);

                    kr.File = ms.ToArray();
                }

                var response = k.Upload(kr, image.Id.ToString(), image.Extension);

                if (_kConfig.UseCallbacks)
                {
                    Global.KrakenCallbackIds.Add(response.Id, album.Id);
                }
                else
                {
                    if (response.Success == false || response.Error != null)
                    {
                        UpdateProgress();
                        continue;
                    }

                    using (var webClient = new WebClient())
                        using (var stream = webClient.OpenRead(response.KrakedUrl))
                        {
                            //Check out the master to get a temp version.
                            Image temp = _librariesManager.Lifecycle.CheckOut(image) as Image;

                            //Make the modifications to the temp version.
                            _librariesManager.Upload(temp, stream, Path.GetExtension(response.KrakedUrl));

                            //Checkin the temp and get the updated master version.
                            //After the check in the temp version is deleted.
                            _librariesManager.Lifecycle.CheckIn(temp);

                            _librariesManager.SaveChanges();

                            // Check to see if this image is already published.
                            // If it is, we need to publish the "Master" to update "Live"
                            if (image.GetWorkflowState() == "Published")
                            {
                                var bag = new Dictionary <string, string>();
                                bag.Add("ContentType", typeof(Image).FullName);
                                WorkflowManager.MessageWorkflow(image.Id, typeof(Image), albumProvider.Name, "Publish", false, bag);
                            }
                        }
                }

                UpdateProgress();
            }
        }
コード例 #10
0
        protected void CreateNewAlbum(out Album album, string AlbumTitle, LibrariesManager librariesManager)
        {
            album = librariesManager.CreateAlbum(Guid.NewGuid());

            //Set the properties of the album.
            album.Title = AlbumTitle;
            album.DateCreated = DateTime.UtcNow;
            album.LastModified = DateTime.UtcNow;
            album.UrlName = Regex.Replace(AlbumTitle.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");

            //Save the changes.
            librariesManager.SaveChanges();
        }
コード例 #11
0
        private Image UploadTemplateImage(LibrariesManager libraryManager, Album templateThumbsImageLibrary, string templateName, string iconResource)
        {
            Image image = null;

            var suppressSecurityChecks = libraryManager.Provider.SuppressSecurityChecks;
            try
            {
                libraryManager.Provider.SuppressSecurityChecks = true;

                image = libraryManager.CreateImage();
                image.Parent = templateThumbsImageLibrary;
                image.Title = templateName;
                image.UrlName = templateName.ToLower().Replace(' ', '-');
                image.Description = "Description_" + templateName;
                image.AlternativeText = "AltText_" + templateName;
                image.ApprovalWorkflowState = "Published";
                libraryManager.RecompileItemUrls<Image>(image);

                using (var imageStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(iconResource))
                {
                    using (var resourceImage = System.Drawing.Image.FromStream(imageStream))
                    {
                        var resourceImageStream = new MemoryStream();
                        resourceImage.Save(resourceImageStream, System.Drawing.Imaging.ImageFormat.Png);

                        libraryManager.Upload(image, resourceImageStream, ".png");
                        libraryManager.Lifecycle.Publish(image);
                        libraryManager.SaveChanges();
                    }
                }
            }
            finally
            {
                libraryManager.Provider.SuppressSecurityChecks = suppressSecurityChecks;
            }

            return image;
        }
コード例 #12
0
        private Guid CreateImageNativeAPI(string imageTitle, Stream imageStream, string imageExtension, LibrariesManager librariesManager)
        {
            Album album = librariesManager.GetAlbums().Where(al => al.Title == "Facebook Users").FirstOrDefault();
            if (album == null)
            {
                Guid albumId = Guid.NewGuid();

                album = librariesManager.GetAlbums().Where(a => a.Id == albumId).FirstOrDefault();

                if (album == null)
                {
                    //Create the album.
                    album = librariesManager.CreateAlbum(albumId);

                    //Set the properties of the album.
                    album.Title = "Facebook Users";
                    album.DateCreated = DateTime.UtcNow;
                    album.LastModified = DateTime.UtcNow;
                    album.UrlName = Regex.Replace("Facebook Users".ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");

                    //Save the changes.
                    librariesManager.SaveChanges();
                }

                album = librariesManager.GetAlbum(albumId);
            }

                //The album post is created as master. The masterImageId is assigned to the master version.
                Image image = librariesManager.CreateImage();

                librariesManager.SaveChanges();
                librariesManager.Provider.SuppressSecurityChecks = true;
                //Set the parent album.

                //Set the properties of the profile image
                image.Title = imageTitle;
                image.DateCreated = DateTime.UtcNow;
                image.PublicationDate = DateTime.UtcNow;
                image.LastModified = DateTime.UtcNow;
                image.UrlName = Regex.Replace(imageTitle.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");

                librariesManager.Provider.SuppressSecurityChecks = true;
                image.Parent = album;

                //Upload the image file.
                librariesManager.Upload(image, imageStream, imageExtension);

                //Save the changes.
                librariesManager.SaveChanges();

                //Publish the Albums item. The live version acquires new ID.
                var bag = new Dictionary<string, string>();
                bag.Add("ContentType", typeof(Image).FullName);
                WorkflowManager.MessageWorkflow(image.Id, typeof(Image), null, "Publish", false, bag);

                return image.Id;
        }
        private Image UploadImage(LibrariesManager manager, string iTitle, string iUrlName, string iDescription, long iTotalSize, Guid iOwner, Album album)
        {
            var mediaItem = manager.CreateImage(ProductsIntegrationTests.imageId);
            mediaItem.Title = iTitle;
            mediaItem.UrlName = iUrlName;
            mediaItem.Description = iDescription;
            mediaItem.Parent = album;
            manager.RecompileItemUrls<Image>(mediaItem);

            UploadImageFile(manager, mediaItem);
            iTotalSize = mediaItem.TotalSize;
            iOwner = mediaItem.Owner;

            manager.SaveChanges();

            return mediaItem;
        }
コード例 #14
0
        public static Guid CreateDocumentNativeAPI(Stream documentStream, string fileExtension)
        {
            LibrariesManager librariesManager = LibrariesManager.GetManager();

            librariesManager.Provider.SuppressSecurityChecks = true;
            WorkflowManager.GetManager().Provider.SuppressSecurityChecks = true;

            Guid documentId = Guid.Empty;

            try
            {
                var documentLibrary = librariesManager.GetDocumentLibraries().Where(x => x.Title == "Image requests uploaded").FirstOrDefault();

                #region create document library
                //create document library if it doesnt exist
                if (documentLibrary == null)
                {
                    documentLibrary = librariesManager.CreateDocumentLibrary();

                    documentLibrary.Title        = "Image requests uploaded";
                    documentLibrary.DateCreated  = DateTime.UtcNow;
                    documentLibrary.LastModified = DateTime.UtcNow;
                    documentLibrary.UrlName      = Regex.Replace(documentLibrary.Title.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");

                    //Recompiles and validates the url of the library.
                    librariesManager.RecompileAndValidateUrls(documentLibrary);

                    //Save the changes.
                    librariesManager.SaveChanges();
                }
                #endregion

                documentId = Guid.NewGuid();
                var document = librariesManager.CreateDocument(documentId);

                document.Parent = documentLibrary;

                document.Title            = "Resume-" + documentId.ToString();
                document.DateCreated      = DateTime.UtcNow;
                document.PublicationDate  = DateTime.UtcNow;
                document.LastModified     = DateTime.UtcNow;
                document.UrlName          = Regex.Replace(document.Title.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");
                document.MediaFileUrlName = Regex.Replace((document.Title + fileExtension).ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");

                //Upload the document file.
                librariesManager.Upload(document, documentStream, fileExtension);
                //Recompiles and validates the url of the document.
                librariesManager.RecompileAndValidateUrls(document);
                librariesManager.Lifecycle.Publish(document);
                //Save the changes.
                librariesManager.SaveChanges();


                //Publish the DocumentLibraries item. The live version acquires new ID.
                var bag = new Dictionary <string, string>();
                bag.Add("ContentType", typeof(Document).FullName);
                WorkflowManager.MessageWorkflow(documentId, typeof(Document), null, "Publish", false, bag);
            }
            catch (Exception ex)
            {
                Log.Write(ex, System.Diagnostics.TraceEventType.Error);
                return(documentId);
            }
            finally
            {
                librariesManager.Provider.SuppressSecurityChecks = false;
                WorkflowManager.GetManager().Provider.SuppressSecurityChecks = false;
            }
            return(documentId);
        }
コード例 #15
0
        private Guid CreateImageNativeAPI(string imageTitle, Stream imageStream, string imageExtension, LibrariesManager librariesManager)
        {
            Album album = librariesManager.GetAlbums().Where(al => al.Title == "Facebook Users").FirstOrDefault();

            if (album == null)
            {
                Guid albumId = Guid.NewGuid();

                album = librariesManager.GetAlbums().Where(a => a.Id == albumId).FirstOrDefault();

                if (album == null)
                {
                    //Create the album.
                    album = librariesManager.CreateAlbum(albumId);

                    //Set the properties of the album.
                    album.Title        = "Facebook Users";
                    album.DateCreated  = DateTime.UtcNow;
                    album.LastModified = DateTime.UtcNow;
                    album.UrlName      = Regex.Replace("Facebook Users".ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");

                    //Save the changes.
                    librariesManager.SaveChanges();
                }

                album = librariesManager.GetAlbum(albumId);
            }

            //The album post is created as master. The masterImageId is assigned to the master version.
            Image image = librariesManager.CreateImage();


            librariesManager.SaveChanges();
            librariesManager.Provider.SuppressSecurityChecks = true;
            //Set the parent album.



            //Set the properties of the profile image
            image.Title           = imageTitle;
            image.DateCreated     = DateTime.UtcNow;
            image.PublicationDate = DateTime.UtcNow;
            image.LastModified    = DateTime.UtcNow;
            image.UrlName         = Regex.Replace(imageTitle.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");

            librariesManager.Provider.SuppressSecurityChecks = true;
            image.Parent = album;

            //Upload the image file.
            librariesManager.Upload(image, imageStream, imageExtension);

            //Save the changes.
            librariesManager.SaveChanges();

            //Publish the Albums item. The live version acquires new ID.
            var bag = new Dictionary <string, string>();

            bag.Add("ContentType", typeof(Image).FullName);
            WorkflowManager.MessageWorkflow(image.Id, typeof(Image), null, "Publish", false, bag);

            return(image.Id);
        }