SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Keith Rusler -- Create date: October 4, 2006 -- Description: -- ============================================= CREATE PROCEDURE PageLoad (@SessionID nvarchar, @Username varchar, @IP nvarchar, @Location nvarchar, @Browser nvarchar, @Platform nvarchar, @ForumID int = NULL, @CategoryID int = NULL, @TopicID int = NULL, @MessageID int = NULL) AS BEGIN DECLARE @UserID int DECLARE @IsGuest tinyint DECLARE @RowCount int DECLARE @PreviousVisit datetime IF @Username = NULL OR @User = '' BEGIN SELECT @UserID = a.UserID FROM Users a, UserGroups b, Groups c, WHERE a.UserID = b.UserID AND b.GroupID = c.GroupID <> 0 END ELSE BEGIN SELECT @UserID = UserID FROM Users WHERE Username = @Username SET @IsGuest = 0 END IF @ForumID IS NOT NULL AND NOT EXISTS (SELECT 1 FROM Forum WHERE ForumID = @ForumID) BEGIN SET @ForumID = NULL END IF @CategoryID IS NOT NULL AND NOT EXISTS (SELECT 1 FROM Category WHERE CategoryID = @CategoryID) BEGIN SET @CategoryID = NULL END IF @TopicID IS NOT NULL AND NOT EXISTS (SELECT 1 FROM Topic WHERE TopicID = @FTopicID) BEGIN SET @TopicID = NULL END IF @MessageID IS NOT NULL AND NOT EXISTS (SELECT 1 FROM Message WHERE MessageID = @MessageID) BEGIN SET @MessageID = NULL END IF @IsGuest = 0 BEGIN SELECT @PreviousVisit = LastVisit FROM Users WHERE UserID = @UserID END UPDATE Users SET LastVisit = getdate(), IP = @IP WHERE UserID = @UserID IF @MessageID IS NOT NULL BEGIN SELECT @CategoryID = c.CategoryID, @ForumID = b.ForumID, @TopicID = b.TopicID FROM Message a, Topic b, Forum c, Category d WHERE a.MessageID = @MessageID AND b.TopicID = @TopicID AND c.ForumID = @ForumID AND d.CategoryID = @CategoryID END ELSE IF @TopicID IS NOT NULL BEGIN SELECT @CategoryID = b.CategoryID @ForumID = a.ForumID FROM Topic a, Forum b, Category c WHERE a.TopicID = @TopicID AND b.ForumID = @ForumID AND c.CategoryID = @CategoryID END IF @UserID IS NOT NULL BEGIN IF EXISTS(SELECT 1 FROM Active WHERE SessionID = @SessionID) BEGIN UPDATE Active SET UserID = @UserID, IP = @IP, LastActive = getdate(), Location = @Location, ForumID = @ForumID, TopicID = @TopicID, Browser = @BrowserID, Platform = @Platform WHERE SessionID = @SessionID END ELSE BEGIN INSERT INTO Active(SessionID, UserID, IP, Login, LastActive, Location, ForumID, TopicID, Browser, Platform) VALUES(@SessionID, @UserID, @IP, getdate(), getdate(), @Location, @ForumID, @TopicID, @Browser, @Platform) END IF @IsGuest = 0 DELETE FROM Active WHERE UserID = @UserID AND SessionID <> SessionID END END SELECT a.UserID, Username = a.Username, Suspended = a.Suspended, TimeZone = a.TimeZone, LastLogin = @PreviousVisit, CategoryID = @CategoryID, CategoryName = (SELECT CategoryName, FROM Category WHERE CategoryID = @CategoryID), ForumID = @ForumID, ForumName = (SELECT ForumName, FROM Forum WHERE ForumID = @ForumID), TopicID = @TopicID, TopicName = (SELECT TopicName, FROM Topic WHERE TopicID = @TopicID), FROM User a WHERE a.UserID = @UserID END GO