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); }