Пример #1
0
        public static CheckIdResult <T> Create(int[] ids, string actionTypeCode)
        {
            var result = new CheckIdResult <T>();

            foreach (var id in ids)
            {
                var item         = EntityObjectRepository.GetById <T>(id);
                var lockableItem = item as LockableEntityObject;
                if (item == null)
                {
                    result._NotFoundIds.Add(id);
                }
                else if (item != null && !SecurityRepository.IsEntityAccessible(item.EntityTypeCode, id, actionTypeCode))
                {
                    result._NotAccessedIds.Add(id);
                }
                else if (lockableItem != null && lockableItem.LockedByAnyoneElse && !QPContext.CanUnlockItems)
                {
                    result._LockedItems.Add(item);
                }
                else
                {
                    result._ValidItems.Add(item);
                }
            }

            return(result);
        }
Пример #2
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);
        }
Пример #3
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);
        }