Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// <summary>
- /// Remove from Episerver Find, use cascade to remove any descendent as well
- /// </summary>
- /// <param name="entryPoint"></param>
- /// <param name="cascade"></param>
- /// <returns></returns>
- public static List<string> DeleteIndexItems(this ContentReference entryPoint, bool cascade)
- {
- // Todo! Make Valdis safe, use injection
- var loader = ServiceLocator.Current.GetInstance<IContentLoader>();
- // Message class to keep track of whats happening
- var messages = new List<string>();
- // Get all indexable languages from Find
- Languages languages = SearchClient.Instance.Settings.Languages;
- // Remove all current instances of all languages below the selected content node
- foreach (var lang in languages)
- {
- if (cascade)
- {
- var descendents = loader.GetDescendents(entryPoint);
- foreach (ContentReference descendent in descendents)
- {
- ContentIndexer.Instance.RemoveFromIndex(descendent, false, lang.FieldSuffix);
- messages.Add($"Removing descendent: {descendent.ID}, lang {lang.FieldSuffix}");
- }
- }
- // Try delete the entrypoint
- var entryTest = loader.Get<IContent>(entryPoint, new CultureInfo(lang.FieldSuffix));
- if (entryTest != null)
- {
- var delRes = ContentIndexer.Instance.Delete(entryTest);
- messages.Add($"Deleting entrypoint: Found {delRes.FirstOrDefault().Found}, Ok = {delRes.FirstOrDefault().Ok}, Id = {delRes.FirstOrDefault().Id}");
- }
- }
- messages.Insert(0, $"Done removing from index");
- return messages;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement