📄 cs_post_togglesettings.prc
字号:
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[cs_Post_ToggleSettings]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[cs_Post_ToggleSettings]
GO
CREATE procedure [dbo].cs_Post_ToggleSettings
(
@PostID int,
@IsAnnouncement bit,
@IsLocked bit,
@ModeratorID int,
@SettingsID int
)
AS
SET Transaction Isolation Level Read UNCOMMITTED
BEGIN
DECLARE @CurrentLockState bit
DECLARE @CurrentAnnouncementState bit
DECLARE @ThreadID int
DECLARE @PostLevel int
SELECT
@ThreadID = ThreadID,
@PostLevel = PostLevel
FROM
cs_Posts
WHERE
PostID = @PostID
-- Is this a thread
IF @PostLevel =1
BEGIN
print 'Toggling settings on a thread.'
-- Get the current state of the thread
SELECT
@CurrentLockState = IsLocked
FROM
cs_Threads
WHERE
ThreadID = @ThreadID
-- Get current is announcement state of the thread
IF EXISTS ( SELECT
ThreadID
FROM
cs_Threads
WHERE
ThreadID = @ThreadID
AND IsSticky = 1
AND StickyDate > DateAdd( y, 20, GetDate() )
)
SET @CurrentAnnouncementState = 1
ELSE
SET @CurrentAnnouncementState = 0
-- Is the Post getting locked?
IF @CurrentLockState != @IsLocked
BEGIN
UPDATE
cs_Threads
SET
IsLocked = @IsLocked
WHERE
ThreadID = @ThreadID
UPDATE
cs_Posts
SET
IsLocked = @IsLocked
WHERE
ThreadID = @ThreadID
IF @IsLocked = 0
BEGIN
exec cs_system_ModerationAction_AuditEntry 6, @ModeratorID, @ThreadID, null, null, @SettingsID
-- added as a result of testings
--
exec cs_system_ModerationAction_AuditEntry 6, @ModeratorID, @PostID, null, null, @SettingsID
END
ELSE
BEGIN
exec cs_system_ModerationAction_AuditEntry 5, @ModeratorID, @ThreadID, null, null, @SettingsID
-- added as a result of testings
--
exec cs_system_ModerationAction_AuditEntry 5, @ModeratorID, @PostID, null, null, @SettingsID
END
END
-- Is the post an Annoucement
IF @CurrentAnnouncementState != @IsAnnouncement
IF @IsAnnouncement = 1
BEGIN
UPDATE
cs_Threads
SET
IsSticky = 1,
StickyDate = DateAdd(y, 25, ThreadDate)
WHERE
ThreadID = @ThreadID
exec cs_system_ModerationAction_AuditEntry 16, @ModeratorID, @PostID, null, null, @SettingsID
END
ELSE
BEGIN
UPDATE
cs_Threads
SET
IsSticky = 0,
StickyDate = ThreadDate
WHERE
ThreadID = @ThreadID
exec cs_system_ModerationAction_AuditEntry 17, @ModeratorID, @PostID, null, null, @SettingsID
END
END
ELSE
print 'Toggling settings on a post.'
-- Get the current lock state of the thread
SELECT
@CurrentLockState = IsLocked
FROM
cs_Posts
WHERE
PostID = @PostID
-- UPDATE The child posts
UPDATE
cs_Posts
SET
IsLocked = @IsLocked
WHERE
ParentID = @PostID
IF @IsLocked != @CurrentLockState
IF @IsLocked = 0
exec cs_system_ModerationAction_AuditEntry 6, @ModeratorID, @PostID, null, null, @SettingsID
ELSE
exec cs_system_ModerationAction_AuditEntry 5, @ModeratorID, @PostID, null, null, @SettingsID
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
grant execute on [dbo].[cs_Post_ToggleSettings] to public
go
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -