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