📄 cs_weblog_post_update.prc
字号:
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[cs_weblog_Post_Update]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[cs_weblog_Post_Update]
GO
CREATE PROCEDURE [dbo].cs_weblog_Post_Update
(
@PostID int,
@SectionID int,
@Subject nvarchar(256),
@Body ntext,
@FormattedBody ntext,
@EmoticonID int = 0,
@IsSticky bit = null,
@StickyDate datetime = null,
@IsLocked bit,
@IsApproved bit = 0,
@IsTracked bit = 0,
@EditedBy int,
@PostMedia int = 0,
@Excerpt nvarchar(500) = null,
@PostName nvarchar(256) = null,
@TitleUrl nvarchar(256) = null,
@PostConfig int = 0,
@BlogPostType tinyint = 1,
@Categories nvarchar(4000) = null,
@PropertyNames ntext = null,
@PropertyValues ntext = null,
@SettingsID int,
@UserTime datetime,
@PostDate datetime,
@PostStatus int = 0,
@SpamScore int = 0
)
AS
if(@PostName is not null)
Begin
if exists(Select p.PostID FROM cs_Posts p where p.SectionID = @SectionID and p.PostName = @PostName and p.ApplicationPostType = @BlogPostType and p.PostID <> @PostID)
Begin
Return 2
End
End
DECLARE @ThreadID int
Declare @ParentID int
--DECLARE @PostDate datetime
Select @ThreadID = ThreadID, @ParentID = ParentID FROM cs_Posts where PostID = @PostID
-- this sproc updates a post (called from the moderate/admin page)
UPDATE
cs_Posts
SET
Subject = @Subject,
Body = @Body,
FormattedBody = @FormattedBody,
IsLocked = @IsLocked,
EmoticonID = @EmoticonID,
IsApproved = @IsApproved,
PropertyNames = @PropertyNames,
PropertyValues = @PropertyValues,
PostDate = @PostDate,
PostName = @PostName,
UserTime = @UserTime,
PostConfiguration = @PostConfig,
ApplicationPostType = @BlogPostType,
PostMedia = @PostMedia,
PostStatus = @PostStatus,
SpamScore = @SpamScore
WHERE
PostID = @PostID and SettingsID = @SettingsID
if(@PostID = @ParentID)
Begin
Update cs_Threads Set IsApproved = @IsApproved Where ThreadID = @ThreadID
End
-- Allow thread to update sticky properties.
IF (@IsSticky IS NOT NULL) AND (@StickyDate IS NOT NULL)
BEGIN
-- Get the thread and postdate this applies to
SELECT
@ThreadID = ThreadID,
@PostDate = PostDate
FROM
cs_Posts
WHERE
PostID = @PostID and SettingsID = @SettingsID
IF (@StickyDate > '1/1/2000')
BEGIN
-- valid date range given
UPDATE
cs_Threads
SET
IsSticky = @IsSticky,
StickyDate = @StickyDate
WHERE
ThreadID = @ThreadID and SettingsID = @SettingsID
END
ELSE BEGIN
-- trying to remove a sticky
UPDATE
cs_Threads
SET
IsSticky = @IsSticky,
StickyDate = @PostDate
WHERE
ThreadID = @ThreadID and SettingsID = @SettingsID
END
END
IF(@BlogPostType = 1 OR @BlogPostType = 2)
BEGIN
IF @IsTracked = 1
BEGIN
-- If a row already exists to track this thread for this user, do nothing - otherwise add the row
IF NOT EXISTS ( SELECT ThreadID FROM cs_TrackedThreads (nolock) WHERE ThreadID = @ThreadID AND UserID = @EditedBy )
INSERT INTO cs_TrackedThreads ( ThreadID, UserID, SettingsID )
VALUES ( @ThreadID, @EditedBy, @SettingsID)
END
Else
Begin
DELETE FROM cs_TrackedThreads where ThreadID = @ThreadID and UserID = @EditedBy and SettingsID = @SettingsID
End
exec cs_Posts_UpdatePostsInCategories @Categories, @SectionID, @PostID, @SettingsID, 1
END
UPDATE
cs_Threads
SET
TotalReplies = (SELECT COUNT(*) FROM cs_Posts p WHERE P.ApplicationPostType & 12 <> 0 and p.ThreadID = @ThreadID AND p.IsApproved = 1 AND p.PostLevel > 1)
WHERE
ThreadID = @ThreadID
--exec cs_weblog_UpdateContentHistory @SectionID, @BlogPostType
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
grant execute on [dbo].[cs_weblog_Post_Update] to public
go
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -