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