예제 #1
0
        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);
        }
예제 #2
0
        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);
        }