Stored Procedures [dbo].[Forum_Post_Add]
Properties
PropertyValue
ANSI Nulls OnYes
Quoted Identifier OnYes
Parameters
NameData TypeMax Length (Bytes)
@ParentPostIDint4
@ForumIDint4
@UserIDint4
@RemoteAddrnvarchar(100)200
@Subjectnvarchar(255)510
@Bodynvarchar(max)max
@IsPinnedbit1
@PinnedDatedatetime8
@IsClosedbit1
@PortalIDint4
@PollIDint4
@IsModeratedbit1
@ParseInfoint4
SQL Script


CREATE PROCEDURE dbo.[Forum_Post_Add]
    @ParentPostID INT,
    @ForumID INT,
    @UserID INT,
    @RemoteAddr NVARCHAR(100),
    @Subject NVARCHAR(255),
    @Body NVARCHAR(MAX),
    @IsPinned BIT,
    @PinnedDate DATETIME,
    @IsClosed BIT,
    @PortalID INT,
    @PollID INT,
    @IsModerated BIT,
    @ParseInfo INT
AS
    DECLARE @PostID INT
    DECLARE @ThreadID INT
    DECLARE @CreatedDate DATETIME
    DECLARE @ModeratedForum BIT
    DECLARE @GroupID INT
    DECLARE @DateApproved DATETIME
    DECLARE @IsApproved BIT

    SELECT  @CreatedDate = GETDATE()
    
    IF @IsModerated = 0
        BEGIN
            SET @IsApproved = 1
            SET @DateApproved = GETDATE()
        END
    ELSE
        BEGIN
            SET @IsApproved = 0
        END
        
    IF @ParentPostID = 0 -- New Thread
        BEGIN     
            INSERT  dbo.Forum_Posts
                    (
                      ParentPostID,
                      UserID,
                      RemoteAddr,
                      [Subject],
                      Body,
                      CreatedDate,
                      UpdatedDate,
                      IsApproved,
                      IsClosed,
                      DateApproved,
                      ParseInfo,
                      PostReported
                    )
            VALUES  (
                      @ParentPostID,
                      @UserID,
                      @RemoteAddr,
                      @Subject,
                      @Body,
                      @CreatedDate,
                      @CreatedDate,
                      @IsApproved,
                      @IsClosed,
                      @DateApproved,
                      @ParseInfo,
                      0
                    )
            SET @PostID = SCOPE_IDENTITY()
            SET @ThreadID = @PostID
            
            EXEC dbo.Forum_Thread_Add @ThreadID, @ForumID, @IsPinned,
                @PinnedDate, @PollID

            UPDATE  dbo.Forum_Posts
            SET     ThreadID = @ThreadID
            WHERE   PostID = @PostID        
            
            EXEC dbo.Forum_UserThreadsAdd @UserID, @ThreadID, @CreatedDate    
        END
    ELSE -- Reply
        BEGIN
        
            SET @ThreadID = ( SELECT    ThreadID
                              FROM      dbo.Forum_Posts
                              WHERE     PostID = @ParentPostID
                            )
            INSERT  dbo.Forum_Posts
                    (
                      ParentPostID,
                      UserID,
                      RemoteAddr,
                      [Subject],
                      Body,
                      CreatedDate,
                      ThreadID,
                      UpdatedDate,
                      IsApproved,
                      IsClosed,
                      DateApproved,
                      ParseInfo,
                      PostReported
                    )
            VALUES  (
                      @ParentPostID,
                      @UserID,
                      @RemoteAddr,
                      @Subject,
                      @Body,
                      @CreatedDate,
                      @ThreadID,
                      @CreatedDate,
                      @IsApproved,
                      @IsClosed,
                      @DateApproved,
                      @ParseInfo,
                      0
                    )
            SELECT  @PostID = @@IDENTITY
            
            IF @IsModerated = 0
                BEGIN        
                    EXEC dbo.Forum_AA_ThreadUpdate @ThreadID, @PostID,
                        @IsPinned, @PinnedDate, 'postadd', @PollID
                END    
        END    

    IF @IsModerated = 0
        BEGIN
            EXEC dbo.Forum_AA_UserPostCountUpdate @UserID, @PortalID
            EXEC dbo.Forum_Forum_PostAdded @ForumID, @ThreadID, @PostID,
                @UserID, 'add'
        END
    ELSE
        BEGIN
            EXEC dbo.Forum_Forum_PostAdded @ForumID, @ThreadID, @PostID,
                @UserID, 'submit'
        END
    SELECT  @PostID

GO
Uses