Exemplo n.º 1
0
        private void PutTags(PageBE page, List <TagBE> newTags)
        {
            List <TagBE> existingTags = GetTagsForPage(page).ToList();

            // retrieve a diff of the existing and new tags
            List <TagBE> added;
            List <uint>  removed;
            var          diffSummary = CompareTagSets(existingTags, newTags, out added, out removed);

            // add and delete tags as determined from the diff
            added = InsertTags(page.ID, added);
            _session.TagMapping_Delete(page.ID, removed);
            if ((0 < added.Count) || (0 < removed.Count))
            {
                RecentChangeBL.AddTagsRecentChange(_dekiContext.Now, page, _user, diffSummary);
            }

            PageBL.Touch(page, _dekiContext.Now);
            _eventSink.PageTagsUpdate(_dekiContext.Now, page, _user);
        }