public static void TransferItemAndDescendants(Item item, DataProviderWrapper provider, Action<string> callback) { TransferSingleItem(item, provider, callback); if (!item.HasChildren) { return; } foreach (Item child in item.Children) { TransferItemAndDescendants(child, provider, callback); } }
private static void TransferSingleItem(Item item, DataProviderWrapper provider, Action<string> callback) { ItemDefinition parentDefinition = null; if (item.Parent != null) { parentDefinition = new ItemDefinition(item.Parent.ID, item.Parent.Name, item.Parent.TemplateID, item.Parent.BranchId); } if (callback != null) { callback(item.Paths.FullPath); } // Create the item in database if (provider.CreateItem(item.ID, item.Name, item.TemplateID, parentDefinition, null)) { foreach (var language in item.Languages) { using (new LanguageSwitcher(language)) { var itemInLanguage = item.Database.GetItem(item.ID); if (itemInLanguage != null) { // Add a version var itemDefinition = provider.GetItemDefinition(itemInLanguage.ID, null); // TODO: Add all version and not just v1 provider.AddVersion(itemDefinition, new VersionUri(language, Version.First), null); // Send the field values to the provider var changes = new ItemChanges(itemInLanguage); foreach (Field field in itemInLanguage.Fields) { changes.FieldChanges[field.ID] = new FieldChange(field, field.Value); } provider.SaveItem(itemDefinition, changes, null); } } } } }
private static void TransferAncestors(Item item, DataProviderWrapper provider, Action<string> callback) { if (item == null) return; TransferAncestors(item.Parent,provider, callback); TransferSingleItem(item, provider, callback); }