private bool HasExternalReferrers(ItemLink[] referrers, Hashtable tree)
 {
     return referrers.Any(link => !tree.ContainsKey(link.SourceItemID));
 }
Exemplo n.º 2
0
        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);
            //    }
            //}
        }