📄 cs_section_markread.prc
字号:
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[cs_Section_MarkRead]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[cs_Section_MarkRead]
GO
CREATE procedure [dbo].cs_Section_MarkRead
(
@UserID int,
@SectionID int = 0,
@SettingsID int,
@GroupID int = 0,
@MarkAllThreadsRead bit = 0
)
AS
SET Transaction Isolation Level Read UNCOMMITTED
BEGIN
DECLARE @LastReadThread int
SET NOCOUNT ON
IF @UserID = 0
RETURN
-- Are we marking all forums as read?
IF @GroupID = 0 AND @SectionID = 0
BEGIN
-- 1. Delete any entries for this user
DELETE cs_SectionsRead WHERE UserID = @UserID and SettingsID = @SettingsID
DELETE cs_ThreadsRead WHERE UserID = @UserID and SettingsID = @SettingsID
-- 2. INSERT into cs_SectionsRead
INSERT INTO cs_SectionsRead
SELECT GroupID, SectionID, @UserID, 0, 0, GetDate(), SettingsID FROM cs_Sections F WHERE SettingsID = @SettingsID
RETURN
END
-- Are we marking a particular forum group as read?
IF @GroupID > 0 AND @SectionID = 0
BEGIN
-- 1. Delete any entries for this user
DELETE cs_SectionsRead WHERE UserID = @UserID AND GroupID = @GroupID and SettingsID = @SettingsID
DELETE cs_ThreadsRead WHERE UserID = @UserID AND GroupID = @GroupID and SettingsID = @SettingsID
-- 2. Insert into cs_Sections Read
INSERT INTO cs_SectionsRead
SELECT GroupID, SectionID, @UserID, 0, 0, GetDate(), SettingsID FROM cs_Sections F WHERE GroupID = @GroupID and SettingsID = @SettingsID
RETURN
END
-- Are we marking an individual forum as read?
IF @SectionID > 0
BEGIN
IF @MarkAllThreadsRead = 1
IF EXISTS (SELECT UserID FROM cs_SectionsRead WHERE UserID = @UserID AND SectionID = @SectionID)
UPDATE
cs_SectionsRead
SET
NewPosts = 0,
MarkReadAfter = (SELECT (MostRecentPostID + 1) FROM cs_Sections F WHERE SectionID = @SectionID),
LastActivity = GetDate()
WHERE
UserID = @UserID AND
SectionID = @SectionID and SettingsID = @SettingsID
ELSE
INSERT INTO
cs_SectionsRead
SELECT GroupID, SectionID, @UserID, (MostRecentPostID + 1), 0, GetDate(), SettingsID FROM cs_Sections F WHERE SectionID = @SectionID and SettingsID = @SettingsID
ELSE
IF (SELECT NewPosts FROM cs_SectionsRead WHERE UserID = @UserID AND SectionID = @SectionID) = 1
UPDATE
cs_SectionsRead
SET
NewPosts = 0
WHERE
UserID = @UserID AND
SectionID = @SectionID
END
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
grant execute on [dbo].[cs_Section_MarkRead] to public
go
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -