cs_section_markread.prc
来自「community server 源码」· PRC 代码 · 共 105 行
PRC
105 行
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 + =
减小字号Ctrl + -
显示快捷键?