SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- 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)ASBEGIN 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 = @UserIDENDGO