private bool HasExternalReferrers(ItemLink[] referrers, Hashtable tree) { return referrers.Any(link => !tree.ContainsKey(link.SourceItemID)); }
public void UpdateLinks(Item item, ItemLink[] links) { Assert.ArgumentNotNull((object)item, "item"); Assert.ArgumentNotNull((object)links, "links"); var oldLinks = GetReferences(item); var removeLinks = new List<ItemLink>(); foreach (var link in oldLinks) { if (!links.Any(x => x.TargetItemID.Guid == link.TargetItemID.Guid)) { removeLinks.Add(link); } } removeLinks.ForEach(x => RemoveItemVersionLink(x)); var allLinks = _computedLinkManager.GetComputedLinkItems(item); allLinks.AddRange(links); allLinks.ToList().ForEach(x => this.Update(item, x)); //foreach (var manager in _factory.GetContextSitecoreLinkedDataManagers(item)) //{ // allLinks.ToList().ForEach(computedLink => manager.AddLink(item, computedLink)); // //Now remove removed links // var oldLinks = GetReferences(item); // var removeLinks = new List<ItemLink>(); // foreach (var link in oldLinks) // { // if (!allLinks.Where(x => x.TargetItemID.Guid == link.TargetItemID.Guid).Any()) // { // removeLinks.Add(link); // } // } // foreach (var removeLink in removeLinks) // { // manager.RemoveLinksForItem(item, removeLink); // } //} }