Пример #1
0
        public virtual void Process(MigrateVersionPipelineArgs args)
        {
            if (args.Source == null ||
                args.Item == null)
            {
                return;
            }

            var source = args.Source;
            var item   = args.Item;

            // Confirm we are processing a Media Item
            if (!item.Paths.IsMediaItem || item.TemplateID == TemplateIDs.MediaFolder)
            {
                return;
            }

            // Confirm the target is a versioned media item
            if (item.Template.FullName.Contains("Unversioned"))
            {
                return;
            }

            var media = MediaManager.GetMedia(item);

            var blobField = source.Fields.First(x => string.Equals(x.Name, "Blob", StringComparison.OrdinalIgnoreCase));

            if (string.IsNullOrEmpty(blobField.Value))
            {
                media.ReleaseStream();
            }
            else
            {
                // Grab extension
                var extensionField = source.Fields.FirstOrDefault(x => string.Equals(x.Name, "Extension", StringComparison.OrdinalIgnoreCase));
                if (extensionField == null)
                {
                    return;
                }

                _hardRockWebServiceProxy.SetContextLanguage(item.Language.Name);
                using (var stream = new MemoryStream(_hardRockWebServiceProxy.MediaDownloadAttachment(source.Item.Id)))
                {
                    media.SetStream(stream, extensionField.Value);
                }
            }
        }
        public virtual void Process(MigrateItemPipelineArgs args)
        {
            if (args.Source == null)
            {
                return;
            }

            var source = args.Source;

            // Confirm we are processing a Media Item
            if (!source.IsMediaItem)
            {
                return;
            }

            // Check if we should process due to KeepExisting
            var item = Sitecore.Context.Database.GetItem(new ID(source.Id));

            if (KeepExisting && item != null)
            {
                args.AbortPipeline();
                return;
            }

            // Grab extension
            var extensionField = source.Versions.SelectMany(x => x.Fields).FirstOrDefault(x => string.Equals(x.Name, "Extension", StringComparison.OrdinalIgnoreCase));

            if (extensionField == null)
            {
                return;
            }

            var extension = extensionField.Value;
            var versioned = Sitecore.Configuration.Settings.Media.UploadAsVersionableByDefault;

            // Create dummy item that is a place holder
            if (item == null)
            {
                var parent     = EnsureMediaFolders(args);
                var templateId = MediaManager.Config.GetTemplate(extension, versioned);
                var template   = parent.Database.Templates[templateId];
                item = CreateItem(source.Name, parent, template.ID, new ID(source.Id));
            }

            // Get Alternate Text
            string alternateText = null;
            var    altField      = source.Versions.SelectMany(x => x.Fields).FirstOrDefault(x => string.Equals(x.Name, "Alt", StringComparison.OrdinalIgnoreCase));

            if (altField != null)
            {
                alternateText = altField.Value;
            }

            var fileName = item.Name + "." + extensionField.Value;

            var mediaCreatorOptions = new MediaCreatorOptions
            {
                AlternateText = alternateText,
                Database      = item.Database,
                Destination   = item.Paths.FullPath,
                FileBased     = Sitecore.Configuration.Settings.Media.UploadAsFiles,
                IncludeExtensionInItemName = false,
                KeepExisting = KeepExisting,
                Language     = LanguageManager.DefaultLanguage,
                Versioned    = versioned
            };

            using (var stream = new MemoryStream(_hardRockWebServiceProxy.MediaDownloadAttachment(source.Id)))
            {
                args.Item = MediaManager.Creator.CreateFromStream(stream, fileName, mediaCreatorOptions);
            }
        }