public void Start() { ItemPathTranslator translator = new ItemPathTranslator(_source, _target); IEnumerable<Item> sourceDescendants = GetDescendantsAndSelf(_source); ItemReferenceReplacer replacer = InitializeReplacer(sourceDescendants, translator); foreach (Item equivalentTarget in replacer.OtherItems) { replacer.ReplaceItemReferences(equivalentTarget); } }
private ItemReferenceReplacer InitializeReplacer(IEnumerable<Item> sourceDescendants, ItemPathTranslator translator) { ItemReferenceReplacer replacer = new ItemReferenceReplacer(ExcludeStandardSitecoreFieldsExceptLayout); foreach (Item sourceDescendant in sourceDescendants) { if (!translator.CanTranslatePath(sourceDescendant)) continue; Item equivalentTarget = sourceDescendant.Database.GetItem(translator.TranslatePath(sourceDescendant)); if (equivalentTarget == null) continue; replacer.AddItemPair(sourceDescendant, equivalentTarget); } return replacer; }