public static CheckIdResult <Article> CreateForPublish(int contentId, int[] ids, bool disableSecurityCheck) { var result = new CheckIdResult <Article>(); var list = EntityObjectRepository.GetList(EntityTypeCode.Article, ids).Cast <Article>(); if (list == null) { result._NotFoundIds.AddRange(ids); } else { result._NotFoundIds.AddRange(ids.Except(list.Select(n => n.Id))); var checkResult = ArticleRepository.CheckSecurity(contentId, ids, false, disableSecurityCheck); var relationCheckResult = ArticleRepository.CheckRelationSecurity(contentId, ids, false); foreach (var article in list) { if (article.StatusTypeId == article.ActualWorkflowBinding.MaxStatus.Id && !article.Splitted) { result._RedundantIds.Add(article.Id); } else if (article.LockedByAnyoneElse && !QPContext.CanUnlockItems) { result._LockedItems.Add(article); } else if (!checkResult[article.Id]) { result._NotAccessedIds.Add(article.Id); } else if (!article.IsPublishableWithWorkflow) { result._BlockedByWorkflowIds.Add(article.Id); } else if (!relationCheckResult[article.Id]) { result._BlockedByRelationSecurityIds.Add(article.Id); } else { result._ValidItems.Add(article); } } } return(result); }
public static CheckIdResult <Article> CreateForRemove(int contentId, int[] ids, bool disableSecurityCheck) { var result = new CheckIdResult <Article>(); var list = EntityObjectRepository.GetList(EntityTypeCode.Article, ids).Cast <Article>(); if (list == null) { result._NotFoundIds.AddRange(ids); } else { result._NotFoundIds.AddRange(ids.Except(list.Select(n => n.Id))); var checkResult = ArticleRepository.CheckSecurity(contentId, ids, true, disableSecurityCheck); var relationCheckResult = ArticleRepository.CheckRelationSecurity(contentId, ids, true); foreach (var article in list) { if (article.LockedByAnyoneElse) { result._LockedItems.Add(article); } else if (!checkResult[article.Id]) { result._NotAccessedIds.Add(article.Id); } else if (!article.IsRemovableWithWorkflow) { result._BlockedByWorkflowIds.Add(article.Id); } else if (!relationCheckResult[article.Id]) { result._BlockedByRelationSecurityIds.Add(article.Id); } else { result._ValidItems.Add(article); } } } return(result); }