コード例 #1
0
        public static ContentCopyResult Copy(int id, int?forceId, int[] forceFieldIds, int[] forceLinkIds)
        {
            var result  = new ContentCopyResult();
            var content = ContentRepository.GetById(id);

            if (content == null)
            {
                throw new Exception(string.Format(ContentStrings.ContentNotFound, id));
            }

            if (!content.Site.IsUpdatable || !content.IsAccessible(ActionTypeCode.Read))
            {
                result.Message = MessageResult.Error(ContentStrings.CannotCopyBecauseOfSecurity);
            }

            if (!content.IsContentChangingActionsAllowed)
            {
                throw new ActionNotAllowedException(ContentStrings.ContentChangingIsProhibited);
            }

            if (result.Message == null)
            {
                content         = ContentRepository.Copy(content, forceId, forceFieldIds, forceLinkIds, false);
                result.FieldIds = content.Fields.Select(n => n.Id).ToArray();
                result.LinkIds  = ContentRepository.GetContentLinks(content.Id).Select(n => n.LinkId).ToArray();
                result.Id       = content.Id;
            }

            return(result);
        }