SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeSelect    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeSelect]
GO

--====================================================================================
--==ݸ  Knowledge ID   Knowledge еָ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeSelect

@KnowledgeItem INT				--Knowledge ¼ ID

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ
--====================================================================================
SELECT
	now.[ID] AS [ID],
	now.PageDirectoryID AS PageDirectoryID,
	now.Serial AS Serial,
	now.Editor AS Editor,
	now.DedicatedTo AS DedicatedTo,
	now.CommentsPermission AS CommentsPermission,
	now.UpdateTime AS UpdateTime,
	now.Author AS Author

FROM dbo.Knowledge now

WHERE now.[ID]=@KnowledgeItem

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.StoredProcedureParametersBuild    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[StoredProcedureParametersBuild]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[StoredProcedureParametersBuild]
GO

--====================================================================================
--==ȡĳStored Procedure Ĳб BL DataAccess еĲ
--== @StoredProcedureName varchar(128) 
--==Ĳб
--==SP SQL Server 2000 PARAMETERS View
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================


CREATE PROCEDURE dbo.StoredProcedureParametersBuild

 @StoredProcedureName nvarchar(128)		--SP 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

SELECT 

    PARAMETER_NAME AS ParameterName, 
    DATA_TYPE AS ParameterDataType, 
    CASE UPPER(PARAMETER_MODE) WHEN N'IN' THEN N'Input' WHEN N'OUT' THEN N'Output' WHEN N'INOUT' THEN N'Output' ELSE N'ReturnValue' END AS ParameterDirection, 
    CHARACTER_MAXIMUM_LENGTH AS ParameterSize,
    NUMERIC_PRECISION AS ParameterPrecision, 
    NUMERIC_SCALE AS ParameterScale

FROM INFORMATION_SCHEMA.PARAMETERS

WHERE SPECIFIC_NAME=@StoredProcedureName

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[StoredProcedureParametersBuild]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserAuthentication    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserAuthentication]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserAuthentication]
GO

--====================================================================================
--ϵͳû֤ԭ
-- Users бû Profile  Name, Password, UserRole
--ûһ UserRole -- 1.Admin, 2.Chief Editor, 3.Column Editor, 2.Community
--֤ʱҪ -- 1. Name Password  ע⣺ǲҪ UserRole һΪֻҪ Users аĳû Name, Password һ£ͱʾûԽܲܽĳģ TemplateBase е CheckLogin ֤
-- oPass ָʾ֤Ƿɹ
-- oUserRoles ظûԸǵнɫûͬʱԶЩɫ Ϊ BL ΪǴַ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserAuthentication

@Name nvarchar(50),				--û룩
@Password nvarchar(200),			--루Ѿܴ룩
@oPass int OUT,				--֤Ƿͨ
@oUserRoles nvarchar(4000) OUT,		--صģûԸǵĽɫб   ָб
@oUserAdmin INT OUT,				--صģûǷ Amin û  Menu һЩĳϣϵͳ֪ǰû Admin Render ϵͳӦӣ
@oUserAdminEditor INT OUT,			--صģûǷ AminEditor û  Menu һЩĳϣϵͳ֪ǰû AdminEditor Render ༭Ӧӣ
@oModeratorForums nvarchar(4000) OUT	--صģûΰ Forum ID бԡָб

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ǷȻͨ
--==Ϸ֤֮
--======================================================
IF (RTRim(LTRim(@Name))=N'') or (RTRim(LTRim(@Password))=N'')

	BEGIN 
		SELECT @oPass=0
		RAISERROR(N'û벻Ϊա',16,1)
		RETURN
	END	

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

ELSE

	BEGIN
		--========================================
		--==û֣붼ϣ UserRole Ҳ
		--==UserRole ͨ @UserRole Ƿڱ֤ûԸǵĽɫбʵֵ
		--========================================
		--IF Exists (SELECT us.[ID] FROM dbo.Users us INNER JOIN dbo.UserRole ur ON ur.[ID]=us.UserRole WHERE (us.[Name]=@Name) AND (us.[Password]=@Password) AND ur.[Name]=@UserRole)

		IF Exists (SELECT us.[ID] FROM dbo.Users us WHERE (us.[Name]=@Name) AND (us.[Password]=@Password))  

			BEGIN 
				SELECT @oPass=1	 --û֤ͨ1 
			END  
		Else
			BEGIN 
				SELECT @oPass=0 	--û֤ûͨ0 
			END  

		--========================================
		--==ظûǵĽɫб
		--========================================
		SELECT @oUserRoles=COALESCE(@oUserRoles+N',',N'') + ur.[Name] FROM dbo.Users us INNER JOIN dbo.UserRole ur ON ur.[ID]=us.UserRole WHERE us.[Name]=@Name

		--========================================
		--==ظûΰ Forum б
		--========================================
		SELECT @oModeratorForums=COALESCE(@oModeratorForums+N',',N'') + CONVERT(NVARCHAR(20),[ID]) FROM dbo.Forum WHERE dbo.UDF_UserModerator(@Name,[ID])=1

		--========================================
		--==ظûǷ Amin
		--========================================
		SELECT @oUserAdmin=dbo.UDF_UserAdmin(@Name)

		--========================================
		--==ظûǷ AminEditor
		--========================================
		SELECT @oUserAdminEditor=dbo.UDF_UserAdminEditor(@Name)

	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserAuthentication]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.TopicQuery    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TopicQuery]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[TopicQuery]
GO

--====================================================================================
--== SP ãݸѯ Topic б
--==мΪΪNULL, 
--==ҳƣȽѯһṹһһPagingIDıPagingID@PageSize@CurrentPageѡȡǰҳļ¼ҳΪһ׷λ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.TopicQuery

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@ForumID int,				--Forum  ID  ָ Forum ڲֻ Forum ڵݣ
@Keyword nvarchar(4000),		--ؼ
@KeywordFlag int,			--ָ⻹ǸݣǽԿɡ(1. ,  2.ݼ,  3.Կ)
@UserName nvarchar(50),		--û
@Online int,				--ûǷ 1.  0. ڣ
@UserFlag int,				--ָûǸûǽԿɡ (1. û,  2.û,  3.Կ)
@PostTimeFrom datetime,		--ѯⷢʼʱ
@PostTimeTo datetime,			--ѯⷢʱ
@TopicStatus INT,			--״̬1⣬2ʵ⣬3⣬4⣬5Υ⣩

@PageSize INT,			--ҳƣÿҳĳߴ
@CurrentPage INT,			--ҳƣǰҳ
@OrderBy nvarchar(100),		--
@OrderByOrder nvarchar(10)		--ʽ ASC, DESC

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ݴڴڶ̬ĵطʹã
--=====================================================
SET @Keyword=dbo.UDF_PublicStringEscape(@Keyword)
SET @UserName=dbo.UDF_PublicStringEscape(@UserName)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================  
--==ûȨ޼  ѯ϶ָ Forum ڵĲѯ˵һ Forum ڸ Forum ΧڲѯҪָ Forum Ȩ޼飬ǹ Forum ߵǰû Admin ߵǰûǸ Forum İ ߵǰû UserForums ж˶Ը Forum ĶȨޣ У
--=====================================================  
DECLARE @oPass INT  
EXEC dbo.TopicUserAuthenticationSelect @User,@ForumID,@oPass OUT  
IF @oPass=0 BEGIN RETURN END  

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==WhereӾ
--=====================================================
DECLARE @DynSQL NVARCHAR(4000)    
DECLARE @DynWhere NVARCHAR(4000)

--=====================================================
--== TaskList ͨѯδ
--=====================================================
IF @TopicStatus=-1

	--=====================================================
	--== @TopicStatus  -1 ΣTaskListͨûʵҪõǰ ForumID µģ TopicStatus Ϊ 1234 ε⣨ҪΥ⣩ϵͳԱͰҪȫ
	--==ͬʱҪ Forum.Public ԣҪ UserForums ִƣ
	--==1 Admin ûû
	--==2 Moderator ûֻܷ˰ Forum 
	--==3ͨûֻܷ ReadEnabled Ϊ 1  Forum  Forum 
	--=====================================================

	BEGIN

		--=====================================================
		--==ҳ 
		--=====================================================
		SET @DynSQL=N' SET NOCOUNT ON   '
		SET @DynSQL=@DynSQL + N' Declare @Paging table '
		SET @DynSQL=@DynSQL + N' ( '
		SET @DynSQL=@DynSQL + N' PagingID int identity(1,1), '
		SET @DynSQL=@DynSQL + N' [ID] int, '
		SET @DynSQL=@DynSQL + N' TopicUser nvarchar(50) COLLATE database_default,  '
		SET @DynSQL=@DynSQL + N' Online int, '
		SET @DynSQL=@DynSQL + N' Title nvarchar(200) COLLATE database_default, '
		SET @DynSQL=@DynSQL + N' Hit int, '
		SET @DynSQL=@DynSQL + N' AttachmentName nvarchar(2000) COLLATE database_default, '
		SET @DynSQL=@DynSQL + N' TopicStatus int,  '
		SET @DynSQL=@DynSQL + N' TopicStatusIconName nvarchar(50) COLLATE database_default, '
		SET @DynSQL=@DynSQL + N' TopicStatusDescriptionC nvarchar(200) COLLATE database_default, '
		SET @DynSQL=@DynSQL + N' UpdateTime datetime,  '
		SET @DynSQL=@DynSQL + N' FollowUp int '

		SET @DynSQL=@DynSQL + N' ) '

		--=====================================================
		--==ҳ 
		--=====================================================
		SET @DynSQL=@DynSQL + N' Insert into @Paging '

		SET @DynSQL=@DynSQL + N' Select distinct   '  
		SET @DynSQL=@DynSQL + N' tp.[ID] as [ID], '
		SET @DynSQL=@DynSQL + N' tp.[User] as TopicUser, '
		SET @DynSQL=@DynSQL + N' dbo.UDF_PublicLoginOnline(tp.[User]) as Online, '
		SET @DynSQL=@DynSQL + N' tp.Title as Title, '
		SET @DynSQL=@DynSQL + N' tp.Hit as Hit, '
		SET @DynSQL=@DynSQL + N' tp.AttachmentName as AttachmentName, '
		SET @DynSQL=@DynSQL + N' ts.[ID] as TopicStatus, '
		SET @DynSQL=@DynSQL + N' ts.IconName as TopicStatusIconName, '
		SET @DynSQL=@DynSQL + N' ts.DescriptionC as TopicStatusDescriptionC, '
		SET @DynSQL=@DynSQL + N' MAX(ISNULL(fu.PostTime,tp.PostTime)) as UpdateTime, '
		SET @DynSQL=@DynSQL + N' COUNT(fu.[ID]) as FollowUp '

		SET @DynSQL=@DynSQL + N' From dbo.Topic tp '
		SET @DynSQL=@DynSQL + N' Left Join dbo.FollowUp fu ON fu.TopicID=tp.[ID] '
		SET @DynSQL=@DynSQL + N' Inner Join dbo.TopicStatus ts ON ts.[ID]=tp.TopicStatus '
		SET @DynSQL=@DynSQL + N' Where tp.ForumID= ' + CONVERT(nvarchar(20),@ForumID) + N' '

		--=====================================================
		--==ϵͳԱͰԿ״̬⣨Υ⣩ ͨûܿΥ
		--=====================================================
		IF dbo.UDF_UserAdmin(@User)<>1 AND dbo.UDF_UserModerator(@User,@ForumID)<>1
		BEGIN
			SET @DynSQL=@DynSQL + N' And tp.TopicStatus<>5 '
		END

		--===========================================================
		--==ǰ SQL   GROUP BY
		--===========================================================
		SET @DynSQL=@DynSQL + N' group by tp.[ID], tp.[User], tp.Title, tp.Hit, tp.AttachmentName, ts.[ID], ts.IconName, ts.DescriptionC '

		--=========================================================== 
		--== Order By Ӿ
		--== OrderBy='' ʹȱʡ order by UpdateTime DESC
		--=========================================================== 
		SET @OrderBy=LTRIM(RTRIM(@OrderBy))
		SET @OrderByOrder=LTRIM(RTRIM(@OrderByOrder))
		
		IF LEN(@OrderBy)=0 OR  LEN(@OrderByOrder)=0
			BEGIN
			SET @DynSQL=@DynSQL + N' order by UpdateTime DESC '
			END
		ELSE
			BEGIN
			SET @DynSQL=@DynSQL + N' order by [' + @OrderBy + N'] ' + @OrderByOrder
		END

	END

ELSE

	--=====================================================
	--==ͨѯΣǸṩĲѯһһ
	--=====================================================

	BEGIN

		--=====================================================
		--==ҳ 
		--=====================================================
		SET @DynSQL=N' SET NOCOUNT ON   '
		SET @DynSQL=@DynSQL + N' Declare @Paging table '
		SET @DynSQL=@DynSQL + N' ( '
		SET @DynSQL=@DynSQL + N' PagingID int identity(1,1), '
		SET @DynSQL=@DynSQL + N' [ID] int, '
		SET @DynSQL=@DynSQL + N' TopicUser nvarchar(50) COLLATE database_default,  '
		SET @DynSQL=@DynSQL + N' Online int, '
		SET @DynSQL=@DynSQL + N' Title nvarchar(200) COLLATE database_default, '
		SET @DynSQL=@DynSQL + N' Hit int, '
		SET @DynSQL=@DynSQL + N' AttachmentName nvarchar(2000) COLLATE database_default, '
		SET @DynSQL=@DynSQL + N' TopicStatus int,  '
		SET @DynSQL=@DynSQL + N' TopicStatusIconName nvarchar(50) COLLATE database_default, '
		SET @DynSQL=@DynSQL + N' TopicStatusDescriptionC nvarchar(200) COLLATE database_default, '
		SET @DynSQL=@DynSQL + N' UpdateTime datetime,  '
		SET @DynSQL=@DynSQL + N' FollowUp int '

		SET @DynSQL=@DynSQL + N' ) '

		--=====================================================
		--==ҳ 
		--=====================================================
		SET @DynSQL=@DynSQL + N' Insert into @Paging '

		SET @DynSQL=@DynSQL + N' Select distinct   '  
		SET @DynSQL=@DynSQL + N' tp.[ID] as [ID], '
		SET @DynSQL=@DynSQL + N' tp.[User] as TopicUser, '
		SET @DynSQL=@DynSQL + N' dbo.UDF_PublicLoginOnline(tp.[User]) as Online, '
		SET @DynSQL=@DynSQL + N' tp.Title as Title, '
		SET @DynSQL=@DynSQL + N' tp.Hit as Hit, '
		SET @DynSQL=@DynSQL + N' tp.AttachmentName as AttachmentName, '
		SET @DynSQL=@DynSQL + N' ts.[ID] as TopicStatus, '
		SET @DynSQL=@DynSQL + N' ts.IconName as TopicStatusIconName, '
		SET @DynSQL=@DynSQL + N' ts.DescriptionC as TopicStatusDescriptionC, '
		SET @DynSQL=@DynSQL + N' MAX(ISNULL(fu.PostTime,tp.PostTime)) as UpdateTime, '
		SET @DynSQL=@DynSQL + N' COUNT(fu.[ID]) as FollowUp '

		SET @DynSQL=@DynSQL + N' From dbo.Topic tp '
		SET @DynSQL=@DynSQL + N' Left Join dbo.FollowUp fu ON fu.TopicID=tp.[ID] '
		SET @DynSQL=@DynSQL + N' Inner Join dbo.TopicStatus ts ON ts.[ID]=tp.TopicStatus '
		SET @DynSQL=@DynSQL + N' Where tp.ForumID= ' + CONVERT(nvarchar(20),@ForumID) + N' '	


		--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
		
		--=====================================================
		--==̬ WHERE Ӿ
		--=====================================================
		SET @DynWhere=N''
		
		--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
		
		--=====================================================
		--==@Keyword ͳ0߿ַʾͳ: ֧ģͳ :
		--== @KeywordFlag Ǵ tp.Title, tp.Content, fu.Content ȫ
		--=====================================================
		IF @Keyword IS NOT NULL  
		BEGIN
			--=====================================================
			--==˵ո (Ϊ @Keyword ΪNULL,Խ˳ոĲŵ)
			--=====================================================
			SET @Keyword=RTRIM(LTRIM(@Keyword)) 
		
			IF @Keyword<>N'' 
			BEGIN
				--=====================================================
				--== @KeywordFlag δ
				--=====================================================
				IF @KeywordFlag=1
		
					--=====================================================
					--== Title вѯ
					--=====================================================
					BEGIN
						SET @DynWhere=@DynWhere + N' and tp.Title like N''%' + @Keyword + N'%'' ' 
					END
		
				ELSE IF @KeywordFlag=2
		
					--=====================================================
					--== tp.Content  fu.Content вѯ
					--=====================================================
					BEGIN
						SET @DynWhere=@DynWhere + N' and (tp.Content like N''%' + @Keyword + N'%'' or fu.Content like N''%' + @Keyword + N'%'') ' 
					END
		
				ELSE
		
					--=====================================================
					--==tp.Title  tp.Content  fu.Content вѯ
					--=====================================================
					BEGIN
						SET @DynWhere=@DynWhere + N' and (tp.Title like N''%' + @Keyword + N'%'' or tp.Content like N''%' + @Keyword + N'%'' or fu.Content like N''%' + @Keyword + N'%'') ' 
					END
			END
		END
		
		--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
		
		--=====================================================
		--==@UserName ͳ0߿ַʾͳƣ
		--== @UserFlag Ǵ Topic, FollowUp Ƕ
		--=====================================================
		IF @UserName IS NOT NULL  
		BEGIN
			--=====================================================
			--==˵ո (Ϊ @User ΪNULL,Խ˳ոĲŵ)
			--=====================================================
			SET @UserName=RTRIM(LTRIM(@UserName)) 
		
			IF @UserName<>N'' 
			BEGIN
				--=====================================================
				--== @UserFlag δ
				--=====================================================
				IF @UserFlag=1
		
					--=====================================================
					--== Topic вѯ
					--=====================================================
					BEGIN
						SET @DynWhere=@DynWhere + N' and tp.[User] = N''' + @UserName + N''' ' 
					END
		
				ELSE IF @UserFlag=2
		
					--=====================================================
					--== FollowUp вѯ

					--=====================================================
					BEGIN
						SET @DynWhere=@DynWhere + N' and fu.[User] = N''' + @UserName + N''' ' 
					END
		
				ELSE
		
					--=====================================================
					--==Topic  FollowUp вѯ
					--=====================================================
					BEGIN
						SET @DynWhere=@DynWhere + N' and (tp.[User] = N''' + @UserName + N''' or fu.[User] = N''' + @UserName + N''') ' 
					END
			END
		END
		
		--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
		
		--=====================================================
		--==@PostTimeFrom, @PostTimeTo  ͳ0NULLʾͳƣ
		--=====================================================
		IF @PostTimeFrom IS NOT NULL AND @PostTimeTo IS NOT NULL
		BEGIN
			set @DynWhere=@DynWhere + N' and tp.PostTime>=N''' + CONVERT(NVARCHAR(20),@PostTimeFrom) + N''' and tp.PostTime<=N''' + CONVERT(NVARCHAR(20),@PostTimeTo) + ''' '
		END
		
		--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
		
		--===========================================================
		--==@TopicStatus ͳ0NULLʾͳƣ
		--===========================================================
		IF @TopicStatus IS NOT NULL AND @TopicStatus<>0
		BEGIN
			set @DynWhere=@DynWhere + N' and tp.TopicStatus=' + CONVERT(NVARCHAR(20),@TopicStatus) 
				
		END

		--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

		--=====================================================
		--==ϵͳԱͰԿ״̬⣨Υ⣩ ͨûܿΥ
		--=====================================================
		IF dbo.UDF_UserAdmin(@User)<>1 AND dbo.UDF_UserModerator(@User,@ForumID)<>1
		BEGIN
			SET @DynSQL=@DynSQL + N' And tp.TopicStatus<>5 '
		END
		
		--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
		
		--===========================================================
		--==ǰ SQL  ̬ WHERE Ӿ @DynSQL Ѿ WHERE 1=1
		--===========================================================
		SET @DynSQL=@DynSQL + @DynWhere
		
		--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
		
		--===========================================================
		--==ǰ SQL   GROUP BY
		--===========================================================
		SET @DynSQL=@DynSQL + N' group by tp.[ID], tp.[User], tp.Title, tp.Hit, tp.AttachmentName, ts.[ID], ts.IconName, ts.DescriptionC '
		
		--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

		--=====================================================
		--== Order By Ӿ
		--== OrderBy='' ʹȱʡ order by UpdateTime DESC
		--=====================================================
		SET @OrderBy=LTRIM(RTRIM(@OrderBy))
		SET @OrderByOrder=LTRIM(RTRIM(@OrderByOrder))
		
		IF LEN(@OrderBy)=0 OR  LEN(@OrderByOrder)=0
			BEGIN
			SET @DynSQL=@DynSQL + N' order by UpdateTime DESC '
			END
		ELSE
			BEGIN
			SET @DynSQL=@DynSQL + N' order by [' + @OrderBy + N'] ' + @OrderByOrder
			END
		
		--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
		
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
		
--=====================================================
--== @Paging лȡ
--=====================================================
Declare @FirstRecord int
Declare @LastRecord int
		
set @FirstRecord=(@CurrentPage - 1) * @PageSize	--ǰҳһ¼ǰ
set @LastRecord=(@CurrentPage * @PageSize + 1)	--ǰҳһ¼
		
--=====================================================
--==ܼ¼ÿҳļ¼Ceiling()õΪҳ ע⣺count(*)   @PageSize Ϊ INTõ INTԣҪת Decimal(18,2)
--=====================================================
set @DynSQL=@DynSQL + N' Select *,PageCount=CEILING (Convert(decimal(18,2),(select count(*) from @Paging)) / Convert(decimal(18,2),' + Convert(nvarchar(20),@PageSize) + N')) From @Paging Where PagingID>' + Convert(nvarchar(20),@FirstRecord) + N' and PagingID<' + Convert(nvarchar(20),@LastRecord)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--============================================
--==鶯̬ĳȣԳϵͳ
--============================================
DECLARE @oPassDynSQL INT
EXEC dbo.PublicDynSQLLengthCheck @DynSQL,@oPassDynSQL OUT
IF @oPassDynSQL=0 BEGIN RETURN END

--=====================================================
--==ִж̬ SQL 䣬 ʼͳ
--=====================================================
EXEC(@DynSQL)
RETURN

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[TopicQuery]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PublicDynSQLLengthCheck    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PublicDynSQLLengthCheck]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PublicDynSQLLengthCheck]
GO

--====================================================================================
--==ִж̬ SQL ֮ǰ䳤ȣﵽ޶ NVARCHAR(4000) 򱨸
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.PublicDynSQLLengthCheck

@DynSQL NVARCHAR(4000),			--̬ SQL 
@oPass INT OUT				--ûг 1  0

AS


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--===============================================
--==ȳϵͳޣ
--==ע⣺ LEN() ڼַȵʱ򣬻ὫβĿոų⣬ĳЩ£ҪַβĿոЩոڣַȴﵽ 4000Ȼ LEN() 㣬ȴ 4000Ϊ˽⣬ʹ DATALENGTH() 
--===============================================
IF DATALENGTH(@DynSQL)>=8000

	BEGIN
		SET @oPass=0
		RAISERROR(N'ղŵӴ󣬳ϵͳޡִ²<li>˹</li><li>ϵϵͳԱ</li>',16,1)
		RETURN
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PublicDynSQLLengthCheck]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.TopicSelect    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TopicSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[TopicSelect]
GO

--====================================================================================
--==ݸ TopicID ѡȡ Topic ͬʱ Topic   Hit ֵ++
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-11-08
--====================================================================================

CREATE PROCEDURE dbo.TopicSelect

@User nvarchar(50),	-- ASPX ˴ݹĵǰû

@TopicID INT		--ָ Topic ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== Topic ID   Forum ID
--=====================================================
DECLARE @ForumID INT
SET @ForumID=dbo.UDF_GetForumIDFromTopicID(@TopicID)

--=====================================================  
--==ûȨ޼  Ҫָ Forum Ȩ޼飬ǹ Forum ߵǰû Admin ߵǰûǸ Forum İ ߵǰû UserForums ж˶Ը Forum ĶȨޣ У
--=====================================================  
DECLARE @oPass INT  
EXEC dbo.TopicUserAuthenticationSelect @User,@ForumID,@oPass OUT  
IF @oPass=0 BEGIN RETURN END  

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==潫õһЩ
--=====================================================
/*
DECLARE @CurrentUser NVARCHAR(50)
SET @CurrentUser=dbo.UDF_UserCurrent()
*/

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== Topic Hit ֵ++
--=====================================================
UPDATE dbo.Topic SET Hit=Hit+1 WHERE [ID]=@TopicID

--=====================================================
--==ѡȡָ Topic ¼
--=====================================================
SELECT

	frm.[ID] as ForumID,
	tps.NameC as TopicStatus,
	tps.[ID] as TopicStatusID,
	tps.IconName as IconName,
	tps.DescriptionC as DescriptionC,
	tp.[ID] as [ID],
	tp.[User] as [User],
	dbo.UDF_PublicLoginOnline(tp.[User]) as Online,
	tp.PostTime as PostTime,
	tp.Title as Title,
	tp.Content as Content,
	tp.AttachmentName as AttachmentName,
	tp.Hit as Hit,

	CanModify=
	CASE 
		WHEN LOWER(RTRIM(LTRIM(tp.[User])))=LOWER(RTRIM(LTRIM(@User))) THEN 1
		WHEN dbo.UDF_UserModerator(@User,@ForumID)=1 THEN 1
		ELSE 0
	END,

	CanSetStatus=
	CASE
		WHEN dbo.UDF_UserModerator(@User,@ForumID)=1 THEN 1
		ELSE 0
	END	

FROM 	dbo.Topic tp 
INNER JOIN dbo.Forum frm ON frm.[ID]=tp.ForumID
INNER JOIN dbo.TopicStatus tps ON tps.[ID]=tp.TopicStatus

WHERE tp.[ID]=@TopicID

ORDER BY tp.PostTime DESC

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[TopicSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.TopicSave    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TopicSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[TopicSave]
GO

--====================================================================================
--== Topic
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-11-08
--====================================================================================

CREATE PROCEDURE dbo.TopicSave

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@ForumID int,					--Forum  ID
@Title nvarchar(200),				--
@Content ntext,					-- ޳ı
@AttachmentName nvarchar(2000),		--ⷢ

@oNewID int OUT				--¼¼ ID 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.TopicUserAuthenticationSave @User,@ForumID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ǰûǰʱ
--=====================================================
DECLARE @CurrentUser nvarchar(50)
DECLARE @CurrentTime nvarchar(50)

SET @CurrentUser=@User
SET @CurrentTime=GETDATE()

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==
--=====================================================
INSERT INTO dbo.Topic(ForumID,[User],PostTime,Title,Content,AttachmentName) VALUES(@ForumID,@CurrentUser,@CurrentTime,@Title,@Content,@AttachmentName)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ոձϢ ID
--======================================================
SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[TopicSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.FollowUpSelect    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FollowUpSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[FollowUpSelect]
GO

--====================================================================================
--==ݸ TopicID ѡȡ Topic µĸ
--== @TopicID ѡȡ TopicID иǸȡֵΪ FollowUp.ID ãѡȡ FollowUp ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.FollowUpSelect

@User nvarchar(50),	-- ASPX ˴ݹĵǰû

@TopicID INT		--ָ Topic ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.FollowUpUserAuthenticationSelect @User,@TopicID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

/*
--=====================================================
--==潫õһЩ
--=====================================================
DECLARE @CurrentUser NVARCHAR(50)
SET @CurrentUser=dbo.UDF_UserCurrent()
*/

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

IF @TopicID>=0

	BEGIN
		--=====================================================
		--==ѡȡָ Topic ¼µ FollowUp
		--=====================================================
		SELECT
			
			fu.TopicID as TopicID,
			fu.[ID] as [ID],
			fu.[User] as [User],
			dbo.UDF_PublicLoginOnline(fu.[User]) as Online,
			fu.PostTime as PostTime,
			fu.Content as Content,
			fu.AttachmentName as AttachmentName,

			CanModify=
			CASE 
				WHEN LOWER(RTRIM(LTRIM(fu.[User])))=LOWER(RTRIM(LTRIM(@User))) THEN 1
				WHEN dbo.UDF_UserModerator(@User,dbo.UDF_GetForumIDFromTopicID(fu.TopicID))=1 THEN 1
				ELSE 0
			END	
	
		
		FROM 	dbo.FollowUp fu
		
		WHERE fu.TopicID=@TopicID

		ORDER BY fu.PostTime ASC
	END

ELSE
	BEGIN
		--=====================================================
		--== TopicID ľֵ FollowUpID ѡȡ FollowUp ¼
		--=====================================================
		SELECT
		
			fu.TopicID as TopicID,
			fu.[ID] as [ID],
			fu.[User] as [User],
			dbo.UDF_PublicLoginOnline(fu.[User]) as Online,
			fu.PostTime as PostTime,
			fu.Content as Content,
			fu.AttachmentName as AttachmentName,

			CanModify=
			CASE 
				WHEN LOWER(RTRIM(LTRIM(fu.[User])))=LOWER(RTRIM(LTRIM(@User))) THEN 1
				WHEN dbo.UDF_UserModerator(@User,dbo.UDF_GetForumIDFromTopicID(fu.TopicID))=1 THEN 1
				ELSE 0
			END	
	
		
		FROM 	dbo.FollowUp fu
		
		WHERE fu.[ID]=ABS(@TopicID)

		ORDER BY fu.PostTime ASC
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[FollowUpSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.FollowUpSave    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FollowUpSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[FollowUpSave]
GO

--====================================================================================
--== FollowUp
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.FollowUpSave

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@TopicID int,					-- ID
@Content ntext,					--
@AttachmentName nvarchar(2000)		--ĸ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.FollowUpUserAuthenticationSave @User,@TopicID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ǰûǰʱ
--=====================================================
DECLARE @CurrentUser nvarchar(50)
DECLARE @CurrentTime nvarchar(50)

SET @CurrentUser=@User
SET @CurrentTime=GETDATE()

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==
--=====================================================
INSERT INTO dbo.FollowUp(TopicID,[User],PostTime,Content,AttachmentName) VALUES(@TopicID,@CurrentUser,@CurrentTime,@Content,@AttachmentName)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ɾ˸󣬼鵱ǰ Topic µĸĿݸĿ״̬ ⣬ʵ⣬⣩
--=====================================================
EXEC dbo.TopicStatusSet @TopicID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[FollowUpSave]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.FollowUpModify    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FollowUpModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[FollowUpModify]
GO

--====================================================================================
--==޸ FollowUp
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.FollowUpModify

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@FollowUpID int,				-- ID
@Content ntext,					--
@AttachmentName nvarchar(2000)		--ĸ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.FollowUpUserAuthenticationModify @User,@FollowUpID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==޸
--=====================================================
UPDATE dbo.FollowUp SET

	Content=@Content, 
	AttachmentName=@AttachmentName

WHERE [ID]=@FollowUpID


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[FollowUpModify]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.FollowUpUserAuthenticationModify    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FollowUpUserAuthenticationModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[FollowUpUserAuthenticationModify]
GO

--====================================================================================
--==鵱ǰû޸ָȨ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.FollowUpUserAuthenticationModify

@User nvarchar(50),		-- ASPX ˴ݹĵǰû

@FollowUpID INT,		--ָ FollowUp  ID
@oPass INT OUT		--ͨ 1 0

AS


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--==========================================
--==ȼ ͨ
--==========================================
SET @oPass=1

--==========================================
--==ǰûָ FollowUp  û
--==========================================
DECLARE @CurrentUser NVARCHAR(50)
DECLARE @ThisUser NVARCHAR(50)

SET @CurrentUser=@User
SET @ThisUser=(Select [User] From dbo.FollowUp Where [ID]=@FollowUpID)

--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--xx޸Ĳκûֻܡ ޸ԼݣϵͳԱͰ⣩
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
IF @CurrentUser<>@ThisUser AND dbo.UDF_UserAdmin(@CurrentUser)<>1 AND dbo.UDF_UserModerator(@CurrentUser,dbo.UDF_GetForumIDFromFollowUpID(@FollowUpID))<>1
BEGIN
	SET @oPass=0
	RAISERROR(N'Owner of this followup is %s , user %s is not authorized to modify it',16,1,@ThisUser,@CurrentUser)
	RETURN
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[FollowUpUserAuthenticationModify]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.TopicUserAuthenticationModify    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TopicUserAuthenticationModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[TopicUserAuthenticationModify]
GO

--====================================================================================
--==鵱ǰû޸ָȨ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-11-08
--====================================================================================

CREATE PROCEDURE dbo.TopicUserAuthenticationModify

@User nvarchar(50),		-- ASPX ˴ݹĵǰû

@TopicID INT,			--ָ Topic  ID
@oPass INT OUT		--ͨ 1 0

AS


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--==========================================
--==ȼ ͨ
--==========================================
SET @oPass=1

--==========================================
--==ǰûָ Topic  û
--==========================================
DECLARE @CurrentUser NVARCHAR(50)
DECLARE @ThisUser NVARCHAR(50)

SET @CurrentUser=@User
SET @ThisUser=(Select [User] From dbo.Topic Where [ID]=@TopicID)

--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--xx޸Ĳκûֻܡ ޸ԼݣϵͳԱͰ⣩
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
IF @CurrentUser<>@ThisUser AND dbo.UDF_UserAdmin(@CurrentUser)<>1 AND dbo.UDF_UserModerator(@CurrentUser,dbo.UDF_GetForumIDFromTopicID(@TopicID))<>1
BEGIN
	SET @oPass=0
	RAISERROR(N'Owner of this topic is  %s , user %s is not authorized to modify it.',16,1,@ThisUser,@CurrentUser)
	RETURN
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[TopicUserAuthenticationModify]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.TopicModify    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TopicModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[TopicModify]
GO

--====================================================================================
--==޸ Topic
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.TopicModify

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@TopicID int,					-- ID
@Title nvarchar(200),				--
@Content ntext,					--
@AttachmentName nvarchar(2000)		--ĸ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.TopicUserAuthenticationModify @User,@TopicID,@oPass OUT
IF @oPass=0 BEGIN RETURN END


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==޸
--=====================================================
UPDATE dbo.Topic

SET 
	Title=@Title,
	Content=@Content,
	AttachmentName=@AttachmentName

WHERE [ID]=@TopicID


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[TopicModify]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.TopicDelete    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TopicDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[TopicDelete]
GO

--====================================================================================
--==ɾ Topic
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.TopicDelete

@User nvarchar(50),		-- ASPX ˴ݹĵǰû

@TopicID int			-- ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.TopicUserAuthenticationDelete @User,@TopicID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ɾ
--=====================================================
DELETE FROM dbo.Topic WHERE [ID]=@TopicID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[TopicDelete]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.FollowUpDelete    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FollowUpDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[FollowUpDelete]
GO

--====================================================================================
--==ɾ FollowUp
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.FollowUpDelete

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@FollowUpID int			-- ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.FollowUpUserAuthenticationDelete @User,@FollowUpID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ɾ
--=====================================================
DELETE FROM dbo.FollowUp WHERE [ID]=@FollowUpID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== FollowUp ID  TopicID
--=====================================================
DECLARE @TopicID INT
SET @TopicID=dbo.UDF_GetTopicIDFromFollowUpID(@FollowUpID)

--=====================================================
--==ɾ˸󣬼鵱ǰ Topic µĸĿݸĿ״̬ ⣬ʵ⣬⣩
--=====================================================
EXEC dbo.TopicStatusSet @TopicID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[FollowUpDelete]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.TopicStatusSet    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TopicStatusSet]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[TopicStatusSet]
GO

--====================================================================================
--==ϵͳݸԶ Topic Status
--==TopicStatus ǰ Status ޸и⣩ϵͳݸԶã Status ⣬⣩˹
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-11-08
--====================================================================================

CREATE PROCEDURE dbo.TopicStatusSet

@TopicID int			-- ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼飨Ϊ SP ν TopicStatus һЩȫģݵãӵ ⡱ ǿ⡱ ⡱ һЩ Status ȻҪȨ޼飬 TopicStatusSetElite, TopicStatusSetTaboo Ҫ
--=====================================================

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==Ȼõǰ Topic µĸ Topic   Status
--=====================================================
DECLARE @TopicStatus INT

SET @TopicStatus=
(
	Select 
		Case 
			When Count([ID]) IS NULL Then 1 			--
			When Count([ID])<1 Then 1				--
			When Count([ID])>=1 And Count([ID])<10 Then 2		--ǿ
			When Count([ID])>=10 Then 3				--
		 End 

		From dbo.FollowUp Where TopicID=@TopicID
)

--=====================================================
--==
--=====================================================
UPDATE dbo.Topic SET TopicStatus=@TopicStatus WHERE [ID]=@TopicID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[TopicStatusSet]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.TopicUserAuthenticationSetStatus    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TopicUserAuthenticationSetStatus]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[TopicUserAuthenticationSetStatus]
GO

--====================================================================================
--==鵱ǰû޸ָ Status Ȩ
--==ߣϵͳԱ޸ĳ⣬ȻֻаϵͳԱſԽĳΪ Elite  TabooҲûȨ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-11-08
--====================================================================================

CREATE PROCEDURE dbo.TopicUserAuthenticationSetStatus

@User nvarchar(50),		-- ASPX ˴ݹĵǰû

@TopicID INT,			--ָ Topic  ID
@oPass INT OUT		--ͨ 1 0

AS


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--==========================================
--==ȼ ͨ
--==========================================
SET @oPass=1

--==========================================
--==ǰûָ Topic  û
--==========================================
/*
DECLARE @CurrentUser NVARCHAR(50)
SET @CurrentUser=dbo.UDF_UserCurrent()
*/

--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--xx SetElite, SetTaboo  Topic  Status ΪΥ⣩ֻϵͳԱͰȨ
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
IF dbo.UDF_UserAdmin(@User)<>1 AND dbo.UDF_UserModerator(@User,dbo.UDF_GetForumIDFromTopicID(@TopicID))<>1
BEGIN
	SET @oPass=0
	RAISERROR(N'User %s is not system admin nor moderator, you are not authorized to set change the status of this topic.',16,1,@User)
	RETURN
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[TopicUserAuthenticationSetStatus]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.TopicUserAuthenticationDelete    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TopicUserAuthenticationDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[TopicUserAuthenticationDelete]
GO

--====================================================================================
--==鵱ǰûɾָȨ
--==һ߿ɾԼ⣬ǰǸ⻹ûиһ˸ֻϵͳԱͰɾ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-11-08
--====================================================================================

CREATE PROCEDURE dbo.TopicUserAuthenticationDelete

@User nvarchar(50),		-- ASPX ˴ݹĵǰû

@TopicID INT,			--ָ Topic  ID
@oPass INT OUT		--ͨ 1 0

AS


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--==========================================
--==ȼ ͨ
--==========================================
SET @oPass=1

--==========================================
--==ǰûָ Topic  û
--==========================================
DECLARE @CurrentUser NVARCHAR(50)
DECLARE @ThisUser NVARCHAR(50)

SET @CurrentUser=@User
SET @ThisUser=(Select [User] From dbo.Topic Where [ID]=@TopicID)

--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--xxȣ޸Ĳκûֻܡ ޸ԼݣϵͳԱͰ⣩
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
IF @CurrentUser<>@ThisUser AND dbo.UDF_UserAdmin(@CurrentUser)<>1 AND dbo.UDF_UserModerator(@CurrentUser,dbo.UDF_GetForumIDFromTopicID(@TopicID))<>1
BEGIN
	SET @oPass=0
	RAISERROR(N'Owner of this topic is  %s , user %s is not authorized to delete it.',16,1,@ThisUser,@CurrentUser)
	RETURN
END

--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--==ΣǷѾиУ߱˲ɾϵͳԱɾ
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
IF EXISTS (Select [ID] From dbo.FollowUp Where TopicID=@TopicID)
BEGIN
	--==============================================
	--==鵱ǰûɫϵͳԱ߰򲻿ɾ
	--==============================================
	IF dbo.UDF_UserAdmin(@CurrentUser)<>1 AND dbo.UDF_UserModerator(@CurrentUser,dbo.UDF_GetForumIDFromTopicID(@TopicID))<>1
	BEGIN
		RAISERROR(N'Although you are the owner of this topic, you are not allowed to delete it because there are already followups after this topic. <BR>Please contact system admin or moderator to process it.<BR>Thank you.',16,1)
	END
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[TopicUserAuthenticationDelete]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.FollowUpUserAuthenticationDelete    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FollowUpUserAuthenticationDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[FollowUpUserAuthenticationDelete]
GO

--====================================================================================
--==鵱ǰûɾָȨ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.FollowUpUserAuthenticationDelete

@User nvarchar(50),		-- ASPX ˴ݹĵǰû

@FollowUpID INT,		--ָ FollowUp  ID
@oPass INT OUT		--ͨ 1 0

AS


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--==========================================
--==ȼ ͨ
--==========================================
SET @oPass=1

--==========================================
--==ǰûָ FollowUp  û
--==========================================
DECLARE @CurrentUser NVARCHAR(50)
DECLARE @ThisUser NVARCHAR(50)

SET @CurrentUser=@User
SET @ThisUser=(Select [User] From dbo.FollowUp Where [ID]=@FollowUpID)

--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--xx޸Ĳκûֻܡ ɾԼݣϵͳԱͰ⣩
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
IF @CurrentUser<>@ThisUser AND dbo.UDF_UserAdmin(@CurrentUser)<>1 AND dbo.UDF_UserModerator(@CurrentUser,dbo.UDF_GetForumIDFromFollowUpID(@FollowUpID))<>1
BEGIN
	SET @oPass=0
	RAISERROR(N'Owner of this followup is %s , user %s is not authorized to delete it.',16,1,@ThisUser,@CurrentUser)
	RETURN
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[FollowUpUserAuthenticationDelete]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PublicDictionaryItemList    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PublicDictionaryItemList]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PublicDictionaryItemList]
GO

--====================================================================================
--== BL е PopulateSelectBox() 
--==ĳֵȡĿ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.PublicDictionaryItemList

@DictionaryType nvarchar(50),		--ֵ
@ColumnName nvarchar(100),		--ΪSlectBox Option   (100ַ)
@ValueColumnName nvarchar(100)	--ΪSelectBox Option Value 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--==ԽӰ
--================================================
SET NOCOUNT ON

--================================================
--==̬SQL
--================================================
DECLARE @DynSQL NVARCHAR(4000)

--================================================
--==ʼ
--================================================
SET @DynSQL = N' SET NOCOUNT ON '
SET @DynSQL = @DynSQL + N' SELECT DISTINCT '
SET @DynSQL = @DynSQL + N' dt.' + @ValueColumnName + N' AS ' + @ValueColumnName + N', ' 
SET @DynSQL = @DynSQL + N' dt.' + @ColumnName + N' AS ' + @ColumnName + N' '

SET @DynSQL = @DynSQL + N' FROM dbo.' + @DictionaryType + N' dt '

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=======================================
--==ʼִж̬
--=======================================
EXEC(@DynSQL)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PublicDictionaryItemList]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PublicDictionaryItemListByParentFilter    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PublicDictionaryItemListByParentFilter]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PublicDictionaryItemListByParentFilter]
GO

--====================================================================================
--== BL еPopulateHierarchicalSelectBox()
--==ֵеĿոĸֵ˶壬طĿ
--==ֵ˶ ֱӹ WHERE 
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.PublicDictionaryItemListByParentFilter

@DictionaryType nvarchar(50),		--ֵ Color,Goodsȵȵȣ
@ColumnName nvarchar(100),		--ΪSlectBox Option   (100ַ)
@ValueColumnName nvarchar(100),	--ΪSelectBox Option Value
@ParentFilter nvarchar(100)		--磺 where GoodsColorSize.GoodsID=123 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--==ԽӰ
--================================================
SET NOCOUNT ON

--=======================================
--==̬SQL
--=======================================
DECLARE @DynSQL NVARCHAR(4000)

--=======================================
--==ʼ
--=======================================
SET @DynSQL = N' SET NOCOUNT ON '
SET @DynSQL = @DynSQL + N' SELECT DISTINCT ' 
SET @DynSQL = @DynSQL + N' dt.' + @ValueColumnName + N' AS ' + @ValueColumnName + N',' 
SET @DynSQL = @DynSQL + N' dt.' + @ColumnName + N' AS ' + @ColumnName + N' ' 

SET @DynSQL = @DynSQL + N' FROM dbo.' + @DictionaryType + N' dt '

--=======================================
--==ֵ޶
--=======================================
IF RTRIM(LTRIM(@ParentFilter))<>N''
BEGIN
	SET @DynSQL = @DynSQL + N' WHERE ' + @ParentFilter + N' '
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=======================================
--==ʼִж̬
--=======================================
EXEC(@DynSQL)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PublicDictionaryItemListByParentFilter]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.TopicStatusSetTaboo    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TopicStatusSetTaboo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[TopicStatusSetTaboo]
GO

--====================================================================================
--==ĳΪΥ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-11-08
--====================================================================================

CREATE PROCEDURE dbo.TopicStatusSetTaboo

@User nvarchar(50),		-- ASPX ˴ݹĵǰû

@TopicID int			-- ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼飨ֻϵͳԱͰȨ޷һ⣩
--=====================================================
DECLARE @oPass INT
EXEC dbo.TopicUserAuthenticationSetStatus @User,@TopicID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==
--=====================================================
UPDATE dbo.Topic SET TopicStatus=5 WHERE [ID]=@TopicID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[TopicStatusSetTaboo]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.TopicStatusSetElite    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TopicStatusSetElite]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[TopicStatusSetElite]
GO

--====================================================================================
--==ĳΪ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-11-08
--====================================================================================

CREATE PROCEDURE dbo.TopicStatusSetElite

@User nvarchar(50),		-- ASPX ˴ݹĵǰû

@TopicID int			-- ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼飨ֻϵͳԱͰȨ޷һ⣩
--=====================================================
DECLARE @oPass INT
EXEC dbo.TopicUserAuthenticationSetStatus @User,@TopicID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==
--=====================================================
UPDATE dbo.Topic SET TopicStatus=4 WHERE [ID]=@TopicID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[TopicStatusSetElite]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserRoleSelect    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserRoleSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserRoleSelect]
GO

--====================================================================================
--== UserRole
--====================================================================================
--==Ȩ 2001-2005 
--==޸ 2005-02-18
--====================================================================================

CREATE PROCEDURE dbo.UserRoleSelect

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

SELECT 
	[ID],
	[Name],
	NameC

FROM dbo.UserRole ORDER BY [ID]

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserRoleSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserAccountSelect    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserAccountSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserAccountSelect]
GO

--====================================================================================
--== Users ûĻ
--== UI.Admin.Account.UserAccountUI.cs
--==ṩ˺ϷûֻѡûҪȨ޼
--==ṩûΪգѡȫûҲýȨ޼飬νϵͳݿָʱʱʹõ BuiltInConnectionString ʹõûʺִв
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserAccountSelect 

 @Name nvarchar(50)			--û

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼飨Ҫ
--=====================================================

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================
--==ûϷǿգøû Profile ʵҪȨޣ
--==ûǷգ򣬻û Profile ؽȨ޼飩
--=====================================================
IF LEN(LTRIM(RTRIM(@Name)))>0

	BEGIN

		--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

		SELECT TOP 1
			[Name],
			[Password],
			ISNULL(FirstName,N'') AS FirstName,
			ISNULL(LastName,N'') AS LastName,
			ISNULL(Tel,N'') AS Tel,
			ISNULL(Email,N'') AS Email,
			Sex,
			ISNULL(Organization,N'') AS Organization,
			ISNULL(Remark,N'') AS Remark,
			RegisterDate AS RegisterDate,
			dbo.UDF_UserRoleJoin([Name]) AS UserRoles,
			--IsClient AS IsClient,	//CANCEL
			dbo.UDF_PublicLoginOnline([Name]) AS Online

		FROM dbo.Users

		WHERE [Name]=@Name

		--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
	END
ELSE

	BEGIN

		--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

		SELECT DISTINCT
			[Name],
			[Password],
			ISNULL(FirstName,N'') AS FirstName,
			ISNULL(LastName,N'') AS LastName,
			ISNULL(Tel,N'') AS Tel,
			ISNULL(Email,N'') AS Email,
			Sex,
			ISNULL(Organization,N'') AS Organization,
			ISNULL(Remark,N'') AS Remark,
			RegisterDate AS RegisterDate,
			dbo.UDF_UserRoleJoin([Name]) AS UserRoles,
			--IsClient AS IsClient,	//CANCEL
			dbo.UDF_PublicLoginOnline([Name]) AS Online

		FROM dbo.Users

		--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
	END
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserAccountSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserAccountSave    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserAccountSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserAccountSave]
GO

--====================================================================================
--==û˺
--==ȼ鵱ǰûǷѾڣڣɾٴ Login, User
--==ôûд Users 
--== @Silent=1 ʾеݿָҪ½ûϵͳ£ʹõ BuiltInConnectionString еû˺ţǲҪûȨ (CANCEL)
--==ڰģʽ OverWrite ϶ 1 ˵ûǰģʽ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserAccountSave

@User nvarchar(50),					-- ASPX ˴ݹĵǰû

@Name nvarchar(50),					--û
@Password nvarchar(20),				--ԭģжǷΪգΪʹɵ @EncryptedPassword Ҳ0   󳤶 20
@EncryptedPassword nvarchar(200),			--ļʽ뽫 Users  Login ʱ򣬽ͬ¼ 󳤶 200
@IgnorePassword int,					--޸ģʽʹһ checkboxϵͳ루ʱ򲢲룩1/2
@FirstName nvarchar(50),				--
@LastName nvarchar(50),				--
@Tel nvarchar(50),					--绰
@Email nvarchar(100),					--ʼ
@Sex int,						--Ա
@Organization nvarchar(200),				--
@Remark nvarchar(2000),				--ע
@UserGroups nvarchar(4000),				--ûб ע⣺ڱԱʱûʹбַΪһڵûۼܳ4000ַһûۼ̫ܳ4000ַ
@UserRoles nvarchar(4000),				--1,2, ... ʽ

@OverWrite INT					-- 1  Ļûڣ͸ǣ޸״̬  0 Ļûڣٴ״̬

AS


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================

IF dbo.UDF_UserAdmin(@User)<>1

BEGIN
	RAISERROR(N'Ȩ޲ʺ޸ĺʹ',16,1)
	RETURN
END

--=====================================================
--==
--=====================================================
SET @Name=LTRIM(RTRIM(@Name))
SET @Password=LTRIM(RTRIM(@Password))
SET @EncryptedPassword=LTRIM(RTRIM(@EncryptedPassword))
SET @UserRoles=LTRIM(RTRIM(@UserRoles))

--=====================================================
--==
--=====================================================
IF ((@Name=N'') OR (@Name IS NULL) OR (@Password=N'') OR (@Password IS NULL) OR (@EncryptedPassword=N'') OR (@EncryptedPassword IS NULL) OR (@UserRoles=N'') OR (@UserRoles IS NULL)) AND @IgnorePassword<>1
BEGIN
	RAISERROR(N'û룬ΪգͬʱûӦһɫ',16,1)
	RETURN
END

--=====================================================
--==ûѾڣҵǰģʽ@OverWrite=0ٴ
--=====================================================
IF (dbo.UDF_PublicProfileExists(@Name)=1) AND (@OverWrite=0)
BEGIN
	RAISERROR(N'ûѾڡ',16,1)
	RETURN
END

--=====================================================
--==루@IgnorePassword=1˵޸Ľﲢû Password ݹҪȴ Users ȡû Password
--=====================================================
IF  @IgnorePassword=1
BEGIN
	SELECT @EncryptedPassword=[Password] FROM dbo.Users WHERE [Name]=@Name
END

--=====================================================
--==ɾûǰ Users  е߼
--=====================================================
DELETE FROM dbo.Users WHERE [Name]=@Name

--=====================================================
--==޸ģʽȽ UserForums иûĴڼ¼ɾ
--=====================================================
IF @OverWrite=1
BEGIN
	DELETE FROM dbo.UserForums WHERE [User]=@Name
END

--=====================================================
--==Ϊд users û Instances  ӵһµʱ䣬ͳһ浱ǰʱ䣨ͬһ users ͬһûĲͬ Instance עʱк뼶𣬵 UserAccountQuery ѡظ User ¼
--=====================================================
DECLARE @RegisterDate datetime
SET @RegisterDate=GETDATE()

--=====================================================
--==ر
--=====================================================
DECLARE @UserRole INT 		

--=====================================================
--==һ Cursor  dbo.UDF_PublicSplit( @UserRoles,',') ô UserRole ַԪ
--=====================================================
DECLARE CursorUserRole CURSOR FOR SELECT Element FROM dbo.UDF_PublicSplit(@UserRoles,N',') FOR READ ONLY
OPEN CursorUserRole

FETCH NEXT FROM CursorUserRole INTO @UserRole
WHILE @@FETCH_STATUS=0
BEGIN

	--=====================================================
	--==浽 Users 
	--=====================================================
	INSERT INTO dbo.Users ([Name],[Password],FirstName,LastName,Tel,Email,Sex,Organization,Remark,RegisterDate,UserRole) values (@Name,@EncryptedPassword,@FirstName,@LastName,@Tel,@Email,@Sex,@Organization,@Remark,@RegisterDate,@UserRole)
	FETCH NEXT FROM CursorUserRole INTO @UserRole
END

CLOSE CursorUserRole
DEALLOCATE CursorUserRole

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @UserGroups еûбɵ UserGroup 浽 UserGroupsȻҪȴ UserGroups ȥĸûļ¼ɾ
--=====================================================
DELETE FROM dbo.UserGroups WHERE [User]=@Name
INSERT dbo.UserGroups (UserGroupID,[User]) SELECT [Element],@Name FROM dbo.UDF_PublicSplit(@UserGroups,N',')

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserAccountSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserAccountDelete    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserAccountDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserAccountDelete]
GO

--====================================================================================
--==ݿеĳûɾɾʵ login,user,profile
--==ﵽЧֻҪû login,user,profile κεط֣Ҫɾ orphan û
--==ɾû
--==2008/11/11 - ڲ login, userֻɾ profile 
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserAccountDelete

@User nvarchar(50),		-- ASPX ˴ݹĵǰû

@Name nvarchar(50),		--û룩
--@Silent INT,			--ģʽݿָؽûϵͳΣʱʹ BuiltInConnectionString ˺ţϣƹȨ޼ @Silent=0 ҪȨޣ  @Silent=1 ƹȨ޼飩
@oSuccess INT OUT		--ǷɹΪ SP  UserAccountSave ãʱɾʧܣӦֹͣ񣬵ʵϣSP õһ SP ʧܣӰ SP ļУֻиݷصĳɹ־ǿж

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--========================================
--==ȼǳɹ
--========================================
SET @oSuccess=1

--=====================================================
--==ûȨ޼
--=====================================================

IF dbo.UDF_UserAdmin(@User)<>1

BEGIN
	SET @oSuccess=0
	RAISERROR(N'Ȩ޲ʺɾ',16,1)
	RETURN
END


--========================================
--==
--========================================
SET @Name=RTRIM(LTRIM(@Name))

--========================================
--==ûΪ
--========================================
IF (@Name=N'') OR (@Name IS NULL)
	
BEGIN
	SET @oSuccess=0
	RAISERROR(N'ûΪա',16,1)
	RETURN
END

--========================================
--==û
--========================================
IF dbo.UDF_PublicProfileExists(@Name)=0

BEGIN
	SET @oSuccess=0
	RAISERROR(N'û %s ڡ',16,1,@Name)
	RETURN
END

--========================================
--==ɾû UserForums жȨ
--========================================
IF @Name IN (Select [User] From dbo.UserForums)

BEGIN
	DELETE FROM dbo.UserForums WHERE [User]=@Name
END

--========================================
--==ɾû UserGroups еļ¼Ա
--========================================
IF @Name IN (Select [User] From dbo.UserGroups)

BEGIN
	DELETE FROM dbo.UserGroups WHERE [User]=@Name
END

--========================================
--==ɾû profile
--========================================
IF @Name IN (Select [Name] From dbo.Users)

BEGIN
	DELETE FROM dbo.Users WHERE [Name]=@Name
END


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ



/*

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--========================================
--==ǰû sysadmin  ServerRole Уֻ sysadmin Server Role µûȨ޸ģɾûһ㲻ᷢΪ Admin ûʱ򣬻Զ֮ sysadmin Server Role
--==ݿָΣҪؽûϵͳʱʹ BuiltInConnectionString ûû sysadmin Ȩޣм鲻
--========================================
IF IS_SRVROLEMEMBER('sysadmin')=0
	BEGIN
		SET @oSuccess=0
		RAISERROR(N'Ȩ޲нʺɾ',16,1)
		RETURN
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--========================================
--==ûΪ
--========================================
IF (@Name=N'') OR (@Name IS NULL)
	BEGIN
		SET @oSuccess=0
		RAISERROR(N'ûΪա',16,1)
		RETURN
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--========================================
--==û
--========================================
IF (dbo.UDF_PublicLoginExists(@Name)=0) AND (dbo.UDF_PublicUserExists(@Name)=0) AND (dbo.UDF_PublicProfileExists(@Name)=0)
	BEGIN
		SET @oSuccess=0
		RAISERROR(N'û %s ڡ',16,1,@Name)
		RETURN
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--========================================
--==û  @Silent=0/1 Σ
--========================================
IF dbo.UDF_PublicLoginOnline(@Name)=1
BEGIN

	IF @Silent=0
		BEGIN
			--========================================
			--== @Silent=0 ٴ
			--========================================
			SET @oSuccess=0
			RAISERROR(N'û %s ߣĿǰɾ޸ġ',16,1,@Name)
			RETURN
		END
	ELSE
		BEGIN
			--========================================
			--== @Silent=1  Ҫָݿ⣬ûϵͳؽҪģʽûߣȥ
			--==ҵû SPID Щ SPID ɱ
			--========================================
			DECLARE @Spid SMALLINT

			DECLARE SpidCursor CURSOR FOR SELECT SPID FROM dbo.UDF_PublicLoginSpid(@Name) FOR READ ONLY
			OPEN SpidCursor
			FETCH NEXT FROM SpidCursor INTO @Spid

			WHILE @@FETCH_STATUS = 0
			BEGIN
				DECLARE @DynSql nvarchar(4000)
				SET @DynSql=' KILL '+ convert(nvarchar(20),@Spid)
				EXECUTE(@DynSql)
				FETCH NEXT FROM SpidCursor INTO @Spid
			END

			CLOSE SpidCursor
			DEALLOCATE SpidCursor
		END

END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--========================================
--==ʼɾû
--========================================
ELSE
	BEGIN

		--========================================
		--==ɾû UserForums жȨ
		--========================================
		IF @Name IN (Select [User] From dbo.UserForums)
		BEGIN
			DELETE FROM dbo.UserForums WHERE [User]=@Name
		END

		--========================================
		--==ɾû profile
		--========================================
		IF @Name IN (Select [Name] From dbo.Users)
		BEGIN
			DELETE FROM dbo.Users WHERE [Name]=@Name
		END

		--========================================
		--==ɹɾû Profile 򣬽ųûݿķȨ
		--========================================
		IF (@@Error=0) AND (@Name NOT IN (Select [Name] From dbo.Users))
		BEGIN
	
			--========================================
			--==ʹûɥʧʱݿȨ
			--========================================
			IF dbo.UDF_PublicUserExists(@Name)=1
			BEGIN  
				EXEC sp_revokedbaccess @Name 
			END

			--========================================
			--== ʹûɥʧʱݿȨ ɹ򣬽ɾû login
			--==ע⣬ @@Error ֻغǸ EXEC 䣬 sp_revokedbaccess ǷɹҪ鿴 UDF_PublicUserExists()
			--========================================
			IF (@@Error=0) AND (dbo.UDF_PublicUserExists(@Name)=0)
			BEGIN
				--========================================
				--==ûLoginȥ
				--========================================
				IF dbo.UDF_PublicLoginExists(@Name)=1
				BEGIN  
					EXEC master..sp_droplogin  @Name
				END

				--========================================
				--== ûLoginȥ ɹ
				--== @@Error ǹغǸ EXEC 䣬Ҫ鿴 sp_droplogin ǷִгɹҪ UDF_PublicLoginExists()
				--========================================
				IF (@@Error=0) AND (dbo.UDF_PublicLoginExists(@Name)=0)

					BEGIN
						--========================================
						--== ûLoginȥ ɹ򷵻سɹ־
						--========================================
						SET @oSuccess=1
						RETURN
					END

				ELSE 
					BEGIN
						--========================================
						--== ûLoginȥ ʧܣ򷵻ʧܱ־ͬʱٴ
						--========================================
						SET @oSuccess=0
						RAISERROR(N'û %s ޷ݿϵͳɾ',16,1,@Name)
						RETURN
					END
			END

			--========================================
			--== ʹûɥʧʱݿȨ ʧ
			--========================================
			ELSE
			BEGIN
				SET @oSuccess=0
				RAISERROR(N'û % ԵǰݿķȨ޷',16,1,@Name)
				RETURN
			END
		END

		--========================================
		--==ɾû Profileʧ
		--========================================
		ELSE
		BEGIN
			SET @oSuccess=0
			RAISERROR(N'û %s  Profile ¼޷ɾ ',16,1,@Name)
			RETURN
		END

	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ


*/
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserAccountDelete]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PublicGetCommunityIDFromForumID    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PublicGetCommunityIDFromForumID]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PublicGetCommunityIDFromForumID]
GO

--====================================================================================
--== UDF_GetCommunityIDFromForumID  ForumID   CommunityID
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.PublicGetCommunityIDFromForumID

@ForumID int,			--Forum  ID
@CommunityID int OUT		--ز, Ӧ Community  ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--==
--================================================
SELECT @CommunityID=dbo.UDF_GetCommunityIDFromForumID(@ForumID)


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PublicGetCommunityIDFromForumID]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserAccountQuery    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserAccountQuery]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserAccountQuery]
GO

--====================================================================================
--== SP ãݸѯû˺ (û˺϶)
--==мΪΪNULL, 
--==ҳƣȽѯһṹһһPagingIDıPagingID@PageSize@CurrentPageѡȡǰҳļ¼ҳΪһ׷λ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserAccountQuery

@Name nvarchar(50),		--˺
@FirstName nvarchar(50),	--
@LastName nvarchar(50),	--
@Tel nvarchar(50),		--绰
@Email nvarchar(100),		--ʼ
@Sex int,			--Ա
@Organization nvarchar(200),	--
@Remark nvarchar(2000),	--ע

@RegisterDateYear INT,		--ûע
@RegisterDateMonth INT,	--ûע·
@RegisterDateDay INT,		--ûע

@UserRole int,			--ûɫ
--@IsClient int,			--Ƿͻ 1/2 (CANCEL)

@PageSize INT,		--ҳƣÿҳĳߴ
@CurrentPage INT,		--ҳƣǰҳ
@OrderBy nvarchar(100),	--
@OrderByOrder nvarchar(10)	--ʽ ASC, DESC

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ݴڴڶ̬ĵطʹã
--=====================================================
SET @Name=dbo.UDF_PublicStringEscape(@Name)
SET @FirstName=dbo.UDF_PublicStringEscape(@FirstName)
SET @LastName=dbo.UDF_PublicStringEscape(@LastName)
SET @Tel=dbo.UDF_PublicStringEscape(@Tel)
SET @Email=dbo.UDF_PublicStringEscape(@Email)
SET @Organization=dbo.UDF_PublicStringEscape(@Organization)
SET @Remark=dbo.UDF_PublicStringEscape(@Remark)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==Ȩ޼飨Ҫ
--=====================================================

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==̬ѯпܳ Unicode ַ磺FirstName=''nvarchar()ܳ4000̬ҪӵһԶΪ nvarchar(4000)
--==ö̬SQLͳ(ע⣺ҪSet Nocount on ¼Ӱ)
--==WhereӾ
--=====================================================
DECLARE @DynSQL NVARCHAR(4000)      
DECLARE @DynWhere NVARCHAR(4000) 

--=====================================================
--==ҳ 
--=====================================================
SET @DynSQL=N' SET NOCOUNT ON   '
SET @DynSQL=@DynSQL + N' Declare @Paging table '
SET @DynSQL=@DynSQL + N' ( '
SET @DynSQL=@DynSQL + N' PagingID int identity(1,1), '
SET @DynSQL=@DynSQL + N' [Name] nvarchar(50) COLLATE database_default,  '
SET @DynSQL=@DynSQL + N' FirstName nvarchar(50) COLLATE database_default,  '
SET @DynSQL=@DynSQL + N' LastName nvarchar(50) COLLATE database_default, '
SET @DynSQL=@DynSQL + N' Sex nvarchar(50) COLLATE database_default, '
SET @DynSQL=@DynSQL + N' Tel nvarchar(50) COLLATE database_default, '
SET @DynSQL=@DynSQL + N' Email varchar(100) COLLATE database_default, '	--UDF_PublicLoginOnline
SET @DynSQL=@DynSQL + N' Organization nvarchar(200) COLLATE database_default, '
SET @DynSQL=@DynSQL + N' Remark nvarchar(2000) COLLATE database_default, '
SET @DynSQL=@DynSQL + N' RegisterDate datetime, '
--SET @DynSQL=@DynSQL + N' IsClient INT, '					--CANCEL
SET @DynSQL=@DynSQL + N' OnLine INT '	
SET @DynSQL=@DynSQL + N' ) '

--=====================================================
--==ҳ 
--=====================================================
SET @DynSQL=@DynSQL + N' Insert into @Paging '

SET @DynSQL=@DynSQL + N' Select distinct   '  
SET @DynSQL=@DynSQL + N' us.[Name] as [Name], '
SET @DynSQL=@DynSQL + N' us.FirstName as FirstName, '
SET @DynSQL=@DynSQL + N' us.LastName as LastName, '
SET @DynSQL=@DynSQL + N' sex.NameC as Sex, '
SET @DynSQL=@DynSQL + N' us.Tel as Tel, '
SET @DynSQL=@DynSQL + N' us.Email as Email, '
SET @DynSQL=@DynSQL + N' us.Organization as Organization, '
SET @DynSQL=@DynSQL + N' us.Remark as Remark, '
SET @DynSQL=@DynSQL + N' us.RegisterDate as RegisterDate, '
--SET @DynSQL=@DynSQL + N' us.IsClient as IsClient, '				--CANCEL
SET @DynSQL=@DynSQL + N' dbo.UDF_PublicLoginOnline(us.[Name]) as OnLine '

SET @DynSQL=@DynSQL + N' From dbo.Users us '
SET @DynSQL=@DynSQL + N' inner join dbo.Sex sex on sex.[ID]=us.Sex '

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==WHERE 1=1 ر涯̬ WHERE Ӿе AND 
--=====================================================
SET @DynSQL=@DynSQL + N' WHERE 1=1 '

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==̬ WHERE Ӿ
--=====================================================
SET @DynWhere=N''

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==@Name ͳ0߿ַʾͳ: ֧ģͳ :
--=====================================================
IF @Name IS NOT NULL   
BEGIN
	--=====================================================
	--==˵ո (Ϊ @Name ΪNULL,Խ˳ոĲŵ)
	--=====================================================
	SET @Name=RTRIM(LTRIM(@Name)) 
	IF @Name<>N'' 
	BEGIN
		If CHARINDEX (N'*' , @Name) >=1
		Begin   set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(us.[Name])) like ''' + REPLACE(@Name,N'*',N'%') + N'''' End
		Else
		Begin   set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(us.[Name]))=''' + @Name + N'''' End
	END
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==@FirstName ͳ0߿ַʾͳ: ֧ģͳ :
--=====================================================
IF @FirstName IS NOT NULL 
BEGIN
	--=====================================================
	--==˵ո (Ϊ @FirstName ΪNULL,Խ˳ոĲŵ)
	--=====================================================
	SET @FirstName=RTRIM(LTRIM(@FirstName))  
	IF @FirstName<>N'' 
	BEGIN
		If CHARINDEX (N'*' , @FirstName) >=1
		Begin	set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(us.FirstName)) like ''' + REPLACE(@FirstName,N'*',N'%') + N'''' 	End
		Else

		Begin	set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(us.FirstName))=''' + @FirstName + N''''	End
	END
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==@LastName ͳ0߿ַʾͳ: ֧ģͳ :
--=====================================================
IF @LastName IS NOT NULL 
BEGIN
	--=====================================================
	--==˵ո (Ϊ @LastName ΪNULL,Խ˳ոĲŵ)
	--=====================================================
	SET @LastName=RTRIM(LTRIM(@LastName)) 
	IF @LastName<>N'' 
	BEGIN
		If CHARINDEX (N'*' , @LastName) >=1
		Begin	set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(us.LastName)) like ''' + REPLACE(@LastName,N'*',N'%') + N'''' 	End
		Else
		Begin	set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(us.LastName))=''' + @LastName + N''''	End
	END
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==@Tel ͳ0߿ַʾͳ: ֧ģͳ :
--=====================================================
IF @Tel IS NOT NULL 
BEGIN
	--=====================================================
	--==˵ո (Ϊ @Tel ΪNULL,Խ˳ոĲŵ)
	--=====================================================
	SET @Tel=RTRIM(LTRIM(@Tel)) 
	IF @Tel<>N'' 
	BEGIN
		If CHARINDEX (N'*' , @Tel) >=1
		Begin	set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(us.Tel)) like ''' + REPLACE(@Tel,N'*',N'%') + N'''' 	End
		Else
		Begin	set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(us.Tel))=''' + @Tel + N''''	End
	END
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==@Email ͳ0߿ַʾͳ: ֧ģͳ :
--=====================================================
IF @Email IS NOT NULL  
BEGIN
	--=====================================================
	--==˵ո (Ϊ @Email ΪNULL,Խ˳ոĲŵ)
	--=====================================================
	SET @Email=RTRIM(LTRIM(@Email)) 
	IF @Email<>N'' 
	BEGIN
		If CHARINDEX (N'*' , @Email) >=1
		Begin	set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(us.Email)) like ''' + REPLACE(@Email,N'*',N'%') + N'''' 	End
		Else
		Begin	set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(us.Email))=''' + @Email + N''''	End
	END
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==@Sex ͳ0NULLʾͳƣ
--=====================================================
IF @Sex IS NOT NULL AND @Sex<>0 
BEGIN
	set @DynWhere=@DynWhere + N' and us.Sex=' + CONVERT(NVARCHAR(20),@Sex)
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==@Organization ͳ0߿ַʾͳ: ֧ģͳ :
--=====================================================
IF @Organization IS NOT NULL  
BEGIN
	--=====================================================
	--==˵ո (Ϊ @Organization ΪNULL,Խ˳ոĲŵ)
	--=====================================================
	SET @Organization=RTRIM(LTRIM(@Organization)) 
	IF @Organization<>N'' 
	BEGIN
		If CHARINDEX (N'*' , @Organization) >=1
		Begin	set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(us.Organization)) like ''' + REPLACE(@Organization,N'*',N'%') + N'''' 	End
		Else
		Begin	set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(us.Organization))=''' + @Organization + N''''	End
	END
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==@Remark ͳ0߿ַʾͳ: ֧ģͳ :
--=====================================================
IF @Remark IS NOT NULL  
BEGIN
	--=====================================================
	--==˵ո (Ϊ @Remark ΪNULL,Խ˳ոĲŵ)
	--=====================================================
	SET @Remark=RTRIM(LTRIM(@Remark)) 
	IF @Remark<>N'' 
	BEGIN
		If CHARINDEX (N'*' , @Remark) >=1
		Begin	set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(us.Remark)) like ''' + REPLACE(@Remark,N'*',N'%') + N'''' 	End
		Else
		Begin	set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(us.Remark))=''' + @Remark + N''''	End
	END
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--===========================================================
--==@RegisterDate(Y/M/D)ͳ0NULLʾͳƣ
--===========================================================
IF @RegisterDateYear IS NOT NULL AND @RegisterDateMonth IS NOT NULL AND @RegisterDateDay IS NOT NULL  
BEGIN
	If @RegisterDateYear<>0 Begin set @DynWhere=@DynWhere + N' and Year(us.RegisterDate)=' + CONVERT(NVARCHAR(20),@RegisterDateYear) End
	If @RegisterDateMonth<>0 Begin set @DynWhere=@DynWhere + N' and Month(us.RegisterDate)=' + CONVERT(NVARCHAR(20),@RegisterDateMonth) End
	If @RegisterDateDay<>0 Begin set @DynWhere=@DynWhere + N' and Day(us.RegisterDate)=' + CONVERT(NVARCHAR(20),@RegisterDateDay) End
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==@UserRole ͳ0NULLʾͳƣ
--=====================================================
IF @UserRole IS NOT NULL AND @UserRole<>0 
BEGIN
	set @DynWhere=@DynWhere + N' and us.UserRole=' + CONVERT(NVARCHAR(20),@UserRole)
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==@IsClient ͳ0NULLʾͳƣ
--==2009-04-12 : CANCEL
--=====================================================
/*
IF @IsClient IS NOT NULL AND @IsClient<>0 
BEGIN
	set @DynWhere=@DynWhere + N' and us.IsClient=' + CONVERT(NVARCHAR(20),@IsClient)
END
*/

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--===========================================================
--==ǰ SQL  ̬ WHERE Ӿ @DynSQL Ѿ WHERE 1=1
--===========================================================
SET @DynSQL=@DynSQL + @DynWhere

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== Order By Ӿ
--== OrderBy='' ʹȱʡ order by Name ASC
--=====================================================
SET @OrderBy=LTRIM(RTRIM(@OrderBy))
SET @OrderByOrder=LTRIM(RTRIM(@OrderByOrder))

IF LEN(@OrderBy)=0 OR  LEN(@OrderByOrder)=0

	BEGIN
	SET @DynSQL=@DynSQL + N' order by [Name] ASC '
	END
ELSE
	BEGIN
	SET @DynSQL=@DynSQL + N' order by [' + @OrderBy + N'] ' + @OrderByOrder
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @Paging лȡ
--===================================================== 
Declare @FirstRecord int
Declare @LastRecord int

set @FirstRecord=(@CurrentPage - 1) * @PageSize	--ǰҳһ¼ǰ
set @LastRecord=(@CurrentPage * @PageSize + 1)	--ǰҳһ¼

--=====================================================
--==ܼ¼ÿҳļ¼Ceiling()õΪҳ ע⣺count(*)   @PageSize Ϊ INTõ INTԣҪת Decimal(18,2)
--=====================================================
set @DynSQL=@DynSQL + N' Select *,PageCount=CEILING (Convert(decimal(18,2),(select count(*) from @Paging)) / Convert(decimal(18,2),' + Convert(nvarchar(20),@PageSize) + N')) From @Paging Where PagingID>' + Convert(nvarchar(20),@FirstRecord) + N' and PagingID<' + Convert(nvarchar(20),@LastRecord)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--============================================
--==鶯̬ĳȣԳϵͳ
--============================================
DECLARE @oPassDynSQL INT
EXEC dbo.PublicDynSQLLengthCheck @DynSQL,@oPassDynSQL OUT
IF @oPassDynSQL=0 BEGIN RETURN END

--=====================================================
--==ִж̬ SQL 䣬 ʼͳ
--=====================================================
EXEC(@DynSQL)
RETURN

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserAccountQuery]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.TopicFollowUpSelect    Script Date: 2009-7-10 19:03:44 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TopicFollowUpSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[TopicFollowUpSelect]
GO

--====================================================================================
--==ݸ TopicID ѡȡ Topic Լµ FollowUp ֱ SP TopicSelect  SP FollowUpSelect
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.TopicFollowUpSelect

@User nvarchar(50),	-- ASPX ˴ݹĵǰû

@TopicID INT		--ָ Topic ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼飨Ѿɵ TopicSelect  FollowUpSelect ˣ
--=====================================================

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ѡȡ TopicID µ Topic ¼
--=====================================================
EXEC dbo.TopicSelect @User,@TopicID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ѡȡ TopicID µ FollowUp ¼
--=====================================================
EXEC dbo.FollowUpSelect @User,@TopicID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[TopicFollowUpSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ModeratorList    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ModeratorList]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ModeratorList]
GO

--====================================================================================
--==ݸ ForumID ѡȡǰ Forum İб
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.ModeratorList

@ForumID INT		--ָ Forum ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼飨Ҫ
--=====================================================

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==Ȼø Forum  Moderator 
--=====================================================
DECLARE @Moderator NVARCHAR(1000)
SET @Moderator=(Select Top 1 Moderator From dbo.Forum Where [ID]=@ForumID)

--=====================================================
--==ûȨ޼飨Ҫ
--=====================================================
SELECT DISTINCT

	Element as [Name]

FROM dbo.UDF_PublicSplit(@Moderator,N',')

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ModeratorList]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PublicGetTopicIDFromFollowUpID    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PublicGetTopicIDFromFollowUpID]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PublicGetTopicIDFromFollowUpID]
GO

--====================================================================================
--== UDF_GetTopicIDFromFollowUpID  FollowUpID   TopicID
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.PublicGetTopicIDFromFollowUpID

@FollowUpID int,			--FollowUp  ID
@TopicID int OUT			--ز, Ӧ Topic  ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--==
--================================================
SELECT @TopicID=dbo.UDF_GetTopicIDFromFollowUpID(@FollowUpID)


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PublicGetTopicIDFromFollowUpID]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeTreeSelect    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeTreeSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeTreeSelect]
GO

--====================================================================================
--== View_KnowledgeTree лȡȫָļ¼
--== KnowledgeDirectory  KnowledgeItem  NULL򷵻ȫ¼ 򣬷ָļ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeTreeSelect

@KnowledgeDirectory NVARCHAR(4000),		--Knowledge Ŀ¼б
@KnowledgeItem INT,					--Knowledge ID
@Culture nvarchar(100)					--ָĻ

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @KnowledgeDirectory  @KnowledgeItem  NULL
--=====================================================
IF @KnowledgeDirectory IS NULL AND @KnowledgeItem IS NULL

	--=====================================================
	--== View_KnowledgeTree
	--=====================================================
	BEGIN
		SELECT * FROM dbo.View_KnowledgeTree WHERE Culture=@Culture ORDER BY Serial
	END

ELSE

	--=====================================================
	--== @KnowledgeDirectory  @KnowledgeItem  NULL
	--=====================================================
	IF @KnowledgeDirectory IS NOT NULL AND @KnowledgeItem IS NOT NULL

		--=====================================================
		--==ָ @KnowledgeDirectory µָ Item
		--=====================================================
		BEGIN
			SELECT * FROM dbo.View_KnowledgeTree WHERE Directory IN (Select Element From dbo.UDF_PublicSplit(@KnowledgeDirectory,N',')) AND [ID]=@KnowledgeItem AND Culture=@Culture ORDER BY Serial
		END

	ELSE

		--=====================================================
		--==ָ @KnowledgeDirectory µ Item
		--=====================================================
		BEGIN
			SELECT * FROM dbo.View_KnowledgeTree WHERE Directory IN (Select Element From dbo.UDF_PublicSplit(@KnowledgeDirectory,N',')) AND Culture=@Culture ORDER BY Serial
		END


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeTreeSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PageDirectorySelect    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PageDirectorySelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PageDirectorySelect]
GO

--====================================================================================
--==ݸ  KnowledgeItem (PageDirectory ID)  PageDirectory еָ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.PageDirectorySelect

@KnowledgeItem INT				--PageDirectory ¼ ID

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ
--====================================================================================
SELECT
	pd.[ID] AS [ID],
	pd.SubDirectoryID AS SubDirectoryID,
	pd.Serial AS Serial,
	pd.[Name] AS [Name],
	pd.Url AS Url,
	pd.PageSize AS PageSize,
	ISNULL(pd.UseBaseUrl,N'true') AS UseBaseUrl,
	ISNULL(pd.NewWindow,N'false') AS NewWindow,
	ISNULL(pd.Overview,N'false') AS Overview,
	ISNULL(pd.FastAccess,N'false') AS FastAccess,
	ISNULL(pd.Home,N'false') AS Home,

	ISNULL(pd.RightIndent,0) AS RightIndent,

	ISNULL(pd.jQuery,N'false') AS jQuery,

	ISNULL(pd.LogoHide,N'false') AS LogoHide,
	ISNULL(pd.MainMenuHide,N'false') AS MainMenuHide,
	ISNULL(pd.BannerHide,N'false') AS BannerHide,
	ISNULL(pd.BreadcrumbHide,N'false') AS BreadcrumbHide,
	ISNULL(pd.PageMenuHide,N'false') AS PageMenuHide,
	ISNULL(pd.PageBarHide,N'false') AS PageBarHide,
	ISNULL(pd.CopyrightHide,N'false') AS CopyrightHide,

	pd.Type AS Type,
	pd.Presentation AS Presentation,
	pd.ShowAuthor AS ShowAuthor,
	pd.ShowUpdateTime AS ShowUpdateTime,
	pd.ShowHitCount AS ShowHitCount,
	pd.ShowComments AS ShowComments,
	pd.ShowStaticUrl AS ShowStaticUrl,
	pd.ShowKnowledgeHtml AS ShowKnowledgeHtml,
	pd.ShowRelative AS ShowRelative,

	pd.Editor AS Editor,
	pd.DedicatedTo AS DedicatedTo,
	pd.CommentsPermission AS CommentsPermission


FROM dbo.PageDirectory pd

WHERE pd.[ID]=@KnowledgeItem

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PageDirectorySelect]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.SubDirectorySelect    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SubDirectorySelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[SubDirectorySelect]
GO

--====================================================================================
--==ݸ  KnowledgeItem (SubDirectory ID)  SubDirectory еָ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.SubDirectorySelect

@KnowledgeItem INT				--SubDirectory ¼ ID

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ
--====================================================================================
SELECT
	sd.[ID] AS [ID],
	sd.MainDirectoryID AS MainDirectoryID,
	sd.Serial AS Serial,
	sd.[Name] AS [Name],
	sd.Url AS Url,
	ISNULL(sd.UseBaseUrl,N'true') AS UseBaseUrl,
	ISNULL(sd.NewWindow,N'false') AS NewWindow,
	ISNULL(sd.Overview,N'false') AS Overview,
	ISNULL(sd.Wizard,N'false') AS Wizard,

	sd.Editor AS Editor,
	sd.DedicatedTo AS DedicatedTo,
	sd.CommentsPermission AS CommentsPermission

FROM dbo.SubDirectory sd

WHERE sd.[ID]=@KnowledgeItem

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[SubDirectorySelect]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.MainDirectorySelect    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MainDirectorySelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[MainDirectorySelect]
GO

--====================================================================================
--==ݸ  KnowledgeItem (MainDirectory ID)  MainDirectory еָ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.MainDirectorySelect

@KnowledgeItem INT				--MainDirectory ¼ ID

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ
--====================================================================================
SELECT
	md.[ID] AS [ID],
	md.Serial AS Serial,
	md.[Name] AS [Name],
	md.Url AS Url,
	ISNULL(md.UseBaseUrl,N'true') AS UseBaseUrl,
	ISNULL(md.NewWindow,N'false') AS NewWindow,
	ISNULL(md.[System],N'false') AS [System],
	md.InActiveMainMenuIconMap AS InActiveMainMenuIconMap,
	md.ActiveMainMenuIconMap AS ActiveMainMenuIconMap,
	md.BannerMap AS BannerMap,
	md.BannerContentLayer AS BannerContentLayer,
	md.Editor AS Editor,
	md.DedicatedTo AS DedicatedTo,
	md.CommentsPermission AS CommentsPermission

FROM dbo.MainDirectory md

WHERE md.[ID]=@KnowledgeItem

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[MainDirectorySelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.AdminUserAuthentication    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AdminUserAuthentication]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[AdminUserAuthentication]
GO

--====================================================================================
--==鵱ǰûǷԶ Knowledge  Levelб棬޸
--== Users еûɫ Admin ܽб޸
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.AdminUserAuthentication

@User NVARCHAR(50),		--ָû
@oPass INT OUT		--ͨ 1 0

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

/*
--=========================================
--==ʱ
--=========================================
DECLARE @CurrentUser NVARCHAR(50)
SET @CurrentUser=dbo.UDF_UserCurrent()
*/

--=========================================
--==ǰûϵͳԱ(λ Admin ɫ)ٴ˳
--=========================================
IF dbo.UDF_UserAdmin(@User)<>1
BEGIN
	SET @oPass=0
	RAISERROR(N'ܱǸվԱиò',16,1)
	RETURN
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[AdminUserAuthentication]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeSave    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeSave]
GO

--====================================================================================
--== Knowledge
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeSave

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@PageDirectoryID int,			--ǰ Knowledge Ӧ PageDirectory  ID

@Serial int,				--ǰ Knowledge кţÿ Knowledge ʾɸ Serial кԽԽʾ
@Editor ntext,				--ǰ Knowledge ı༭Ȩ Ϊַ NULLֻ Admin, ChiefEditor, Լǰ Knowledge ̳еϼ Directory ı༭ſԱ༭༭֣Щ༭Ա༭
@DedicatedTo ntext,			--ҳȨ޷Щû ǿַ NULLκ˶Էʣ "*" ֻпͻſԷʣ  abc,efg,...ָûԷʣ
@CommentsPermission ntext,		--ҳǷ ַ NULLκ˿ۣ "*" κοͻۣ  abc,efg,... ͻۣ "none" κ˲׼ۣ

@oNewID int OUT			--¼¼ ID 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'PageDirectory',@PageDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ  
  
--=====================================================  
--==ǰûǰʱ  
--=====================================================  
DECLARE @CurrentTime nvarchar(50)  
 DECLARE @CurrentUser nvarchar(50)  
 
SET @CurrentTime=GETDATE()  
SET @CurrentUser=@User

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== Knowledge
--=====================================================
INSERT INTO dbo.Knowledge(PageDirectoryID,Serial,Editor,DedicatedTo,CommentsPermission,UpdateTime,Author) VALUES(@PageDirectoryID,@Serial,@Editor,@DedicatedTo,@CommentsPermission,@CurrentTime,@CurrentUser)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ոձϢ ID
--======================================================
SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeModify    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeModify]
GO

--====================================================================================
--==޸ Knowledge
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeModify

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@KnowledgeID int,			--ǰ Knowledge  ID

@Serial int,				--ǰ Knowledge кţÿ Knowledge ʾɸ Serial кԽԽʾ
@Editor ntext,				--ǰ Knowledge  ı༭Ȩ ǿַ NULLֻ Admin, ChiefEditor, ǰ Knowledge  ̳еϼĿ¼ı༭Ȩޣ˾༭ԶЩ༭Ȩޣ
@DedicatedTo ntext,			--ҳȨ޷Щû ǿַ NULLκ˶Էʣ "*" ֻпͻſԷʣ  abc,efg,...ָûԷʣ
@CommentsPermission ntext		--ҳǷ ǿַ NULLκ˶ۣ "*"κοͻۣ  "abc,efg,..."ָͻۣ "none" κ˶ۣ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'Knowledge',@KnowledgeID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==޸ Knowledge
--=====================================================
UPDATE dbo.Knowledge SET 

	Serial=@Serial,
	Editor=@Editor,
	DedicatedTo=@DedicatedTo,
	CommentsPermission=@CommentsPermission

WHERE [ID]=@KnowledgeID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeModify]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PageDirectorySave    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PageDirectorySave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PageDirectorySave]
GO

--====================================================================================
--== PageDirectory
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.PageDirectorySave

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@SubDirectoryID int,			--ǰ PageDirectory Ӧ SubDirectory  ID

@Serial int,				--ǰ PageDirectory кţÿ Knowledge ʾɸ Serial кԽԽʾ
@Name nvarchar(100),			--ǰ PageDirectory 
@Url nvarchar(2000),			--ǰ PageDirectory  Url ַ
@PageSize int,				--ǰҳڷҳеķҳС
@UseBaseUrl nvarchar(50),		--ǰ PageDirectory  UseBaseUrl Flag
@NewWindow nvarchar(50),		--ǰ PageDirectory  NewWindow Flag
@Overview nvarchar(50),		--ǰ PageDirectory Ƿǰ PageDirectories ĸ
@FastAccess nvarchar(50),		--ǰ PageDirectory  FastAccess Flag
@Home nvarchar(50),			--ǰ PageDirectory  Home Flag

@RightIndent int,			--ǰ PageDirectory  RightIndent

@jQuery nvarchar(50),			--Ƿ jQuery 

@LogoHide nvarchar(50),		--Ƿ Logo  				
@MainMenuHide nvarchar(50),		--Ƿ˵ 
@BannerHide nvarchar(50),		--Ƿ Banner 
@BreadcrumbHide nvarchar(50),		--Ƿм
@PageMenuHide nvarchar(50),		--Ƿصǰҳ Page Menu  һҳͨҳʵʹ
@PageBarHide nvarchar(50),		--Ƿ PageBar 
@CopyrightHide nvarchar(50),		--ǷذȨϵ

@Type int,				--ǰ PageDirectory µ֪ʶ 1 - ֪ͨʶ      2 - ʱ֪ʶ      3 - ű֪ʶ
@Presentation int,			--ǰ PageDirectory µ֪ʶչʾʽ 1 - ʾ     2 - ʾ ݣ     3 - ʾժҪ ϸݣ
@ShowAuthor nvarchar(50),		--ǰ PageDirectory  ShowAuthor Flag
@ShowUpdateTime nvarchar(50),	--ǰ PageDirectory  ShowUpdateTime Flag
@ShowHitCount nvarchar(50),		--ǰ PageDirectory  ShowHitCount Flag
@ShowComments nvarchar(50),		--ǰ PageDirectory  ShowComments Flag
@ShowStaticUrl nvarchar(50),		--ǰ PageDirectory  ShowStaticUrl Flag
@ShowKnowledgeHtml nvarchar(50),	--ǰ PageDirectory  ShowKnowledgeHtml Flag
@ShowRelative nvarchar(50),		--ǰ PageDirectory  ShowRelative Flag

@Editor ntext,				--ǰ PageDirectory ı༭Ȩ ַ NULLֻ Admin  ChiefEditorԼ˼̳еϼ Directory  ı༭ Ա༭˾༭Զָ༭Ա༭
@DedicatedTo ntext,			--ǰ PageDirectory ķȨ Ϊַ NULL˿ɷʣָû飬ָûָµûɷʣ
@CommentsPermission ntext,		--ǰ PageDirectory Ȩ ǿַ NULL˿ָۣû飬ָûµûۣ

@oNewID int OUT			--¼¼ ID 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼飨ҪϼȨޣ
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'SubDirectory',@SubDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== PageDirectory ¼֮ǰȿ¼ @Home ǲΪ "true"ǣݿΪ true ļ¼Ϊ 'false' Ϊֻһ true˵ϵͳͬʱֻһҳ Home Page
--=====================================================
IF @Home=N'true'
BEGIN
	UPDATE dbo.PageDirectory SET Home=N'false' WHERE Home=N'true'
END

--=====================================================
--== PageDirectory ¼
--=====================================================
INSERT INTO dbo.PageDirectory(SubDirectoryID,Serial,[Name],Url,PageSize,UseBaseUrl,NewWindow,Overview,FastAccess,Home,RightIndent,jQuery,LogoHide,MainMenuHide,BannerHide,BreadcrumbHide,PageMenuHide,PageBarHide,CopyrightHide,Type,Presentation,ShowAuthor,ShowUpdateTime,ShowHitCount,ShowComments,ShowStaticUrl,ShowKnowledgeHtml,ShowRelative,Editor,DedicatedTo,CommentsPermission) VALUES(@SubDirectoryID,@Serial,@Name,@Url,@PageSize,@UseBaseUrl,@NewWindow,@Overview,@FastAccess,@Home,@RightIndent,@jQuery,@LogoHide,@MainMenuHide,@BannerHide,@BreadcrumbHide,@PageMenuHide,@PageBarHide,@CopyrightHide,@Type,@Presentation,@ShowAuthor,@ShowUpdateTime,@ShowHitCount,@ShowComments,@ShowStaticUrl,@ShowKnowledgeHtml,@ShowRelative,@Editor,@DedicatedTo,@CommentsPermission)


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ոձϢ ID
--======================================================
SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ǰ @Overview Ϊ true SP PageDirectorySetOverview ǰ PageDirectory Ϊ Overview ״̬
--======================================================
IF @Overview=N'true'

BEGIN
	EXEC dbo.PageDirectorySetOverview @User,@oNewID
END


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PageDirectorySave]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PageDirectoryModify    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PageDirectoryModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PageDirectoryModify]
GO

--====================================================================================
--==޸ PageDirectory
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.PageDirectoryModify

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@PageDirectoryID int,			--ǰ PageDirectory  ID

@Serial int,				--ǰ PageDirectory кţÿ Knowledge ʾɸ Serial кԽԽʾ
@Name nvarchar(100),			--ǰ PageDirectory 
@Url nvarchar(2000),			--ǰ PageDirectory  Url ַ
@PageSize int,				--ǰҳҳзҳС
@UseBaseUrl nvarchar(50),		--ǰ PageDirectory  UseBaseUrl Flag
@NewWindow nvarchar(50),		--ǰ PageDirectory  NewWindow Flag
@Overview nvarchar(50),		--ǰ PageDirectory Ƿ PageDirectories ĸ
@FastAccess nvarchar(50),		--ǰ PageDirectory  FastAccess Flag
@Home nvarchar(50),			--ǰ PageDirectory  Home Flag

@RightIndent int,			--ǰ PageDirectory  RightIndent

@jQuery nvarchar(50),			--Ƿ jQuery 

@LogoHide nvarchar(50),		--Ƿ Logo  				
@MainMenuHide nvarchar(50),		--Ƿ˵ 
@BannerHide nvarchar(50),		--Ƿ Banner 
@BreadcrumbHide nvarchar(50),		--Ƿм
@PageMenuHide nvarchar(50),		--Ƿصǰҳ Page Menu  һҳͨҳʵʹ
@PageBarHide nvarchar(50),		--Ƿ PageBar 
@CopyrightHide nvarchar(50),		--ǷذȨϵ

@Type int,				--ǰ PageDirectory ֪ʶ ͣ1 - ֪ͨʶ     2 - ʱ֪ʶͣţ    3 - ű֪ʶFAQƸ
@Presentation int,			--ǰ PageDirectory ֪ʶչʾʽ 1 - չʾ     2 - ʾ ݣ    3 - ʾժҪ 粩ʾժҪݣ
@ShowAuthor nvarchar(50),		--ǰ PageDirectory  ShowAuthor Flag
@ShowUpdateTime nvarchar(50),	--ǰ PageDirectory  ShowUpdateTime Flag
@ShowHitCount nvarchar(50),		--ǰ PageDirectory  ShowHitCount Flag
@ShowComments nvarchar(50),		--ǰ PageDirectory  ShowComments Flag
@ShowStaticUrl nvarchar(50),		--ǰ PageDirectory  ShowStaticUrl Flag
@ShowKnowledgeHtml nvarchar(50),	--ǰ PageDirectory  ShowKnowledgeHtml Flag
@ShowRelative nvarchar(50),		--ǰ PageDirectory  ShowRelative Flag

@Editor ntext,				--ǰ PageDirectory ı༭Ȩ ַ NULLֻ Admin, ChiefEditor, Լ˼̳еϼ Directory  Editor Ա༭ˣ˾༭֣Զָ༭Ա༭
@DedicatedTo ntext,			--ǰ PageDirectory ķȨ Ϊַ NULL˿ɷʣָû飬ָûָµûɷʣ
@CommentsPermission ntext		--ǰ PageDirectory Ȩ ǿַ NULL˿ָۣû飬ָûµûۣ


AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'PageDirectory',@PageDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==޸ PageDirectory ¼֮ǰȿ¼ @Home ǲΪ "true"ǣݿΪ true ļ¼Ϊ 'false' Ϊֻһ true˵ϵͳͬʱֻһҳ Home Page
--=====================================================
IF @Home=N'true'
BEGIN
	UPDATE dbo.PageDirectory SET Home=N'false' WHERE Home=N'true'
END

--=====================================================
--==޸ PageDirectory
--=====================================================
UPDATE dbo.PageDirectory SET

	Serial=@Serial,
	[Name]=@Name,
	Url=@Url,
	PageSize=@PageSize,
	UseBaseUrl=@UseBaseUrl,
	NewWindow=@NewWindow,
	Overview=@Overview,
	FastAccess=@FastAccess,
	Home=@Home,

	RightIndent=@RightIndent,

	jQuery=@jQuery,

	LogoHide=@LogoHide, 
	MainMenuHide=@MainMenuHide,
	BannerHide=@BannerHide,
	BreadcrumbHide=@BreadcrumbHide,
	PageMenuHide=@PageMenuHide,
	PageBarHide=@PageBarHide,
	CopyrightHide=@CopyrightHide,

	Type=@Type,
	Presentation=@Presentation,
	ShowAuthor=@ShowAuthor,
	ShowUpdateTime=@ShowUpdateTime,
	ShowHitCount=@ShowHitCount,
	ShowComments=@ShowComments,
	ShowStaticUrl=@ShowStaticUrl,
	ShowKnowledgeHtml=@ShowKnowledgeHtml,
	ShowRelative=@ShowRelative,

	Editor=@Editor,
	DedicatedTo=@DedicatedTo,
	CommentsPermission=@CommentsPermission

WHERE [ID]=@PageDirectoryID

--=====================================================
--== @Overview Ϊ true򽫱 PageDirectory ֵ PageDirectory Ŷӣ 2 ʼ󣬽ǰ PageDirectory  Serial Ϊ 1ʵ˽ Overview=true  PageDirectory ׵Ŀ
--=====================================================
IF @Overview=N'true'

BEGIN
	EXEC dbo.PageDirectorySetOverview @User,@PageDirectoryID
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PageDirectoryModify]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.SubDirectorySave    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SubDirectorySave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[SubDirectorySave]
GO


--====================================================================================
--== SubDirectory
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.SubDirectorySave

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@MainDirectoryID int,			--ǰ SubDirectory Ӧ MainDirectory  ID

@Serial int,				--ǰ SubDirectory кţÿ Knowledge ʾɸ Serial кԽԽʾ
@Name nvarchar(100),			--ǰ SubDirectory 
@Url nvarchar(2000),			--ǰ SubDirectory  Url ַ
@UseBaseUrl nvarchar(50),		--ǰ SubDirectory  UseBaseUrl Flag
@NewWindow nvarchar(50),		--ǰ SubDirectory  NewWindow Flag
@Overview nvarchar(50),		--ǰ SubDirectory Ƿ SubDirectories ĸ
@Wizard nvarchar(50),			--ǰ SubDirectory µ PageDirectory Ƿʽ

@Editor ntext,				--ǰ SubDirectory ı༭Ȩޣַ NULLֻ  Admin, ChiefEditor Լ˼̳еϼĿ¼ı༭Ա༭༭֣ԶЩָı༭ҲԱ༭
@DedicatedTo ntext,			--ǰ SubDirectory ķȨ Ϊַ NULL˿ɷʣָû飬ָûָµûɷʣ
@CommentsPermission ntext,		--ǰ SubDirectory Ȩ ǿַ NULL˿ָۣû飬ָûµûۣ

@oNewID int OUT			--¼¼ ID 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼  Ҫ MainDirectory Ȩޣ
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'MainDirectory',@MainDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== SubDirectory
--=====================================================
INSERT INTO dbo.SubDirectory(MainDirectoryID,Serial,[Name],Url,UseBaseUrl,NewWindow,Overview,Wizard,Editor,DedicatedTo,CommentsPermission) VALUES(@MainDirectoryID,@Serial,@Name,@Url,@UseBaseUrl,@NewWindow,@Overview,@Wizard,@Editor,@DedicatedTo,@CommentsPermission)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ոձϢ ID
--======================================================
SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @Overview Ϊ true򽫱 SubDirectory ֵ SubDirectory Ŷӣ 2 ʼ󣬽ǰ SubDirectory  Serial Ϊ 1ʵ˽ Overview=true  SubDirectory ׵Ŀ
--=====================================================
IF @Overview=N'true'

BEGIN
	EXEC dbo.SubDirectorySetOverview @User,@oNewID
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[SubDirectorySave]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.SubDirectoryModify    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SubDirectoryModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[SubDirectoryModify]
GO

--====================================================================================
--==޸ SubDirectory
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.SubDirectoryModify

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@SubDirectoryID int,			--ǰ SubDirectory  ID

@Serial int,				--ǰ SubDirectory кţÿ Knowledge ʾɸ Serial кԽԽʾ
@Name nvarchar(100),			--ǰ SubDirectory 
@Url nvarchar(2000),			--ǰ SubDirectory  Url ַ
@UseBaseUrl nvarchar(50),		--ǰ SubDirectory  UseBaseUrl Flag
@NewWindow nvarchar(50),		--ǰ SubDirectory  NewWindow Flag
@Overview nvarchar(50),		--ǰ SubDirectory Ƿ SubDirectories ĸ
@Wizard nvarchar(50),			--ǰ SubDirectory µ PageDircetory Ƿ򵼵ʽ

@Editor ntext,				--ǰ SubDirectory ı༭Ȩޣַ NULLֻ Admin  ChiefEditorԼ˼̳еϼĿ¼ı༭Ա༭༭֣ԶЩ༭Ա༭
@DedicatedTo ntext,			--ǰ SubDirectory ķȨ Ϊַ NULL˿ɷʣָû飬ָûָµûɷʣ
@CommentsPermission ntext		--ǰ SubDirectory Ȩ ǿַ NULL˿ָۣû飬ָûµûۣ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'SubDirectory',@SubDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==޸ SubDirectory
--=====================================================
UPDATE dbo.SubDirectory SET

	Serial=@Serial,
	[Name]=@Name,
	Url=@Url,
	UseBaseUrl=@UseBaseUrl,
	NewWindow=@NewWindow,
	Overview=@Overview,
	Wizard=@Wizard,
	Editor=@Editor,
	DedicatedTo=@DedicatedTo,
	CommentsPermission=@CommentsPermission


WHERE [ID]=@SubDirectoryID

--=====================================================
--== @Overview Ϊ true򽫱 SubDirectory ֵ SubDirectory Ŷӣ 2 ʼ󣬽ǰ SubDirectory  Serial Ϊ 1ʵ˽ Overview=true  SubDirectory ׵Ŀ
--==⣬Ҫ鵱ǰ SubDirectory µ PageDirectory ĿǷ >1ǣٴΪΪ SubDirectory,  PageDirectory ֻΪ 1 
--=====================================================
IF @Overview=N'true'

BEGIN
	--=====================================================
	--==õǰ SubDirectory µ PageDirectory Ŀ >1 ٴ
	--=====================================================
	DECLARE @Count INT
	SELECT @Count=COUNT(pd.[ID]) FROM dbo.PageDirectory pd WHERE pd.SubDirectoryID=@SubDirectoryID

	IF @Count>1

		BEGIN
			UPDATE dbo.SubDirectory SET Overview=N'false'  WHERE [ID]=@SubDirectoryID
			RAISERROR(N'ǰĿ¼µҳĿ¼1뽫ǰĿ¼ΪϼĿ¼ĸݣ򣬸Ŀ¼ҳĿ¼ĿӦó1ΪΪĺΪǰĿ¼µĵ1ҳĿ¼µݽֱʾڸĿ¼ϼĿ¼¡',16,1)
		END

	ELSE

		BEGIN	
			EXEC dbo.SubDirectorySetOverview @User,@SubDirectoryID
		END
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[SubDirectoryModify]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.MainDirectorySave    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MainDirectorySave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[MainDirectorySave]
GO


--====================================================================================
--== MainDirectory
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.MainDirectorySave

@User nvarchar(50),					-- ASPX ˴ݹĵǰû

@Serial int,						--ǰ MainDirectory кţÿ Knowledge ʾɸ Serial кԽԽʾ
@Name nvarchar(100),					--ǰ MainDirectory 
@Url nvarchar(2000),					--ǰ MainDirectory  Url
@UseBaseUrl nvarchar(50),				--ǰ MainDirectory  UseBaseUrl
@NewWindow nvarchar(50),				--ǰ MainDirectory  NewWindow Flag
@System nvarchar(50),					--ǰ MainDirectory  System Flag
@InActiveMainMenuIconMap ntext,			--ǰ MainDirectory  InActiveMainMenuIconMap
@ActiveMainMenuIconMap ntext,			--ǰ MainDirectory  ActiveMainMenuIconMap
@BannerMap ntext,					--ǰ MainDirectory  BannerMap
@BannerContentLayer ntext,				--ǰ MainDirectory  BannerContentLayer

@Editor ntext,						--ǰ mainDirectory ı༭Ȩ Ϊַ NULLֻ Admin  ChiefEditor Ա༭˾༭֣Զָ༭Ա༭
@DedicatedTo ntext,					--ǰ MainDirectory ķȨ Ϊַ NULL˿ɷʣָû飬ָûָµûɷʣ
@CommentsPermission ntext,				--ǰ MainDirectory Ȩ ǿַ NULL˿ָۣû飬ָûµûۣ

@oNewID int OUT					--¼¼ ID 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼ Ҫ Admin   ChiefEditor Ȩޣ
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'',0,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==޸ MainDirectory ¼֮ǰȿ¼ @System ǲΪ "true"ǣݿΪ true ļ¼Ϊ 'false' Ϊֻһ true˵ϵͳͬʱֻһ˵ System Menu
--=====================================================
IF @System=N'true'
BEGIN
	UPDATE dbo.MainDirectory SET [System]=N'false' WHERE [System]=N'true'
END

--=====================================================
--== MainDirectory ¼
--=====================================================
INSERT INTO dbo.MainDirectory(Serial,[Name],Url,UseBaseUrl,NewWindow,[System],InActiveMainMenuIconMap,ActiveMainMenuIconMap,BannerMap,BannerContentLayer,Editor,DedicatedTo,CommentsPermission) VALUES(@Serial,@Name,@Url,@UseBaseUrl,@NewWindow,@System,@InActiveMainMenuIconMap,@ActiveMainMenuIconMap,@BannerMap,@BannerContentLayer,@Editor,@DedicatedTo,@CommentsPermission)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ոձϢ ID
--======================================================
SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[MainDirectorySave]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.MainDirectoryModify    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MainDirectoryModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[MainDirectoryModify]
GO

--====================================================================================
--==޸ MainDirectory
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.MainDirectoryModify

@User nvarchar(50),					-- ASPX ˴ݹĵǰû

@MainDirectoryID int,					--ǰ MainDirectory  ID

@Serial int,						--ǰ MainDirectory кţÿ Knowledge ʾɸ Serial кԽԽʾ
@Name nvarchar(100),					--ǰ MainDirectory 
@Url nvarchar(2000),					--ǰ MainDirectory  Url
@UseBaseUrl nvarchar(50),				--ǰ MainDirectory  UseBaseUrl
@NewWindow nvarchar(50),				--ǰ MainDirectory  NewWindow Flag
@System nvarchar(50),					--ǰ MainDirectory  System Flag
@InActiveMainMenuIconMap ntext,			--ǰ MainDirectory  InActiveMainMenuIconMap
@ActiveMainMenuIconMap ntext,			--ǰ MainDirectory  ActiveMainMenuIconMap
@BannerMap ntext,					--ǰ MainDirectory  BannerMap 
@BannerContentLayer ntext,				--ǰ MainDirectory  BannerContentLayer

@Editor ntext,						--ǰ MainDirectory ı༭Ȩ Ϊַ NULLֻ Admin  ChiefEditor Ա༭˾༭֣ӢĶŸĶ༭Щ༭Ա༭
@DedicatedTo ntext,					--ǰ MainDirectory ķȨ Ϊַ NULL˿ɷʣָû飬ָûָµûɷʣ
@CommentsPermission ntext				--ǰ MainDirectory Ȩ ǿַ NULL˿ָۣû飬ָûµûۣ



AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'MainDirectory',@MainDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==޸ MainDirectory ¼֮ǰȿ¼ @System ǲΪ "true"ǣݿΪ true ļ¼Ϊ 'false' Ϊֻһ true˵ϵͳͬʱֻһ˵ System Menu
--=====================================================
IF @System=N'true'
BEGIN
	UPDATE dbo.MainDirectory SET [System]=N'false' WHERE [System]=N'true'
END

--=====================================================
--==޸ MainDirecytory
--=====================================================
UPDATE dbo.MainDirectory SET

	Serial=@Serial,
	[Name]=@Name,
	Url=@Url,
	UseBaseUrl=@UseBaseUrl,
	NewWindow=@NewWindow,
	[System]=@System,
	InActiveMainMenuIconMap=@InActiveMainMenuIconMap,
	ActiveMainMenuIconMap=@ActiveMainMenuIconMap,
	BannerMap=@BannerMap,
	BannerContentLayer=@BannerContentLayer,
	Editor=@Editor,
	DedicatedTo=@DedicatedTo,
	CommentsPermission=@CommentsPermission

WHERE [ID]=@MainDirectoryID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[MainDirectoryModify]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.MainDirectoryDelete    Script Date: 2009-7-10 19:03:37 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MainDirectoryDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[MainDirectoryDelete]
GO

--====================================================================================
--==ɾ MainDirectory Ŀ
--==ɾ MainDirectory Ŀͬʱᴥ Trigger ɾ MainDirectory Ӧ SubDirectory  MainDirectoryContent
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.MainDirectoryDelete

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@MainDirectoryID int				--ɾ MainDirectory  Ŀ ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼  Ҫ Admin  ChiefEditor Ȩޣ
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'',0,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==
--=====================================================
DELETE FROM dbo.MainDirectory WHERE [ID]=@MainDirectoryID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[MainDirectoryDelete]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.SubDirectoryDelete    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SubDirectoryDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[SubDirectoryDelete]
GO

--====================================================================================
--==ɾ SubDirectory Ŀ
--==ɾ SubDirectory Ŀ Trigger ͬʱɾ SubDirectoryContent  PageDirectory еӦĿ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.SubDirectoryDelete

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@SubDirectoryID int				--ɾ SubDirectory  Ŀ ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== SubDirectoryID  MainDirectoryID
--=====================================================
DECLARE @MainDirectoryID INT
SELECT @MainDirectoryID=sd.MainDirectoryID FROM dbo.SubDirectory sd WHERE sd.[ID]=@SubDirectoryID

--=====================================================
--==ûȨ޼飨ҪϼȨޣ
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'MainDirectory',@MainDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== SubDirectoryID öӦ MainDirectoryIDǰ MainDirectory Ƿֻһ SubDirectoryǣٴΪһ MainDirectory Ӧһ SubDirectory
--=====================================================
--DECLARE @MainDirectoryID INT
DECLARE @Count INT

--SELECT @MainDirectoryID=sd.MainDirectoryID FROM dbo.SubDirectory sd WHERE sd.[ID]=@SubDirectoryID
SELECT @Count=COUNT(sd.[ID]) FROM dbo.SubDirectory sd WHERE sd.MainDirectoryID=@MainDirectoryID

--=====================================================
--==Ψһ SubDirectory Ŀٴɾ
--=====================================================
IF @Count<=1

	BEGIN
		--=====================================================
		--==ٴ
		--=====================================================
		RAISERROR(N'ɾĿ¼ϼĿ¼Ŀ¼ΨһĿɾ',16,1)
	END
ELSE

	BEGIN
		--=====================================================
		--==
		--=====================================================
		DELETE FROM dbo.SubDirectory WHERE [ID]=@SubDirectoryID
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[SubDirectoryDelete]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PageDirectoryDelete    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PageDirectoryDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PageDirectoryDelete]
GO

--====================================================================================
--==ɾ PageDirectory Ŀ
--==ɾ PageDirectory Ŀ Trigger ͬʱɾ Knowledge  PageDirectoryContent Ŀ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.PageDirectoryDelete

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@PageDirectoryID int				--ɾ PageDirectory  Ŀ ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== PageDirectoryID ϼ SubDirectoryID
--=====================================================
DECLARE @SubDirectoryID INT
SELECT @SubDirectoryID=pd.SubDirectoryID FROM dbo.PageDirectory pd WHERE pd.[ID]=@PageDirectoryID

--=====================================================
--==ûȨ޼ ҪϼȨޣ
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'SubDirectory',@SubDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== PageDirectoryID öӦ SubDirectoryIDǰ SubDirectory Ƿֻһ PageDirectoryǣٴΪһ SubDirectory Ӧһ PageDirectory
--=====================================================
--DECLARE @SubDirectoryID2 INT
DECLARE @Count INT

--SELECT @SubDirectoryID2=pd.SubDirectoryID FROM dbo.PageDirectory pd WHERE pd.[ID]=@PageDirectoryID
SELECT @Count=COUNT(pd.[ID]) FROM dbo.PageDirectory pd WHERE pd.SubDirectoryID=@SubDirectoryID

--=====================================================
--==Ψһ PageDirectory Ŀٴɾ
--=====================================================
IF @Count<=1

	BEGIN
		--=====================================================
		--==ٴ
		--=====================================================
		RAISERROR(N'ɾҳĿ¼ϼĿ¼Ŀ¼ΨһĿɾ',16,1)
	END

ELSE

	BEGIN
		--=====================================================
		--==ɾ
		--=====================================================
		DELETE FROM dbo.PageDirectory WHERE [ID]=@PageDirectoryID
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PageDirectoryDelete]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeDelete    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeDelete]
GO

--====================================================================================
--==ɾ Knowledge Ŀ
--==ɾ Knowledge Ŀʱ Knowledge е Trigger ᱻִж KnowledgeContent ӦĿɾ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeDelete

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@KnowledgeID int				--ɾ Knowledge  Ŀ ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @KnowledgeID ضӦ PageDirectoryID
--=====================================================
DECLARE @PageDirectoryID INT
SELECT @PageDirectoryID=now.PageDirectoryID FROM dbo.Knowledge now WHERE now.[ID]=@KnowledgeID

--=====================================================
--==ûȨ޼ ɾȨҪϼ
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'PageDirectory',@PageDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ɾ
--=====================================================
DELETE FROM dbo.Knowledge WHERE [ID]=@KnowledgeID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeDelete]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.RegisterSave    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[RegisterSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[RegisterSave]
GO

--====================================================================================
--==ûע
--==ȼ鵱ǰûǷѾڣڣٴ
--==ôûд Users  Community ɫͬʱ UserForums Уû Read, TopicWriteEnabled, FollowUpWriteEnabled Ȩ޷ Public Forum
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.RegisterSave

@Name nvarchar(50),					--û
@Password nvarchar(20),				--ԭģݿû 󳤶 20
@EncryptedPassword nvarchar(200),			--ļʽ뽫 Users  Login ʱ򣬽ͬ¼ 󳤶 200
@FirstName nvarchar(50),				--
@LastName nvarchar(50),				--
@Tel nvarchar(50),					--绰
@Email nvarchar(100),					--ʼ
@Sex int,						--Ա
@Organization nvarchar(200),				--֯
@Remark nvarchar(2000)				--ע

AS


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼ Ҫ
--=====================================================


--=====================================================
--==
--=====================================================
SET @Name=LTRIM(RTRIM(@Name))
SET @Password=LTRIM(RTRIM(@Password))
SET @EncryptedPassword=LTRIM(RTRIM(@EncryptedPassword))


--=====================================================
--==ĳЩΪ
--=====================================================
IF (@Name=N'') OR (@Name IS NULL) OR (@Password=N'') OR (@Password IS NULL) OR (@EncryptedPassword=N'') OR (@EncryptedPassword IS NULL)
BEGIN
	RAISERROR(N'û벻Ϊա',16,1)
	RETURN
END


--=====================================================
--==ûѾ
--=====================================================
IF dbo.UDF_PublicProfileExists(@Name)=1
BEGIN
	RAISERROR(N'ѡûѾڣѡһ֡',16,1)
	RETURN
END


--=====================================================
--==ر  
--==עԶ UserRole (2 - Community)
--==עû IsClient ԶΪ 2 (CANCEL)
--=====================================================
DECLARE @UserRole INT 	
SET @UserRole=dbo.UDF_UserRoleID(N'Community')

--=====================================================
--== UserRole ͬͬ Name,Password,.... 浽 Users 
--=====================================================
INSERT INTO dbo.Users ([Name],[Password],FirstName,LastName,Tel,Email,Sex,Organization,Remark,RegisterDate,UserRole) VALUES (@Name,@EncryptedPassword,@FirstName,@LastName,@Tel,@Email,@Sex,@Organization,@Remark,GETDATE(),@UserRole)

--=====================================================
--==û ReadEnabled, TopicWriteEnabled, FollowUpWriteEnabled Ȩ޷ Public Forum
--=====================================================
INSERT INTO dbo.UserForums ([User],Forum,ReadEnabled,TopicWriteEnabled,FollowUpWriteEnabled) SELECT @Name,[ID],1,1,1 FROM dbo.Forum WHERE [Public]=N'true'

--=====================================================
--==ûӵעĬ
--=====================================================
INSERT INTO dbo.UserGroups (UserGroupID,[User]) SELECT ug.[ID], @Name FROM dbo.UserGroup ug WHERE ug.RegisterDefault=1

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[RegisterSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.CommunityTreeSelect    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CommunityTreeSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[CommunityTreeSelect]
GO

--====================================================================================
--== View_CommunityTree лȡȫָļ¼
--== CommunityDirectory  CommunityItem  NULL򷵻ȫ¼ 򣬷ָļ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.CommunityTreeSelect

@CommunityDirectory NVARCHAR(4000),		--Community Ŀ¼
@CommunityItem INT,					--Community ID
@Culture nvarchar(100)     				--ָĻ  


AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @CommunityDirectory  @CommunityItem  NULL
--=====================================================
IF @CommunityDirectory IS NULL AND @CommunityItem IS NULL

	--=====================================================
	--== View_CommunityTree
	--=====================================================
	BEGIN
		SELECT * FROM dbo.View_CommunityTree WHERE Culture=@Culture ORDER BY Serial
	END

ELSE

	--=====================================================
	--== @CommunityDirectory  @CommunityItem  NULL
	--=====================================================
	IF @CommunityDirectory IS NOT NULL AND @CommunityItem IS NOT NULL

		--=====================================================
		--==ָ @CommunityDirectory µָ Item
		--=====================================================
		BEGIN
			SELECT * FROM dbo.View_CommunityTree WHERE Directory IN (Select Element From dbo.UDF_PublicSplit(@CommunityDirectory,N',')) AND [ID]=@CommunityItem AND Culture=@Culture ORDER BY Serial
		END

	ELSE

		--=====================================================
		--==ָ @CommunityDirectory µ Item
		--=====================================================
		BEGIN
			SELECT * FROM dbo.View_CommunityTree WHERE Directory IN (Select Element From dbo.UDF_PublicSplit(@CommunityDirectory,N',')) AND Culture=@Culture ORDER BY Serial
		END


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[CommunityTreeSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.CommunitySelect    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CommunitySelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[CommunitySelect]
GO

--====================================================================================
--==ݸ  CommunityItem (Community ID)  Community еָ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.CommunitySelect

@CommunityItem INT				--Community ¼ ID

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ
--====================================================================================
SELECT
	[ID] AS [ID],
	Serial AS Serial,
	[Name] AS [Name],
	InActiveMainMenuIconMap AS InActiveMainMenuIconMap,
	ActiveMainMenuIconMap AS ActiveMainMenuIconMap,
	BannerMap AS BannerMap,
	BannerContentLayer AS BannerContentLayer

FROM dbo.Community

WHERE [ID]=@CommunityItem

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[CommunitySelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ForumSelect    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ForumSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ForumSelect]
GO

--====================================================================================
--==ݸ  CommunityItem (Forum ID)  Forum еָ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.ForumSelect

@CommunityItem INT				--Forum ¼ ID

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ Forum 
--====================================================================================
SELECT
	[ID] AS [ID],
	CommunityID AS CommunityID,
	Serial AS Serial,
	[Name] AS [Name],
	Moderator AS Moderator,
	ISNULL([Public],N'true') AS [Public]

FROM dbo.Forum

WHERE [ID]=@CommunityItem


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ForumSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.CommunitySave    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CommunitySave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[CommunitySave]
GO

--====================================================================================
--== Community
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.CommunitySave

@User nvarchar(50),					-- ASPX ˴ݹĵǰû

@Serial int,						--ǰ Community кţÿ Community  ʾɸ Serial кԽԽʾ
@Name nvarchar(50),					--ǰ Community 
@InActiveMainMenuIconMap ntext,			--ǰ Community  InActiveMainMenuIconMap
@ActiveMainMenuIconMap ntext,			--ǰ Community  ActiveMainMenuIconMap
@BannerMap ntext,					--ǰ Community  BannerMap
@BannerContentLayer ntext,				--ǰ Community  BannerContentLayer

@oNewID int OUT					--¼¼ ID 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==
--=====================================================
INSERT INTO dbo.Community(Serial,[Name],InActiveMainMenuIconMap,ActiveMainMenuIconMap,BannerMap,BannerContentLayer) VALUES(@Serial,@Name,@InActiveMainMenuIconMap,@ActiveMainMenuIconMap,@BannerMap,@BannerContentLayer)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ոձϢ ID
--======================================================
SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Session ڵı

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[CommunitySave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ForumSave    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ForumSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ForumSave]
GO

--====================================================================================
--== Forum
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.ForumSave

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@CommunityID int,			--ǰ Forum Ӧ Community  ID

@Serial int,				--ǰ Forum кţÿ Forum  ʾɸ Serial кԽԽʾ
@Name nvarchar(50),			--ǰ Forum 
@Moderator nvarchar(1000),		--ǰ Forum İбԡ
@Public nvarchar(50),			--ǰ Forum Ƿ Public

@oNewID int OUT			--¼¼ ID 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== 
--=====================================================
INSERT INTO dbo.Forum(CommunityID,Serial,[Name],Moderator,[Public]) VALUES(@CommunityID,@Serial,@Name,dbo.UDF_ModeratorClean(@Moderator),@Public)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ոձϢ ID
--======================================================
SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Session ڵı

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ForumSave]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.CommunityModify    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CommunityModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[CommunityModify]
GO

--====================================================================================
--==޸ Community
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.CommunityModify

@User nvarchar(50),					-- ASPX ˴ݹĵǰû

@CommunityID int,					--ǰ Community  ID

@Serial int,						--ǰ Community кţÿ Community ʾɸ Serial кԽԽʾ
@Name nvarchar(50),					--ǰ Community 
@InActiveMainMenuIconMap ntext,			--ǰ Community  InActiveMainMenuIconMap
@ActiveMainMenuIconMap ntext,			--ǰ Community  ActiveMainMenuIconMap
@BannerMap ntext,					--ǰ Community  BannerMap
@BannerContentLayer ntext				--ǰ Community  BannerContentLayer

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==
--=====================================================
UPDATE dbo.Community SET

	Serial=@Serial,
	[Name]=@Name,
	InActiveMainMenuIconMap=@InActiveMainMenuIconMap,
	ActiveMainMenuIconMap=@ActiveMainMenuIconMap,
	BannerMap=@BannerMap,
	BannerContentLayer=@BannerContentLayer

WHERE [ID]=@CommunityID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[CommunityModify]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ForumModify    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ForumModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ForumModify]
GO

--====================================================================================
--==޸ Forum
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.ForumModify

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@ForumID int,				--ǰ Forum  ID

@Serial int,				--ǰ Forum кţÿ Forum ʾɸ Serial кԽԽʾ
@Name nvarchar(50),			--ǰ Forum 
@Moderator nvarchar(1000),		--ǰ Forum İб  
@Public nvarchar(50)			--ǰ Forum Ƿ Public ûʱ򣬻ԶΪ½û Public Forum Ȩޣ


AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==޸ 
--=====================================================
UPDATE dbo.Forum SET

	Serial=@Serial,
	[Name]=@Name,
	Moderator=dbo.UDF_ModeratorClean(@Moderator),
	[Public]=@Public

WHERE [ID]=@ForumID


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ForumModify]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.CommunityDelete    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CommunityDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[CommunityDelete]
GO

--====================================================================================
--==ɾ Community Ŀ
--==ɾ Community Ŀ Trigger ͬʱɾ CommunityContent  Forum жӦļ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-11-08
--====================================================================================

CREATE PROCEDURE dbo.CommunityDelete

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@CommunityID int				--ɾ Community  Ŀ ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==
--=====================================================
DELETE FROM dbo.Community WHERE [ID]=@CommunityID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[CommunityDelete]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ForumDelete    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ForumDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ForumDelete]
GO

--====================================================================================
--==ɾ Forum Ŀ
--==ɾĿ Trigger ͬʱɾ Topic Ӧ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.ForumDelete

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@ForumID int				--ɾ Forum  Ŀ ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==
--=====================================================
DELETE FROM dbo.Forum WHERE [ID]=@ForumID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ForumDelete]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeQuery    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeQuery]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeQuery]
GO

--====================================================================================
--== SP ãݸѯ Knowledge 
--== KeywordΪNULL, 
--==Culture ֻĻµ
--==ҳƣȽѯһṹһһPagingIDıPagingID@PageSize@CurrentPageѡȡǰҳļ¼ҳΪһ׷λ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeQuery

@Keyword nvarchar(4000),		--ؼ
@Culture nvarchar(100),			--ָĻ

@PageSize INT,			--ҳƣÿҳĳߴ
@CurrentPage INT,			--ҳƣǰҳ
@OrderBy nvarchar(100),		--
@OrderByOrder nvarchar(10)		--ʽ ASC, DESC

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ݴڴڶ̬ĵطʹã
--=====================================================
SET @Keyword=dbo.UDF_PublicStringEscape(@Keyword)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==Ȩ޼飨Ҫ
--=====================================================

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== Where Ӿ
--=====================================================
DECLARE @DynSQL NVARCHAR(4000)    
DECLARE @DynWhere NVARCHAR(4000)

--=====================================================
--==ҳ 
--=====================================================
SET @DynSQL=N' SET NOCOUNT ON   '
SET @DynSQL=@DynSQL + N' Declare @Paging table '
SET @DynSQL=@DynSQL + N' ( '
SET @DynSQL=@DynSQL + N' PagingID int identity(1,1), '
SET @DynSQL=@DynSQL + N' [ID] int, '
SET @DynSQL=@DynSQL + N' Title nvarchar(2000) COLLATE database_default, '
SET @DynSQL=@DynSQL + N' Content ntext COLLATE database_default, '
SET @DynSQL=@DynSQL + N' PageDirectoryName nvarchar(100) COLLATE database_default '
SET @DynSQL=@DynSQL + N' ) '

--=====================================================
--==ҳ 
--=====================================================
SET @DynSQL=@DynSQL + N' Insert into @Paging '

SET @DynSQL=@DynSQL + N' Select    '  
SET @DynSQL=@DynSQL + N' now.[ID] as [ID], '
SET @DynSQL=@DynSQL + N' Case nowc.Title When Null Then N''No Title'' When N'''' Then N''No Title'' Else nowc.Title End as Title, '
SET @DynSQL=@DynSQL + N' nowc.Content as Content, '
SET @DynSQL=@DynSQL + N' pd.[Name] as PageDirectoryName '

SET @DynSQL=@DynSQL + N' From dbo.Knowledge now '
SET @DynSQL=@DynSQL + N' Left Join dbo.KnowledgeContent nowc on nowc.KnowledgeID=now.[ID] And nowc.Culture='''  + @Culture +  N''''
SET @DynSQL=@DynSQL + N' Left Join dbo.PageDirectory pd on pd.[ID]=now.PageDirectoryID '
SET @DynSQL=@DynSQL + N' WHERE nowc.Hidden<>N''true'' '

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
		
--=====================================================
--==̬ WHERE Ӿ
--=====================================================
SET @DynWhere=N''
		
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
		
--=====================================================
--==@Keyword ͳ0߿ַʾͳ: ֧ģͳ :
--==ע⣺ֱ Title  Content н
--=====================================================
IF @Keyword IS NOT NULL  
BEGIN
	--=====================================================
	--==˵ո (Ϊ @Keyword ΪNULL,Խ˳ոĲŵ)
	--=====================================================
	SET @Keyword=RTRIM(LTRIM(@Keyword)) 
		
	IF @Keyword<>N'' 
	BEGIN		
		SET @DynWhere=@DynWhere + N' and (nowc.Title like N''%' + @Keyword + N'%'' or nowc.Content like N''%' + @Keyword + N'%'') ' 
	END
END
	
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
		
--===========================================================
--==ǰ SQL  ̬ WHERE Ӿ @DynSQL Ѿ WHERE 1=1
--===========================================================
SET @DynSQL=@DynSQL + @DynWhere
		
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--===========================================================
--== Order By Ӿ
--== OrderBy='' ʹȱʡ order by UpdateTime DESC
--===========================================================
SET @OrderBy=LTRIM(RTRIM(@OrderBy))
SET @OrderByOrder=LTRIM(RTRIM(@OrderByOrder))
		
IF LEN(@OrderBy)=0 OR  LEN(@OrderByOrder)=0
	BEGIN
	SET @DynSQL=@DynSQL + N' order by Title DESC '
	END
ELSE
	BEGIN
	SET @DynSQL=@DynSQL + N' order by [' + @OrderBy + N'] ' + @OrderByOrder
	END
		

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
		
--=====================================================
--== @Paging лȡ
--=====================================================
Declare @FirstRecord int
Declare @LastRecord int
		
set @FirstRecord=(@CurrentPage - 1) * @PageSize	--ǰҳһ¼ǰ
set @LastRecord=(@CurrentPage * @PageSize + 1)	--ǰҳһ¼
		
--=====================================================
--==ܼ¼ÿҳļ¼Ceiling()õΪҳ ע⣺count(*)   @PageSize Ϊ INTõ INTԣҪת Decimal(18,2)
--=====================================================
set @DynSQL=@DynSQL + N' Select *,PageCount=CEILING (Convert(decimal(18,2),(select count(*) from @Paging)) / Convert(decimal(18,2),' + Convert(nvarchar(20),@PageSize) + N')) From @Paging Where PagingID>' + Convert(nvarchar(20),@FirstRecord) + N' and PagingID<' + Convert(nvarchar(20),@LastRecord)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--============================================
--==鶯̬ĳȣԳϵͳ
--============================================
DECLARE @oPassDynSQL INT
EXEC dbo.PublicDynSQLLengthCheck @DynSQL,@oPassDynSQL OUT
IF @oPassDynSQL=0 BEGIN RETURN END

--=====================================================
--==ִж̬ SQL 䣬 ʼͳ
--=====================================================
EXEC(@DynSQL)
RETURN

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeQuery]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserAccountOnlineList    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserAccountOnlineList]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserAccountOnlineList]
GO

--====================================================================================
--== Users õǰûб
--== UDF_PublicLoginOnline ԼĳûǷ
--== SP  DataRestoreUI.cs жϵǰǷԽ Restore  Restore һȫʩǣ뱣֤ǰûû
--==2008/11/19 Ŀǰ£UDF_PublicLoginOnline ʼշ 0 ԣ UserAccountOnlineList ʼշؿ Ϊǲʹݿ⼶ûϵͳ Table ûϵͳĿǰ UserOnLine ֻԻȻѾûãϣԺ Table ҲʵûǷ߸٣磬һû½ Profile һ online ־뿪һ offline ־Ժļƻ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-11-08
--====================================================================================

CREATE PROCEDURE dbo.UserAccountOnlineList

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

SELECT DISTINCT
		usr.[Name] AS [Name]

FROM dbo.Users usr
WHERE dbo.UDF_PublicLoginOnline(usr.[Name])=1

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserAccountOnlineList]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.MainDirectoryContentSelect    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MainDirectoryContentSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[MainDirectoryContentSelect]
GO

--====================================================================================
--==ݸ  KnowledgeItem (MainDirectory ID)  MainDirectoryContent   Culture µļ¼ָ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.MainDirectoryContentSelect

@KnowledgeItem INT				--MainDirectory ¼ ID

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ
--====================================================================================
SELECT
	mdc.[ID] AS [ID],
	mdc.MainDirectoryID AS MainDirectoryID,
	mdc.Culture AS Culture,
	mdc.Title AS Title,
	mdc.[Description] AS [Description],
	mdc.Hidden AS Hidden,
	mdc.PageHeader AS PageHeader,
	mdc.PageFooter AS PageFooter

FROM dbo.MainDirectoryContent mdc 

WHERE mdc.MainDirectoryID=@KnowledgeItem

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[MainDirectoryContentSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.SubDirectoryContentSelect    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SubDirectoryContentSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[SubDirectoryContentSelect]
GO

--====================================================================================
--==ݸ  KnowledgeItem (SubDirectory ID)  SubDirectoryContent  Culture µļ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.SubDirectoryContentSelect

@KnowledgeItem INT				--SubDirectory ¼ ID

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ
--====================================================================================
SELECT
	sdc.[ID] AS [ID],
	sdc.SubDirectoryID AS SubDirectoryID,
	sdc.Culture AS Culture,
	sdc.Title AS Title,
	sdc.[Description] AS [Description],
	sdc.WizardPreviousTitle AS WizardPreviousTitle,
	sdc.WizardNextTitle AS WizardNextTitle,
	sdc.Hidden AS Hidden,
	sdc.PageHeader,
	sdc.PageFooter


FROM dbo.SubDirectoryContent sdc 

WHERE sdc.SubDirectoryID=@KnowledgeItem

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[SubDirectoryContentSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PageDirectoryContentSelect    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PageDirectoryContentSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PageDirectoryContentSelect]
GO

--====================================================================================
--==ݸ  KnowledgeItem (PageDirectory ID)  PageDirectoryContent м¼µļ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.PageDirectoryContentSelect

@KnowledgeItem INT				--PageDirectory ¼ ID

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ
--====================================================================================
SELECT
	pdc.[ID] AS [ID],
	pdc.PageDirectoryID AS PageDirectoryID,
	pdc.Culture AS Culture,
	pdc.SeoTitle AS SeoTitle,
	pdc.SeoDescription AS SeoDescription,
	pdc.SeoKeywords AS SeoKeywords,
	pdc.Title AS Title,
	pdc.[Description] AS [Description],
	pdc.Hidden AS Hidden,
	pdc.PageHeader AS PageHeader,
	pdc.PageFooter AS PageFooter

FROM dbo.PageDirectoryContent pdc

WHERE pdc.PageDirectoryID=@KnowledgeItem

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PageDirectoryContentSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeContentSelect    Script Date: 2009-7-10 19:03:37 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeContentSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeContentSelect]
GO

--====================================================================================
--==ݸ  Knowledge ID   KnowledgeContent Ļµļ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeContentSelect

@KnowledgeItem INT				--Knowledge ¼ ID

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ
--====================================================================================
SELECT
	nowc.[ID] AS [ID],
	nowc.KnowledgeID AS KnowledgeID,
	nowc.Culture AS Culture,
	nowc.Template AS Template,
	nowc.Title AS Title,
	nowc.TitleShow AS TitleShow,
	nowc.Hidden AS Hidden,
	nowc.Content AS Content,
	nowc.Tag AS Tag,
	nowc.Abstract AS Abstract

FROM dbo.KnowledgeContent nowc

WHERE nowc.KnowledgeID=@KnowledgeItem

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeContentSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.MainDirectoryContentModify    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MainDirectoryContentModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[MainDirectoryContentModify]
GO

--====================================================================================
--==޸ MainDirectoryContent ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.MainDirectoryContentModify

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@MainDirectoryID int,			--ǰ MainDirectory  ID

@Title nvarchar(200),			--ǰ MainDirectory Contentı
@Description nvarchar(1000),		--ǰ MainDirectory Content
@Hidden nvarchar(50),			--ǰ MainDirectory Content Ƿ

@PageHeader ntext,			--ǰ mainDirectoryContent  PageHeader ¼̳У
@PageFooter ntext,			--ǰ mainDirectoryContent  PageFooter ¼̳У

@Culture nvarchar(100)			--ǰ MainDirectory Content Ļ


AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'MainDirectory',@MainDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ǰ @MainDirectoryID ǰ @Culture µ MainDirecytoryContent ¼ڣ޸֮֮ ΪһվںµĻ
--=====================================================
IF EXISTS (Select [ID] From dbo.MainDirectoryContent Where MainDirectoryID=@MainDirectoryID And Culture=@Culture)

	BEGIN
		--=====================================================
		--==޸ MainDirectoryContent
		--=====================================================
		UPDATE dbo.MainDirectoryContent SET

			Title=@Title,
			[Description]=@Description,
			Hidden=@Hidden,
			PageHeader=@PageHeader,
			PageFooter=@PageFooter

		WHERE MainDirectoryID=@MainDirectoryID AND Culture=@Culture
	END

ELSE

	BEGIN
		--=====================================================
		--==޸ MainDirectoryContent
		--=====================================================
		INSERT INTO dbo.MainDirectoryContent 

		(
			MainDirectoryID,
			Culture,
			Title,
			[Description],
			Hidden,
			PageHeader,
			PageFooter
		)

		VALUES

		(
			@MainDirectoryID,
			@Culture,
			@Title,
			@Description,
			@Hidden,
			@PageHeader,
			@PageFooter
		)
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[MainDirectoryContentModify]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.SubDirectoryContentModify    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SubDirectoryContentModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[SubDirectoryContentModify]
GO

--====================================================================================
--==޸ SubDirectoryContent
--====================================================================================
--==Ȩ 2001-2009 CMS
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.SubDirectoryContentModify

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@SubDirectoryID int,			--ǰ SubDirectory  ID

@Title nvarchar(200),			--ǰ SubDirectory Content ı
@Description nvarchar(1000),		--ǰ SubDirectory Content 
@WizardPreviousTitle nvarchar(200),	--ǰ SubDirectory  Wizard Ϊ true ʱ SubDirectory µ PageDirectory ݵĺ棬һ Wizard ǵ Previous ӵıǩ
@WizardNextTitle nvarchar(200),		--ǰ SubDirectory  Wizard Ϊ true ʱ SubDirectory µ PageDirectory ݵĺ棬һ Wizard ǵ "Next" ӵıǩ
@Hidden nvarchar(50),			--ǰǰ SubDirectory Content Ƿ

@PageHeader ntext,			--ǰ SubDirectory  PageHeader ¼̳У
@PageFooter ntext,			--ǰ SubDirectory  PageFooter ¼̳У

@Culture nvarchar(100)			--ǰ SubDirectory Content Ļ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'SubDirectory',@SubDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ǰ @SubDirectoryID ǰ @Culture µ SubDirectoryContent ¼ڣ޸֮֮ ΪһվںµĻ
--=====================================================
IF EXISTS (Select [ID] From dbo.SubDirectoryContent Where SubDirectoryID=@SubDirectoryID And Culture=@Culture)

	BEGIN
		--=====================================================
		--==޸ SubDirectoryContent
		--=====================================================
		UPDATE dbo.SubDirectoryContent SET

			Title=@Title,
			[Description]=@Description,
			WizardPreviousTitle=@WizardPreviousTitle,
			WizardNextTitle=@WizardNextTitle,
			Hidden=@Hidden,
			PageHeader=@PageHeader,
			PageFooter=@PageFooter


		WHERE SubDirectoryID=@SubDirectoryID AND Culture=@Culture
	END

ELSE

	BEGIN
		--=====================================================
		--== SubDirectoryContent
		--=====================================================
		INSERT INTO dbo.SubDirectoryContent 

		(
			SubDirectoryID,
			Culture,
			Title,
			[Description],
			WizardPreviousTitle,
			WizardNextTitle,
			Hidden,
			PageHeader,
			PageFooter
		)

		VALUES

		(
			@SubDirectoryID,
			@Culture,
			@Title,
			@Description,
			@WizardPreviousTitle,
			@WizardNextTitle,
			@Hidden,
			@PageHeader,
			@PageFooter
		)
	END


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[SubDirectoryContentModify]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PageDirectoryContentModify    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PageDirectoryContentModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PageDirectoryContentModify]
GO

--====================================================================================
--==޸ PageDirectoryContent
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.PageDirectoryContentModify

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@PageDirectoryID int,			--ǰ PageDirectory  ID

@SeoTitle nvarchar(500),		--ǰ PageDirectory Content  SeoTitle
@SeoDescription ntext,			--ǰ PageDirectory Content  SeoDescription
@SeoKeywords ntext,			--ǰ PageDirectory Content  SeoKeywords
@Title nvarchar(200),			--ǰ PageDirectory Content ı
@Description nvarchar(1000),		--ǰ PageDirectory Content 
@Hidden nvarchar(50),			--ǰ PageDirectory Content Ƿ
@PageHeader ntext,			--ǰ PageDirectory Content  PageHeader 
@PageFooter ntext,			--ǰ PageDirectory Content  PageFooter 
@Culture nvarchar(100)			--ǰ PageDirectory Content Ļ


AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'PageDirectory',@PageDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ǰ @PageDirectoryID ǰ @Culture µ PageDirectoryContent ¼ڣ޸֮֮ ΪһվںµĻ
--=====================================================
IF EXISTS (Select [ID] From dbo.PageDirectoryContent Where PageDirectoryID=@PageDirectoryID And Culture=@Culture)

	BEGIN
		--=====================================================
		--==޸ PageDirectory Content
		--=====================================================
		UPDATE dbo.PageDirectoryContent SET

			SeoTitle=@SeoTitle,
			SeoDescription=@SeoDescription,
			SeoKeywords=@SeoKeywords,
			Title=@Title,
			[Description]=@Description,
			Hidden=@Hidden,
			PageHeader=@PageHeader,
			PageFooter=@PageFooter

		WHERE PageDirectoryID=@PageDirectoryID AND Culture=@Culture
	END

ELSE

	BEGIN
		--=====================================================
		--== PageDirectory Content ¼
		--=====================================================
		INSERT INTO dbo.PageDirectoryContent 

		(
			PageDirectoryID,
			Culture,
			SeoTitle,
			SeoDescription,
			SeoKeywords,
			Title,
			[Description],
			Hidden,
			PageHeader,
			PageFooter
		)

		VALUES

		(
			@PageDirectoryID,
			@Culture,
			@SeoTitle,
			@SeoDescription,
			@SeoKeywords,
			@Title,
			@Description,
			@Hidden,
			@PageHeader,
			@PageFooter
		)
	END


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PageDirectoryContentModify]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeContentModify    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeContentModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeContentModify]
GO

--====================================================================================
--==޸ KnowledgeContent
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeContentModify

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@KnowledgeID int,			--ǰ Knowledge  ID

@Template nvarchar(200),		--ǰ KnowledgeContent ʹõ Template
@Title nvarchar(2000),			--ǰ KnowledgeContent ı
@TitleShow nvarchar(50),		--Ƿ񽫱ʾУ粩ͣ
@Content ntext,				--ǰ KnowledgeContent 
@Tag nvarchar(500),			--ǰ KnowledgeContent ıǩ
@Hidden nvarchar(50),			--Ƿصǰ Culture µ
@Abstract ntext,				--ǰ KnowledgeContent ժҪڡáժҪʾ
@Culture nvarchar(100)			--ǰ KnowledgeContent Ļ루 zh-cn

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'Knowledge',@KnowledgeID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ǰ @KnowledgeID ǰ @Culture µ KnowledgeContent ¼ڣ޸֮֮ ΪһվںµĻ
--=====================================================
IF EXISTS (Select [ID] From dbo.KnowledgeContent Where KnowledgeID=@KnowledgeID And Culture=@Culture)

	BEGIN
		--=====================================================
		--==޸ KnowledgeContent
		--=====================================================
		UPDATE dbo.KnowledgeContent SET 

			Template=@Template,
			Title=@Title, 
			TitleShow=@TitleShow,
			Content=@Content,
			Tag=@Tag,
			Hidden=@Hidden,
			Abstract=@Abstract

		WHERE KnowledgeID=@KnowledgeID AND Culture=@Culture

		--=====================================================
		--== @KnowledgeID  @Culture  KnowledgeContentID
		--=====================================================
		DECLARE @KnowledgeContentID INT
		SELECT @KnowledgeContentID=nowc.[ID] FROM dbo.KnowledgeContent nowc WHERE nowc.KnowledgeID=@KnowledgeID AND nowc.Culture=@Culture

		--=====================================================
		--==Ƚ KnowledgeTags еǰ KnowledgeContentID µ Tag ɾټµ Tag
		--=====================================================
		DELETE FROM dbo.KnowledgeTags WHERE KnowledgeContentID=@KnowledgeContentID
		INSERT INTO dbo.KnowledgeTags (KnowledgeContentID,Tag) SELECT @KnowledgeContentID,Element FROM dbo.UDF_PublicSplit(@Tag,N',')
	END
ELSE

	BEGIN
		--=====================================================
		--== KnowledgeContent
		--=====================================================
		INSERT INTO dbo.KnowledgeContent 

		(
			KnowledgeID,
			Culture,
			Template,
			Title,
			TitleShow,
			Content,
			Tag,
			Hidden,
			Abstract
		) 

		VALUES

		(
			@KnowledgeID,
			@Culture,
			@Template,
			@Title, 
			@TitleShow,
			@Content,
			@Tag,
			@Hidden,
			@Abstract
		)

		--======================================================
		--==ոձϢ ID
		--======================================================
		DECLARE @oNewID INT
		SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı

		--======================================================
		--== Tag ǡ, бֽ⣬ KnowledgeTags 
		--======================================================
		INSERT INTO dbo.KnowledgeTags(KnowledgeContentID,Tag) SELECT @oNewID, Element FROM dbo.UDF_PublicSplit(@Tag,N',')
		
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeContentModify]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.MainDirectoryContentSave    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MainDirectoryContentSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[MainDirectoryContentSave]
GO

--====================================================================================
--== MainDirectoryContent
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.MainDirectoryContentSave

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@MainDirectoryID INT,			--ǰ MainDirectory  ID

@Title nvarchar(200),			--ǰ MainDirectory Content ı
@Description nvarchar(1000),		--ǰ MainDirectory Content 
@Hidden nvarchar(50),			--ǰ MainDirectory Content Ƿ

@PageHeader ntext,			--ǰ mainDirectoryContent  PageHeader ¼̳У
@PageFooter ntext,			--ǰ mainDirectoryContent  PageFooter ¼̳У

@Culture nvarchar(100),			--ǰ MainDirectory Content Ļ

@oNewID int OUT			--¼¼ ID 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼  (KnowledgeDirectory=N'' Ҫ Admin  ChiefEditor Ȩ)
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'',0,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== MainDirectoryContent ¼
--=====================================================
INSERT INTO dbo.MainDirectoryContent(MainDirectoryID,Culture,Title,[Description],Hidden,PageHeader,PageFooter) VALUES(@MainDirectoryID,@Culture,@Title,@Description,@Hidden,@PageHeader,@PageFooter)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ոձϢ ID
--======================================================
SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[MainDirectoryContentSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.SubDirectoryContentSave    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SubDirectoryContentSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[SubDirectoryContentSave]
GO

--====================================================================================
--== SubDirectoryContent
--====================================================================================
--==Ȩ 2001-2009 
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.SubDirectoryContentSave

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@SubDirectoryID int,			--ǰ SubDirectory   ID

@Title nvarchar(200),			--ǰ SubDirectory Content ı
@Description nvarchar(1000),		--ǰ SubDirectory Content 
@WizardPreviousTitle nvarchar(200),	--ǰ SubDirectory  Wizard Ϊ true ʱ SubDirectory µ PageDirectory ݵĺ棬һ Wizard ǵ Previous ӵıǩ
@WizardNextTitle nvarchar(200),		--ǰ SubDirectory  Wizard Ϊ true ʱ SubDirectory µ PageDirectory ݵĺ棬һ Wizard ǵ "Next" ӵıǩ
@Hidden nvarchar(50),			--ǰ SubDirectory Content Ƿ

@PageHeader ntext,			--ǰ SubDirectory  PageHeader ¼̳У
@PageFooter ntext,			--ǰ SubDirectory  PageFooter ¼̳У

@Culture nvarchar(100),			--ǰ SubDirectory Content Ļ

@oNewID int OUT			--¼¼ ID 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @SubDirectoryID ȡӦ MainDirectoryID
--=====================================================
DECLARE @MainDirectoryID INT
SELECT @MainDirectoryID=sd.MainDirectoryID FROM dbo.SubDirectory sd WHERE sd.[ID]=@SubDirectoryID

--=====================================================
--==ûȨ޼飨ҪϼȨޣ
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'MainDirectory',@MainDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== SubDirectoryContent
--=====================================================
INSERT INTO dbo.SubDirectoryContent(SubDirectoryID,Culture,Title,[Description],WizardPreviousTitle,WizardNextTitle,Hidden,PageHeader,PageFooter) VALUES(@SubDirectoryID,@Culture,@Title,@Description,@WizardPreviousTitle,@WizardNextTitle,@Hidden,@PageHeader,@PageFooter)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ոձϢ ID
--======================================================
SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[SubDirectoryContentSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PageDirectoryContentSave    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PageDirectoryContentSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PageDirectoryContentSave]
GO

--====================================================================================
--== PageDirectoryContent
--====================================================================================
--==Ȩ 2001-2006 
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.PageDirectoryContentSave

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@PageDirectoryID int,			--ǰ PageDirectory   ID

@SeoTitle nvarchar(500),		--ǰ PageDirectory Content  SeoTitle
@SeoDescription ntext,			--ǰ PageDirectory Content  SeoDescription
@SeoKeywords ntext,			--ǰ PageDirectory Content  SeoKeywords
@Title nvarchar(200),			--ǰ PageDirectory Content ı
@Description nvarchar(1000),		--ǰ PageDirectory Content 
@Hidden nvarchar(50),			--ǰ PageDirectory Content Ƿ
@PageHeader ntext,			--ǰ PageDirectory Content  Header 
@PageFooter ntext,			--ǰ PageDirectory Content  Footer 
@Culture nvarchar(100),			--ǰ PageDirectory Content Ļ

@oNewID int OUT			--¼¼ ID 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @PageDirectoryID Ӧ SubDirectoryID Ҫ SubDirectory ༭Ȩޣ
--=====================================================
DECLARE @SubDirectoryID INT
SELECT @SubDirectoryID=pd.SubDirectoryID FROM dbo.PageDirectory pd WHERE pd.[ID]=@PageDirectoryID

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'SubDirectory',@SubDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== PageDirectoryContent ¼
--=====================================================
INSERT INTO dbo.PageDirectoryContent(PageDirectoryID,Culture,SeoTitle,SeoDescription,SeoKeywords,Title,[Description],Hidden,PageHeader,PageFooter) VALUES(@PageDirectoryID,@Culture,@SeoTitle,@SeoDescription,@SeoKeywords,@Title,@Description,@Hidden,@PageHeader,@PageFooter)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ոձϢ ID
--======================================================
SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PageDirectoryContentSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeContentSave    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeContentSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeContentSave]
GO

--====================================================================================
--== KnowledgeContent
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeContentSave

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@KnowledgeID int,			--ǰ Knowledge  ID

@Template nvarchar(200),		--ǰ KnowledgeContent ʹõ Template
@Title nvarchar(2000),			--ǰ Knowledge Content ı
@TitleShow nvarchar(50),		--ǷʾУ粩ͣ
@Content ntext,				--ǰ Knowledge Content 
@Tag nvarchar(500),			--ǰ Knowledge Content ıǩ
@Hidden nvarchar(50),			--Ƿصǰ Culture µ
@Abstract ntext,				--ǰ Knowledge Content ժҪ
@Culture nvarchar(100),			--ǰ Knowledge Content Ļ

@oNewID int OUT			--¼¼ ID 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @KnowledgeID  PageDirectoryID
--=====================================================
DECLARE @PageDirectoryID INT
SELECT @PageDirectoryID=now.PageDirectoryID FROM dbo.Knowledge now WHERE now.[ID]=@KnowledgeID

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'PageDirectory',@PageDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== Knowledge Content
--=====================================================
INSERT INTO dbo.KnowledgeContent(KnowledgeID,Culture,Template,Title,TitleShow,Content,Tag,Hidden,Abstract) VALUES(@KnowledgeID,@Culture,@Template,@Title,@TitleShow,@Content,@Tag,@Hidden,@Abstract)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ոձϢ ID
--======================================================
SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--== Tag ǡ, бֽ⣬ KnowledgeTags 
--======================================================
INSERT INTO dbo.KnowledgeTags(KnowledgeContentID,Tag) SELECT @oNewID, Element FROM dbo.UDF_PublicSplit(@Tag,N',')

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeContentSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.CommunityContentModify    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CommunityContentModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[CommunityContentModify]
GO

--====================================================================================
--==޸ CommunityContent
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008/10/28
--====================================================================================

CREATE PROCEDURE dbo.CommunityContentModify

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@CommunityID int,			--ǰ Community  ID

@Title nvarchar(200),			--ǰ CommunityContent ı
@Description nvarchar(1000),		--ǰ CommunityContent 
@Hidden nvarchar(50),			--ǰ CommunityContent Ƿ
@Culture nvarchar(100)			--ǰ CommunityContent Ļ루 zh-cn

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ǰ @CommunityID ǰ @Culture µ CommunityContent ¼ڣ޸֮֮ ΪһվںµĻ
--=====================================================
IF EXISTS (Select [ID] From dbo.CommunityContent Where CommunityID=@CommunityID And Culture=@Culture)

	BEGIN
		--=====================================================
		--==޸ CommunityContent
		--=====================================================
		UPDATE dbo.CommunityContent SET 

			Title=@Title, 
			[Description]=@Description,
			Hidden=@Hidden

		WHERE CommunityID=@CommunityID AND Culture=@Culture
	END
ELSE

	BEGIN
		--=====================================================
		--== CommunityContent
		--=====================================================
		INSERT INTO dbo.CommunityContent 

		(
			CommunityID,
			Culture,
			Title,
			[Description],
			Hidden
		) 

		VALUES

		(
			@CommunityID,
			@Culture,
			@Title, 
			@Description,
			@Hidden
		)
		
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[CommunityContentModify]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.CommunityContentSave    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CommunityContentSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[CommunityContentSave]
GO

--====================================================================================
--== CommunityContent
--====================================================================================
--==Ȩ 2001-2008 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.CommunityContentSave

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@CommunityID int,			--ǰ Community  ID

@Title nvarchar(200),			--ǰ CommunityContent ı
@Description nvarchar(1000),		--ǰ CommunityContent 
@Hidden nvarchar(50),			--ǰ CommunityContent  Hidden 
@Culture nvarchar(100),			--ǰ CommunityContent Ļ루 zh-cn

@oNewID int OUT			--¼¼ ID 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== CommunityContent
--=====================================================
INSERT INTO dbo.CommunityContent 

(
	CommunityID,
	Culture,
	Title,
	[Description],
	Hidden
) 

VALUES

(
	@CommunityID,
	@Culture,
	@Title, 
	@Description,
	@Hidden
)
		
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ոձϢ ID
--======================================================
SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Session ڵı

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[CommunityContentSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.CommunityContentSelect    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CommunityContentSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[CommunityContentSelect]
GO

--====================================================================================
--==ݸ  CommunityItem (Community ID)  CommunityContent еָ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.CommunityContentSelect

@CommunityItem INT				--Community ¼ ID

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ
--====================================================================================
SELECT
	coc.[ID] AS [ID],
	coc.CommunityID AS CommunityID,
	coc.Culture AS Culture,
	coc.Title AS Title,
	coc.[Description] AS [Description],
	coc.Hidden AS Hidden

FROM dbo.CommunityContent coc

WHERE CommunityID=@CommunityItem

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[CommunityContentSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ForumContentModify    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ForumContentModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ForumContentModify]
GO

--====================================================================================
--==޸ ForumContent
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.ForumContentModify

@User nvarchar(50),					-- ASPX ˴ݹĵǰû

@ForumID int,						--ǰ Forum  ID

@Title nvarchar(200),					--ǰ CommunityContent ı
@Description nvarchar(1000),				--ǰ CommunityContent 
@Culture nvarchar(100),					--ǰ CommunityContent Ļ루 zh-cn

@CommandTitleTaskList nvarchar(200),			--ǰ CommunityContent   ǰ⡱ ǩ 
@CommandTitleTaskListDescription nvarchar(500),	--ǰ CommunityContent   ǰ⡱ ǩ
@CommandTitleAdd nvarchar(200),			--ǰ CommunityContent   ⡱ ǩ 
@CommandTitleAddDescription nvarchar(500),		--ǰ CommunityContent   ⡱ ǩ
@CommandTitleQuery nvarchar(200),			--ǰ CommunityContent    ǩ 
@CommandTitleQueryDescription nvarchar(500),		--ǰ CommunityContent    ǩ

@Hidden nvarchar(50)					--ǰ CommunityContent  "Hidden" 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ǰ @ForumID ǰ @Culture µ ForumContent ¼ڣ޸֮֮ ΪһվںµĻ
--=====================================================
IF EXISTS (Select [ID] From dbo.ForumContent Where ForumID=@ForumID And Culture=@Culture)

	BEGIN
		--=====================================================
		--==޸ ForumContent
		--=====================================================
		UPDATE dbo.ForumContent SET 

			Title=@Title, 
			[Description]=@Description,
			CommandTitleTaskList=@CommandTitleTaskList,
			CommandTitleTaskListDescription=@CommandTitleTaskListDescription,
			CommandTitleAdd=@CommandTitleAdd,
			CommandTitleAddDescription=@CommandTitleAddDescription,
			CommandTitleQuery=@CommandTitleQuery,
			CommandTitleQueryDescription=@CommandTitleQueryDescription,
			Hidden=@Hidden

		WHERE ForumID=@ForumID AND Culture=@Culture
	END
ELSE

	BEGIN
		--=====================================================
		--== ForumContent
		--=====================================================
		INSERT INTO dbo.ForumContent 

		(
			ForumID,
			Culture,
			Title,
			[Description],
			CommandTitleTaskList,
			CommandTitleTaskListDescription,
			CommandTitleAdd,
			CommandTitleAddDescription,
			CommandTitleQuery,
			CommandTitleQueryDescription,
			Hidden
		) 

		VALUES

		(
			@ForumID,
			@Culture,
			@Title, 
			@Description,
			@CommandTitleTaskList,
			@CommandTitleTaskListDescription,
			@CommandTitleAdd,
			@CommandTitleAddDescription,
			@CommandTitleQuery,
			@CommandTitleQueryDescription,
			@Hidden
		)
		
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ForumContentModify]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ForumContentSave    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ForumContentSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ForumContentSave]
GO

--====================================================================================
--== ForumContent
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.ForumContentSave

@User nvarchar(50),					-- ASPX ˴ݹĵǰû

@ForumID int,						--ǰ Forum  ID

@Title nvarchar(200),					--ǰ CommunityContent ı
@Description nvarchar(1000),				--ǰ CommunityContent 
@Culture nvarchar(100),					--ǰ CommunityContent Ļ루 zh-cn

@CommandTitleTaskList nvarchar(200),			--ǰ CommunityContent   ǰ⡱ ǩ 
@CommandTitleTaskListDescription nvarchar(500),	--ǰ CommunityContent   ǰ⡱ ǩ
@CommandTitleAdd nvarchar(200),			--ǰ CommunityContent   ⡱ ǩ 
@CommandTitleAddDescription nvarchar(500),		--ǰ CommunityContent   ⡱ ǩ
@CommandTitleQuery nvarchar(200),			--ǰ CommunityContent    ǩ 
@CommandTitleQueryDescription nvarchar(500),		--ǰ CommunityContent    ǩ
@Hidden nvarchar(50),					--ǰ CommunityContent   Hiden  

@oNewID int OUT   					--¼¼ ID   


AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== ForumContent
--=====================================================
INSERT INTO dbo.ForumContent 

(
	ForumID,
	Culture,
	Title,
	[Description],
	CommandTitleTaskList,
	CommandTitleTaskListDescription,
	CommandTitleAdd,
	CommandTitleAddDescription,
	CommandTitleQuery,
	CommandTitleQueryDescription,
	Hidden
) 

VALUES

(
	@ForumID,
	@Culture,
	@Title, 
	@Description,
	@CommandTitleTaskList,
	@CommandTitleTaskListDescription,
	@CommandTitleAdd,
	@CommandTitleAddDescription,
	@CommandTitleQuery,
	@CommandTitleQueryDescription,
	@Hidden
)
		
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ  
  
--======================================================  
--==ոձϢ ID  
--======================================================  
SELECT @oNewID=SCOPE_IDENTITY() --ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı  


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ForumContentSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ForumContentSelect    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ForumContentSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ForumContentSelect]
GO

--====================================================================================
--==ݸ  ForumItem (Forum ID)  ForumContent еָ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.ForumContentSelect

@ForumItem INT				--Forum ¼ ID

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ
--====================================================================================
SELECT
	foc.[ID] AS [ID],
	foc.ForumID AS ForumID,
	foc.Culture AS Culture,
	foc.Title AS Title,
	foc.[Description] AS [Description],
	foc.CommandTitleTaskList AS CommandTitleTaskList,
	foc.CommandTitleTaskListDescription AS CommandTitleTaskListDescription,
	foc.CommandTitleAdd AS CommandTitleAdd,
	foc.CommandTitleAddDescription AS CommandTitleAddDescription,
	foc.CommandTitleQuery AS CommandTitleQuery,
	foc.CommandTitleQueryDescription AS CommandTitleQueryDescription,
	foc.Hidden AS Hidden


FROM dbo.ForumContent foc

WHERE ForumID=@ForumItem

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ForumContentSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ForumList    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ForumList]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ForumList]
GO

--====================================================================================
--== Forum еĿԱϵͳΪǰû Forum  ĶдȨ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.ForumList

@Culture nvarchar(100)				--Ҫ Forum бʱָĻ

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ Forum 
--====================================================================================
SELECT 
	fo.[ID] AS [ID],
	fo.CommunityID AS  CommunityID,
	fo.Serial AS Serial,
	fo.[Name] AS [Name],
	fo.Moderator AS Moderator,
	ISNULL(fo.[Public],N'true') AS [Public],
	foc.Culture AS Culture,
	coc.Title + N' / ' + foc.Title AS Title,
	foc.[Description] AS [Description],
	ISNULL(foc.Hidden,N'false') AS Hidden


FROM dbo.Forum fo
LEFT JOIN dbo.ForumContent foc ON foc.ForumID=fo.[ID]
LEFT JOIN dbo.Community co ON co.[ID]=fo.CommunityID
LEFT JOIN dbo.CommunityContent coc ON coc.CommunityID=co.[ID]

WHERE foc.Culture=@Culture AND coc.Culture=@Culture

ORDER BY fo.CommunityID


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ForumList]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserForumsSelect    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserForumsSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserForumsSelect]
GO

--====================================================================================
--== UserForums صǰûڲͬ Forum ϵȨ
--====================================================================================
--==Ȩ 2001-2006 
--==޸ 2006-05-29
--====================================================================================

CREATE PROCEDURE dbo.UserForumsSelect

@User nvarchar(50)				--ָû

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ UserForums 
--====================================================================================
SELECT 
	uf.[ID] AS [ID],
	uf.[User] AS  [User],
	uf.Forum AS Forum,
	uf.ReadEnabled AS ReadEnabled,
	uf.TopicWriteEnabled AS TopicWriteEnabled,
	uf.FollowUpWriteEnabled AS FollowUpWriteEnabled

FROM dbo.UserForums uf

WHERE uf.[User]=@User


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserForumsSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserForumsSave    Script Date: 2009-7-10 19:03:44 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserForumsSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserForumsSave]
GO

--====================================================================================
--== UserForums
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserForumsSave

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@UserName nvarchar(50),		--ǰ û 
@Forum int,				--ǰ Forum  ID
@ReadEnabled int,			--ɶ
@TopicWriteEnabled int,			--ɷ
@FollowUpWriteEnabled int		--ɸ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== 
--==ע⣺û޸ģʽѾ SP UserAccountSave ɾ˸û UserForums еĴ
--=====================================================
INSERT INTO dbo.UserForums([User],Forum,ReadEnabled,TopicWriteEnabled,FollowUpWriteEnabled) VALUES(@UserName,@Forum,@ReadEnabled,@TopicWriteEnabled,@FollowUpWriteEnabled)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserForumsSave]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.TopicUserAuthenticationSave    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TopicUserAuthenticationSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[TopicUserAuthenticationSave]
GO

--====================================================================================
--==鵱ǰûָ Forum ǷԷ
--==1.  Users еûɫ Community ܷ
--==2. û UserForums Ը Forum  TopicWriteEnabled  1ûԶԸ Forum 
--==3.  Admin ӵȨ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.TopicUserAuthenticationSave

@User nvarchar(50),		-- ASPX ˴ݹĵǰû

@Forum INT,			--ָ Forum
@oPass INT OUT		--ͨ 1 0

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=========================================
--==ʱ
--=========================================
/*
DECLARE @CurrentUser NVARCHAR(50)
SET @CurrentUser=dbo.UDF_UserCurrent()
*/

--=========================================
--==ǰûûעΪ Communityûٴ˳
--=========================================
IF (dbo.UDF_UserCommunity(@User)<>1)  AND (dbo.UDF_UserAdmin(@User)<>1)
BEGIN
	SET @oPass=0
	RAISERROR(N'We are sorry, but you are not registered Community User. Only registered Community Users have rights to post topics.<BR>Please click the Sign up link on our site to get rgistered as Community User.<BR>Thank you.',16,1)
	RETURN
END

--=========================================
--==ǰû Community UserForums  Ա Forum õ TopicWriteEnabled Ȩ޲ 1ٴ˳ ˵ûûжԸ Forum Ȩޣ
--=========================================
IF (NOT EXISTS (Select [ID] From dbo.UserForums Where [User]=@User And Forum=@Forum And TopicWriteEnabled=1)) AND (dbo.UDF_UserAdmin(@User)<>1)
BEGIN
	SET @oPass=0
	RAISERROR(N'We are sorry, but you are not authorized to post topic to current Forum. <BR>Please contact our system administrator to grand the permission to you. <BR>Thank you.',16,1)
	RETURN
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[TopicUserAuthenticationSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.FollowUpUserAuthenticationSave    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FollowUpUserAuthenticationSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[FollowUpUserAuthenticationSave]
GO

--====================================================================================
--==鵱ǰûָ Topic ڵ Forum Ƿ и
--==1.  Users еûɫ Community ܷ
--==2. û UserForums Ը Forum  TopicWriteEnabled  1ûԶԸ Forum е Topic 
--==3.  Admin ӵȨ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.FollowUpUserAuthenticationSave

@User nvarchar(50),		-- ASPX ˴ݹĵǰû

@Topic INT,			--ָ Topic
@oPass INT OUT		--ͨ 1 0

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

/*
--=========================================
--==ʱ
--=========================================
DECLARE @CurrentUser NVARCHAR(50)
SET @CurrentUser=@User
*/

--=========================================
--== Topic ID  Forum ID
--=========================================
DECLARE @Forum INT
SET @Forum=dbo.UDF_GetForumIDFromTopicID(@Topic)

--=========================================
--==ǰûûעΪ Communityûٴ˳
--=========================================
IF (dbo.UDF_UserCommunity(@User)<>1)  AND (dbo.UDF_UserAdmin(@User)<>1)
BEGIN
	SET @oPass=0
	RAISERROR(N'We are sorry, but you are not registered Community User. Only registered Community Users have rights to post topics.<BR>Please click the Sign up link on our site to get rgistered as Community User.<BR>Thank you.',16,1)
	RETURN
END

--=========================================
--==ǰû Community UserForums  Ա Forum õ TopicWriteEnabled Ȩ޲ 1ٴ˳ ˵ûûжԸ Forum Ȩޣ
--=========================================
IF (NOT EXISTS (Select [ID] From dbo.UserForums Where [User]=@User And Forum=@Forum And FollowUpWriteEnabled=1)) AND (dbo.UDF_UserAdmin(@User)<>1)
BEGIN
	SET @oPass=0
	RAISERROR(N'We are sorry, but you are not authorized to post followup to current Forum. <BR>Please contact our system administrator to grand the permission to you. <BR>Thank you.',16,1)
	RETURN
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[FollowUpUserAuthenticationSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.FollowUpUserAuthenticationSelect    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FollowUpUserAuthenticationSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[FollowUpUserAuthenticationSelect]
GO

--====================================================================================
--==鵱ǰûָ Topic  FollowUp ڵ Forum Ƿ 
--==1. Ӧ Forum ǹ Forumκ˶ ˽ Forumο
--==2. ˽ Forum û UserForums Ը Forum  ReadEnabled  1ҸûȲ Admin Ҳ Moderatorû Forum е Topic  FollowUp
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.FollowUpUserAuthenticationSelect

@User nvarchar(50),		-- ASPX ˴ݹĵǰû

@Topic INT,			--ָ Topic
@oPass INT OUT		--ͨ 1 0

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

/*
--=========================================
--==ʱ
--=========================================
DECLARE @CurrentUser NVARCHAR(50)
SET @CurrentUser=dbo.UDF_UserCurrent()
*/

--=========================================
--== Topic ID  Forum ID ע⣺ Topic  Topic ID Ǹֵ FollowUp ID
--=========================================
DECLARE @Forum INT

IF @Topic>=0
	BEGIN
		SET @Forum=dbo.UDF_GetForumIDFromTopicID(@Topic)
	END
ELSE
	BEGIN
		SET @Forum=dbo.UDF_GetForumIDFromFollowUpID(ABS(@Topic))
	END

--=========================================
--==ǰ Forum ǹ Forum (Public<>true)û UserForums  Ա Forum õ ReadEnabled Ȩ޲ 1ҸûȲ Admin Ҳ Moderatorٴ˳ ˵ûûжԸ Forum Ȩޣ
--=========================================
IF (Not Exists (select [ID] from dbo.Forum where [ID]=@Forum and [Public]=N'true')) AND (Not Exists (select [ID] from dbo.UserForums where [User]=@User and Forum=@Forum and ReadEnabled=1)) AND (dbo.UDF_UserAdmin(@User)<>1) AND (dbo.UDF_UserModerator(@User,@Forum)<>1)
BEGIN
	SET @oPass=0
	RAISERROR(N'We are sorry, but you are not authorized to access current Forum. <BR>Please contact our system administrator to grand the permission to you. <BR>Thank you.',16,1)
	RETURN
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[FollowUpUserAuthenticationSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.TopicUserAuthenticationSelect    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TopicUserAuthenticationSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[TopicUserAuthenticationSelect]
GO

--====================================================================================
--==鵱ǰûָ  Forum Ƿ 
--==1. Ӧ Forum ǹ Forumκ˶ ˽ Forumο
--==2. ˽ Forum û UserForums Ը Forum  ReadEnabled  1ҸûȲ Admin Ҳ Moderator û Forum е Topic  FollowUp
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-11-08
--====================================================================================

CREATE PROCEDURE dbo.TopicUserAuthenticationSelect

@User nvarchar(50),		-- ASPX ˴ݹĵǰû

@Forum INT,			--ָ Forum
@oPass INT OUT		--ͨ 1 0

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=========================================
--==ʱ
--=========================================
/*
DECLARE @CurrentUser NVARCHAR(50)
SET @CurrentUser=dbo.UDF_UserCurrent()
*/

--=========================================
--==ǰ Forum ǹ Forum (Public<>true)û UserForums  Ա Forum õ ReadEnabled Ȩ޲ 1ҸûȲ Admin Ҳ Moderatorٴ˳ ˵ûûжԸ Forum Ȩޣ
--=========================================
IF (Not Exists (select [ID] from dbo.Forum where [ID]=@Forum and [Public]=N'true')) AND (Not Exists (select [ID] from dbo.UserForums where [User]=@User and Forum=@Forum and ReadEnabled=1)) AND (dbo.UDF_UserAdmin(@User)<>1) AND (dbo.UDF_UserModerator(@User,@Forum)<>1)
BEGIN
	SET @oPass=0
	RAISERROR(N'We are sorry, but you are not authorized to access current Forum. <BR>Please contact our system administrator to grand the permission to you. <BR>Thank you.',16,1)
	RETURN
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[TopicUserAuthenticationSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.HomePageNameGet    Script Date: 2009-7-10 19:03:37 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[HomePageNameGet]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[HomePageNameGet]
GO

--====================================================================================
--== PageDirectory  Home=true Ǹ¼ Name
--==ڷϵͳҳ˵г䵱 Home Page Ǹҳ ActivePageMenuName
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.HomePageNameGet

@HomePageName nvarchar(100) OUT		--ز,Home Page ҳ 

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== Home='true' Ǹ¼
--====================================================================================
SELECT TOP 1

	@HomePageName=pd.[Name] 

FROM dbo.PageDirectory pd

WHERE pd.Home=N'true'

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[HomePageNameGet]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.OptionGet    Script Date: 2009-7-10 19:03:37 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[OptionGet]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[OptionGet]
GO

--====================================================================================
--==ݸ Option Key ֣ظ Option  Value
--== CommonHelper зĳϵͳ
--==2006-11-26 ʹ Application["Options"] ƣʹ SP OptionGetAll ȫ Optionԣ SP ʱûã
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.OptionGet

@Key nvarchar(100),				--ָ Option 
@Value nvarchar(3000) OUT			--صĽ

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ
--====================================================================================
SELECT @Value=opt.Value FROM dbo.[Option] opt WHERE opt.[Key]=@Key

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[OptionGet]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.OptionSet    Script Date: 2009-7-10 19:03:37 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[OptionSet]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[OptionSet]
GO

--====================================================================================
--== Option Key   Value дݿ
--== CommonHelper бĳϵͳ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.OptionSet

@Key nvarchar(100),				--ָ Option 
@Value nvarchar(3000) 				--صĽ

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==
--====================================================================================
UPDATE dbo.[Option] SET Value=@Value WHERE [Key]=@Key

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[OptionSet]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.OptionSelect    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[OptionSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[OptionSelect]
GO

--====================================================================================
--==ȡ Option  Cat ¼
--== Culture ȡ Option  (ͬ OptionContent)  Option  Key, Value ֵԼ Title, Description
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.OptionSelect

@Culture nvarchar(100) 			--ǰĻ

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== Option ȡ Cat 
--====================================================================================
SELECT DISTINCT 

	opt.Cat AS Cat,
	opc.CatTitle AS CatTitle

FROM dbo.[Option] opt
LEFT JOIN dbo.OptionContent opc ON opc.OptionID=opt.[ID]

WHERE opc.Culture=@Culture
ORDER BY opc.CatTitle


--====================================================================================
--== Option ¼Join ǰĻµ OptionContent ¼
--====================================================================================
SELECT 

	opt.[ID] AS [ID],
	opt.Cat AS Cat,
	opt.RightIndent AS RightIndent,
	opt.[Key] AS [Key],
	opt.Value AS Value,
	opt.Legend AS Legend,
	opt.NumberOnly AS NumberOnly,
	opt.TextArea AS TextArea,
	opt.MultiCulture AS MultiCulture,
	opt.ForTheme AS ForTheme,
	opt.Validation AS Validation,
	opc.Title AS Title,
	opc.CatTitle AS CatTitle,
	opc.[Description] As [Description]

FROM dbo.[Option] opt 
LEFT JOIN dbo.OptionContent opc ON opc.OptionID=opt.[ID]

WHERE opc.Culture=@Culture

ORDER BY opt.[ID]

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[OptionSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.OptionSave    Script Date: 2009-7-10 19:03:37 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[OptionSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[OptionSave]
GO

--====================================================================================
--== Option Key Value Pair  Option  
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.OptionSave

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@Key nvarchar(100),			--ǰ Option 
@Value nvarchar(3000),			--ǰ Option  Value

@ForTheme nvarchar(50) OUT		--صǰ Key Ƿ ForTheme


AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==޸ 
--=====================================================
UPDATE dbo.[Option] SET

	Value=@Value

WHERE [Key]=@Key

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ݵǰ Key Ƿ ForTheme  ForTheme  ASPX ˣ OptionSave.cs  ForTheme ҪһЩԪغ CSS
--=====================================================
SELECT @ForTheme=ForTheme FROM dbo.[Option] WHERE [Key]=@Key

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[OptionSave]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.XToolOptionAdd    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[XToolOptionAdd]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[XToolOptionAdd]
GO

--====================================================================================
--==ϵͳ - ùΪ Option  Key / Value 
--==˵ Option  Logo Cat һĿĿıΪ 8 ԭ 8 Լ 8 һ
--==ȡ 1-7  ֵʱĿ 8 ٽԭ 8 λԺݶ룬󣬽ʱд Option 
--==ͬʱǻҪͬĵ OptionContent д
--==ùֻϵͳֻڿûʹøù߽κβ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-03-01
--====================================================================================

CREATE PROCEDURE dbo.XToolOptionAdd

@ID int,						-- Option  ID
@Cat nvarchar(100),				-- Option  Cat
@RightIndent INT,				-- Option  RightIndent ԣĬΪ 0
@Key nvarchar(100),				-- Option  Key
@Value nvarchar(3000),				-- Option  Value
@Legend nvarchar(50),				-- Option  Legend
@NumberOnly nvarchar(50),			--Ƿֻ
@TextArea nvarchar(50),			--Ƿ TextArea 
@MultiCulture nvarchar(50),			--Ƿֲ
@ForTheme nvarchar(50),			--Ƿ
@Validation nvarchar(50),			-- Validation  C/L
@Cultures INT					--жٸ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--===============================================
--==õǰ Option  һ¼ ID
--===============================================
DECLARE @NewVirtualOptionID INT
SELECT @NewVirtualOptionID=MAX([ID])+1 FROM dbo.[Option] 

--===============================================
--== Option ׷һ¼
--===============================================
INSERT INTO dbo.[Option]
(
	[ID],
	[Cat],
	[RightIndent],
	[Key],
	[Value],
	[Legend],
	[NumberOnly],
	[TextArea],
	[MultiCulture],
	[ForTheme],
	[Validation]
)

VALUES   

(
	@NewVirtualOptionID,
	N'',
	0,
	N'',
	N'',
	N'',
	N'',
	N'',
	N'' ,
	N'' ,
	N''
)

--===============================================
--==Ŀǰ Option ڶ¼ʼǰߣһֱҪ¼¼λãЩ¼κ
--===============================================
DECLARE @OptionCounter INT
SET @OptionCounter=@NewVirtualOptionID-1

WHILE @OptionCounter>=@ID

BEGIN
	--===============================================
	--==ӵǰλö¼
	--===============================================
	DECLARE @CatTemp nvarchar(100)		
	DECLARE @RightIndentTemp INT
	DECLARE @KeyTemp nvarchar(100)	
	DECLARE @ValueTemp nvarchar(3000)	
	DECLARE @LegendTemp nvarchar(50)		
	DECLARE @NumberOnlyTemp nvarchar(50)	
	DECLARE @TextAreaTemp nvarchar(50)		
	DECLARE @MultiCultureTemp nvarchar(50)		
	DECLARE @ForThemeTemp nvarchar(50)		
	DECLARE @ValidationTemp nvarchar(50)		

	SELECT 		

		@CatTemp=[Cat],
		@RightIndentTemp=[RightIndent],
		@KeyTemp=[Key],
		@ValueTemp=[Value],
		@LegendTemp=[Legend],
		@NumberOnlyTemp=[NumberOnly],
		@TextAreaTemp=[TextArea],
		@MultiCultureTemp=[MultiCulture],
		@ForThemeTemp=[ForTheme],
		@ValidationTemp=[Validation]

	FROM dbo.[Option] WHERE [ID]=@OptionCounter

	--===============================================
	--==µǰ¼ļ¼
	--===============================================
	UPDATE dbo.[Option] SET

		[Cat]=@CatTemp,
		[RightIndent]=@RightIndentTemp,
		[Key]=@KeyTemp,
		[Value]=@ValueTemp,
		[Legend]=@LegendTemp,
		[NumberOnly]=@NumberOnlyTemp,
		[TextArea]=@TextAreaTemp,
		[MultiCulture]=@MultiCultureTemp,
		[ForTheme]=@ForThemeTemp,
		[Validation]=@ValidationTemp


	WHERE [ID]=@OptionCounter+1

	--===============================================
	--==@OptionCounter--
	--===============================================
	SET @OptionCounter=@OptionCounter-1

	--===============================================
	--==
	--===============================================
	CONTINUE
END

--===============================================
--== SP ṩݸµ @ID λ
--===============================================
UPDATE dbo.[Option] SET

	[Cat]=@Cat,
	[RightIndent]=@RightIndent,
	[Key]=@Key,
	[Value]=@Value,
	[Legend]=@Legend,
	[NumberOnly]=@NumberOnly,
	[TextArea]=@TextArea,
	[MultiCulture]=@MultiCulture,
	[ForTheme]=@ForTheme,
	[Validation]=@Validation


WHERE [ID]=@ID


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--===============================================
--==õǰ OptionContent  һ¼ ID
--===============================================
DECLARE @NewVirtualOptionContentID INT
SELECT @NewVirtualOptionContentID=MAX([ID])+1 FROM dbo.[OptionContent] 

DECLARE @OptionContentCounter INT
SET @OptionContentCounter=@NewVirtualOptionContentID


--===============================================
--== OptionContent ׷ N ¼ (N=@Cultures )
--===============================================
WHILE @OptionContentCounter<=@NewVirtualOptionContentID+@Cultures-1

BEGIN

	INSERT INTO dbo.[OptionContent]
	(
		[ID],
		[OptionID],
		[Culture],
		[Title],
		[CatTitle],
		[Description]
	)

	VALUES   

	(
		@OptionContentCounter,
		0,
		N'',
		N'',
		N'',
		N''
	)

	--===============================================
	--==@OptionContentCounter++
	--===============================================
	SET @OptionContentCounter=@OptionContentCounter+1

	--===============================================
	--==
	--===============================================
	CONTINUE
END

--===============================================
--==ٴˢ @OptionContentCounter
--===============================================
SELECT @OptionContentCounter=@NewVirtualOptionContentID-1

--===============================================
--==Ŀǰ Option ڶ¼ʼǰߣһֱҪ¼¼λãЩ¼κ
--===============================================
WHILE @OptionContentCounter>=(@ID-1)*@Cultures+1

BEGIN
	--===============================================
	--==ӵǰλö¼
	--===============================================
	DECLARE @OptionIDTemp int
	DECLARE @CultureTemp [nvarchar] (100) 
	DECLARE @TitleTemp [nvarchar] (200) 
	DECLARE @CatTitleTemp [nvarchar] (200)
	DECLARE @DescriptionTemp [nvarchar] (3000)

	SELECT 		

		@OptionIDTemp=[OptionID]+1,
		@CultureTemp=[Culture],
		@TitleTemp=[Title],
		@CatTitleTemp=[CatTitle],
		@DescriptionTemp=[Description]

	FROM dbo.[OptionContent] WHERE [ID]=@OptionContentCounter

	--===============================================
	--==µǰ¼ĵ N ¼ N=@Cultures
	--===============================================
	UPDATE dbo.[OptionContent] SET

		[OptionID]=@OptionIDTemp,
		[Culture]=@CultureTemp,
		[Title]=@TitleTemp,
		[CatTitle]=@CatTitleTemp,
		[Description]=@DescriptionTemp

	WHERE [ID]=@OptionContentCounter+@Cultures

	--===============================================
	--==@OptionContentCounter--
	--===============================================
	SET @OptionContentCounter=@OptionContentCounter-1

	--===============================================
	--==
	--===============================================
	CONTINUE
END

--===============================================
--==ٴˢ OptionContentCounter
--===============================================
SET @OptionContentCounter=0

WHILE @OptionContentCounter<=@Cultures-1
BEGIN
	UPDATE dbo.[OptionContent] SET

		[OptionID]=@ID,
		[Culture]=N'',
		[Title]=N'',
		[CatTitle]=N'',
		[Description]=N''

	WHERE [ID]=@ID*@Cultures-@OptionContentCounter

	SET @OptionContentCounter=@OptionContentCounter+1
	CONTINUE
END


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[XToolOptionAdd]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.XToolOptionDelete    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[XToolOptionDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[XToolOptionDelete]
GO

--====================================================================================
--==ϵͳ - ù Option ɾĳ Key / Value 
--==ͬʱҪ OptionContent ĿӦɾ 
--==ɾ֮󣬻ҪӦ ID ȥ 1 ǲϣ Option  OptionContent ID ֿն
--==رע⣬вУ磬Ҫɾ 49,50  Optionв XToolOptionDelete 49     XToolOptionDelete 50Ϊ˵һԭ 50 Ҳ 49 ˣȷ÷Ӧ XToolOptionDelete 49    XToolOptionDelete 49  
--==ùֻϵͳֻڿûʹøù߽κβ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-11-08
--====================================================================================

CREATE PROCEDURE dbo.XToolOptionDelete

@ID int						--ɾ Option  ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--===============================================
--== Option ָ¼ִɾ
--===============================================
DELETE FROM dbo.[Option] WHERE [ID]=@ID

--===============================================
--==ɾ󣬶Ը ID ļ¼ ID  1
--===============================================
UPDATE dbo.[Option] SET [ID]=[ID]-1 WHERE [ID]>@ID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--===============================================
--==ٴ OptionContent 
--===============================================


--===============================================  
--==вظĻ浽ʱ  
--===============================================  
DECLARE @Culture TABLE   
  
(  
	Culture nvarchar(100) COLLATE Chinese_PRC_CI_AS NULL   
)  
  
INSERT INTO @Culture  
  
(  
	Culture  
)  
  
SELECT DISTINCT  
  
(  
	Culture  
)  
  
FROM dbo.OptionContent  
  
--===============================================  
--== Culture Ŀ  
--===============================================  
DECLARE @CultureCount INT  
SELECT @CultureCount=COUNT(Culture) FROM @Culture   


--===============================================
--==ɾָ¼
--===============================================
DELETE FROM dbo.OptionContent WHERE OptionID=@ID


--===============================================
--== @ID  OptionID-1; [ID]-@CultureCount
--===============================================
UPDATE dbo.OptionContent SET OptionID=OptionID-1, [ID]=[ID]-@CultureCount WHERE OptionID>@ID


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[XToolOptionDelete]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.CommunityClone    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CommunityClone]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[CommunityClone]
GO

--====================================================================================
--==һ Community ¡һͬʱ¡ Community  Forum
--==ҪΪͻͨʱ򣬸ùܷǳãΪһ˵ͬͻķͨûһµģֻҪ޸Ĳͬͻ
--==ĬϿ¡ѭĹ򣺱¡ Community   Community ֮ΨһǶ Identity 滻 ù߽ڿͻͨ Community ĸƣ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-10-28
--== SP δãǻҪһ MainDirectoryClone SP SP Ŀ帴 Community ͬµ Forum帴 MainDirectory ͬµ SubDirectory, PageDirectory, KnowledgeĿǰ <xxx>Move Ҳƹܣδ漰 Community, MainDirectory һ
--====================================================================================

CREATE PROCEDURE dbo.CommunityClone

@User nvarchar(50),					-- ASPX ˴ݹĵǰû
@CurrentCommunityID int,				--ǰ Community  ID
@CurrentCommunityIdentity nvarchar(50),			--ǰ Community ı־(ͻ֣һ㰴ĹΪ Community  mCommunity<Identity>)
@NewCommunityIdentity nvarchar(50)			-- Community ı־

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==õǰ Community 
--=====================================================
DECLARE @CurrentCommunityName NVARCHAR(50)
SELECT @CurrentCommunityName=[Name] FROM dbo.Community WHERE [ID]=@CurrentCommunityID

--=====================================================
--== Community 
--=====================================================
DECLARE @NewCommunityName NVARCHAR(50)
SET @NewCommunityName=REPLACE(@CurrentCommunityName,@CurrentCommunityIdentity,@NewCommunityIdentity)

--=====================================================
--== Community Ѿڣٴ
--=====================================================
IF EXISTS (Select [ID] From dbo.Community Where [Name]=@NewCommunityName)

BEGIN
	RAISERROR(N'Ѿڡ',16,1)  
	RETURN
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==õǰ Community  Serial 
--=====================================================
DECLARE @Serial INT
SELECT @Serial=Serial FROM dbo.Community WHERE [ID]=@CurrentCommunityID

--=====================================================
--== Community   Community ڵĻ
--=====================================================
INSERT INTO dbo.Community(Serial,[Name]) VALUES(@Serial,@NewCommunityName)

--=====================================================
--== Community   ID
--=====================================================
DECLARE @NewCommunityID INT
SELECT @NewCommunityID=SCOPE_IDENTITY() --ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Session ڵı  

--======================================================
--== CommunityContent еļ¼ ɾܴڵظ¼
--======================================================
DELETE FROM dbo.CommunityContent WHERE CommunityID=@NewCommunityID

INSERT INTO dbo.CommunityContent

	(
	CommunityID,
	Culture,
	Title,
	[Description],
	Hidden
	) 

SELECT 

	@NewCommunityID,
	Culture,
	REPLACE(Title,@CurrentCommunityIdentity,@NewCommunityIdentity),
	REPLACE([Description],@CurrentCommunityIdentity,@NewCommunityIdentity),
	Hidden

FROM dbo.CommunityContent
WHERE CommunityID=@CurrentCommunityID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ɾɵģܵ Community µ Forum
--======================================================
DELETE FROM dbo.Forum WHERE CommunityID=@NewCommunityID


--======================================================
--==ʹ Cursor
--======================================================
DECLARE ForumCursor CURSOR FOR 

SELECT 

	[ID],
	CommunityID,
	Serial,
	[Name],
	Moderator,
	[Public]

FROM dbo.Forum
WHERE CommunityID=@CurrentCommunityID

DECLARE @CurrentForumID INT
DECLARE @CurrentForumCommunityID INT
DECLARE @CurrentForumSerial INT
DECLARE @CurrentForumName NVARCHAR(50)
DECLARE @CurrentForumModerator NVARCHAR(1000)
DECLARE @CurrentForumPublic NVARCHAR(50)

OPEN ForumCursor

FETCH NEXT FROM ForumCursor INTO 
@CurrentForumID, 
@CurrentForumCommunityID,
@CurrentForumSerial, 
@CurrentForumName,
@CurrentForumModerator,
@CurrentForumPublic

WHILE @@FETCH_STATUS = 0
BEGIN

	--======================================================
	--== Forum 
	--======================================================
	INSERT INTO dbo.Forum

		(
		CommunityID,
		Serial,
		[Name],
		Moderator,
		[Public]
		)

	VALUES 

		(
		@NewCommunityID,
		@CurrentForumSerial, 
		REPLACE(@CurrentForumName,@CurrentCommunityIdentity,@NewCommunityIdentity),
		@CurrentForumModerator,
		@CurrentForumPublic
		)


	
	--=====================================================
	--== Forum   ID
	--=====================================================
	DECLARE @NewForumID INT
	SELECT @NewForumID=SCOPE_IDENTITY() --ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Session ڵı  

	--======================================================
	--== ForumContent ɾɵģܵ Forum µ ForumContent
	--======================================================
	DELETE FROM dbo.ForumContent WHERE ForumID=@NewForumID

	INSERT INTO dbo.ForumContent
	
		(
		ForumID,
		Culture,
		Title,
		[Description],
		CommandTitleTaskList,
		CommandTitleTaskListDescription,
		CommandTitleAdd,
		CommandTitleAddDescription,
		CommandTitleQuery,
		CommandTitleQueryDescription,
		Hidden
		)

	SELECT 

		@NewForumID,
		Culture,
		REPLACE(Title,@CurrentCommunityIdentity,@NewCommunityIdentity),
		REPLACE([Description],@CurrentCommunityIdentity,@NewCommunityIdentity),
		REPLACE(CommandTitleTaskList,@CurrentCommunityIdentity,@NewCommunityIdentity),
		REPLACE(CommandTitleTaskListDescription,@CurrentCommunityIdentity,@NewCommunityIdentity),
		REPLACE(CommandTitleAdd,@CurrentCommunityIdentity,@NewCommunityIdentity),
		REPLACE(CommandTitleAddDescription,@CurrentCommunityIdentity,@NewCommunityIdentity),
		REPLACE(CommandTitleQuery,@CurrentCommunityIdentity,@NewCommunityIdentity),
		REPLACE(CommandTitleQueryDescription,@CurrentCommunityIdentity,@NewCommunityIdentity),
		Hidden

	FROM dbo.ForumContent
	WHERE ForumID=@CurrentForumID


	FETCH NEXT FROM ForumCursor INTO 
	@CurrentForumID, 
	@CurrentForumCommunityID,
	@CurrentForumSerial, 
	@CurrentForumName,
	@CurrentForumModerator,
	@CurrentForumPublic

END


CLOSE ForumCursor
DEALLOCATE ForumCursor

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[CommunityClone]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.XToolOptionInsertScripts    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[XToolOptionInsertScripts]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[XToolOptionInsertScripts]
GO

--====================================================================================
--==ϵͳ - ù Option еֵ INSERT űϵͳʼ
--==ùֻϵͳֻڿûʹøù߽κβ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-03-01
--====================================================================================

CREATE PROCEDURE dbo.XToolOptionInsertScripts

@ForSetup INT			-- SP Ƿ Setup 򣬶 Setup ҪĳЩ Option о  (1/2)

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=============================================
--==Ƚ OptionContent еļ¼ɾ
--=============================================
PRINT N'DELETE FROM dbo.[Option]'
PRINT N''

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=============================================
--==ʱ
--=============================================
declare @ID int
declare @Cat nvarchar(100)
declare @RightIndent int
declare @Key nvarchar(100)
declare @Value nvarchar(3000)
declare @Legend nvarchar(50)
declare @NumberOnly nvarchar(50)
declare @TextArea nvarchar(50)
declare @MultiCulture nvarchar(50)
declare @ForTheme nvarchar(50)
declare @Validation nvarchar(50)

--=============================================
--== cursor Option ֵ Insert Scripts
--=============================================
declare OptionCursor cursor for select [ID],Cat,RightIndent,[Key],Value,Legend,NumberOnly,TextArea,MultiCulture,ForTheme,Validation from dbo.[Option] order by [ID]
open OptionCursor
fetch next from OptionCursor into @ID,@Cat,@RightIndent,@Key,@Value,@Legend,@NumberOnly,@TextArea,@MultiCulture,@ForTheme,@Validation

while @@Fetch_Status=0
begin
	print N'INSERT INTO dbo.[Option] '
	print N'('
	print N'	[ID],'
	print N'	[Cat],'
	print N'	[RightIndent],'
	print N'	[Key],'
	print N'	[Value],'
	print N'	[Legend],'
	print N'	[NumberOnly],'
	print N'	[TextArea],'
	print N'	[MultiCulture],'
	print N'	[ForTheme],'
	print N'	[Validation]'
	print N')'
	print N'VALUES'
	print N'('
	print N'	' + CONVERT(NVARCHAR(20),@ID) + N','
	print N'	N''' + REPLACE(@Cat,N'''',N'''''') + N''','
	print N'	' + CONVERT(NVARCHAR(20),@RightIndent) + N','
	print N'	N''' + REPLACE(@Key,N'''',N'''''') + N''','
	print N'	N''' + REPLACE(@Value,N'''',N'''''') + N''','
	print N'	N''' + REPLACE(@Legend,N'''',N'''''') + N''','
	print N'	N''' + REPLACE(@NumberOnly,N'''',N'''''') + N''','
	print N'	N''' + REPLACE(@TextArea,N'''',N'''''') + N''','
	print N'	N''' + REPLACE(@MultiCulture,N'''',N'''''') + N''','
	print N'	N''' + REPLACE(@ForTheme,N'''',N'''''') + N''','
	print N'	N''' + REPLACE(@Validation,N'''',N'''''') + N''''
	print N')'
	print N''

	fetch next from OptionCursor into @ID,@Cat,@RightIndent,@Key,@Value,@Legend,@NumberOnly,@TextArea,@MultiCulture,@ForTheme,@Validation
end
close OptionCursor
deallocate OptionCursor

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=============================================
--== Setup ̣Ҫ²
--=============================================
IF @ForSetup=1
BEGIN
	/*
	print N' UPDATE dbo.[Option] SET [Value]=N'''' WHERE [Key]=N''PageTextureCss'' '
	print N' UPDATE dbo.[Option] SET [Value]=N''2'' WHERE [Key]=N''LayoutTemplate'' '
	print N' UPDATE dbo.[Option] SET [Value]=N'''' WHERE [Key]=N''LogoTextureCss'' '
	print N' UPDATE dbo.[Option] SET [Value]=N'''' WHERE [Key]=N''LogoMap'' '
	print N' UPDATE dbo.[Option] SET [Value]=N''2'' WHERE [Key]=N''MainMenuSeparator'' '
	print N' UPDATE dbo.[Option] SET [Value]=N'''' WHERE [Key]=N''BannerTextureCss'' '
	print N' UPDATE dbo.[Option] SET [Value]=N'''' WHERE [Key]=N''BannerMap'' '
	print N' UPDATE dbo.[Option] SET [Value]=N'''' WHERE [Key]=N''BannerRotatorCandidate'' '
	print N' UPDATE dbo.[Option] SET [Value]=N'''' WHERE [Key]=N''FastContentTitle'' '
	print N' UPDATE dbo.[Option] SET [Value]=N'''' WHERE [Key]=N''FastContent'' '
	print N' UPDATE dbo.[Option] SET [Value]=N''true'' WHERE [Key]=N''FastContentHidden'' '
	print N' UPDATE dbo.[Option] SET [Value]=N'''' WHERE [Key]=N''MyCss'' '
	print N' UPDATE dbo.[Option] SET [Value]=N'''' WHERE [Key]=N''CopyrightTextureCss'' '
	print N' UPDATE dbo.[Option] SET [Value]=N'''' WHERE [Key]=N''CopyrightIconMap'' '
	print N' UPDATE dbo.[Option] SET [Value]=N'''' WHERE [Key]=N''RegisterWelcomeMessage'' '
	print N' UPDATE dbo.[Option] SET [Value]=N'''' WHERE [Key]=N''FastLink'' '
	*/
	print N' UPDATE dbo.[Option] SET [Value]=N'''' WHERE [Cat]=N''SMTP'' '
	print N' UPDATE dbo.[Option] SET [Value]=N''zh-cn:,zh-tw:w,en-us:English'' WHERE [Key]=N''Cultures'' '
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[XToolOptionInsertScripts]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.XToolOptionContentInsertScripts    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[XToolOptionContentInsertScripts]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[XToolOptionContentInsertScripts]
GO

--====================================================================================
--==ϵͳ - ù OptionContent еֵ INSERT űϵͳʼ
--==ùֻϵͳֻڿûʹøù߽κβ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-11-08
--====================================================================================

CREATE PROCEDURE dbo.XToolOptionContentInsertScripts

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=============================================
--==Ƚ OptionContent еļ¼ɾ
--=============================================
PRINT N'DELETE FROM dbo.OptionContent'
PRINT N''

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=============================================
--==ʱ
--=============================================
declare @ID int
declare @OptionID int
declare @Culture nvarchar(100)
declare @Title nvarchar(200)
declare @CatTitle nvarchar(200)
declare @Description nvarchar(3000)

--=============================================
--== cursor OptionContent ֵ Insert Scripts
--=============================================
declare OptionContentCursor cursor for select [ID],[OptionID],[Culture],[Title],[CatTitle],[Description] from dbo.[OptionContent] order by [ID]
open OptionContentCursor
fetch next from OptionContentCursor into @ID,@OptionID,@Culture,@Title,@CatTitle,@Description

while @@Fetch_Status=0
begin
	print N'INSERT INTO dbo.[OptionContent] '
	print N'('
	print N'	[ID],'
	print N'	[OptionID],'
	print N'	[Culture],'
	print N'	[Title],'
	print N'	[CatTitle],'
	print N'	[Description]'
	print N')'
	print N'VALUES'
	print N'('
	print N'	' + CONVERT(NVARCHAR(20),@ID) + N','
	print N'	' + CONVERT(NVARCHAR(20),@OptionID) + N','
	print N'	N''' + REPLACE(@Culture,N'''',N'''''') + N''','
	print N'	N''' + REPLACE(@Title,N'''',N'''''') + N''','
	print N'	N''' + REPLACE(@CatTitle,N'''',N'''''') + N''','
	print N'	N''' + REPLACE(@Description,N'''',N'''''') + N''''
	print N')'
	print N''

	fetch next from OptionContentCursor into @ID,@OptionID,@Culture,@Title,@CatTitle,@Description
end
close OptionContentCursor
deallocate OptionContentCursor


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[XToolOptionContentInsertScripts]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.TopicMove    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TopicMove]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[TopicMove]
GO

--====================================================================================
--==ƶ Topic İ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.TopicMove

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@TopicID int,					--Topic  ID
@ForumList nvarchar(4000),			--ƶЩ Forum
@KeepOriginal nvarchar(50)			--Ƿԭӣtrue/false

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼ ֻϵͳԱȨޣ
--=====================================================

DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== ForumList תΪ CURSOR
--=====================================================
DECLARE @Forum INT
DECLARE ForumCursor CURSOR FOR SELECT [Element] FROM dbo.UDF_PublicSplit(@ForumList,N',')

OPEN ForumCursor
FETCH NEXT FROM ForumCursor INTO @Forum

WHILE @@FETCH_STATUS = 0
BEGIN

	--=====================================================
	--==Ƶǰ Topic ¼Ϊ¼¼ͬʱµ ForumID, PostTime
	--=====================================================
	INSERT INTO dbo.Topic (ForumID,TopicStatus,[User],PostTime,Title,Content,Hit,AttachmentName) SELECT @Forum,TopicStatus,[User],PostTime,Title,Content,Hit,AttachmentName FROM dbo.Topic WHERE [ID]=@TopicID

	--=====================================================
	--==¸Ƶ Topic ID
	--=====================================================
	DECLARE @NewTopicID INT
	SELECT @NewTopicID=SCOPE_IDENTITY() --ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı  

	--=====================================================
	--==Ƶǰ Topic µ FollowUp ¼Ϊ¼¼ͬʱµ TopicID
	--=====================================================
	INSERT INTO dbo.FollowUp (TopicID,[User],PostTime,Content,AttachmentName) SELECT @NewTopicID,[User],PostTime,Content,AttachmentName FROM dbo.FollowUp WHERE TopicID=@TopicID

	--=====================================================
	--==¸ CURSOR
	--=====================================================
	FETCH NEXT FROM ForumCursor INTO @Forum
END

CLOSE ForumCursor
DEALLOCATE ForumCursor

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @KeepOriginal Ϊ false ɾԭʼ Topic е Trigger ɾӦ FollowUp ¼
--=====================================================
IF LOWER(@KeepOriginal)=LOWER(N'false')
BEGIN
	DELETE FROM dbo.Topic WHERE [ID]=@TopicID  
END


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[TopicMove]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.XToolAddOptionContentInsertScripts    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[XToolAddOptionContentInsertScripts]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[XToolAddOptionContentInsertScripts]
GO

--====================================================================================
--==ͳߣɸֵ OptionContent ʼ Script
--==ùֻϵͳֻڿûʹøù߽κβ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-11-08
--====================================================================================

CREATE PROCEDURE dbo.XToolAddOptionContentInsertScripts

@AdditionalCulture NVARCHAR(100)			-- Ļ

AS


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=============================================
--==Ƚ OptionContent еļ¼ɾ
--=============================================
PRINT N'DELETE FROM dbo.OptionContent'
PRINT N''

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=============================================
--== @OptionContentCounter
--=============================================
declare @OptionContentCounter int
set @OptionContentCounter=1

--=============================================
--==ʱ
--=============================================
declare @OptionID int

--=============================================
--== cursor Option ֵ Option ID Cursor
--=============================================
declare OptionCursor cursor for select [ID] from dbo.[Option] order by [ID]
open OptionCursor
fetch next from OptionCursor into @OptionID

while @@Fetch_Status=0
begin
	--=============================================
	--==ʱ
	--=============================================
	declare @ThisOptionContentID int
	declare @ThisOptionID int
	declare @ThisCulture nvarchar(100)
	declare @ThisTitle nvarchar(200)
	declare @ThisCatTitle nvarchar(200)
	declare @ThisDescription nvarchar(3000)

	--=============================================
	--== cursor OptionContent ֵ Insert Scripts
	--=============================================
	declare OptionContentCursor cursor for select [ID],OptionID,[Culture],[Title],[CatTitle],[Description] from dbo.[OptionContent] where OptionID=@OptionID order by [ID]	
	open OptionContentCursor
	fetch next from OptionContentCursor into @ThisOptionContentID,@ThisOptionID,@ThisCulture,@ThisTitle,@ThisCatTitle,@ThisDescription

	while @@Fetch_Status=0
	begin
		print N'INSERT INTO dbo.[OptionContent] '
		print N'('
		print N'	[ID],'
		print N'	[OptionID],'
		print N'	[Culture],'
		print N'	[Title],'
		print N'	[CatTitle],'
		print N'	[Description]'
		print N')'
		print N'VALUES'
		print N'('
		print N'	' + CONVERT(NVARCHAR(20),@OptionContentCounter) + N','
		print N'	' + CONVERT(NVARCHAR(20),@OptionID) + N','
		print N'	N''' + REPLACE(@ThisCulture,N'''',N'''''') + N''','
		print N'	N''' + REPLACE(@ThisTitle,N'''',N'''''') + N''','
		print N'	N''' + REPLACE(@ThisCatTitle,N'''',N'''''') + N''','
		print N'	N''' + REPLACE(@ThisDescription,N'''',N'''''') + N''''
		print N')'
		print N''

		--=============================================
		--==@OptionContentCounter++
		--=============================================
		SET @OptionContentCounter=@OptionContentCounter+1

		--=============================================
		--==
		--=============================================
		fetch next from OptionContentCursor into @ThisOptionContentID,@ThisOptionID,@ThisCulture,@ThisTitle,@ThisCatTitle,@ThisDescription
	end

	--=============================================
	--==ĻĲ Script
	--=============================================
	print N'--NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN'
	print N'--Fill up the Title and Description Field in following Scripts under New Culture '
	print N'--NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN'
	print N'INSERT INTO dbo.[OptionContent] '
	print N'('
	print N'	[ID],'
	print N'	[OptionID],'
	print N'	[Culture],'
	print N'	[Title],'
	print N'	[CatTitle],'
	print N'	[Description]'
	print N')'
	print N'VALUES'
	print N'('
	print N'	' + CONVERT(NVARCHAR(20),@OptionContentCounter) + N','
	print N'	' + CONVERT(NVARCHAR(20),@OptionID) + N','
	print N'	N''' + REPLACE(@AdditionalCulture,N'''',N'''''') + N''','
	print N'	N'''','
	print N'	N''' + REPLACE(@ThisCatTitle,N'''',N'''''') + N''','
	print N'	N'''''
	print N')'
	print N'--NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN'
	print N''

	--=============================================
	--==ٴ@OptionContentCounter++
	--=============================================
	SET @OptionContentCounter=@OptionContentCounter+1

	close OptionContentCursor
	deallocate OptionContentCursor

	--=============================================
	--== Option Cursor
	--=============================================
	fetch next from OptionCursor into @OptionID
end
close OptionCursor
deallocate OptionCursor

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[XToolAddOptionContentInsertScripts]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.OptionGetAll    Script Date: 2009-7-10 19:03:37 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[OptionGetAll]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[OptionGetAll]
GO

--====================================================================================
--== Option  Key Value أ global.asax  application_start У option Ŀ浽 Application ȫֱ棬ÿε option ʹݿѯ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.OptionGetAll


AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ
--====================================================================================
SELECT 
	opt.[Key] AS [Key],
	opt.Value AS Value,
	ISNULL(opt.MultiCulture,N'false') AS MultiCulture,
	ISNULL(opt.Validation,N'') AS Validation

FROM dbo.[Option] opt


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[OptionGetAll]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeGet    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeGet]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeGet]
GO

--====================================================================================
--==KnowledgeGet ķҳʾ  ϵͳ Option У KnowledgePageSize Ϊ 0 򲻷ҳʾ 0ҳʾ
--== Knowledge е DedicatedTo Ϊյʱз߿ Ϊ abc,efg ָͻ 
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeGet

@User nvarchar(50),						-- ASPX ˴ݹĵǰû

@PageDirectoryName nvarchar(100),				--Page Diretory  Name
@Culture nvarchar(100),						--ǰĻ

@CurrentPage INT						--ҳƣǰҳ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==õǰ PageDirectory   Type ֵ 1ǺĽʹ Order By Serial ͨݣ Serial 򣩣  2  Order By UpdateTime ʱԷʱ
--====================================================================================
DECLARE @Type INT
SELECT @Type=Type FROM dbo.PageDirectory WHERE [Name]=@PageDirectoryName
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== @PageDirectoryName  ڵ PageDirectory ¼е PageSize ֵ
--====================================================================================
DECLARE @PageSize INT
SELECT TOP 1 @PageSize=PageSize FROM dbo.PageDirectory WHERE [Name]=@PageDirectoryName

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ҳ
--====================================================================================
DECLARE @Paging TABLE 
( 
	PagingID int identity(1,1), 
	[ID] int, 
	PageDirectoryID int,
	Serial int,
	Hidden nvarchar(50) COLLATE database_default,
	UpdateTime datetime,
	Author nvarchar(50) COLLATE database_default, 

	Editor ntext COLLATE database_default, 
	EditorPermission int,
	
	KnowledgeContentID int,

	Template nvarchar(200) COLLATE database_default, 
	Title nvarchar(2000) COLLATE database_default, 
	TitleShow nvarchar(50) COLLATE database_default, 
	Content ntext COLLATE database_default, 
	Tag nvarchar(500) COLLATE database_default, 
	Abstract ntext COLLATE database_default, 
	
	HitCount int,
	CommentsPermission int,
	CommentsCount int,

	KnowledgeDirectory nvarchar(50) COLLATE database_default 
) 

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== Type=1/2 ʹ ORDER BY Serial  UpdateTime δ Order By ֮⣬طȫһ£
--====================================================================================
IF @Type=1

BEGIN

	--====================================================================================
	--==ǰû Admin Editor ͨû
	--====================================================================================
	IF  dbo.UDF_UserAdminEditor(@User)=1

	BEGIN

		--====================================================================================
		--==ǰû Admin Editor
		--====================================================================================
		INSERT INTO @Paging

		SELECT

			now.[ID] AS [ID],
			now.PageDirectoryID AS PageDirectoryID,
			now.Serial AS Serial,
			ISNULL(nowc.Hidden,N'false') AS Hidden,
			now.UpdateTime AS UpdateTime,
			now.Author AS Author,

			now.Editor AS Editor,
			dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,

			nowc.[ID] AS KnowledgeContentID,

			nowc.Template AS Template,
			nowc.Title AS Title,
			nowc.TitleShow AS TitleShow,
			nowc.Content AS Content,
			nowc.Tag AS Tag,
			nowc.Abstract AS Abstract,

			ISNULL(nowc.HitCount,0)+1 AS HitCount,
			dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
			(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,

			N'Knowledge' AS KnowledgeDirectory

		FROM dbo.Knowledge now
		LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
		LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
		WHERE pad.[Name]=@PageDirectoryName

		ORDER BY Serial

	END

	ELSE

	BEGIN
		--====================================================================================
		--==ǰûǡ Admin Editor
		--====================================================================================
		INSERT INTO @Paging

		SELECT

			now.[ID] AS [ID],
			now.PageDirectoryID AS PageDirectoryID,
			now.Serial AS Serial,
			ISNULL(nowc.Hidden,N'false') AS Hidden,
			now.UpdateTime AS UpdateTime,
			now.Author AS Author,

			now.Editor AS Editor,
			dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,

			nowc.[ID] AS KnowledgeContentID,

			nowc.Template AS Template,
			nowc.Title AS Title,
			nowc.TitleShow AS TitleShow,
			nowc.Content AS Content,
			nowc.Tag AS Tag,
			nowc.Abstract AS Abstract,

			ISNULL(nowc.HitCount,0)+1 AS HitCount,
			dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
			(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,

			N'Knowledge' AS KnowledgeDirectory

		FROM dbo.Knowledge now
		LEFT JOIN dbo.View_KnowledgePermission nowp ON nowp.KnowledgeID=now.[ID]
		LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
		LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
		WHERE pad.[Name]=@PageDirectoryName AND (REPLACE(nowp.DedicatedTo,N',',N'')=N'' or dbo.UDF_UserDedicatedTo(@User,nowp.DedicatedTo)=1)  AND  nowc.Hidden<>N'true'

		ORDER BY Serial
	END

END

ELSE

BEGIN

	--====================================================================================
	--==ǰû Admin Editor ͨû
	--====================================================================================
	IF  dbo.UDF_UserAdminEditor(@User)=1

	BEGIN

		--====================================================================================
		--==ǰû Admin Editor
		--====================================================================================
		INSERT INTO @Paging

		SELECT

			now.[ID] AS [ID],
			now.PageDirectoryID AS PageDirectoryID,
			now.Serial AS Serial,
			ISNULL(nowc.Hidden,N'false') AS Hidden,
			now.UpdateTime AS UpdateTime,
			now.Author AS Author,

			now.Editor AS Editor,
			dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,

			nowc.[ID] AS KnowledgeContentID,

			nowc.Template AS Template,
			nowc.Title AS Title,
			nowc.TitleShow AS TitleShow,
			nowc.Content AS Content,
			nowc.Tag AS Tag,
			nowc.Abstract AS Abstract,

			ISNULL(nowc.HitCount,0)+1 AS HitCount,
			dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
			(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,

			N'Knowledge' AS KnowledgeDirectory

		FROM dbo.Knowledge now
		LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
		LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
		WHERE pad.[Name]=@PageDirectoryName

		ORDER BY UpdateTime DESC

	END

	ELSE

	BEGIN

		--====================================================================================
		--==ǰûǡ Admin Editor
		--====================================================================================
		INSERT INTO @Paging

		SELECT

			now.[ID] AS [ID],
			now.PageDirectoryID AS PageDirectoryID,
			now.Serial AS Serial,
			ISNULL(nowc.Hidden,N'false') AS Hidden,
			now.UpdateTime AS UpdateTime,
			now.Author AS Author,

			now.Editor AS Editor,
			dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,

			nowc.[ID] AS KnowledgeContentID,

			nowc.Template AS Template,
			nowc.Title AS Title,
			nowc.TitleShow AS TitleShow,
			nowc.Content AS Content,
			nowc.Tag AS Tag,
			nowc.Abstract AS Abstract,

			ISNULL(nowc.HitCount,0)+1 AS HitCount,
			dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
			(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,

			N'Knowledge' AS KnowledgeDirectory

		FROM dbo.Knowledge now
		LEFT JOIN dbo.View_KnowledgePermission nowp ON nowp.KnowledgeID=now.[ID]
		LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
		LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
		WHERE pad.[Name]=@PageDirectoryName AND (REPLACE(nowp.DedicatedTo,N',',N'')=N''  or dbo.UDF_UserDedicatedTo(@User,nowp.DedicatedTo)=1)  AND nowc.Hidden<>N'true'

		ORDER BY UpdateTime DESC
	END
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @Paging лȡǰҳһһ¼λ
--=====================================================
DECLARE @FirstRecord int
DECLARE @LastRecord int
		
SET @FirstRecord=(@CurrentPage - 1) * @PageSize
SET @LastRecord=(@CurrentPage * @PageSize + 1)

--=====================================================
--==صǰҳеļ¼
--==ܼ¼ÿҳļ¼Ceiling()õΪҳ ע⣺count(*)   @PageSize Ϊ INTõ INTԣҪת Decimal(18,2)
--=====================================================
SELECT 	
	*,
	PageCount=CEILING(Convert(decimal(18,2),(select count(*) from @Paging)) / Convert(decimal(18,2),@PageSize)) 

FROM @Paging 
WHERE PagingID>@FirstRecord AND PagingID<@LastRecord

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ǰҳ׼ص֪ʶ Content   HitCount д KnowledgeContent 
--=====================================================
UPDATE dbo.KnowledgeContent SET HitCount=ISNULL(HitCount,0)+1 WHERE KnowledgeID IN (Select [ID] From @Paging Where PagingID>@FirstRecord AND PagingID<@LastRecord) AND Culture=@Culture

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ѡ @PageDirectoryName  PageDirectory ID  Knowledge  KnowledgeDirectory   òڴ ֪ʶ ӣ 
--==ͬʱصǰ PageDirectory ĳЩԣType, Presentation, ShowAuthor, ShowUpdateTime, ShowHitCount, ShowComments, ShowStaticUrl, ShowKnowledgeHtml, ShowRelativeԱϵͳ Render ֪ʶ
--=====================================================
SELECT
	pad.[ID] AS PageDirectoryID,
	pad.[Name] AS PageDirectoryName,
	N'Knowledge' AS KnowledgeDirectory,

	pdc.Title AS Title,
	pdc.PageHeader AS PageHeader,
	pdc.PageFooter AS PageFooter,

	sdc.PageHeader AS SubDirectoryPageHeader,
	sdc.PageFooter AS  SubDirectoryPageFooter,

	mdc.PageHeader AS MainDirectoryPageHeader,
	mdc.PageFooter AS  MainDirectoryPageFooter,

	pad.Type AS Type,
	pad.Presentation AS Presentation,
	pad.ShowAuthor AS ShowAuthor,
	pad.ShowUpdateTime AS ShowUpdateTime,
	pad.ShowHitCount AS ShowHitCount,
	pad.ShowComments AS ShowComments,
	pad.ShowStaticUrl AS ShowStaticUrl,
	pad.ShowKnowledgeHtml AS ShowKnowledgeHtml,
	pad.ShowRelative AS ShowRelative,

	pad.Overview AS PageDirectoryOverview,
	sd.Overview AS SubDirectoryOverview,
	(Select COUNT(dpd.[ID]) From dbo.PageDirectory dpd Where dpd.SubDirectoryID=(sd.[ID])) AS PageDirectoryBrothersCount,
	(Select COUNT(dsd.[ID]) From dbo.SubDirectory dsd Where dsd.MainDirectoryID=(md.[ID])) AS SubDirectoryBrothersCount
	


FROM dbo.PageDirectory pad 
LEFT JOIN dbo.PageDirectoryContent pdc ON pdc.PageDirectoryID=pad.[ID] AND pdc.Culture=@Culture

LEFT JOIN dbo.SubDirectory sd ON sd.[ID]=pad.SubDirectoryID
LEFT JOIN dbo.SubDirectoryContent sdc ON sdc.SubDirectoryID=sd.[ID]

LEFT JOIN dbo.MainDirectory md ON md.[ID]=sd.MainDirectoryID
LEFT JOIN dbo.MainDirectoryContent mdc ON mdc.MainDirectoryID=md.[ID]

WHERE pad.[Name]=@PageDirectoryName

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeGet]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeGetHomePage    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeGetHomePage]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeGetHomePage]
GO

--====================================================================================
--==KnowledgeGetHomePage ķҳ  ϵͳ Option У KnowledgePageSize Ϊ 0 򲻷ҳʾ 0ҳʾ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeGetHomePage

@User nvarchar(50),						-- ASPX ˴ݹĵǰû

@Culture nvarchar(100),						--ǰĻ

@CurrentPage INT						--ҳƣǰҳ

AS


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==õǰ PageDirectory   Type ֵ 1ǺĽʹ Order By Serial ͨݣ Serial 򣩣  2  Order By UpdateTime ʱԷʱ
--====================================================================================
DECLARE @Type INT
SELECT TOP 1 @Type=Type FROM dbo.PageDirectory WHERE Home=N'true'

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== HomePage ڵ PageDirectory ¼е PageSize ֵ
--====================================================================================
DECLARE @PageSize INT
SELECT TOP 1 @PageSize=PageSize FROM dbo.PageDirectory WHERE Home=N'true'

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ҳ
--====================================================================================
DECLARE @Paging TABLE 
( 
	PagingID int identity(1,1), 
	[ID] int, 
	PageDirectoryID int,
	Serial int,
	Hidden nvarchar(50) COLLATE database_default,
	UpdateTime datetime,
	Author nvarchar(50) COLLATE database_default,

	Editor ntext COLLATE database_default, 
	EditorPermission int,

	KnowledgeContentID int,

	Template nvarchar(200) COLLATE database_default, 
	Title nvarchar(2000) COLLATE database_default, 
	TitleShow nvarchar(50) COLLATE database_default, 
	Content ntext COLLATE database_default, 
	Tag nvarchar(500) COLLATE database_default, 
	Abstract ntext COLLATE database_default, 

	HitCount int,
	CommentsPermission int,
	CommentsCount int,

	KnowledgeDirectory nvarchar(50) COLLATE database_default 
) 



--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== Type=1/2 ʹ ORDER BY Serial  UpdateTime δ Order By ֮⣬طȫһ£
--====================================================================================
IF @Type=1

BEGIN

	--====================================================================================
	--==ǰû Admin Editor ͨû
	--====================================================================================
	IF  dbo.UDF_UserAdminEditor(@User)=1

	BEGIN
		--====================================================================================
		--==ǰû Admin Editor
		--====================================================================================
		INSERT INTO @Paging

		SELECT

			now.[ID] AS [ID],
			now.PageDirectoryID AS PageDirectoryID,
			now.Serial AS Serial,
			ISNULL(nowc.Hidden,N'false') AS Hidden,
			now.UpdateTime AS UpdateTime,
			now.Author AS Author,

			now.Editor AS Editor,
			dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,
	
			nowc.[ID] AS KnowledgeContentID,

			nowc.Template AS Template,
			nowc.Title AS Title,
			nowc.TitleShow AS TitleShow,
			nowc.Content AS Content,
			nowc.Tag AS Tag,
			nowc.Abstract AS Abstract,

			ISNULL(nowc.HitCount,0)+1 AS HitCount,
			dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
			(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,

			N'Knowledge' AS KnowledgeDirectory

		FROM dbo.Knowledge now 
		LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
		WHERE now.PageDirectoryID=(Select Top 1 [ID] From dbo.PageDirectory Where Home=N'true') 

		ORDER BY Serial

	END

	ELSE

	BEGIN
		--====================================================================================
		--==ǰûǡ Admin Editor
		--====================================================================================
		INSERT INTO @Paging

		SELECT

			now.[ID] AS [ID],
			now.PageDirectoryID AS PageDirectoryID,
			now.Serial AS Serial,
			ISNULL(nowc.Hidden,N'false') AS Hidden,
			now.UpdateTime AS UpdateTime,
			now.Author AS Author,

			now.Editor AS Editor,
			dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,

			nowc.[ID] AS KnowledgeContentID,

			nowc.Template AS Template,
			nowc.Title AS Title,
			nowc.TitleShow AS TitleShow,
			nowc.Content AS Content,
			nowc.Tag AS Tag,
			nowc.Abstract AS Abstract,

			ISNULL(nowc.HitCount,0)+1 AS HitCount,
			dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
			(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,

			N'Knowledge' AS KnowledgeDirectory

		FROM dbo.Knowledge now 
		LEFT JOIN dbo.View_KnowledgePermission nowp ON nowp.KnowledgeID=now.[ID]
		LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
		WHERE now.PageDirectoryID=(Select Top 1 [ID] From dbo.PageDirectory Where Home=N'true') AND (REPLACE(nowp.DedicatedTo,N',',N'')=N''  or dbo.UDF_UserDedicatedTo(@User,nowp.DedicatedTo)=1)  AND  nowc.Hidden<>N'true'

		ORDER BY Serial
	END


END

ELSE

BEGIN

	--====================================================================================
	--==ǰû Admin Editor ͨû
	--====================================================================================
	IF  dbo.UDF_UserAdminEditor(@User)=1

	BEGIN
		--====================================================================================
		--==ǰû Admin Editor
		--====================================================================================
		INSERT INTO @Paging

		SELECT

			now.[ID] AS [ID],
			now.PageDirectoryID AS PageDirectoryID,
			now.Serial AS Serial,
			ISNULL(nowc.Hidden,N'false') AS Hidden,
			now.UpdateTime AS UpdateTime,
			now.Author AS Author,

			now.Editor AS Editor,
			dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,
	
			nowc.[ID] AS KnowledgeContentID,

			nowc.Template AS Template,
			nowc.Title AS Title,
			nowc.TitleShow AS TitleShow,
			nowc.Content AS Content,
			nowc.Tag AS Tag,
			nowc.Abstract AS Abstract,

			ISNULL(nowc.HitCount,0)+1 AS HitCount,
			dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
			(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,

			N'Knowledge' AS KnowledgeDirectory

		FROM dbo.Knowledge now 
		LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
		WHERE now.PageDirectoryID=(Select Top 1 [ID] From dbo.PageDirectory Where Home=N'true') 

		ORDER BY UpdateTime DESC

	END

	ELSE

	BEGIN
		--====================================================================================
		--==ǰûǡ Admin Editor
		--====================================================================================
		INSERT INTO @Paging

		SELECT

			now.[ID] AS [ID],
			now.PageDirectoryID AS PageDirectoryID,
			now.Serial AS Serial,
			ISNULL(nowc.Hidden,N'false') AS Hidden,
			now.UpdateTime AS UpdateTime,
			now.Author AS Author,

			now.Editor AS Editor,
			dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,

			nowc.[ID] AS KnowledgeContentID,

			nowc.Template AS Template,
			nowc.Title AS Title,
			nowc.TitleShow AS TitleShow,
			nowc.Content AS Content,
			nowc.Tag AS Tag,
			nowc.Abstract AS Abstract,

			ISNULL(nowc.HitCount,0)+1 AS HitCount,
			dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
			(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,

			N'Knowledge' AS KnowledgeDirectory

		FROM dbo.Knowledge now 
		LEFT JOIN dbo.View_KnowledgePermission nowp ON nowp.KnowledgeID=now.[ID]
		LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
		WHERE now.PageDirectoryID=(Select Top 1 [ID] From dbo.PageDirectory Where Home=N'true') AND (REPLACE(nowp.DedicatedTo,N',',N'')=N''  or dbo.UDF_UserDedicatedTo(@User,nowp.DedicatedTo)=1)  AND  nowc.Hidden<>N'true'

		ORDER BY UpdateTime DESC
	END
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @Paging лȡǰҳһһ¼λ
--=====================================================
DECLARE @FirstRecord int
DECLARE @LastRecord int
		
SET @FirstRecord=(@CurrentPage - 1) * @PageSize
SET @LastRecord=(@CurrentPage * @PageSize + 1)

--=====================================================
--==صǰҳеļ¼
--==ܼ¼ÿҳļ¼Ceiling()õΪҳ ע⣺count(*)   @PageSize Ϊ INTõ INTԣҪת Decimal(18,2)
--=====================================================
SELECT 	
	*,
	PageCount=CEILING(Convert(decimal(18,2),(select count(*) from @Paging)) / Convert(decimal(18,2),@PageSize)) 

FROM @Paging 
WHERE PagingID>@FirstRecord AND PagingID<@LastRecord

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ǰҳ׼ص֪ʶ Content   HitCount д KnowledgeContent 
--=====================================================
UPDATE dbo.KnowledgeContent SET HitCount=ISNULL(HitCount,0)+1 WHERE KnowledgeID IN (Select [ID] From @Paging Where PagingID>@FirstRecord AND PagingID<@LastRecord) AND Culture=@Culture

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ @PageDirectoryName  PageDirectory ID  Knowledge  KnowledgeDirectory   òڴ ֪ʶ ӣ 
--====================================================================================
SELECT TOP 1

	pad.[ID] AS PageDirectoryID,
	pad.[Name] AS PageDirectoryName,
	N'Knowledge' AS KnowledgeDirectory,

	pdc.Title AS Title,
	pdc.PageHeader AS PageHeader,
	pdc.PageFooter AS PageFooter,

	sdc.PageHeader AS SubDirectoryPageHeader,
	sdc.PageFooter AS  SubDirectoryPageFooter,

	mdc.PageHeader AS MainDirectoryPageHeader,
	mdc.PageFooter AS  MainDirectoryPageFooter,

	pad.Type AS Type,
	pad.Presentation AS Presentation,
	pad.ShowAuthor AS ShowAuthor,
	pad.ShowUpdateTime AS ShowUpdateTime,
	pad.ShowHitCount AS ShowHitCount,
	pad.ShowComments AS ShowComments,
	pad.ShowStaticUrl AS ShowStaticUrl,
	pad.ShowKnowledgeHtml AS ShowKnowledgeHtml,
	pad.ShowRelative AS ShowRelative,

	pad.Overview AS PageDirectoryOverview,
	sd.Overview AS SubDirectoryOverview,
	(Select COUNT(dpd.[ID]) From dbo.PageDirectory dpd Where dpd.SubDirectoryID=(sd.[ID])) AS PageDirectoryBrothersCount,
	(Select COUNT(dsd.[ID]) From dbo.SubDirectory dsd Where dsd.MainDirectoryID=(md.[ID])) AS SubDirectoryBrothersCount

FROM dbo.PageDirectory pad
LEFT JOIN dbo.PageDirectoryContent pdc ON pdc.PageDirectoryID=pad.[ID] AND pdc.Culture=@Culture

LEFT JOIN dbo.SubDirectory sd ON sd.[ID]=pad.SubDirectoryID
LEFT JOIN dbo.SubDirectoryContent sdc ON sdc.SubDirectoryID=sd.[ID]

LEFT JOIN dbo.MainDirectory md ON md.[ID]=sd.MainDirectoryID
LEFT JOIN dbo.MainDirectoryContent mdc ON mdc.MainDirectoryID=md.[ID]

WHERE pad.Home=N'true'

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeGetHomePage]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

/****** Object:  Stored Procedure dbo.UniqueNumberGet    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UniqueNumberGet]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UniqueNumberGet]
GO

--====================================================================================
--== UniqueNumber ǰ Number  Number  ASPX Ϊµ MainDirectory, SubDirectory, PugeDirectory, Community, Forum 
--==Ȼ Number + 1Աһα
--==ǵĿǱ֤κʱ򣬴 UniqueNumber õĶǶһ޶һ Number֤ϵͳи <xxx>Directory, Community, Forum ظ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2008-11-08
--====================================================================================

CREATE PROCEDURE dbo.UniqueNumberGet

@Number INT OUT			--صĽ

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ
--====================================================================================
SELECT @Number=[Number] FROM dbo.[UniqueNumber]

--====================================================================================
--==
--====================================================================================
UPDATE dbo.[UniqueNumber]  SET [Number]=[Number]+1

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UniqueNumberGet]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.SubDirectoryMove    Script Date: 2009-7-10 19:03:44 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SubDirectoryMove]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[SubDirectoryMove]
GO

--====================================================================================
--==ƶ SubDirectory
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.SubDirectoryMove

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@KnowledgeItem int,			--ǰ SubDirectory  ID
@KnowledgeDirectoryTarget int,		--ƶĸϼڵ㣨ID
@Clone int				--Ƿƣ1/0

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'SubDirectory',@KnowledgeItem,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

IF @Clone=0 

	BEGIN
		--=====================================================
		--==ƶ
		--=====================================================
		UPDATE dbo.SubDirectory SET MainDirectoryID=@KnowledgeDirectoryTarget WHERE [ID]=@KnowledgeItem

		--=====================================================
		--==һµǰ SubDirectory  Overview ǷΪ trueΪ trueִһ SubDirectorySetOverview
		--=====================================================
		IF EXISTS (Select [ID] From dbo.SubDirectory Where [ID]=@KnowledgeItem And Overview=N'true')

		BEGIN
			EXEC dbo.SubDirectorySetOverview @User,@KnowledgeItem
		END
	END

ELSE

	BEGIN
		--=====================================================
		--==Ϊ¸Ƶ SubDirectory һֲ֣ظ
		--=====================================================
		DECLARE @UniqueNumber INT
		EXEC dbo.UniqueNumberGet @UniqueNumber OUT

		DECLARE @NewSubDirectoryName NVARCHAR(50)
		SET @NewSubDirectoryName=N's' + CONVERT(NVARCHAR(20),@UniqueNumber)

		--=====================================================
		--== SubDirectory
		--=====================================================
		INSERT INTO dbo.SubDirectory(MainDirectoryID,Serial,[Name],Url,UseBaseUrl,NewWindow,Overview,Wizard,Editor,DedicatedTo,CommentsPermission) SELECT @KnowledgeDirectoryTarget,Serial,@NewSubDirectoryName,Url,UseBaseUrl,NewWindow,Overview,Wizard,Editor,DedicatedTo,CommentsPermission FROM dbo.SubDirectory WHERE [ID]=@KnowledgeItem

		--=====================================================  
		--==¸Ƶ SubDirectory  ID  
		--=====================================================  
		DECLARE @NewSubDirectoryID INT  
		SELECT @NewSubDirectoryID=SCOPE_IDENTITY() --ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı    

		--=====================================================  
		--==ǰƹ SubDirectory  Oveview Ϊ trueִһ SP SubDirectorySetOverview
		--=====================================================  
		IF EXISTS (Select [ID] From dbo.SubDirectory Where [ID]=@NewSubDirectoryID And Overview=N'true')
		
		BEGIN
			EXEC dbo.SubDirectorySetOverview @User,@NewSubDirectoryID
		END


		--=====================================================
		--== SubDirectory Content
		--=====================================================
		INSERT INTO dbo.SubDirectoryContent (SubDirectoryID,Culture,Title,[Description],WizardPreviousTitle,WizardNextTitle,Hidden,PageHeader,PageFooter) SELECT  @NewSubDirectoryID,Culture,Title,[Description],WizardPreviousTitle,WizardNextTitle,Hidden,PageHeader,PageFooter  FROM dbo.SubDirectoryContent WHERE SubDirectoryID=@KnowledgeItem


		--=====================================================
		--=====================================================
		--== PageDirectoryMove SP  PageDirectory  PageDirectoryContent
		--=====================================================
		--=====================================================


		--=====================================================  
		--==ǰ  SubDirectoryID µ PageDirectory ¼תΪ CURSOR  
		--=====================================================  
		DECLARE @PageDirectoryID INT  
		DECLARE PageDirectoryMoveCursor CURSOR FOR SELECT [ID] FROM dbo.PageDirectory WHERE SubDirectoryID=@KnowledgeItem
		OPEN PageDirectoryMoveCursor  
		FETCH NEXT FROM PageDirectoryMoveCursor INTO @PageDirectoryID  
  
		WHILE @@FETCH_STATUS = 0  
		BEGIN  
			--=====================================================  
			--== SP PageDirectoryMove
			--=====================================================  
			EXEC dbo.PageDirectoryMove @User,@PageDirectoryID, @NewSubDirectoryID, 1

			--=====================================================  
			--==¸ CURSOR  
			--=====================================================  
			FETCH NEXT FROM PageDirectoryMoveCursor INTO @PageDirectoryID  
		END  
  
		CLOSE PageDirectoryMoveCursor  
		DEALLOCATE PageDirectoryMoveCursor  

	END



--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[SubDirectoryMove]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PageDirectoryMove    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PageDirectoryMove]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PageDirectoryMove]
GO

--====================================================================================
--==ƶ PageDirectory
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.PageDirectoryMove

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@KnowledgeItem int,			--ǰ PageDirectory  ID
@KnowledgeDirectoryTarget int,		--ƶĸϼڵ㣨ID
@Clone int				--Ƿƣ1/0

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'PageDirectory',@KnowledgeItem,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

IF @Clone=0 

	BEGIN
		--=====================================================
		--==ǰƶ PageDirectory 丸 SubDirectory µΨһ¼ٴ
		--=====================================================
		DECLARE @SubDirectoryID INT
		SELECT @SubDirectoryID=pd.SubDirectoryID FROM dbo.PageDirectory pd WHERE pd.[ID]=@KnowledgeItem

		DECLARE @Count INT
		SELECT @Count=COUNT(pd.[ID]) FROM dbo.PageDirectory pd WHERE pd.SubDirectoryID=@SubDirectoryID

		--=====================================================
		--==Ψһ PageDirectory Ŀٴɾ
		--=====================================================
		IF @Count<=1

			BEGIN
				--=====================================================
				--==ٴ
				--=====================================================
				RAISERROR(N'ƶҳĿ¼ϼĿ¼Ŀ¼ΨһĿƶ',16,1)
			END

		ELSE

			BEGIN
				--=====================================================
				--==ƶ
				--=====================================================
				UPDATE dbo.PageDirectory SET SubDirectoryID=@KnowledgeDirectoryTarget WHERE [ID]=@KnowledgeItem

				--=====================================================
				--==һµǰ PageDirectory  Overview ǷΪ trueΪ trueִһ PageDirectorySetOverview
				--=====================================================
				IF EXISTS (Select [ID] From dbo.PageDirectory Where [ID]=@KnowledgeItem And Overview=N'true')

				BEGIN
					EXEC dbo.PageDirectorySetOverview @User,@KnowledgeItem
				END
			END
	END

ELSE

	BEGIN
		--=====================================================
		--==Ϊ¸Ƶ PageDirectory һֲ֣ظ
		--=====================================================
		DECLARE @UniqueNumber INT
		EXEC dbo.UniqueNumberGet @UniqueNumber OUT

		DECLARE @NewPageDirectoryName NVARCHAR(50)
		SET @NewPageDirectoryName=N'p' + CONVERT(NVARCHAR(20),@UniqueNumber)

		--=====================================================
		--== PageDirectory
		--=====================================================
		INSERT INTO dbo.PageDirectory(SubDirectoryID,Serial,[Name],Url,PageSize,UseBaseUrl,NewWindow,Overview,FastAccess,Home,RightIndent,jQuery,LogoHide,MainMenuHide,BannerHide,BreadcrumbHide,PageMenuHide,PageBarHide,CopyrightHide,Type,Presentation,ShowAuthor,ShowUpdateTime,ShowHitCount,ShowComments,ShowStaticUrl,ShowKnowledgeHtml,ShowRelative,Editor,DedicatedTo,CommentsPermission) SELECT @KnowledgeDirectoryTarget,Serial,@NewPageDirectoryName,Url,PageSize,UseBaseUrl,NewWindow,Overview,FastAccess,N'false',RightIndent,jQuery,LogoHide,MainMenuHide,BannerHide,BreadcrumbHide,PageMenuHide,PageBarHide,CopyrightHide,Type,Presentation,ShowAuthor,ShowUpdateTime,ShowHitCount,ShowComments,ShowStaticUrl,ShowKnowledgeHtml,ShowRelative,Editor,DedicatedTo,CommentsPermission  FROM dbo.PageDirectory WHERE [ID]=@KnowledgeItem

		--=====================================================  
		--==¸Ƶ PageDirectory  ID  
		--=====================================================  
		DECLARE @NewPageDirectoryID INT  
		SELECT @NewPageDirectoryID=SCOPE_IDENTITY() --ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı    

		--=====================================================  
		--==ǰƹ PageDirectory  Oveview Ϊ trueִһ SP PageDirectorySetOverview
		--=====================================================  
		IF EXISTS (Select [ID] From dbo.PageDirectory Where [ID]=@NewPageDirectoryID And Overview=N'true')
		
		BEGIN
			EXEC dbo.PageDirectorySetOverview @User,@NewPageDirectoryID
		END


		--=====================================================
		--== PageDirectory Content
		--=====================================================
		INSERT INTO dbo.PageDirectoryContent (PageDirectoryID,Culture,SeoTitle,SeoDescription,SeoKeywords,Title,[Description],Hidden,PageHeader,PageFooter) SELECT  @NewPageDirectoryID,Culture,SeoTitle,SeoDescription,SeoKeywords,Title,[Description],Hidden,PageHeader,PageFooter  FROM dbo.PageDirectoryContent WHERE PageDirectoryID=@KnowledgeItem


		--=====================================================
		--=====================================================
		--== KnowledgeMove SP  Knowledge  KnowledgeContent
		--=====================================================
		--=====================================================


		--=====================================================  
		--==ǰ  PageDirectoryID µ Knowledge ¼תΪ CURSOR  
		--=====================================================  
		DECLARE @KnowledgeID INT  
		DECLARE KnowledgeMoveCursor CURSOR FOR SELECT [ID] FROM dbo.Knowledge WHERE PageDirectoryID=@KnowledgeItem
		OPEN KnowledgeMoveCursor  
		FETCH NEXT FROM KnowledgeMoveCursor INTO @KnowledgeID  
  
		WHILE @@FETCH_STATUS = 0  
		BEGIN  
			--=====================================================  
			--== SP KnowledgeMove
			--=====================================================  
			EXEC dbo.KnowledgeMove @User, @KnowledgeID, @NewPageDirectoryID, 1

			--=====================================================  
			--==¸ CURSOR  
			--=====================================================  
			FETCH NEXT FROM KnowledgeMoveCursor INTO @KnowledgeID  
		END  
  
		CLOSE KnowledgeMoveCursor  
		DEALLOCATE KnowledgeMoveCursor  

	END


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PageDirectoryMove]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeMove    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeMove]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeMove]
GO

--====================================================================================
--==ƶ Knowledge
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeMove

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@KnowledgeItem int,			--ǰ Knowledge   ID
@KnowledgeDirectoryTarget int,		--ƶĸϼڵ㣨ID
@Clone int				--Ƿƣ1/0

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'Knowledge',@KnowledgeItem,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

IF @Clone=0 

	BEGIN
		--=====================================================
		--==ƶ
		--=====================================================
		UPDATE dbo.Knowledge SET PageDirectoryID=@KnowledgeDirectoryTarget WHERE [ID]=@KnowledgeItem
	END

ELSE

	BEGIN
		--=====================================================
		--== Knowledge
		--=====================================================
		INSERT INTO dbo.Knowledge (PageDirectoryID,Serial,Editor,DedicatedTo,CommentsPermission,UpdateTime,Author) SELECT @KnowledgeDirectoryTarget,Serial,Editor,DedicatedTo,CommentsPermission,UpdateTime,Author FROM dbo.Knowledge WHERE [ID]=@KnowledgeItem

		--=====================================================  
		--==¸Ƶ Knowledge ID  
		--=====================================================  
		DECLARE @NewKnowledgeID INT  
		SELECT @NewKnowledgeID=SCOPE_IDENTITY() --ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı    

		--=====================================================
		--== @KnowledgeItem µ KnowledgeContent ѡ CURSOR
		--=====================================================
		DECLARE @KnowledgeContentID INT
		DECLARE KnowledgeContent_Cursor CURSOR FOR SELECT nowc.[ID] FROM dbo.KnowledgeContent nowc WHERE nowc.KnowledgeID=@KnowledgeItem
		
		OPEN KnowledgeContent_Cursor
		FETCH NEXT FROM KnowledgeContent_Cursor INTO @KnowledgeContentID

		WHILE @@FETCH_STATUS = 0
		BEGIN

			--=====================================================
			--==Ƶǰ @KnowledgeContentID µ  KnowledgeContent
			--=====================================================
			INSERT INTO dbo.KnowledgeContent (KnowledgeID,Culture,Template,Title,TitleShow, Hidden, Content,Tag,Abstract,HitCount) SELECT @NewKnowledgeID,Culture,Template,Title,TitleShow, Hidden, Content,Tag,Abstract,HitCount FROM dbo.KnowledgeContent WHERE [ID]=@KnowledgeContentID

			--=====================================================
			--==¸Ƶ KnowledgeContent ID  
			--=====================================================
			DECLARE @NewKnowledgeContentID INT  
			SELECT @NewKnowledgeContentID=SCOPE_IDENTITY() --ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Session ڵı    

			--=====================================================
			--== KnowledgeComments ˣ
			--=====================================================

			--=====================================================
			--== KnowledgeTags 
			--=====================================================
			INSERT INTO dbo.KnowledgeTags(KnowledgeContentID,Tag) SELECT @NewKnowledgeContentID,Tag FROM dbo.KnowledgeTags WHERE KnowledgeContentID=@KnowledgeContentID

			--=====================================================
			--==FETCH NEXT
			--=====================================================
			FETCH NEXT FROM KnowledgeContent_Cursor INTO @KnowledgeContentID
		END

		CLOSE KnowledgeContent_Cursor
		DEALLOCATE KnowledgeContent_Cursor

	END


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeMove]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ForumMove    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ForumMove]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ForumMove]
GO

--====================================================================================
--==ƶ Forum
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.ForumMove

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@CommunityItem int,			--ǰ Community / Forum   ID
@CommunityDirectoryTarget int,		--ƶĸϼڵ㣨ID
@Clone int				--Ƿƣ1/0

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

IF @Clone=0 

	BEGIN
		--=====================================================
		--==ƶ
		--=====================================================
		UPDATE dbo.Forum SET CommunityID=@CommunityDirectoryTarget WHERE [ID]=@CommunityItem
	END

ELSE

	BEGIN
		--=====================================================
		--==Ϊ¸Ƶ Forum һ ʹͬһ֣
		--=====================================================
		DECLARE @UniqueNumber INT
		EXEC dbo.UniqueNumberGet @UniqueNumber OUT

		DECLARE @NewForumName NVARCHAR(50)
		SET @NewForumName=N'f' + CONVERT(NVARCHAR(20),@UniqueNumber)

		--=====================================================
		--== Forum
		--=====================================================
		INSERT INTO dbo.Forum (CommunityID,Serial,[Name],Moderator,[Public]) SELECT  @CommunityDirectoryTarget,Serial,@NewForumName,Moderator,[Public] FROM dbo.Forum WHERE [ID]=@CommunityItem

		--=====================================================  
		--==¸Ƶ Forum ID  
		--=====================================================  
		DECLARE @NewForumID INT  
		SELECT @NewForumID=SCOPE_IDENTITY() --ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı    

		DECLARE @NewForumIDString NVARCHAR(4000)
		SET @NewForumIDString=CONVERT(NVARCHAR(4000),@NewForumID)		  

		--=====================================================
		--== Forum Content
		--=====================================================
		INSERT INTO dbo.ForumContent (ForumID,Culture,Title,[Description],CommandTitleTaskList,CommandTitleTaskListDescription,CommandTitleAdd,CommandTitleAddDescription,CommandTitleQuery,CommandTitleQueryDescription,Hidden) SELECT  @NewForumID,Culture,Title,[Description],CommandTitleTaskList,CommandTitleTaskListDescription,CommandTitleAdd,CommandTitleAddDescription,CommandTitleQuery,CommandTitleQueryDescription,Hidden  FROM dbo.ForumContent WHERE ForumID=@CommunityItem


		--=====================================================
		--=====================================================
		--== TopicMove SP  Topic  Followup
		--=====================================================
		--=====================================================


		--=====================================================  
		--==ǰ  ForumID µ Topic ¼תΪ CURSOR  
		--=====================================================  
		DECLARE @TopicID INT  
		DECLARE TopicCursor CURSOR FOR SELECT [ID] FROM dbo.Topic WHERE ForumID=@CommunityItem
		OPEN TopicCursor  
		FETCH NEXT FROM TopicCursor INTO @TopicID  
  
		WHILE @@FETCH_STATUS = 0  
		BEGIN  
			--=====================================================  
			--== SP TopicMove
			--=====================================================  
			EXEC dbo.TopicMove @User, @TopicID, @NewForumIDString, N'true'

			--=====================================================  
			--==¸ CURSOR  
			--=====================================================  
			FETCH NEXT FROM TopicCursor INTO @TopicID  
		END  
  
		CLOSE TopicCursor  
		DEALLOCATE TopicCursor  




		/*
		--=====================================================  
		--== Topic
		--=====================================================  
		INSERT INTO dbo.Topic (ForumID,TopicStatus,[User],PostTime,Title,Content,Hit,AttachmentName) SELECT @NewForumID,TopicStatus,[User],PostTime,Title,Content,Hit,AttachmentName FROM dbo.Topic WHERE ForumID=@CommunityItem  
  
		--=====================================================  
		--==¸Ƶ Topic ID  
		--=====================================================  
		DECLARE @NewTopicID INT  
		SELECT @NewTopicID=SCOPE_IDENTITY() --ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı    
  
		--=====================================================  
		--== FollowUp 
		--=====================================================  
		INSERT INTO dbo.FollowUp (TopicID,[User],PostTime,Content,AttachmentName) SELECT @NewTopicID,[User],PostTime,Content,AttachmentName FROM dbo.FollowUp WHERE TopicID IN (Select TopicID From dbo.Topic Where ForumID=@CommunityItem) 		
		*/
	END


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ForumMove]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeGetSingle    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeGetSingle]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeGetSingle]
GO

--====================================================================================
--==KnowledgeGet ĵ Knowledge   
--== Knowledge е DedicatedTo Ϊյʱз߿Ϊ * пͻ Ϊ abc,efg ָͻ 
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeGetSingle

@User nvarchar(50),						-- ASPX ˴ݹĵǰû

@PageDirectoryName nvarchar(100),				--Page Diretory  Name
@KnowledgeID int,						--ǰ֪ʶ
@Culture nvarchar(100)						--ǰĻ

AS
  

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ǰû Admin Editor ͨû
--====================================================================================
IF  dbo.UDF_UserAdminEditor(@User)=1

BEGIN

	--====================================================================================
	--==ǰû Admin Editor
	--====================================================================================
	SELECT

		1 AS PagingID,				--÷شΪ˺ KnowledgeGet һ£ûʵ
		now.[ID] AS [ID],
		now.PageDirectoryID AS PageDirectoryID,
		now.Serial AS Serial,
		ISNULL(nowc.Hidden,N'false') AS Hidden,
		now.UpdateTime AS UpdateTime,
		now.Author AS Author,

		now.Editor AS Editor,
		dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,

		nowc.[ID] AS KnowledgeContentID,

		nowc.Template AS Template,
		nowc.Title AS Title,
		nowc.TitleShow AS TitleShow,
		nowc.Content AS Content,
		nowc.Tag AS Tag,
		nowc.Abstract AS Abstract,

		ISNULL(nowc.HitCount,0)+1 AS HitCount,
		dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
		(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,

		N'Knowledge' AS KnowledgeDirectory,
	
		1 AS PageCount				--÷شں KnowledgeGet һ ʵֻܷһҳ

	FROM dbo.Knowledge now
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
	WHERE now.[ID]=@KnowledgeID

	ORDER BY Serial

END

ELSE

BEGIN

	--====================================================================================
	--==ǰû Admin Editor
	--====================================================================================
	SELECT

		1 AS PagingID,				--÷شΪ˺ KnowledgeGet һ£ûʵ
		now.[ID] AS [ID],
		now.PageDirectoryID AS PageDirectoryID,
		now.Serial AS Serial,
		ISNULL(nowc.Hidden,N'false') AS Hidden,
		now.UpdateTime AS UpdateTime,
		now.Author AS Author,

		now.Editor AS Editor,
		dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,

		nowc.[ID] AS KnowledgeContentID,
	
		nowc.Template AS Template,
		nowc.Title AS Title,
		nowc.TitleShow AS TitleShow,
		nowc.Content AS Content,
		nowc.Tag AS Tag,
		nowc.Abstract AS Abstract,

		ISNULL(nowc.HitCount,0)+1 AS HitCount,
		dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
		(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,

		N'Knowledge' AS KnowledgeDirectory,
	
		1 AS PageCount				--÷شں KnowledgeGet һ ʵֻܷһҳ

	FROM dbo.Knowledge now
	LEFT JOIN dbo.View_KnowledgePermission nowp ON nowp.KnowledgeID=now.[ID]
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
	WHERE now.[ID]=@KnowledgeID AND (REPLACE(nowp.DedicatedTo,N',',N'')=N''  or dbo.UDF_UserDedicatedTo(@User,nowp.DedicatedTo)=1)   AND  nowc.Hidden<>N'true'

	ORDER BY Serial
END


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ǰҳ׼ص֪ʶ Content   HitCount д KnowledgeContent 
--=====================================================
UPDATE dbo.KnowledgeContent SET HitCount=ISNULL(HitCount,0)+1 WHERE KnowledgeID=@KnowledgeID  AND Culture=@Culture

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ @PageDirectoryName  PageDirectory ID  Knowledge  KnowledgeDirectory   òڴ ֪ʶ ӣ 
--==ͬʱصǰ PageDirectory ĳЩԣType, Presentation, ShowAuthor, ShowUpdateTime, ShowHitCount, ShowComments, ShowStaticUrl, ShowKnowledgeHtml, ShowRelativeԱϵͳ Render ֪ʶ
--====================================================================================
SELECT
	pad.[ID] AS PageDirectoryID,
	pad.[Name] AS PageDirectoryName,
	N'Knowledge' AS KnowledgeDirectory,

	pdc.Title AS Title,
	pdc.PageHeader AS PageHeader,
	pdc.PageFooter AS PageFooter,

	sdc.PageHeader AS SubDirectoryPageHeader,
	sdc.PageFooter AS  SubDirectoryPageFooter,

	mdc.PageHeader AS MainDirectoryPageHeader,
	mdc.PageFooter AS  MainDirectoryPageFooter,

	pad.Type AS Type,
	pad.Presentation AS Presentation,
	pad.ShowAuthor AS ShowAuthor,
	pad.ShowUpdateTime AS ShowUpdateTime,
	pad.ShowHitCount AS ShowHitCount,
	pad.ShowComments AS ShowComments,
	pad.ShowStaticUrl AS ShowStaticUrl,
	pad.ShowKnowledgeHtml AS ShowKnowledgeHtml,
	pad.ShowRelative AS ShowRelative

FROM dbo.PageDirectory pad 
LEFT JOIN dbo.PageDirectoryContent pdc ON pdc.PageDirectoryID=pad.[ID] AND pdc.Culture=@Culture

LEFT JOIN dbo.SubDirectory sd ON sd.[ID]=pad.SubDirectoryID
LEFT JOIN dbo.SubDirectoryContent sdc ON sdc.SubDirectoryID=sd.[ID]

LEFT JOIN dbo.MainDirectory md ON md.[ID]=sd.MainDirectoryID
LEFT JOIN dbo.MainDirectoryContent mdc ON mdc.MainDirectoryID=md.[ID]

WHERE pad.[Name]=@PageDirectoryName

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeGetSingle]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeTagGet    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeTagGet]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeTagGet]
GO

--====================================================================================
--== Knowledge, KnowledgeContent з Tag бԼÿ Tag Ӧ Content Ŀ
--==ڹ֪ʶĲǩԱϸµ֪ʶ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeTagGet

@User nvarchar(50),						-- ASPX ˴ݹĵǰû

@PageDirectoryName nvarchar(100),				--Page Diretory  Name
@Culture nvarchar(100)						--ǰĻ

AS
  

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

/*
--================================================
--==ָ PageDirectoryNameָ Culture µ  KnowledgeContent  Tag ķֱ
--==ǰûȷ Admin ַ Client 򷵻 DedicatedTo Ϊջ null ļ¼
--================================================
SELECT TOP 100 PERCENT

	ISNULL(nowt.Tag,N'') AS Tag,
	COUNT(ISNULL(nowt.Tag,N'')) AS ContentCount

FROM dbo.Knowledge now
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
LEFT JOIN dbo.KnowledgeTags nowt ON nowt.KnowledgeContentID=nowc.[ID]
LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID

WHERE pad.[Name]=@PageDirectoryName AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL)  AND dbo.UDF_UserClient(@User)<>1 AND dbo.UDF_UserAdmin(@User)<>1  AND  nowc.Hidden<>N'true'

GROUP BY ISNULL(nowt.Tag,N'')

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

UNION
*/

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--==ָ PageDirectoryNameָ Culture µ  KnowledgeContent  Tag ķֱ
--==ǰû Admin Editor 򷵻 DedicatedTo Ϊջ null ϵǰûȨ޷ļ¼
--================================================
SELECT TOP 100 PERCENT

	ISNULL(nowt.Tag,N'') AS Tag,
	COUNT(ISNULL(nowt.Tag,N'')) AS ContentCount

FROM dbo.Knowledge now
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
LEFT JOIN dbo.KnowledgeTags nowt ON nowt.KnowledgeContentID=nowc.[ID]
LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID

WHERE pad.[Name]=@PageDirectoryName AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserAdminEditor(@User)<>1  AND  nowc.Hidden<>N'true'

GROUP BY ISNULL(nowt.Tag,N'')


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

UNION

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--==ָ PageDirectoryNameָ Culture µ  KnowledgeContent  Tag ķֱ
--==ǰû Admin Editorȫ¼أû˵
--================================================
SELECT TOP 100 PERCENT

	ISNULL(nowt.Tag,N'') AS Tag,
	COUNT(ISNULL(nowt.Tag,N'')) AS ContentCount

FROM dbo.Knowledge now
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
LEFT JOIN dbo.KnowledgeTags nowt ON nowt.KnowledgeContentID=nowc.[ID]
LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID

WHERE pad.[Name]=@PageDirectoryName AND dbo.UDF_UserAdminEditor(@User)=1       

GROUP BY ISNULL(nowt.Tag,N'')

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--== Order By
--================================================
ORDER BY Tag 



--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ




/*
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--==ָ PageDirectoryNameָ Culture µ  KnowledgeContent  Tag ķֱ
--==ǰûȷ Admin ַ Client 򷵻 DedicatedTo Ϊջ null ļ¼
--================================================
SELECT TOP 100 PERCENT

	ISNULL(nowc.Tag,N'') AS Tag,
	COUNT(ISNULL(nowc.Tag,N'')) AS ContentCount

FROM dbo.Knowledge now
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID

WHERE pad.[Name]=@PageDirectoryName AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL)  AND dbo.UDF_UserClient(@User)<>1 AND dbo.UDF_UserAdmin(@User)<>1  AND  nowc.Hidden<>N'true'

GROUP BY ISNULL(nowc.Tag,N'')

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

UNION

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--==ָ PageDirectoryNameָ Culture µ  KnowledgeContent  Tag ķֱ
--==ǰû Admin  Client 򷵻 DedicatedTo Ϊջ null ϵǰûȨ޷ļ¼
--================================================
SELECT TOP 100 PERCENT

	ISNULL(nowc.Tag,N'') AS Tag,
	COUNT(ISNULL(nowc.Tag,N'')) AS ContentCount

FROM dbo.Knowledge now
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID

WHERE pad.[Name]=@PageDirectoryName AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserClient(@User)=1 AND dbo.UDF_UserAdmin(@User)<>1  AND  nowc.Hidden<>N'true'

GROUP BY ISNULL(nowc.Tag,N'')


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

UNION

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--==ָ PageDirectoryNameָ Culture µ  KnowledgeContent  Tag ķֱ
--==ǰû Adminȫ¼أû˵
--================================================
SELECT TOP 100 PERCENT

	ISNULL(nowc.Tag,N'') AS Tag,
	COUNT(ISNULL(nowc.Tag,N'')) AS ContentCount

FROM dbo.Knowledge now
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID

WHERE pad.[Name]=@PageDirectoryName AND dbo.UDF_UserAdmin(@User)=1       

GROUP BY ISNULL(nowc.Tag,N'')

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--== Order By
--================================================
ORDER BY Tag 


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
*/
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeTagGet]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeTimeTagGet    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeTimeTagGet]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeTimeTagGet]
GO

--====================================================================================
--== Knowledge, KnowledgeContent з UpdateTime Tag бԼÿ Tag Ӧ Content Ŀ
--==ݣ·µ Content Ŀ
--== Blog ŵȻʱ֪ʶʱǩ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2000-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeTimeTagGet

@User nvarchar(50),						-- ASPX ˴ݹĵǰû

@PageDirectoryName nvarchar(100),				--Page Diretory  Name
@Culture nvarchar(100)						--ǰĻ

AS
  

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--== UodateTime Ϊ Null Σʹ Getdate() 滻 ʽϵͳУӦòᷢ
--================================================
DECLARE @Today DATETIME
SET @Today=GETDATE()

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

/*
--================================================
--==ָ PageDirectoryNameҸ pd  Ϊʱ pd  - Type=2ָ Culture µ  Knowledge  UpdateTime  ķֱ
--==ǰûȷ Admin ַ Client 򷵻 DedicatedTo Ϊջ null ļ¼  
--================================================
SELECT TOP 100 PERCENT

	CONVERT(NVARCHAR(20),YEAR(ISNULL(now.UpdateTime,@Today))) AS Title,
	CONVERT(NVARCHAR(20),MONTH(ISNULL(now.UpdateTime,@Today))) AS Tag,
	COUNT(CONVERT(NVARCHAR(20),MONTH(ISNULL(now.UpdateTime,@Today)))) AS ContentCount

FROM dbo.Knowledge now
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID

WHERE pad.[Name]=@PageDirectoryName AND pad.Type=2 AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL)  AND dbo.UDF_UserClient(@User)<>1 AND dbo.UDF_UserAdmin(@User)<>1   AND  nowc.Hidden<>N'true'  

GROUP BY CONVERT(NVARCHAR(20),YEAR(ISNULL(now.UpdateTime,@Today))), CONVERT(NVARCHAR(20),MONTH(ISNULL(now.UpdateTime,@Today)))

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

UNION 
*/

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--==ָ PageDirectoryNameҸ pd  Ϊʱ pd  - Type=2ָ Culture µ  Knowledge  UpdateTime  ķֱ
--==ǰû Admin Editor򷵻 DedicatedTo Ϊջ null ϵǰûȨ޷ļ¼  
--================================================
SELECT TOP 100 PERCENT

	CONVERT(NVARCHAR(20),YEAR(ISNULL(now.UpdateTime,@Today))) AS Title,
	CONVERT(NVARCHAR(20),MONTH(ISNULL(now.UpdateTime,@Today))) AS Tag,
	COUNT(CONVERT(NVARCHAR(20),MONTH(ISNULL(now.UpdateTime,@Today)))) AS ContentCount

FROM dbo.Knowledge now
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID

WHERE pad.[Name]=@PageDirectoryName AND pad.Type=2 AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserAdminEditor(@User)<>1    AND  nowc.Hidden<>N'true'
--WHERE pad.[Name]=@PageDirectoryName AND pad.Type=2 AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserClient(@User)=1 AND dbo.UDF_UserAdmin(@User)<>1    AND  nowc.Hidden<>N'true'

GROUP BY CONVERT(NVARCHAR(20),YEAR(ISNULL(now.UpdateTime,@Today))), CONVERT(NVARCHAR(20),MONTH(ISNULL(now.UpdateTime,@Today)))

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

UNION 

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--==ָ PageDirectoryNameҸ pd  Ϊʱ pd  - Type=2ָ Culture µ  Knowledge  UpdateTime  ķֱ
--==ǰû Admin Editorȫ¼أû˵  
--================================================
SELECT TOP 100 PERCENT

	CONVERT(NVARCHAR(20),YEAR(ISNULL(now.UpdateTime,@Today))) AS Title,
	CONVERT(NVARCHAR(20),MONTH(ISNULL(now.UpdateTime,@Today))) AS Tag,
	COUNT(CONVERT(NVARCHAR(20),MONTH(ISNULL(now.UpdateTime,@Today)))) AS ContentCount

FROM dbo.Knowledge now
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID

WHERE pad.[Name]=@PageDirectoryName AND pad.Type=2 AND dbo.UDF_UserAdminEditor(@User)=1         

GROUP BY CONVERT(NVARCHAR(20),YEAR(ISNULL(now.UpdateTime,@Today))), CONVERT(NVARCHAR(20),MONTH(ISNULL(now.UpdateTime,@Today)))

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--== Order By
--================================================
ORDER BY Title DESC,Tag DESC


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeTimeTagGet]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeGetByTag    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeGetByTag]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeGetByTag]
GO

--====================================================================================
--==KnowledgeGet  ByTag    KnowledgeGet Ľ Tag йˣ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeGetByTag

@User nvarchar(50),						-- ASPX ˴ݹĵǰû

@PageDirectoryName nvarchar(100),				--Page Diretory  Name
@Tag nvarchar(500),						--ʹõ Tag йˣ
@Culture nvarchar(100),						--ǰĻ

@CurrentPage INT						--ҳƣǰҳ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==õǰ PageDirectory   Type ֵ 1ǺĽʹ Order By Serial ͨݣ Serial 򣩣  2  Order By UpdateTime ʱԷʱ
--====================================================================================
DECLARE @Type INT
SELECT @Type=Type FROM dbo.PageDirectory WHERE [Name]=@PageDirectoryName
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== @PageDirectoryName  ڵ PageDirectory ¼е PageSize ֵ
--====================================================================================
DECLARE @PageSize INT
SELECT TOP 1 @PageSize=PageSize FROM dbo.PageDirectory WHERE [Name]=@PageDirectoryName

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ҳ
--====================================================================================
DECLARE @Paging TABLE 
( 
	PagingID int identity(1,1), 
	[ID] int, 
	PageDirectoryID int,
	Serial int,
	Hidden nvarchar(50) COLLATE database_default,
	UpdateTime datetime,
	Author nvarchar(50) COLLATE database_default, 

	Editor ntext COLLATE database_default, 
	EditorPermission int,

	KnowledgeContentID int,

	Template nvarchar(200) COLLATE database_default, 
	Title nvarchar(2000) COLLATE database_default, 
	TitleShow nvarchar(50) COLLATE database_default, 
	Content ntext COLLATE database_default, 
	Tag nvarchar(500) COLLATE database_default, 
	Abstract ntext COLLATE database_default, 

	HitCount int,
	CommentsPermission int,
	CommentsCount int,

	KnowledgeDirectory nvarchar(50) COLLATE database_default 
) 


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== Type=1/2 ʹ ORDER BY Serial  UpdateTime δ Order By ֮⣬طȫһ£
--====================================================================================
IF @Type=1

BEGIN
	--====================================================================================
	--==ǰû Admin Editor ͨû
	--====================================================================================
	IF  dbo.UDF_UserAdminEditor(@User)=1

	BEGIN
		--====================================================================================
		--==ǰû Admin Editor
		--====================================================================================
		INSERT INTO @Paging

		SELECT

			now.[ID] AS [ID],
			now.PageDirectoryID AS PageDirectoryID,
			now.Serial AS Serial,
			ISNULL(nowc.Hidden,N'false') AS Hidden,
			now.UpdateTime AS UpdateTime,
			now.Author AS Author,

			now.Editor AS Editor,
			dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,

			nowc.[ID] AS KnowledgeContentID,

			nowc.Template AS Template,
			nowc.Title AS Title,
			nowc.TitleShow AS TitleShow,
			nowc.Content AS Content,
			nowc.Tag AS Tag,
			nowc.Abstract AS Abstract,

			ISNULL(nowc.HitCount,0)+1 AS HitCount,
			dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
			(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,

			N'Knowledge' AS KnowledgeDirectory

		FROM dbo.Knowledge now
		LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
		LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
		WHERE pad.[Name]=@PageDirectoryName AND (@Tag In (select Tag from dbo.KnowledgeTags where KnowledgeContentID=nowc.[ID]))

		ORDER BY Serial
	END

	ELSE

	BEGIN

		--====================================================================================
		--==ǰû Admin Editor
		--====================================================================================
		INSERT INTO @Paging

		SELECT

			now.[ID] AS [ID],
			now.PageDirectoryID AS PageDirectoryID,
			now.Serial AS Serial,
			ISNULL(nowc.Hidden,N'false') AS Hidden,
			now.UpdateTime AS UpdateTime,
			now.Author AS Author,

			now.Editor AS Editor,
			dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,

			nowc.[ID] AS KnowledgeContentID,

			nowc.Template AS Template,
			nowc.Title AS Title,
			nowc.TitleShow AS TitleShow,
			nowc.Content AS Content,
			nowc.Tag AS Tag,
			nowc.Abstract AS Abstract,

			ISNULL(nowc.HitCount,0)+1 AS HitCount,
			dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
			(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,
	
			N'Knowledge' AS KnowledgeDirectory

		FROM dbo.Knowledge now
		LEFT JOIN dbo.View_KnowledgePermission nowp ON nowp.KnowledgeID=now.[ID]
		LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
		LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
		WHERE pad.[Name]=@PageDirectoryName AND (@Tag In (select Tag from dbo.KnowledgeTags where KnowledgeContentID=nowc.[ID]))  AND (REPLACE(nowp.DedicatedTo,N',',N'')=N''  or dbo.UDF_UserDedicatedTo(@User,nowp.DedicatedTo)=1)  AND  nowc.Hidden<>N'true'

		ORDER BY Serial
	END
END

ELSE

BEGIN

	--====================================================================================
	--==ǰû Admin Editor ͨû
	--====================================================================================
	IF  dbo.UDF_UserAdminEditor(@User)=1

	BEGIN
		--====================================================================================
		--==ǰû Admin Editor
		--====================================================================================
		INSERT INTO @Paging

		SELECT

			now.[ID] AS [ID],
			now.PageDirectoryID AS PageDirectoryID,
			now.Serial AS Serial,
			ISNULL(nowc.Hidden,N'false') AS Hidden,
			now.UpdateTime AS UpdateTime,
			now.Author AS Author,

			now.Editor AS Editor,
			dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,

			nowc.[ID] AS KnowledgeContentID,

			nowc.Template AS Template,
			nowc.Title AS Title,
			nowc.TitleShow AS TitleShow,
			nowc.Content AS Content,
			nowc.Tag AS Tag,
			nowc.Abstract AS Abstract,

			ISNULL(nowc.HitCount,0)+1 AS HitCount,
			dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
			(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,

			N'Knowledge' AS KnowledgeDirectory

		FROM dbo.Knowledge now
		LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
		LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
		WHERE pad.[Name]=@PageDirectoryName AND (@Tag In (select Tag from dbo.KnowledgeTags where KnowledgeContentID=nowc.[ID]))

		ORDER BY UpdateTime DESC
	END

	ELSE

	BEGIN

		--====================================================================================
		--==ǰû Admin Editor
		--====================================================================================
		INSERT INTO @Paging

		SELECT

			now.[ID] AS [ID],
			now.PageDirectoryID AS PageDirectoryID,
			now.Serial AS Serial,
			ISNULL(nowc.Hidden,N'false') AS Hidden,
			now.UpdateTime AS UpdateTime,
			now.Author AS Author,

			now.Editor AS Editor,
			dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,

			nowc.[ID] AS KnowledgeContentID,

			nowc.Template AS Template,
			nowc.Title AS Title,
			nowc.TitleShow AS TitleShow,
			nowc.Content AS Content,
			nowc.Tag AS Tag,
			nowc.Abstract AS Abstract,

			ISNULL(nowc.HitCount,0)+1 AS HitCount,
			dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
			(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,
	
			N'Knowledge' AS KnowledgeDirectory

		FROM dbo.Knowledge now
		LEFT JOIN dbo.View_KnowledgePermission nowp ON nowp.KnowledgeID=now.[ID]
		LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
		LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
		WHERE pad.[Name]=@PageDirectoryName AND (@Tag In (select Tag from dbo.KnowledgeTags where KnowledgeContentID=nowc.[ID]))  AND (REPLACE(nowp.DedicatedTo,N',',N'')=N''  or dbo.UDF_UserDedicatedTo(@User,nowp.DedicatedTo)=1)  AND  nowc.Hidden<>N'true'

		ORDER BY UpdateTime DESC
	END
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ


--=====================================================
--== @Paging лȡǰҳһһ¼λ
--=====================================================
DECLARE @FirstRecord int
DECLARE @LastRecord int
		
SET @FirstRecord=(@CurrentPage - 1) * @PageSize
SET @LastRecord=(@CurrentPage * @PageSize + 1)

--=====================================================
--==صǰҳеļ¼
--==ܼ¼ÿҳļ¼Ceiling()õΪҳ ע⣺count(*)   @PageSize Ϊ INTõ INTԣҪת Decimal(18,2)
--=====================================================
SELECT 	
	*,
	PageCount=CEILING(Convert(decimal(18,2),(select count(*) from @Paging)) / Convert(decimal(18,2),@PageSize)) 

FROM @Paging 
WHERE PagingID>@FirstRecord AND PagingID<@LastRecord

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ǰҳ׼ص֪ʶ Content   HitCount д KnowledgeContent 
--=====================================================
UPDATE dbo.KnowledgeContent SET HitCount=ISNULL(HitCount,0)+1 WHERE KnowledgeID IN (Select [ID] From @Paging Where PagingID>@FirstRecord AND PagingID<@LastRecord) AND Culture=@Culture

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ѡ @PageDirectoryName  PageDirectory ID  Knowledge  KnowledgeDirectory   òڴ ֪ʶ ӣ 
--==ͬʱصǰ PageDirectory ĳЩԣType, Presentation, ShowAuthor, ShowUpdateTime, ShowHitCount, ShowComments, ShowStaticUrl, ShowKnowledgeHtml, ShowRelativeԱϵͳ Render ֪ʶ
--=====================================================
SELECT
	pad.[ID] AS PageDirectoryID,
	pad.[Name] AS PageDirectoryName,
	N'Knowledge' AS KnowledgeDirectory,

	pdc.Title AS Title,

	pdc.PageHeader AS PageHeader,
	pdc.PageFooter AS PageFooter,

	sdc.PageHeader AS SubDirectoryPageHeader,
	sdc.PageFooter AS  SubDirectoryPageFooter,

	mdc.PageHeader AS MainDirectoryPageHeader,
	mdc.PageFooter AS  MainDirectoryPageFooter,

	pad.Type AS Type,
	pad.Presentation AS Presentation,
	pad.ShowAuthor AS ShowAuthor,
	pad.ShowUpdateTime AS ShowUpdateTime,
	pad.ShowHitCount AS ShowHitCount,
	pad.ShowComments AS ShowComments,
	pad.ShowStaticUrl AS ShowStaticUrl,
	pad.ShowKnowledgeHtml AS ShowKnowledgeHtml,
	pad.ShowRelative AS ShowRelative

FROM dbo.PageDirectory pad 
LEFT JOIN dbo.PageDirectoryContent pdc ON pdc.PageDirectoryID=pad.[ID] AND pdc.Culture=@Culture

LEFT JOIN dbo.SubDirectory sd ON sd.[ID]=pad.SubDirectoryID
LEFT JOIN dbo.SubDirectoryContent sdc ON sdc.SubDirectoryID=sd.[ID]

LEFT JOIN dbo.MainDirectory md ON md.[ID]=sd.MainDirectoryID
LEFT JOIN dbo.MainDirectoryContent mdc ON mdc.MainDirectoryID=md.[ID]

WHERE pad.[Name]=@PageDirectoryName

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeGetByTag]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeGetByTimeTag    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeGetByTimeTag]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeGetByTimeTag]
GO

--====================================================================================
--==KnowledgeGet  ByTimeTag    KnowledgeGet Ľ TimeTag йˣ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeGetByTimeTag

@User nvarchar(50),						-- ASPX ˴ݹĵǰû

@PageDirectoryName nvarchar(100),				--Page Diretory  Name
@TimeTagYear int,						--ʹõ TimeTag йˣ
@TimeTagMonth int,						--ʹõ TimeTag йˣ
@Culture nvarchar(100),						--ǰĻ

@CurrentPage INT						--ҳƣǰҳ

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== @PageDirectoryName  ڵ PageDirectory ¼е PageSize ֵ
--====================================================================================
DECLARE @PageSize INT
SELECT TOP 1 @PageSize=PageSize FROM dbo.PageDirectory WHERE [Name]=@PageDirectoryName

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ҳ
--====================================================================================
DECLARE @Paging TABLE 
( 
	PagingID int identity(1,1), 
	[ID] int, 
	PageDirectoryID int,
	Serial int,
	Hidden nvarchar(50) COLLATE database_default,
	UpdateTime datetime,
	Author nvarchar(50) COLLATE database_default, 

	Editor ntext COLLATE database_default, 
	EditorPermission int,

	KnowledgeContentID int,

	Template nvarchar(200) COLLATE database_default, 
	Title nvarchar(2000) COLLATE database_default, 
	TitleShow nvarchar(50) COLLATE database_default, 
	Content ntext COLLATE database_default, 
	Tag nvarchar(500) COLLATE database_default, 
	Abstract ntext COLLATE database_default, 

	HitCount int,
	CommentsPermission int,
	CommentsCount int,

	KnowledgeDirectory nvarchar(50) COLLATE database_default 
) 


--====================================================================================
--==ǰû Admin Editor ͨû
--====================================================================================
IF  dbo.UDF_UserAdminEditor(@User)=1

BEGIN
	--====================================================================================
	--==ǰû Admin Editor 
	--====================================================================================
	INSERT INTO @Paging

	SELECT

		now.[ID] AS [ID],
		now.PageDirectoryID AS PageDirectoryID,
		now.Serial AS Serial,
		ISNULL(nowc.Hidden,N'false') AS Hidden,
		now.UpdateTime AS UpdateTime,
		now.Author AS Author,

		now.Editor AS Editor,
		dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,

		nowc.[ID] AS KnowledgeContentID,

		nowc.Template AS Template,
		nowc.Title AS Title,
		nowc.TitleShow AS TitleShow,
		nowc.Content AS Content,
		nowc.Tag AS Tag,
		nowc.Abstract AS Abstract,

		ISNULL(nowc.HitCount,0)+1 AS HitCount,
		dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
		(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,

		N'Knowledge' AS KnowledgeDirectory

	FROM dbo.Knowledge now
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID

	WHERE pad.[Name]=@PageDirectoryName AND YEAR(now.UpdateTime)=@TimeTagYear AND MONTH(now.UpdateTime)=@TimeTagMonth 

	ORDER BY UpdateTime DESC

END

ELSE

BEGIN 

	--====================================================================================
	--==ǰûǡ Admin Editor 
	--====================================================================================
	INSERT INTO @Paging

	SELECT

		now.[ID] AS [ID],
		now.PageDirectoryID AS PageDirectoryID,
		now.Serial AS Serial,
		ISNULL(nowc.Hidden,N'false') AS Hidden,
		now.UpdateTime AS UpdateTime,
		now.Author AS Author,

		now.Editor AS Editor,
		dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),now.Editor)) AS EditorPermission,

		nowc.[ID] AS KnowledgeContentID,

		nowc.Template AS Template,
		nowc.Title AS Title,
		nowc.TitleShow AS TitleShow,
		nowc.Content AS Content,
		nowc.Tag AS Tag,
		nowc.Abstract AS Abstract,

		ISNULL(nowc.HitCount,0)+1 AS HitCount,
		dbo.UDF_KnowledgeCommentsPermission(now.[ID],@User) AS CommentsPermission,
		(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount,

		N'Knowledge' AS KnowledgeDirectory

	FROM dbo.Knowledge now
	LEFT JOIN dbo.View_KnowledgePermission nowp ON nowp.KnowledgeID=now.[ID]
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID

	WHERE pad.[Name]=@PageDirectoryName AND YEAR(now.UpdateTime)=@TimeTagYear AND MONTH(now.UpdateTime)=@TimeTagMonth AND (REPLACE(nowp.DedicatedTo,N',',N'')=N''  or dbo.UDF_UserDedicatedTo(@User,nowp.DedicatedTo)=1)   AND  nowc.Hidden<>N'true'

	ORDER BY UpdateTime DESC
END


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @Paging лȡǰҳһһ¼λ
--=====================================================
DECLARE @FirstRecord int
DECLARE @LastRecord int
		
SET @FirstRecord=(@CurrentPage - 1) * @PageSize
SET @LastRecord=(@CurrentPage * @PageSize + 1)

--=====================================================
--==صǰҳеļ¼
--==ܼ¼ÿҳļ¼Ceiling()õΪҳ ע⣺count(*)   @PageSize Ϊ INTõ INTԣҪת Decimal(18,2)
--=====================================================
SELECT 	
	*,
	PageCount=CEILING(Convert(decimal(18,2),(select count(*) from @Paging)) / Convert(decimal(18,2),@PageSize)) 

FROM @Paging 
WHERE PagingID>@FirstRecord AND PagingID<@LastRecord

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ǰҳ׼ص֪ʶ Content   HitCount д KnowledgeContent 
--=====================================================
UPDATE dbo.KnowledgeContent SET HitCount=ISNULL(HitCount,0)+1 WHERE KnowledgeID IN (Select [ID] From @Paging Where PagingID>@FirstRecord AND PagingID<@LastRecord) AND Culture=@Culture

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ѡ @PageDirectoryName  PageDirectory ID  Knowledge  KnowledgeDirectory   òڴ ֪ʶ ӣ 
--==ͬʱصǰ PageDirectory ĳЩԣType, Presentation, ShowAuthor, ShowUpdateTime, ShowHitCount, ShowComments, ShowStaticUrl, ShowKnowledgeHtml, ShowRelativeԱϵͳ Render ֪ʶ
--=====================================================
SELECT
	pad.[ID] AS PageDirectoryID,
	pad.[Name] AS PageDirectoryName,
	N'Knowledge' AS KnowledgeDirectory,

	pdc.Title AS Title,
	pdc.PageHeader AS PageHeader,
	pdc.PageFooter AS PageFooter,

	sdc.PageHeader AS SubDirectoryPageHeader,
	sdc.PageFooter AS  SubDirectoryPageFooter,

	mdc.PageHeader AS MainDirectoryPageHeader,
	mdc.PageFooter AS  MainDirectoryPageFooter,

	pad.Type AS Type,
	pad.Presentation AS Presentation,
	pad.ShowAuthor AS ShowAuthor,
	pad.ShowUpdateTime AS ShowUpdateTime,
	pad.ShowHitCount AS ShowHitCount,
	pad.ShowComments AS ShowComments,
	pad.ShowStaticUrl AS ShowStaticUrl,
	pad.ShowKnowledgeHtml AS ShowKnowledgeHtml,
	pad.ShowRelative AS ShowRelative

FROM dbo.PageDirectory pad 
LEFT JOIN dbo.PageDirectoryContent pdc ON pdc.PageDirectoryID=pad.[ID] AND pdc.Culture=@Culture

LEFT JOIN dbo.SubDirectory sd ON sd.[ID]=pad.SubDirectoryID
LEFT JOIN dbo.SubDirectoryContent sdc ON sdc.SubDirectoryID=sd.[ID]

LEFT JOIN dbo.MainDirectory md ON md.[ID]=sd.MainDirectoryID
LEFT JOIN dbo.MainDirectoryContent mdc ON mdc.MainDirectoryID=md.[ID]

WHERE pad.[Name]=@PageDirectoryName

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeGetByTimeTag]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeCommentsGet    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeCommentsGet]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeCommentsGet]
GO

--====================================================================================
--== KnowledgeContentID ضӦ KnowledgeComments
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeCommentsGet

@KnowledgeID int,						--ǰ֪ʶ
@Culture nvarchar(100)						--ǰĻ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ @PageDirectoryName  Knowledge  òʾ֪ʶҲڶ֪ʶɾ޸ӵĴ
--==ǰûȷ Admin Ҳ Client
--====================================================================================
SELECT 

	nowco.[ID] AS [ID],
	nowco.KnowledgeContentID AS KnowledgeContentID,
	nowco.CommentsTime AS CommentsTime,
	nowco.CommentsUser AS CommentsUser,
	nowco.CommentsContent AS CommentsContent

FROM dbo.KnowledgeComments nowco

WHERE nowco.KnowledgeContentID IN (Select [ID] From dbo.KnowledgeContent Where KnowledgeID=@KnowledgeID AND Culture=@Culture)
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeCommentsGet]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeCommentsSave    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeCommentsSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeCommentsSave]
GO

--====================================================================================
--== KnowledgeComments  
--==˷֮⣬û룬ֳ
--==ǰ Knowledge ֳۣѹṩ۽
--==ǰ Knowledge ֳۣṩ۽û
--==ǰ Knowledge ֻû* пͻuser1,user2,user3 ʾбûۣȿǰǷѾ½ˣѵ½ֻṩ۽棬Ҫû룻ûе½Ҫṩû
--==Ѿ½ΣϵͳԶҵǰûû봫ݹûе½ʹ÷û
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeCommentsSave

@KnowledgeID int,						-- Knowledge   ID ǽԼ Culture  KnowledgeContentID
@Culture NVARCHAR(100),					--֪ʶ Culture

@User NVARCHAR(50),						--û
@Password NVARCHAR(200),					--û Password
@CommentsContent ntext					--

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @KnowledgeID Լ @Culture  KnowledgeContentID
--=====================================================
DECLARE @KnowledgeContentID INT

SELECT @KnowledgeContentID=[ID] FROM dbo.KnowledgeContent WHERE KnowledgeID=@KnowledgeID AND Culture=@Culture

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.KnowledgeCommentsAuthenticationSave @KnowledgeContentID, @User,@Password,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ִб
--=====================================================
INSERT dbo.KnowledgeComments (KnowledgeContentID,CommentsTime,CommentsUser,CommentsContent) VALUES (@KnowledgeContentID,GETDATE(),@User,@CommentsContent)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeCommentsSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeCommentsAuthenticationSave    Script Date: 2009-7-10 19:03:37 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeCommentsAuthenticationSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeCommentsAuthenticationSave]
GO

--====================================================================================
--==鵱ǰûԸ Knowledge Ȩ  UDF_KnowledgeCommentsPermission
--== @KnowledgeContentID  KnowledgeIDָ֪ Knowledge Ƿۣ 4 
--== UDF_KnowledgeCommentsPermission  0ûʲô˵ģ 
--== UDF_KnowledgeCommentsPermission  1κ˶ۣҪʲô֤ûֻΪ CommentsUser 
--== UDF_KnowledgeCommentsPermission  2˵ǰ Knowledge ֻûۣ*  User1,User2,User3 ȫͻбͻ adminҵǰûѾ½ﴫݹûǴӵ½ûϢлõģȻҪ֤һ£϶ͨ
--== UDF_KnowledgeCommentsPermission  3˵ǰ Knowledge ֻûۣ*  User1,User2,User3 ȫͻбͻ adminҵǰûδ½ﴫݹûûʱģҪ֤ûʱˣͨ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeCommentsAuthenticationSave

@KnowledgeContentID INT,		--ָ KnowledgeContent  ID
@User NVARCHAR(50),			--û
@Password NVARCHAR(200),		--û Password

@oPass INT OUT			--ͨ 1 0

AS


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--==========================================
--== @KnowledgeContentID  KnowledgeID
--==========================================
DECLARE @KnowledgeID INT
SELECT @KnowledgeID=KnowledgeID FROM dbo.KnowledgeContent WHERE [ID]=@KnowledgeContentID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--==========================================
--==ȼ ͨ   
--==========================================
SET @oPass=1

--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
--xx UDF_KnowledgeCommentsPermission 鵱ǰûԵǰ֪ʶǷȨ
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
IF dbo.UDF_KnowledgeCommentsPermission(@KnowledgeID,@User)=0

	BEGIN
		SET @oPass=0
		RAISERROR(N'Comments not allowed for this article.',16,1)
		RETURN
	END

ELSE IF (dbo.UDF_KnowledgeCommentsPermission(@KnowledgeID,@User)=2) OR (dbo.UDF_KnowledgeCommentsPermission(@KnowledgeID,@User)=3)

	BEGIN
		IF NOT EXISTS (Select [ID] From dbo.Users Where [Name]=@User And [Password]=@Password)
		BEGIN
			SET @oPass=0
			RAISERROR(N'User name or password invalid. ',16,1)
			RETURN
		END
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeCommentsAuthenticationSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeCommentsDelete    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeCommentsDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeCommentsDelete]
GO

--====================================================================================
--==ɾ KnowledgeComments  
--==ҪȨ޼飨ֻҪжǰ½ӵ Admin ɣ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeCommentsDelete

@User nvarchar(50),						-- ASPX ˴ݹĵǰû
@KnowledgeCommentsID int					--ɾ Comments  ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @KnowledgeCommentsID  KnowledgeID Աʹ SP AdminEditorUserAuthentication жϵǰûǷȨɾ
--=====================================================
DECLARE @KnowledgeID INT

SELECT @KnowledgeID=now.[ID]  

FROM dbo.Knowledge now 
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID]
LEFT JOIN dbo.KnowledgeComments nowcom ON nowcom.KnowledgeContentID=nowc.[ID]

WHERE nowcom.[ID]=@KnowledgeCommentsID

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'Knowledge',@KnowledgeID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ִɾ
--=====================================================
DELETE FROM dbo.KnowledgeComments WHERE [ID]=@KnowledgeCommentsID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeCommentsDelete]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeReferenceP    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeReferenceP]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeReferenceP]
GO

--====================================================================================
--==ʹ PageDirectory ID ֪ʶ SP KnowledgeReferenceK   Knowledge ID ã
--==ע⣺ʹ UNION ALL  Ϊѡȡ ntext ͣʹ UNION ALL ϵͳᱨ ntext Ͳ SELECT DISTINCT 
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeReferenceP

@User nvarchar(50),						-- ASPX ˴ݹĵǰû

@PageDirectoryID int,						--Page Diretory  ID
@Culture nvarchar(100),						--ǰĻ
@TopN INT							-- N ¼

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==̬ SQL  ʹö̬䣬Ϊʵ TopN ܣΪ SQL 2000 ֱ֧ʽ TopN  SQL 2005 ԺͿˣ
--====================================================================================
DECLARE @DynSQL NVARCHAR(4000)
SET @DynSQL=N''

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==õǰ PageDirectory   Type ֵ 1ǺĽʹ Order By Serial ͨݣ Serial 򣩣  2  Order By UpdateTime ʱԷʱ
--====================================================================================
DECLARE @OrderBy NVARCHAR(200)
DECLARE @Type INT
SELECT @Type=Type FROM dbo.PageDirectory WHERE [ID]=@PageDirectoryID

IF @Type=1

	BEGIN
		SET @OrderBy=N'ORDER BY Serial'
	END
ELSE
	BEGIN
		SET @OrderBy=N'ORDER BY UpdateTime DESC'
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ûǷ Admin Editor  ͬ
--====================================================================================
SET @DynSQL=@DynSQL + N'

IF dbo.UDF_UserAdminEditor(N'''  + @User  + N''')=1

BEGIN

	SELECT TOP  ' + CONVERT(NVARCHAR(20),@TopN)  + N' 

		now.[ID] AS [ID],
		now.PageDirectoryID AS PageDirectoryID,
		pad.[Name] AS PageDirectoryName,
		now.Serial AS Serial,
		ISNULL(nowc.Hidden,N''false'') AS Hidden,
		now.UpdateTime AS UpdateTime,
		now.Author AS Author,
		now.Editor AS Editor,
		dbo.UDF_EditorDedicatedTo(''' + @User + N''',convert(nvarchar(4000),now.Editor)) AS EditorPermission,

		nowc.Template AS Template,
		nowc.Title AS Title,
		nowc.TitleShow AS TitleShow,
		nowc.Content AS Content,
		nowc.Tag AS Tag,
		nowc.Abstract AS Abstract,

		ISNULL(nowc.HitCount,0) AS HitCount,
		(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount

	FROM dbo.Knowledge now
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=N''' + @Culture + N'''
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID

	WHERE pad.[ID]=' + CONVERT(NVARCHAR(20),@PageDirectoryID) + N'  

	' + @OrderBy + N'

END

ELSE

BEGIN

	SELECT TOP  ' + CONVERT(NVARCHAR(20),@TopN)  + N' 

		now.[ID] AS [ID],
		now.PageDirectoryID AS PageDirectoryID,
		pad.[Name] AS PageDirectoryName,
		now.Serial AS Serial,
		ISNULL(nowc.Hidden,N''false'') AS Hidden,
		now.UpdateTime AS UpdateTime,
		now.Author AS Author,
		now.Editor AS Editor,
		dbo.UDF_EditorDedicatedTo(''' + @User + N''',convert(nvarchar(4000),now.Editor)) AS EditorPermission,

		nowc.Template AS Template,
		nowc.Title AS Title,
		nowc.TitleShow AS TitleShow,
		nowc.Content AS Content,
		nowc.Tag AS Tag,
		nowc.Abstract AS Abstract,

		ISNULL(nowc.HitCount,0) AS HitCount,
		(Select Count([ID]) From dbo.KnowledgeComments Where KnowledgeContentID=nowc.[ID]) AS CommentsCount

	FROM dbo.Knowledge now
	LEFT JOIN dbo.View_KnowledgePermission nowp ON nowp.KnowledgeID=now.[ID]
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=N''' + @Culture + N'''
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID

	WHERE pad.[ID]=' + CONVERT(NVARCHAR(20),@PageDirectoryID) + N' AND (REPLACE(nowp.DedicatedTo,N'','',N'''')=N''''   or  dbo.UDF_UserDedicatedTo(N''' + @User  + N''',nowp.DedicatedTo)=1)  AND nowc.Hidden<>N''true''

	' + @OrderBy + N'
END

'
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ִж̬ SQL  
--====================================================================================
EXEC(@DynSQL)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeReferenceP]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeHide    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeHide]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeHide]
GO

--====================================================================================
--== Knowledge Ŀ  Ϊָ Culture µ  MainDirectoryContent, SubDirectoryContent, PageDirectoryContent, KnowledgeContent
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeHide

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@KnowledgeDirectory nvarchar(100),		--ص Knowledge  Ŀĵ Directory
@KnowledgeItem int,				--ص Knowledge  Ŀ ID
@Culture nvarchar(50)				--ָ Culture

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,@KnowledgeDirectory,@KnowledgeItem,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== KnowledgeDirectory ͬд
--=====================================================

IF LOWER(RTRIM(LTRIM(@KnowledgeDirectory)))=LOWER(N'MainDirectory')

	BEGIN
		UPDATE dbo.MainDirectoryContent SET Hidden=N'true'  WHERE [MainDirectoryID]=@KnowledgeItem  AND Culture=@Culture
	END

ELSE IF LOWER(RTRIM(LTRIM(@KnowledgeDirectory)))=LOWER(N'SubDirectory')

	BEGIN
		UPDATE dbo.SubDirectoryContent SET Hidden=N'true'  WHERE [SubDirectoryID]=@KnowledgeItem  AND Culture=@Culture
	END

ELSE IF LOWER(RTRIM(LTRIM(@KnowledgeDirectory)))=LOWER(N'PageDirectory')

	BEGIN
		UPDATE dbo.PageDirectoryContent SET Hidden=N'true'  WHERE [PageDirectoryID]=@KnowledgeItem  AND Culture=@Culture
	END

ELSE IF LOWER(RTRIM(LTRIM(@KnowledgeDirectory)))=LOWER(N'Knowledge')

	BEGIN
		UPDATE dbo.KnowledgeContent SET Hidden=N'true'  WHERE [KnowledgeID]=@KnowledgeItem AND Culture=@Culture
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeHide]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeShow    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeShow]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeShow]
GO

--====================================================================================
--== Knowledge Ŀʾȡأ ָ  Culture µ  MainDirectoryContent, SubDirectoryContent, PageDirectoryContent, KnowledgeContent
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeShow

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@KnowledgeDirectory nvarchar(100),		--ص Knowledge  Ŀĵ Directory
@KnowledgeItem int,				--ص Knowledge  Ŀ ID
@Culture nvarchar(50)				-- Culture

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,@KnowledgeDirectory,@KnowledgeItem,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== KnowledgeDirectory ͬд
--=====================================================

IF LOWER(RTRIM(LTRIM(@KnowledgeDirectory)))=LOWER(N'MainDirectory')

	BEGIN
		UPDATE dbo.MainDirectoryContent SET Hidden=N'false'  WHERE [MainDirectoryID]=@KnowledgeItem AND Culture=@Culture
	END

ELSE IF LOWER(RTRIM(LTRIM(@KnowledgeDirectory)))=LOWER(N'SubDirectory')

	BEGIN
		UPDATE dbo.SubDirectoryContent SET Hidden=N'false'  WHERE [SubDirectoryID]=@KnowledgeItem AND Culture=@Culture
	END

ELSE IF LOWER(RTRIM(LTRIM(@KnowledgeDirectory)))=LOWER(N'PageDirectory')

	BEGIN
		UPDATE dbo.PageDirectoryContent SET Hidden=N'false'  WHERE [PageDirectoryID]=@KnowledgeItem AND Culture=@Culture
	END

ELSE IF LOWER(RTRIM(LTRIM(@KnowledgeDirectory)))=LOWER(N'Knowledge')

	BEGIN
		UPDATE dbo.KnowledgeContent SET Hidden=N'false'  WHERE [KnowledgeID]=@KnowledgeItem AND Culture=@Culture
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeShow]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.CommunityShow    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CommunityShow]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[CommunityShow]
GO

--====================================================================================
--== Community Ŀʾȡأ  ָǸ Culture µ CommunityContent  ForumContent
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.CommunityShow

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@CommunityDirectory nvarchar(100),		--ص Community  Ŀĵ Directory
@CommunityItem int,				--ص Community  Ŀ ID
@Culture nvarchar(100)				--ָ Culture

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== CommunityDirectory ͬд
--=====================================================

IF LOWER(RTRIM(LTRIM(@CommunityDirectory)))=LOWER(N'Community')

	BEGIN
		UPDATE dbo.CommunityContent SET Hidden=N'false'  WHERE [CommunityID]=@CommunityItem AND Culture=@Culture
	END

ELSE IF LOWER(RTRIM(LTRIM(@CommunityDirectory)))=LOWER(N'Forum')

	BEGIN
		UPDATE dbo.ForumContent SET Hidden=N'false'  WHERE [ForumID]=@CommunityItem AND Culture=@Culture
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[CommunityShow]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.CommunityHide    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CommunityHide]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[CommunityHide]
GO

--====================================================================================
--== Community Ŀ ָ Culture µ CommunityContent, ForumContent
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.CommunityHide

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@CommunityDirectory nvarchar(100),		--ص Community  Ŀĵ Directory
@CommunityItem int,				--ص Community  Ŀ ID
@Culture nvarchar(100)				-- Culture

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== CommunityDirectory ͬд
--=====================================================

IF LOWER(RTRIM(LTRIM(@CommunityDirectory)))=LOWER(N'Community')

	BEGIN
		UPDATE dbo.CommunityContent SET Hidden=N'true'  WHERE [CommunityID]=@CommunityItem AND Culture=@Culture
	END

ELSE IF LOWER(RTRIM(LTRIM(@CommunityDirectory)))=LOWER(N'Forum')

	BEGIN
		UPDATE dbo.ForumContent SET Hidden=N'true'  WHERE [ForumID]=@CommunityItem AND Culture=@Culture
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[CommunityHide]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeHome    Script Date: 2009-7-10 19:03:37 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeHome]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeHome]
GO

--====================================================================================
--== Knowledge  ϶ PageDirectory Ϊҳ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeHome

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@KnowledgeDirectory nvarchar(100),		--Ϊҳ Knowledge  Ŀĵ Directory ϶Ϊ PageDirectory
@KnowledgeItem int				--Ϊҳ Knowledge  Ŀ ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼ Ҫ Admin  ChiefEditor Ȩޣ
--=====================================================
DECLARE @oPass INT
--EXEC dbo.AdminEditorUserAuthentication @User,@KnowledgeDirectory,@KnowledgeItem,@oPass OUT
EXEC dbo.AdminEditorUserAuthentication @User,N'',0,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== KnowledgeDirectory ͬд
--=====================================================

IF LOWER(RTRIM(LTRIM(@KnowledgeDirectory)))=LOWER(N'PageDirectory')

	BEGIN
		--=====================================================
		--==Ϊϵͳͬʱֻһҳ Home PageȽѾ Home Page Ŀ Home ־
		--=====================================================
		UPDATE dbo.PageDirectory SET Home=N'false' WHERE Home=N'true'

		--=====================================================
		--==
		--=====================================================
		UPDATE dbo.PageDirectory SET Home=N'true'  WHERE [ID]=@KnowledgeItem
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeHome]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeGetTitle    Script Date: 2009-7-10 19:03:37 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeGetTitle]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeGetTitle]
GO

--====================================================================================
--==ݸ  Knowledge ID   KnowledgeContent ָĻµ Title
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeGetTitle

@KnowledgeID INT,				--Knowledge ¼ ID
@Culture nvarchar(100),				--ǰĻ

@Title nvarchar(2000) OUT

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ
--====================================================================================
SELECT @Title=nowc.Title

FROM dbo.KnowledgeContent nowc

WHERE nowc.KnowledgeID=@KnowledgeID AND nowc.Culture=@Culture

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeGetTitle]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeTemplateGet    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeTemplateGet]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeTemplateGet]
GO

--====================================================================================
--==SP KnowledgeGet  Template רð ֻ Template ֣
--== SP Ŀʽ Render Knowledge ǰܿ٣Light Weight ط Template ֣Ա Page Header ע Template ܰ css ļ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeTemplateGet

@User nvarchar(50),						-- ASPX ˴ݹĵǰû

@PageDirectoryName nvarchar(100),				--Page Diretory  Name
@Culture nvarchar(100),						--ǰĻ

@CurrentPage INT						--ҳƣǰҳ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==õǰ PageDirectory   Type ֵ 1ǺĽʹ Order By Serial ͨݣ Serial 򣩣  2  Order By UpdateTime ʱԷʱ
--====================================================================================
DECLARE @Type INT
SELECT @Type=Type FROM dbo.PageDirectory WHERE [Name]=@PageDirectoryName

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== @PageDirectoryName  ڵ PageDirectory ¼е PageSize ֵ
--====================================================================================
DECLARE @PageSize INT
SELECT TOP 1 @PageSize=PageSize FROM dbo.PageDirectory WHERE [Name]=@PageDirectoryName

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ҳ
--====================================================================================
DECLARE @Paging TABLE 
( 
	PagingID int identity(1,1), 
	[ID] int, 
	Serial int,
	UpdateTime datetime,  
	Template nvarchar(200) COLLATE database_default
) 

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== Type=1/2 ʹ ORDER BY Serial  UpdateTime δ Order By ֮⣬طȫһ£
--====================================================================================
IF @Type=1

BEGIN

	--====================================================================================
	--==ʼ
	--====================================================================================
	INSERT INTO @Paging

	/*
	--====================================================================================
	--==ǰûȷ Admin Ҳ Client
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
	WHERE pad.[Name]=@PageDirectoryName AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL)  AND dbo.UDF_UserClient(@User)<>1 AND dbo.UDF_UserAdmin(@User)<>1 AND  nowc.Hidden<>N'true'

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	UNION
	*/

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ǰû Admin Editor
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
	WHERE pad.[Name]=@PageDirectoryName AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND  dbo.UDF_UserAdminEditor(@User)<>1 AND  nowc.Hidden<>N'true'
	--WHERE pad.[Name]=@PageDirectoryName AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserClient(@User)=1 AND dbo.UDF_UserAdmin(@User)<>1 AND  nowc.Hidden<>N'true'

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	UNION

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ǰû Admin Editor
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
	WHERE pad.[Name]=@PageDirectoryName AND dbo.UDF_UserAdminEditor(@User)=1     

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ʹ UNION ʱֻһ UNION ſʹ ORDER BY
	--====================================================================================
	ORDER BY Serial

END

ELSE

BEGIN

	--====================================================================================
	--==ʼ
	--====================================================================================
	INSERT INTO @Paging

	/*
	--====================================================================================
	--==ǰûȷ Admin Ҳ Client
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
	WHERE pad.[Name]=@PageDirectoryName AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL)  AND dbo.UDF_UserClient(@User)<>1 AND dbo.UDF_UserAdmin(@User)<>1 AND  nowc.Hidden<>N'true'

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	UNION
	*/

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ǰû Admin Editor
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
	WHERE pad.[Name]=@PageDirectoryName AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserAdminEditor(@User)<>1 AND  nowc.Hidden<>N'true'
	--WHERE pad.[Name]=@PageDirectoryName AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserClient(@User)=1 AND dbo.UDF_UserAdmin(@User)<>1 AND  nowc.Hidden<>N'true'

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	UNION

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ǰû Admin Editor
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
	WHERE pad.[Name]=@PageDirectoryName AND dbo.UDF_UserAdminEditor(@User)=1     

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ʹ UNION ʱֻһ UNION ſʹ ORDER BY
	--====================================================================================
	ORDER BY UpdateTime DESC

END

--=====================================================
--== @Paging лȡǰҳһһ¼λ
--=====================================================
DECLARE @FirstRecord int
DECLARE @LastRecord int
		
SET @FirstRecord=(@CurrentPage - 1) * @PageSize
SET @LastRecord=(@CurrentPage * @PageSize + 1)

--=====================================================
--==صǰҳеļ¼
--==ܼ¼ÿҳļ¼Ceiling()õΪҳ ע⣺count(*)   @PageSize Ϊ INTõ INTԣҪת Decimal(18,2)
--=====================================================
SELECT 	
	*,
	PageCount=CEILING(Convert(decimal(18,2),(select count(*) from @Paging)) / Convert(decimal(18,2),@PageSize)) 

FROM @Paging 
WHERE PagingID>@FirstRecord AND PagingID<@LastRecord

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeTemplateGet]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeTemplateGetByTag    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeTemplateGetByTag]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeTemplateGetByTag]
GO

--====================================================================================
--==SP KnowledgeGetByTag  KnowledgeTemplate 
--==Ŀǣ Render ֪ʶ֮ǰܿ Light Weight ط֪ʶʹõ TemplateԱ Page Header עпܰ Template css
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeTemplateGetByTag

@User nvarchar(50),						-- ASPX ˴ݹĵǰû

@PageDirectoryName nvarchar(100),				--Page Diretory  Name
@Tag nvarchar(500),						--ʹõ Tag йˣ
@Culture nvarchar(100),						--ǰĻ

@CurrentPage INT						--ҳƣǰҳ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==õǰ PageDirectory   Type ֵ 1ǺĽʹ Order By Serial ͨݣ Serial 򣩣  2  Order By UpdateTime ʱԷʱ
--====================================================================================
DECLARE @Type INT
SELECT @Type=Type FROM dbo.PageDirectory WHERE [Name]=@PageDirectoryName

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== @PageDirectoryName  ڵ PageDirectory ¼е PageSize ֵ
--====================================================================================
DECLARE @PageSize INT
SELECT TOP 1 @PageSize=PageSize FROM dbo.PageDirectory WHERE [Name]=@PageDirectoryName

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ҳ
--====================================================================================
DECLARE @Paging TABLE 
( 
	PagingID int identity(1,1), 
	[ID] int, 
	Serial int,
	UpdateTime datetime,
	Template nvarchar(200) COLLATE database_default
) 


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== Type=1/2 ʹ ORDER BY Serial  UpdateTime δ Order By ֮⣬طȫһ£
--====================================================================================
IF @Type=1

BEGIN

	--====================================================================================
	--==ʼ
	--====================================================================================
	INSERT INTO @Paging

	/*
	--====================================================================================
	--==ǰû Admin Ҳ Client
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
	WHERE pad.[Name]=@PageDirectoryName AND  (@Tag In (select Tag from dbo.KnowledgeTags where KnowledgeContentID=nowc.[ID])) AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL)  AND dbo.UDF_UserClient(@User)<>1 AND dbo.UDF_UserAdmin(@User)<>1 AND  nowc.Hidden<>N'true'

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	UNION
	*/

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ǰû Admin Editor
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
	WHERE pad.[Name]=@PageDirectoryName AND  (@Tag In (select Tag from dbo.KnowledgeTags where KnowledgeContentID=nowc.[ID])) AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserAdminEditor(@User)<>1 AND  nowc.Hidden<>N'true'
	--WHERE pad.[Name]=@PageDirectoryName AND  (@Tag In (select Tag from dbo.KnowledgeTags where KnowledgeContentID=nowc.[ID])) AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserClient(@User)=1 AND dbo.UDF_UserAdmin(@User)<>1 AND  nowc.Hidden<>N'true'

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	UNION 

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ǰû Admin Editor
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
	WHERE pad.[Name]=@PageDirectoryName AND  (@Tag In (select Tag from dbo.KnowledgeTags where KnowledgeContentID=nowc.[ID])) AND dbo.UDF_UserAdminEditor(@User)=1     

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ʹ UNION ʱֻһ UNION ſʹ ORDER BY
	--====================================================================================
	ORDER BY Serial

END

ELSE

BEGIN

	--====================================================================================
	--==ʼ
	--====================================================================================
	INSERT INTO @Paging

	/*
	--====================================================================================
	--==ǰû Admin Ҳ Client
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
	WHERE pad.[Name]=@PageDirectoryName AND  (@Tag In (select Tag from dbo.KnowledgeTags where KnowledgeContentID=nowc.[ID])) AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL)  AND dbo.UDF_UserClient(@User)<>1 AND dbo.UDF_UserAdmin(@User)<>1 AND  nowc.Hidden<>N'true'

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	UNION
	*/

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ǰû Admin Editor
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
	WHERE pad.[Name]=@PageDirectoryName AND  (@Tag In (select Tag from dbo.KnowledgeTags where KnowledgeContentID=nowc.[ID])) AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserAdminEditor(@User)<>1 AND  nowc.Hidden<>N'true'
	--WHERE pad.[Name]=@PageDirectoryName AND  (@Tag In (select Tag from dbo.KnowledgeTags where KnowledgeContentID=nowc.[ID])) AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserClient(@User)=1 AND dbo.UDF_UserAdmin(@User)<>1 AND  nowc.Hidden<>N'true'

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	UNION 

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ǰû Admin Editor
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
	WHERE pad.[Name]=@PageDirectoryName AND  (@Tag In (select Tag from dbo.KnowledgeTags where KnowledgeContentID=nowc.[ID])) AND dbo.UDF_UserAdminEditor(@User)=1     

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ʹ UNION ʱֻһ UNION ſʹ ORDER BY
	--====================================================================================
	ORDER BY UpdateTime DESC

END

--=====================================================
--== @Paging лȡǰҳһһ¼λ
--=====================================================
DECLARE @FirstRecord int
DECLARE @LastRecord int
		
SET @FirstRecord=(@CurrentPage - 1) * @PageSize
SET @LastRecord=(@CurrentPage * @PageSize + 1)

--=====================================================
--==صǰҳеļ¼
--==ܼ¼ÿҳļ¼Ceiling()õΪҳ ע⣺count(*)   @PageSize Ϊ INTõ INTԣҪת Decimal(18,2)
--=====================================================
SELECT 	
	*,
	PageCount=CEILING(Convert(decimal(18,2),(select count(*) from @Paging)) / Convert(decimal(18,2),@PageSize)) 

FROM @Paging 
WHERE PagingID>@FirstRecord AND PagingID<@LastRecord

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeTemplateGetByTag]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeTemplateGetByTimeTag    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeTemplateGetByTimeTag]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeTemplateGetByTimeTag]
GO

--====================================================================================
--==SP KnowledgeGetByTimeTag  Knowledge Template 
--==Ŀģ  Render Knowledge ֮ǰٶ Light Weight طؽ Render ֪ʶʹõ Template ֣Ա㽫 Template пе css עᵽ Page Header
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeTemplateGetByTimeTag

@User nvarchar(50),						-- ASPX ˴ݹĵǰû

@PageDirectoryName nvarchar(100),				--Page Diretory  Name
@TimeTagYear int,						--ʹõ TimeTag йˣ
@TimeTagMonth int,						--ʹõ TimeTag йˣ
@Culture nvarchar(100),						--ǰĻ

@CurrentPage INT						--ҳƣǰҳ

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== @PageDirectoryName  ڵ PageDirectory ¼е PageSize ֵ
--====================================================================================
DECLARE @PageSize INT
SELECT TOP 1 @PageSize=PageSize FROM dbo.PageDirectory WHERE [Name]=@PageDirectoryName

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ҳ
--====================================================================================
DECLARE @Paging TABLE 
( 
	PagingID int identity(1,1), 
	[ID] int, 
	Serial int,
	UpdateTime datetime,
	Template nvarchar(200) COLLATE database_default
) 

INSERT INTO @Paging

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

/*
--====================================================================================
--==ѡ @PageDirectoryName  Knowledge  òʾ֪ʶҲڶ֪ʶɾ޸ӵĴ
--==ǰû Admin Ҳ Client
--====================================================================================
SELECT TOP 100 PERCENT

	now.[ID] AS [ID],
	now.Serial AS Serial,
	now.UpdateTime AS UpdateTime,  
	nowc.Template AS Template

FROM dbo.Knowledge now
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID 


WHERE pad.[Name]=@PageDirectoryName AND YEAR(now.UpdateTime)=@TimeTagYear AND MONTH(now.UpdateTime)=@TimeTagMonth AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL)  AND dbo.UDF_UserClient(@User)<>1 AND dbo.UDF_UserAdmin(@User)<>1 AND  nowc.Hidden<>N'true'

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

UNION
*/

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ǰû Admin Editor
--====================================================================================
SELECT TOP 100 PERCENT

	now.[ID] AS [ID],
	now.Serial AS Serial,
	now.UpdateTime AS UpdateTime,  
	nowc.Template AS Template

FROM dbo.Knowledge now
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID


WHERE pad.[Name]=@PageDirectoryName AND YEAR(now.UpdateTime)=@TimeTagYear AND MONTH(now.UpdateTime)=@TimeTagMonth AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserAdminEditor(@User)<>1 AND  nowc.Hidden<>N'true'
--WHERE pad.[Name]=@PageDirectoryName AND YEAR(now.UpdateTime)=@TimeTagYear AND MONTH(now.UpdateTime)=@TimeTagMonth AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserClient(@User)=1 AND dbo.UDF_UserAdmin(@User)<>1 AND  nowc.Hidden<>N'true'

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

UNION

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ǰû Admin Editor
--====================================================================================
SELECT TOP 100 PERCENT

	now.[ID] AS [ID],
	now.Serial AS Serial,
	now.UpdateTime AS UpdateTime,  
	nowc.Template AS Template

FROM dbo.Knowledge now
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID


WHERE pad.[Name]=@PageDirectoryName AND YEAR(now.UpdateTime)=@TimeTagYear AND MONTH(now.UpdateTime)=@TimeTagMonth AND dbo.UDF_UserAdminEditor(@User)=1     

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ʹ UNION ʱֻһ UNION ſʹ ORDER BY
--====================================================================================
ORDER BY UpdateTime DESC

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @Paging лȡǰҳһһ¼λ
--=====================================================
DECLARE @FirstRecord int
DECLARE @LastRecord int
		
SET @FirstRecord=(@CurrentPage - 1) * @PageSize
SET @LastRecord=(@CurrentPage * @PageSize + 1)

--=====================================================
--==صǰҳеļ¼
--==ܼ¼ÿҳļ¼Ceiling()õΪҳ ע⣺count(*)   @PageSize Ϊ INTõ INTԣҪת Decimal(18,2)
--=====================================================
SELECT 	
	*,
	PageCount=CEILING(Convert(decimal(18,2),(select count(*) from @Paging)) / Convert(decimal(18,2),@PageSize)) 

FROM @Paging 
WHERE PagingID>@FirstRecord AND PagingID<@LastRecord

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeTemplateGetByTimeTag]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeTemplateGetHomePage    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeTemplateGetHomePage]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeTemplateGetHomePage]
GO

--====================================================================================
--==SP KnowledgeGetHomePage  Template 
--==Ŀģ Render ֪ʶ֮ǰܿٶ Light Weight طؼ Render ֪ʶʹõ Template ֣Ա  Page Header ע Template пʹõ css
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeTemplateGetHomePage

@User nvarchar(50),						-- ASPX ˴ݹĵǰû

@Culture nvarchar(100),						--ǰĻ

@CurrentPage INT						--ҳƣǰҳ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==õǰ PageDirectory   Type ֵ 1ǺĽʹ Order By Serial ͨݣ Serial 򣩣  2  Order By UpdateTime ʱԷʱ
--====================================================================================
DECLARE @Type INT
SELECT TOP 1 @Type=Type FROM dbo.PageDirectory WHERE Home=N'true'

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== HomePage ڵ PageDirectory ¼е PageSize ֵ
--====================================================================================
DECLARE @PageSize INT
SELECT TOP 1 @PageSize=PageSize FROM dbo.PageDirectory WHERE Home=N'true'

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ҳ
--====================================================================================
DECLARE @Paging TABLE 
( 
	PagingID int identity(1,1), 
	[ID] int, 
	Serial int,
	UpdateTime datetime,
	Template nvarchar(200) COLLATE database_default
) 



--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== Type=1/2 ʹ ORDER BY Serial  UpdateTime δ Order By ֮⣬طȫһ£
--====================================================================================
IF @Type=1

BEGIN

	--====================================================================================
	--==ʼ
	--====================================================================================
	INSERT INTO @Paging

	/*
	--====================================================================================
	--==ǰû Admin Ҳ Client
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now 
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	WHERE now.PageDirectoryID=(Select Top 1 [ID] From dbo.PageDirectory Where Home=N'true') AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL)  AND dbo.UDF_UserClient(@User)<>1 AND dbo.UDF_UserAdmin(@User)<>1  AND  nowc.Hidden<>N'true'

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	UNION  
	*/

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ǰû Admin Editor
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now 
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	WHERE now.PageDirectoryID=(Select Top 1 [ID] From dbo.PageDirectory Where Home=N'true') AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserAdminEditor(@User)<>1  AND  nowc.Hidden<>N'true'
	--WHERE now.PageDirectoryID=(Select Top 1 [ID] From dbo.PageDirectory Where Home=N'true') AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserClient(@User)=1 AND dbo.UDF_UserAdmin(@User)<>1  AND  nowc.Hidden<>N'true'

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	UNION  

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ǰû Admin Editor
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now 
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	WHERE now.PageDirectoryID=(Select Top 1 [ID] From dbo.PageDirectory Where Home=N'true') AND dbo.UDF_UserAdminEditor(@User)=1       

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ʹ UNION ʱֻһ UNION ſʹ ORDER BY
	--====================================================================================
	ORDER BY Serial

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
END

ELSE

BEGIN

	--====================================================================================
	--==ʼ
	--====================================================================================
	INSERT INTO @Paging

	/*
	--====================================================================================
	--==ǰû Admin Ҳ Client
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now 
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	WHERE now.PageDirectoryID=(Select Top 1 [ID] From dbo.PageDirectory Where Home=N'true') AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL)  AND dbo.UDF_UserClient(@User)<>1 AND dbo.UDF_UserAdmin(@User)<>1  AND  nowc.Hidden<>N'true'

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	UNION  
	*/

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ǰû Admin Editor
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  
		nowc.Template AS Template

	FROM dbo.Knowledge now 
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	WHERE now.PageDirectoryID=(Select Top 1 [ID] From dbo.PageDirectory Where Home=N'true') AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserAdminEditor(@User)<>1  AND  nowc.Hidden<>N'true'
	--WHERE now.PageDirectoryID=(Select Top 1 [ID] From dbo.PageDirectory Where Home=N'true') AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserClient(@User)=1 AND dbo.UDF_UserAdmin(@User)<>1  AND  nowc.Hidden<>N'true'

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	UNION  

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ǰû Admin Editor
	--====================================================================================
	SELECT TOP 100 PERCENT

		now.[ID] AS [ID],
		now.Serial AS Serial,
		now.UpdateTime AS UpdateTime,  

		nowc.Template AS Template

	FROM dbo.Knowledge now 
	LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
	WHERE now.PageDirectoryID=(Select Top 1 [ID] From dbo.PageDirectory Where Home=N'true') AND dbo.UDF_UserAdminEditor(@User)=1       

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

	--====================================================================================
	--==ʹ UNION ʱֻһ UNION ſʹ ORDER BY
	--====================================================================================
	ORDER BY UpdateTime DESC

	--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

END

--=====================================================
--== @Paging лȡǰҳһһ¼λ
--=====================================================
DECLARE @FirstRecord int
DECLARE @LastRecord int
		
SET @FirstRecord=(@CurrentPage - 1) * @PageSize
SET @LastRecord=(@CurrentPage * @PageSize + 1)

--=====================================================
--==صǰҳеļ¼
--==ܼ¼ÿҳļ¼Ceiling()õΪҳ ע⣺count(*)   @PageSize Ϊ INTõ INTԣҪת Decimal(18,2)
--=====================================================
SELECT 	
	*,
	PageCount=CEILING(Convert(decimal(18,2),(select count(*) from @Paging)) / Convert(decimal(18,2),@PageSize)) 

FROM @Paging 
WHERE PagingID>@FirstRecord AND PagingID<@LastRecord


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeTemplateGetHomePage]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeTemplateGetSingle    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeTemplateGetSingle]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeTemplateGetSingle]
GO

--====================================================================================
--==SP KnowledgeGetSingle  Template 汾
--==Ŀģ  Render ֪ʶ֮ǰܿ Light Weight طؼ Render ֪ʶʹõ Template ֣Ա㽫  Template пõ css  Page Header ע
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeTemplateGetSingle

@User nvarchar(50),						-- ASPX ˴ݹĵǰû

@PageDirectoryName nvarchar(100),				--Page Diretory  Name
@KnowledgeID int,						--ǰ֪ʶ
@Culture nvarchar(100)						--ǰĻ

AS
  

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

/*
--====================================================================================
--==ѡ @PageDirectoryName  Knowledge  òʾ֪ʶҲڶ֪ʶɾ޸ӵĴ
--==ǰû Admin Ҳ Client
--====================================================================================
SELECT TOP 100 PERCENT

	1 AS PagingID,				--÷شΪ˺ KnowledgeGet һ£ûʵ
	now.[ID] AS [ID],
	now.Serial AS Serial,
	now.UpdateTime AS UpdateTime,  
	nowc.Template AS Template

FROM dbo.Knowledge now
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
WHERE now.[ID]=@KnowledgeID AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL)  AND dbo.UDF_UserClient(@User)<>1 AND dbo.UDF_UserAdmin(@User)<>1 AND  nowc.Hidden<>N'true'

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

UNION
*/

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ǰû Admin Editor
--====================================================================================
SELECT TOP 100 PERCENT

	1 AS PagingID,				--÷شΪ˺ KnowledgeGet һ£ûʵ
	now.[ID] AS [ID],
	now.Serial AS Serial,
	now.UpdateTime AS UpdateTime,  
	nowc.Template AS Template

FROM dbo.Knowledge now
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
WHERE now.[ID]=@KnowledgeID AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserAdminEditor(@User)<>1 AND  nowc.Hidden<>N'true'
--WHERE now.[ID]=@KnowledgeID AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserClient(@User)=1 AND dbo.UDF_UserAdmin(@User)<>1 AND  nowc.Hidden<>N'true'

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

UNION

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ǰû Admin Editor
--====================================================================================
SELECT TOP 100 PERCENT

	1 AS PagingID,				--÷شΪ˺ KnowledgeGet һ£ûʵ
	now.[ID] AS [ID],
	now.Serial AS Serial,
	now.UpdateTime AS UpdateTime,  
	nowc.Template AS Template

FROM dbo.Knowledge now
LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
LEFT JOIN dbo.PageDirectory pad ON pad.[ID]=now.PageDirectoryID
WHERE now.[ID]=@KnowledgeID AND dbo.UDF_UserAdminEditor(@User)=1     

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ʹ UNION ʱֻһ UNION ſʹ ORDER BY
--====================================================================================
ORDER BY Serial

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeTemplateGetSingle]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeOrder    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeOrder]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeOrder]
GO

--====================================================================================
--==ָ MainDirectory, SubDirectory, PageDirectory, Knowledge /
--==ԭ
--==1. Ƚ֪ʶĿϼ֪ʶĿµĿѡȫֵĿȻ Serial 
--==2. ǵ Serial ½ 1 ʼۼӣȥе©
--==
--==3. ҵָĿԼǰĿSerial С 1 Ŀ -  Ѿؽ Serial
--==4. ָĿ Serial -1  ǰĿ Serial +1 
--==
--==3. ҵָĿԼĺĿSerial  1 Ŀ -  Ѿؽ Serial
--==4. ָĿ Serial +1 Ŀ Serial -1 
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeOrder

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@KnowledgeDirectory nvarchar(100),		--/Ƶ Knowledge  Ŀĵ Directory
@KnowledgeItem int,				--/Ƶ Knowledge  Ŀ ID
@Action int					--ƻ   -1  +1

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,@KnowledgeDirectory,@KnowledgeItem,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ñ ID, Serial, NewSerial, GivenItemNewSerial, ParentID 
--=====================================================
DECLARE @ID INT, @Serial INT, @NewSerial INT,  @GivenItemNewSerial INT, @ParentID INT
SET @NewSerial=1

--=====================================================
--== KnowledgeDirectory ͬд
--=====================================================

IF LOWER(RTRIM(LTRIM(@KnowledgeDirectory)))=LOWER(N'MainDirectory')

	BEGIN

		--=====================================================
		--==ʹ CURSOR ½ Serial ȥԭ Serial е©
		--=====================================================
		DECLARE MainDirectoryCursor CURSOR FOR SELECT [ID], Serial FROM dbo.MainDirectory  ORDER BY Serial

		OPEN MainDirectoryCursor
		FETCH NEXT FROM MainDirectoryCursor  INTO @ID,@Serial

		WHILE @@FETCH_STATUS = 0
		BEGIN
			UPDATE dbo.MainDirectory SET Serial=@NewSerial WHERE [ID]=@ID
			SET @NewSerial=@NewSerial+1
			FETCH NEXT FROM MainDirectoryCursor  INTO @ID,@Serial
		END

		CLOSE MainDirectoryCursor
		DEALLOCATE MainDirectoryCursor

		--=====================================================
		--==ָĿ Serial
		--=====================================================
		SELECT @GivenItemNewSerial=Serial FROM dbo.MainDirectory WHERE [ID]=@KnowledgeItem

		--=====================================================
		--==ƻƣڵĿ
		--=====================================================
		IF @Action=-1
			BEGIN
				--=====================================================
				--==ָĿ Serial -1ǰĿ Serial + 1
				--=====================================================
				UPDATE dbo.MainDirectory SET Serial=Serial+1 WHERE [ID]=(Select [ID] From dbo.MainDirectory Where Serial=@GivenItemNewSerial-1)
				UPDATE dbo.MainDirectory SET Serial=Serial-1 WHERE [ID]=@KnowledgeItem
			END
		ELSE
			BEGIN
				--=====================================================
				--==ָĿ Serial + 1Ŀ Serial - 1
				--=====================================================
				UPDATE dbo.MainDirectory SET Serial=Serial-1 WHERE [ID]=(Select [ID] From dbo.MainDirectory Where Serial=@GivenItemNewSerial+1)
				UPDATE dbo.MainDirectory SET Serial=Serial+1 WHERE [ID]=@KnowledgeItem
			END
	END

ELSE IF LOWER(RTRIM(LTRIM(@KnowledgeDirectory)))=LOWER(N'SubDirectory')

	BEGIN
		--=====================================================
		--==ȻõǰĿĸĿ ID Ҫã
		--=====================================================
		SELECT @ParentID=MainDirectoryID FROM dbo.SubDirectory WHERE [ID]=@KnowledgeItem
		
		--=====================================================
		--==ʹ CURSOR ½ Serial ȥԭ Serial е©
		--=====================================================
		DECLARE SubDirectoryCursor CURSOR FOR SELECT [ID], Serial FROM dbo.SubDirectory WHERE MainDirectoryID=@ParentID   ORDER BY Serial

		OPEN SubDirectoryCursor
		FETCH NEXT FROM SubDirectoryCursor  INTO @ID,@Serial

		WHILE @@FETCH_STATUS = 0
		BEGIN
			UPDATE dbo.SubDirectory SET Serial=@NewSerial WHERE [ID]=@ID
			SET @NewSerial=@NewSerial+1
			FETCH NEXT FROM SubDirectoryCursor  INTO @ID,@Serial
		END

		CLOSE SubDirectoryCursor
		DEALLOCATE SubDirectoryCursor

		--=====================================================
		--==ָĿ Serial
		--=====================================================
		SELECT @GivenItemNewSerial=Serial FROM dbo.SubDirectory WHERE [ID]=@KnowledgeItem

		--=====================================================
		--==ƻƣڵĿ
		--=====================================================
		IF @Action=-1
			BEGIN
				--=====================================================
				--==ָĿ Serial -1ǰĿ Serial + 1
				--=====================================================
				UPDATE dbo.SubDirectory SET Serial=Serial+1 WHERE [ID]=(Select [ID] From dbo.SubDirectory Where Serial=@GivenItemNewSerial-1 AND  MainDirectoryID=@ParentID)
				UPDATE dbo.SubDirectory SET Serial=Serial-1 WHERE [ID]=@KnowledgeItem
			END
		ELSE
			BEGIN
				--=====================================================
				--==ָĿ Serial + 1Ŀ Serial - 1
				--=====================================================
				UPDATE dbo.SubDirectory SET Serial=Serial-1 WHERE [ID]=(Select [ID] From dbo.SubDirectory Where Serial=@GivenItemNewSerial+1 AND  MainDirectoryID=@ParentID)
				UPDATE dbo.SubDirectory SET Serial=Serial+1 WHERE [ID]=@KnowledgeItem
			END
	END

ELSE IF LOWER(RTRIM(LTRIM(@KnowledgeDirectory)))=LOWER(N'PageDirectory')

	BEGIN
		--=====================================================
		--==ȻõǰĿĸĿ ID Ҫã
		--=====================================================
		SELECT @ParentID=SubDirectoryID FROM dbo.PageDirectory WHERE [ID]=@KnowledgeItem
		
		--=====================================================
		--==ʹ CURSOR ½ Serial ȥԭ Serial е©
		--=====================================================
		DECLARE PageDirectoryCursor CURSOR FOR SELECT [ID], Serial FROM dbo.PageDirectory WHERE SubDirectoryID=@ParentID   ORDER BY Serial

		OPEN PageDirectoryCursor
		FETCH NEXT FROM PageDirectoryCursor  INTO @ID,@Serial

		WHILE @@FETCH_STATUS = 0
		BEGIN
			UPDATE dbo.PageDirectory SET Serial=@NewSerial WHERE [ID]=@ID
			SET @NewSerial=@NewSerial+1
			FETCH NEXT FROM PageDirectoryCursor  INTO @ID,@Serial
		END

		CLOSE PageDirectoryCursor
		DEALLOCATE PageDirectoryCursor

		--=====================================================
		--==ָĿ Serial
		--=====================================================
		SELECT @GivenItemNewSerial=Serial FROM dbo.PageDirectory WHERE [ID]=@KnowledgeItem

		--=====================================================
		--==ƻƣڵĿ
		--=====================================================
		IF @Action=-1
			BEGIN
				--=====================================================
				--==ָĿ Serial -1ǰĿ Serial + 1
				--=====================================================
				UPDATE dbo.PageDirectory SET Serial=Serial+1 WHERE [ID]=(Select [ID] From dbo.PageDirectory Where Serial=@GivenItemNewSerial-1 AND  SubDirectoryID=@ParentID)
				UPDATE dbo.PageDirectory SET Serial=Serial-1 WHERE [ID]=@KnowledgeItem
			END
		ELSE
			BEGIN
				--=====================================================
				--==ָĿ Serial + 1Ŀ Serial - 1
				--=====================================================
				UPDATE dbo.PageDirectory SET Serial=Serial-1 WHERE [ID]=(Select [ID] From dbo.PageDirectory Where Serial=@GivenItemNewSerial+1 AND  SubDirectoryID=@ParentID)
				UPDATE dbo.PageDirectory SET Serial=Serial+1 WHERE [ID]=@KnowledgeItem
			END
	END

ELSE IF LOWER(RTRIM(LTRIM(@KnowledgeDirectory)))=LOWER(N'Knowledge')

	BEGIN
		--=====================================================
		--==ȻõǰĿĸĿ ID Ҫã
		--=====================================================
		SELECT @ParentID=PageDirectoryID FROM dbo.Knowledge WHERE [ID]=@KnowledgeItem
		
		--=====================================================
		--==ʹ CURSOR ½ Serial ȥԭ Serial е©
		--=====================================================
		DECLARE KnowledgeCursor CURSOR FOR SELECT [ID], Serial FROM dbo.Knowledge WHERE PageDirectoryID=@ParentID   ORDER BY Serial

		OPEN KnowledgeCursor
		FETCH NEXT FROM KnowledgeCursor  INTO @ID,@Serial

		WHILE @@FETCH_STATUS = 0
		BEGIN
			UPDATE dbo.Knowledge SET Serial=@NewSerial WHERE [ID]=@ID
			SET @NewSerial=@NewSerial+1
			FETCH NEXT FROM KnowledgeCursor  INTO @ID,@Serial
		END

		CLOSE KnowledgeCursor
		DEALLOCATE KnowledgeCursor

		--=====================================================
		--==ָĿ Serial
		--=====================================================
		SELECT @GivenItemNewSerial=Serial FROM dbo.Knowledge WHERE [ID]=@KnowledgeItem

		--=====================================================
		--==ƻƣڵĿ
		--=====================================================
		IF @Action=-1
			BEGIN
				--=====================================================
				--==ָĿ Serial -1ǰĿ Serial + 1
				--=====================================================
				UPDATE dbo.Knowledge SET Serial=Serial+1 WHERE [ID]=(Select [ID] From dbo.Knowledge Where Serial=@GivenItemNewSerial-1 AND  PageDirectoryID=@ParentID)
				UPDATE dbo.Knowledge SET Serial=Serial-1 WHERE [ID]=@KnowledgeItem
			END
		ELSE
			BEGIN
				--=====================================================
				--==ָĿ Serial + 1Ŀ Serial - 1
				--=====================================================
				UPDATE dbo.Knowledge SET Serial=Serial-1 WHERE [ID]=(Select [ID] From dbo.Knowledge Where Serial=@GivenItemNewSerial+1 AND  PageDirectoryID=@ParentID)
				UPDATE dbo.Knowledge SET Serial=Serial+1 WHERE [ID]=@KnowledgeItem
			END
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeOrder]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.CommunityOrder    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CommunityOrder]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[CommunityOrder]
GO

--====================================================================================
--==ָ Community, Forum /
--==ԭ
--==1. Ƚ Community / Forum Ŀϼ֪ʶĿµĿѡȫֵĿȻ Serial 
--==2. ǵ Serial ½ 1 ʼۼӣȥе©
--==
--==3. ҵָĿԼǰĿSerial С 1 Ŀ -  Ѿؽ Serial
--==4. ָĿ Serial -1  ǰĿ Serial +1 
--==
--==3. ҵָĿԼĺĿSerial  1 Ŀ -  Ѿؽ Serial
--==4. ָĿ Serial +1 Ŀ Serial -1 
--====================================================================================
--==Ȩ 2001-2008 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.CommunityOrder

@User nvarchar(50),				-- ASPX ˴ݹĵǰû

@CommunityDirectory nvarchar(100),		--/Ƶ Community/Forum  Ŀĵ Directory
@CommunityItem int,				--/Ƶ Community/Forum  Ŀ ID
@Action int					--ƻ   -1  +1

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ñ ID, Serial, NewSerial, GivenItemNewSerial, ParentID 
--=====================================================
DECLARE @ID INT, @Serial INT, @NewSerial INT,  @GivenItemNewSerial INT, @ParentID INT
SET @NewSerial=1

--=====================================================
--== CommunityDirectory ͬд
--=====================================================

IF LOWER(RTRIM(LTRIM(@CommunityDirectory)))=LOWER(N'Community')

	BEGIN

		--=====================================================
		--==ʹ CURSOR ½ Serial ȥԭ Serial е©
		--=====================================================
		DECLARE CommunityCursor CURSOR FOR SELECT [ID], Serial FROM dbo.Community  ORDER BY Serial

		OPEN CommunityCursor
		FETCH NEXT FROM CommunityCursor  INTO @ID,@Serial

		WHILE @@FETCH_STATUS = 0
		BEGIN
			UPDATE dbo.Community SET Serial=@NewSerial WHERE [ID]=@ID
			SET @NewSerial=@NewSerial+1
			FETCH NEXT FROM CommunityCursor  INTO @ID,@Serial
		END

		CLOSE CommunityCursor
		DEALLOCATE CommunityCursor

		--=====================================================
		--==ָĿ Serial
		--=====================================================
		SELECT @GivenItemNewSerial=Serial FROM dbo.Community WHERE [ID]=@CommunityItem

		--=====================================================
		--==ƻƣڵĿ
		--=====================================================
		IF @Action=-1
			BEGIN
				--=====================================================
				--==ָĿ Serial -1ǰĿ Serial + 1
				--=====================================================
				UPDATE dbo.Community SET Serial=Serial+1 WHERE [ID]=(Select [ID] From dbo.Community Where Serial=@GivenItemNewSerial-1)
				UPDATE dbo.Community SET Serial=Serial-1 WHERE [ID]=@CommunityItem
			END
		ELSE
			BEGIN
				--=====================================================
				--==ָĿ Serial + 1Ŀ Serial - 1
				--=====================================================
				UPDATE dbo.Community SET Serial=Serial-1 WHERE [ID]=(Select [ID] From dbo.Community Where Serial=@GivenItemNewSerial+1)
				UPDATE dbo.Community SET Serial=Serial+1 WHERE [ID]=@CommunityItem
			END
	END

ELSE IF LOWER(RTRIM(LTRIM(@CommunityDirectory)))=LOWER(N'Forum')

	BEGIN
		--=====================================================
		--==ȻõǰĿĸĿ ID Ҫã
		--=====================================================
		SELECT @ParentID=CommunityID FROM dbo.Forum WHERE [ID]=@CommunityItem
		
		--=====================================================
		--==ʹ CURSOR ½ Serial ȥԭ Serial е©
		--=====================================================
		DECLARE ForumCursor CURSOR FOR SELECT [ID], Serial FROM dbo.Forum  WHERE CommunityID=@ParentID   ORDER BY Serial

		OPEN ForumCursor
		FETCH NEXT FROM ForumCursor  INTO @ID,@Serial

		WHILE @@FETCH_STATUS = 0
		BEGIN
			UPDATE dbo.Forum SET Serial=@NewSerial WHERE [ID]=@ID
			SET @NewSerial=@NewSerial+1
			FETCH NEXT FROM ForumCursor  INTO @ID,@Serial
		END

		CLOSE ForumCursor
		DEALLOCATE ForumCursor

		--=====================================================
		--==ָĿ Serial
		--=====================================================
		SELECT @GivenItemNewSerial=Serial FROM dbo.Forum WHERE [ID]=@CommunityItem

		--=====================================================
		--==ƻƣڵĿ
		--=====================================================
		IF @Action=-1
			BEGIN
				--=====================================================
				--==ָĿ Serial -1ǰĿ Serial + 1
				--=====================================================
				UPDATE dbo.Forum SET Serial=Serial+1 WHERE [ID]=(Select [ID] From dbo.Forum Where Serial=@GivenItemNewSerial-1 AND  CommunityID=@ParentID)
				UPDATE dbo.Forum SET Serial=Serial-1 WHERE [ID]=@CommunityItem
			END
		ELSE
			BEGIN
				--=====================================================
				--==ָĿ Serial + 1Ŀ Serial - 1
				--=====================================================
				UPDATE dbo.Forum SET Serial=Serial-1 WHERE [ID]=(Select [ID] From dbo.Forum Where Serial=@GivenItemNewSerial+1 AND  CommunityID=@ParentID)
				UPDATE dbo.Forum SET Serial=Serial+1 WHERE [ID]=@CommunityItem
			END
	END



--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[CommunityOrder]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.SeaParameterSave    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SeaParameterSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[SeaParameterSave]
GO

--====================================================================================
--== SeaParameter е GoogleVerification, YahooVerification, GoogleAnalyticsCode  
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.SeaParameterSave

@User nvarchar(50),					-- ASPX ˴ݹĵǰû

@GoogleVerification nvarchar(2000),			-- GoogleVerification ֵ
@YahooVerification nvarchar(2000),			-- YahooVerification ֵ
@GoogleAnalyticsCode nvarchar(2000)			-- GoogleAnalyticsCode ֵ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== GoogleVerification ֮ӣ
--=====================================================
IF (@GoogleVerification<>NULL) AND (@GoogleVerification IS NOT NULL)

BEGIN
	IF NOT EXISTS (Select [Value] From dbo.SeaParameter Where [Parameter]=N'GoogleVerification')

		BEGIN
			INSERT INTO dbo.SeaParameter ([ID],[Parameter],[Value]) VALUES (1,N'GoogleVerification',@GoogleVerification)
		END
	ELSE
		BEGIN
			UPDATE dbo.SeaParameter SET [Value]=@GoogleVerification WHERE [Parameter]=N'GoogleVerification'
		END
END

--=====================================================
--== YahooVerification ֮ӣ
--=====================================================
IF (@YahooVerification<>NULL) AND (@YahooVerification IS NOT NULL)

BEGIN
	IF NOT EXISTS (Select [Value] From dbo.SeaParameter Where [Parameter]=N'YahooVerification')

		BEGIN
			INSERT INTO dbo.SeaParameter ([ID],[Parameter],[Value]) VALUES (2,N'YahooVerification',@YahooVerification)
		END
	ELSE
		BEGIN
			UPDATE dbo.SeaParameter SET [Value]=@YahooVerification WHERE [Parameter]=N'YahooVerification'
		END
END

--=====================================================
--== GoogleAnalyticsCode ֮ӣ
--=====================================================
IF (@GoogleAnalyticsCode<>NULL) AND (@GoogleAnalyticsCode IS NOT NULL)

BEGIN
	IF NOT EXISTS (Select [Value] From dbo.SeaParameter Where [Parameter]=N'GoogleAnalyticsCode')

		BEGIN
			INSERT INTO dbo.SeaParameter ([ID],[Parameter],[Value]) VALUES (3,N'GoogleAnalyticsCode',@GoogleAnalyticsCode)
		END
	ELSE
		BEGIN
			UPDATE dbo.SeaParameter SET [Value]=@GoogleAnalyticsCode WHERE [Parameter]=N'GoogleAnalyticsCode'
		END
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[SeaParameterSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.SeaParameterSelect    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SeaParameterSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[SeaParameterSelect]
GO

--====================================================================================
--== SeaParameter е GoogleVerification, YahooVerification 
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.SeaParameterSelect

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼飨ãΪʹ BultinConnectionString
--=====================================================


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ѡȡ
--=====================================================
SELECT * FROM dbo.SeaParameter

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[SeaParameterSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ContentExistsUnderMainDirectory    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ContentExistsUnderMainDirectory]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ContentExistsUnderMainDirectory]
GO

--====================================================================================
--==ǰĻ£ָ MainDirectory ĿǷ Content
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--== SP Ŀǰûʵôɾ
--====================================================================================

CREATE PROCEDURE dbo.ContentExistsUnderMainDirectory

@Culture nvarchar(50),		--ǰĻ
@Item INT,			--ָ MainDirectory  Ŀ ID
@oExists INT OUT		--ڷ 1 0

AS


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--==========================================
--==ȼ費
--==========================================
SET @oExists=0

--==========================================
--==Ƿ
--==========================================
IF EXISTS (SELECT nowc.[ID] FROM dbo.KnowledgeContent nowc WHERE nowc.KnowledgeID IN (Select now.[ID] From dbo.Knowledge now Where now.PageDirectoryID In (select pd.[ID] from dbo.PageDirectory pd where pd.SubDirectoryID in (select sd.[ID] from dbo.SubDirectory sd where sd.MainDirectoryID=@Item))) AND nowc.Culture=@Culture AND LEN(LTRIM(RTRIM(CONVERT(NVARCHAR(4000),nowc.Content))))>0)
BEGIN
	SET @oExists=1
END

--==========================================
--==
--==========================================
RETURN

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ContentExistsUnderMainDirectory]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ContentExistsUnderSubDirectory    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ContentExistsUnderSubDirectory]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ContentExistsUnderSubDirectory]
GO

--====================================================================================
--==ǰĻ£ָ SubDirectory ĿǷ Content
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--== SP Ŀǰûʵôɾ
--====================================================================================

CREATE PROCEDURE dbo.ContentExistsUnderSubDirectory

@Culture nvarchar(50),		--ǰĻ
@Item INT,			--ָ SubDirectory  Ŀ ID
@oExists INT OUT		--ڷ 1 0

AS


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--==========================================
--==ȼ費
--==========================================
SET @oExists=0

--==========================================
--==Ƿ
--==========================================
IF EXISTS (SELECT nowc.[ID] FROM dbo.KnowledgeContent nowc WHERE nowc.KnowledgeID IN (Select now.[ID] From dbo.Knowledge now Where now.PageDirectoryID In (select pd.[ID] from dbo.PageDirectory pd where pd.SubDirectoryID=@Item)) AND nowc.Culture=@Culture AND LEN(LTRIM(RTRIM(CONVERT(NVARCHAR(4000),nowc.Content))))>0)
BEGIN
	SET @oExists=1
END

--==========================================
--==
--==========================================
RETURN

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ContentExistsUnderSubDirectory]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ContentExistsUnderPageDirectory    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ContentExistsUnderPageDirectory]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ContentExistsUnderPageDirectory]
GO

--====================================================================================
--==ǰĻ£ָ PageDirectory ĿǷ Content
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--== SP Ŀǰûʵôɾ
--====================================================================================

CREATE PROCEDURE dbo.ContentExistsUnderPageDirectory

@Culture nvarchar(50),		--ǰĻ
@Item INT,			--ָ PageDirectory  Ŀ ID
@oExists INT OUT		--ڷ 1 0

AS


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--==========================================
--==ȼ費
--==========================================
SET @oExists=0

--==========================================
--==Ƿ
--==========================================
IF EXISTS (SELECT nowc.[ID] FROM dbo.KnowledgeContent nowc WHERE nowc.KnowledgeID IN (Select now.[ID] From dbo.Knowledge now Where now.PageDirectoryID=@Item) AND nowc.Culture=@Culture AND LEN(LTRIM(RTRIM(CONVERT(NVARCHAR(4000),nowc.Content))))>0)
BEGIN
	SET @oExists=1
END

--==========================================
--==
--==========================================
RETURN

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ContentExistsUnderPageDirectory]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgeRelative    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgeRelative]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgeRelative]
GO

--====================================================================================
--== Tag , Ķ Tag бȫվѰҹ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgeRelative

@User nvarchar(50),						-- ASPX ˴ݹĵǰû

@KnowledgeContentID int,					--ǰ KnowledgeContent   ID Ƿ KnowledgeRelative ʱҪųǰ KnowledgeContent Լ
@Tag nvarchar(500),						--ʹõ Tag йˣ
@Culture nvarchar(100)						--ǰĻ


AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

/*
SELECT DISTINCT TOP 5
	
	pd.[Name] AS PageDirectoryName,
	now.UpdateTime AS UpdateTime,
	nowc.KnowledgeID AS KnowledgeID,
	nowc.Culture AS Culture,
	nowc.Title AS Title

FROM dbo.UDF_PublicSplit(@Tag,N',') tag
LEFT JOIN dbo.KnowledgeTags nowt on tag.Element=nowt.Tag
LEFT JOIN dbo.KnowledgeContent nowc on nowc.[ID]=nowt.KnowledgeContentID
LEFT JOIN dbo.Knowledge now on now.[ID]=nowc.KnowledgeID
LEFT JOIN dbo.PageDirectory pd on pd.[ID]=now.PageDirectoryID

WHERE nowc.[ID]<>@KnowledgeContentID AND nowc.Culture=@Culture AND  (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL)  AND dbo.UDF_UserClient(@User)<>1 AND dbo.UDF_UserAdmin(@User)<>1 AND  nowc.Hidden<>N'true'

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

UNION ALL
*/

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

SELECT DISTINCT TOP 5
	
	pd.[Name] AS PageDirectoryName,
	now.UpdateTime AS UpdateTime,
	nowc.KnowledgeID AS KnowledgeID,
	nowc.Culture AS Culture,
	nowc.Title AS Title

FROM dbo.UDF_PublicSplit(@Tag,N',') tag
LEFT JOIN dbo.KnowledgeTags nowt on tag.Element=nowt.Tag
LEFT JOIN dbo.KnowledgeContent nowc on nowc.[ID]=nowt.KnowledgeContentID
LEFT JOIN dbo.Knowledge now on now.[ID]=nowc.KnowledgeID
LEFT JOIN dbo.PageDirectory pd on pd.[ID]=now.PageDirectoryID

WHERE nowc.[ID]<>@KnowledgeContentID AND nowc.Culture=@Culture AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserAdminEditor(@User)<>1 AND  nowc.Hidden<>N'true'
--WHERE nowc.[ID]<>@KnowledgeContentID AND nowc.Culture=@Culture AND (RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'' or now.DedicatedTo is NULL or RTRIM(LTRIM(CONVERT(NVARCHAR(4000),now.DedicatedTo)))=N'*' or dbo.UDF_UserDedicatedTo(@User,CONVERT(NVARCHAR(4000),now.DedicatedTo))=1)  AND dbo.UDF_UserClient(@User)=1 AND dbo.UDF_UserAdmin(@User)<>1 AND  nowc.Hidden<>N'true'

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

UNION ALL

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

SELECT DISTINCT TOP 5
	
	pd.[Name] AS PageDirectoryName,
	now.UpdateTime AS UpdateTime,
	nowc.KnowledgeID AS KnowledgeID,
	nowc.Culture AS Culture,
	nowc.Title AS Title

FROM dbo.UDF_PublicSplit(@Tag,N',') tag
LEFT JOIN dbo.KnowledgeTags nowt on tag.Element=nowt.Tag
LEFT JOIN dbo.KnowledgeContent nowc on nowc.[ID]=nowt.KnowledgeContentID
LEFT JOIN dbo.Knowledge now on now.[ID]=nowc.KnowledgeID
LEFT JOIN dbo.PageDirectory pd on pd.[ID]=now.PageDirectoryID

WHERE nowc.[ID]<>@KnowledgeContentID AND nowc.Culture=@Culture AND dbo.UDF_UserAdminEditor(@User)=1     

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ʹ UNION ʱֻһ UNION ſʹ ORDER BY
--====================================================================================
ORDER BY UpdateTime

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgeRelative]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PublicTableColumnCharacterMaximumLength    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PublicTableColumnCharacterMaximumLength]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PublicTableColumnCharacterMaximumLength]
GO

--====================================================================================
--==ȡָָеݶ峤
--==һĳĳıеݳȣΪ ASPX ˶ݽгȼ⣨ֹ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.PublicTableColumnCharacterMaximumLength

@TableName nvarchar(128), 			--ָ
@ColumnName nvarchar(128),			--ָ

@ReturnValue int OUT				--ֵ

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==
--====================================================================================
SELECT

	@ReturnValue=CHARACTER_MAXIMUM_LENGTH 

FROM INFORMATION_SCHEMA.[COLUMNS] 

WHERE TABLE_NAME=@TableName AND COLUMN_NAME=@ColumnName

--====================================================================================
--==
--====================================================================================
RETURN @ReturnValue
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PublicTableColumnCharacterMaximumLength]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.OptionSelectByCat    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[OptionSelectByCat]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[OptionSelectByCat]
GO

--====================================================================================
--==ȡ Option ָ Cat µм¼ ǰ Culture £
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2008-10-28
--====================================================================================

CREATE PROCEDURE dbo.OptionSelectByCat

@Culture nvarchar(100), 			--ǰĻ
@Cat nvarchar(100)			--ָ Cat

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--== Option ¼Join ǰĻµ OptionContent ¼
--====================================================================================
SELECT 

	opt.[ID] AS [ID],
	opt.Cat AS Cat,
	opt.RightIndent AS RightIndent,
	opt.[Key] AS [Key],
	opt.Value AS Value,
	opt.Legend AS Legend,
	opt.NumberOnly AS NumberOnly,
	opt.TextArea AS TextArea,
	opt.MultiCulture AS MultiCulture,
	opt.ForTheme AS ForTheme,
	opt.Validation AS Validation,
	opc.Title AS Title,
	opc.CatTitle AS CatTitle,
	opc.[Description] As [Description]

FROM dbo.[Option] opt 
LEFT JOIN dbo.OptionContent opc ON opc.OptionID=opt.[ID]

WHERE opc.Culture=@Culture AND opt.Cat=@Cat

ORDER BY opt.[ID]

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[OptionSelectByCat]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PageDirectorySetOverview    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PageDirectorySetOverview]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PageDirectorySetOverview]
GO

--====================================================================================
--==ָ PageDirectory Ŀ Overview Ϊ true
--==ҪȽָ PageDirectory ֵĿ (ͬһ SubDirectory )  Overview Ϊ false
--==ţֵĿ 2 ʼԭȴ Serial
--==󣬽ָ PageDirectory  Serial Ϊ 1  Overview Ϊ true
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.PageDirectorySetOverview

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@PageDirectoryID int			--ǰ PageDirectory  ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'PageDirectory',@PageDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ȸݵǰ @PageDirectoryID öӦ SubDirectoryID
--=====================================================
DECLARE @SubDirectoryID INT
SELECT @SubDirectoryID=SubDirectoryID FROM dbo.PageDirectory WHERE [ID]=@PageDirectoryID

--=====================================================
--==ǰ SubDirectoryID µ PageDirectory пܵ Overview ȥ
--=====================================================
UPDATE dbo.PageDirectory SET Overview=N'false' WHERE SubDirectoryID=@SubDirectoryID AND Overview=N'true'

--=====================================================
--==ǰ SubDirectoryID µ PageDirectory 򣨸ԭȵ Serial2 ʼ
--=====================================================
DECLARE @CursorID INT
DECLARE @CursorSerial INT
DECLARE @NewSerial INT
SET @NewSerial=2

DECLARE PageDirectoryCursor CURSOR FOR SELECT [ID], Serial FROM dbo.PageDirectory WHERE SubDirectoryID=@SubDirectoryID ORDER BY Serial
	
OPEN PageDirectoryCursor
FETCH NEXT FROM PageDirectoryCursor  INTO @CursorID,@CursorSerial

WHILE @@FETCH_STATUS = 0
BEGIN
	UPDATE dbo.PageDirectory SET Serial=@NewSerial WHERE [ID]=@CursorID
	SET @NewSerial=@NewSerial+1
	FETCH NEXT FROM PageDirectoryCursor  INTO @CursorID,@CursorSerial
END

CLOSE PageDirectoryCursor
DEALLOCATE PageDirectoryCursor

--=====================================================
--==󣬽ǰָ Overview=true  PageDirectory  Serial Ϊ 1
--=====================================================
UPDATE dbo.PageDirectory SET Serial=1, Overview=N'true'  WHERE [ID]=@PageDirectoryID


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PageDirectorySetOverview]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.SubDirectorySetOverview    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SubDirectorySetOverview]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[SubDirectorySetOverview]
GO

--====================================================================================
--==ָ SubDirectory Ŀ Overview Ϊ true
--==ҪȽָ SubDirectory ֵĿ (ͬһ MainDirectory )  Overview Ϊ false
--==ţֵĿ 2 ʼԭȴ Serial
--==󣬽ָ SubDirectory  Serial Ϊ 1  Overview Ϊ true
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.SubDirectorySetOverview

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@SubDirectoryID int			--ǰ SubDirectory  ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'SubDirectory',@SubDirectoryID,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ȸݵǰ @SubDirectoryID öӦ MainDirectoryID
--=====================================================
DECLARE @MainDirectoryID INT
SELECT @MainDirectoryID=MainDirectoryID FROM dbo.SubDirectory WHERE [ID]=@SubDirectoryID

--=====================================================
--==ǰ MainDirectoryID µ SubDirectory пܵ Overview ȥ
--=====================================================
UPDATE dbo.SubDirectory SET Overview=N'false' WHERE MainDirectoryID=@MainDirectoryID AND Overview=N'true'

--=====================================================
--==ǰ MainDirectoryID µ SubDirectory 򣨸ԭȵ Serial2 ʼ
--=====================================================
DECLARE @CursorID INT
DECLARE @CursorSerial INT
DECLARE @NewSerial INT
SET @NewSerial=2

DECLARE SubDirectoryCursor CURSOR FOR SELECT [ID], Serial FROM dbo.SubDirectory WHERE MainDirectoryID=@MainDirectoryID ORDER BY Serial
	
OPEN SubDirectoryCursor
FETCH NEXT FROM SubDirectoryCursor  INTO @CursorID,@CursorSerial

WHILE @@FETCH_STATUS = 0
BEGIN
	UPDATE dbo.SubDirectory SET Serial=@NewSerial WHERE [ID]=@CursorID
	SET @NewSerial=@NewSerial+1
	FETCH NEXT FROM SubDirectoryCursor  INTO @CursorID,@CursorSerial
END

CLOSE SubDirectoryCursor
DEALLOCATE SubDirectoryCursor

--=====================================================
--==󣬽ǰָ Overview=true  SubDirectory  Serial Ϊ 1
--=====================================================
UPDATE dbo.SubDirectory SET Serial=1, Overview=N'true'  WHERE [ID]=@SubDirectoryID


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[SubDirectorySetOverview]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.MenuMainDirectorySubDirectoryPageDirectory    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MenuMainDirectorySubDirectoryPageDirectory]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[MenuMainDirectorySubDirectoryPageDirectory]
GO

--====================================================================================
--==ǰ ASPX ˵ûظûȨ޷Χڵ MainDirectory, SubDirectory, PageDirectory ¼Ա ASPX ˹˵ϵͳ
--==ص MainDirectory, SubDirectory, PageDirectory  DataSet Ϊϵ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.MenuMainDirectorySubDirectoryPageDirectory

@User nvarchar(50),				-- ASPX ˴ݹû ʹ Table ûϵͳ
@Culture nvarchar(100)				--ǰĻ


AS 


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
--ֵǰû Admin Editor  ͨûΡǰ߷ȫ¼߷طȨ޵ļ¼
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
  
IF  dbo.UDF_UserAdminEditor(@User)=1 

BEGIN

	--====================================================
	--==ȫ MainDirectory
	--====================================================
	SELECT

		N'MainDirectory' AS KnowledgeDirectory,
		md.[ID] AS [ID],
		md.Serial AS Serial,
		md.[Name] AS [Name],
		md.Url AS Url,
		ISNULL(md.UseBaseUrl,N'false') AS UseBaseUrl,
		ISNULL(md.NewWindow,N'false') AS NewWindow,
		ISNULL(md.[System],N'false') AS [System],
		ISNULL(mdc.Hidden,N'false') AS Hidden,
		--CASE WHEN EXISTS (SELECT inowc.[ID] FROM dbo.KnowledgeContent inowc WHERE inowc.KnowledgeID IN (Select inow.[ID] From dbo.Knowledge inow Where inow.PageDirectoryID In (select ipd.[ID] from dbo.PageDirectory ipd where ipd.SubDirectoryID in (select isd.[ID] from dbo.SubDirectory isd where isd.MainDirectoryID=md.[ID]))) AND inowc.Culture=mdc.Culture AND LEN(LTRIM(RTRIM(CONVERT(NVARCHAR(4000),inowc.Content))))>0) THEN N'true' ELSE N'false' END  AS ContentExists,
		md.InActiveMainMenuIconMap AS InActiveMainMenuIconMap,
		md.ActiveMainMenuIconMap AS ActiveMainMenuIconMap,
		md.BannerMap AS BannerMap,
		md.BannerContentLayer AS BannerContentLayer,

		md.Editor AS Editor,
		dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),md.Editor)) AS EditorPermission,

		mdc.Title AS Title,
		mdc.[Description] AS [Description],
		mdc.Culture AS Culture

	FROM dbo.MainDirectory md
	LEFT JOIN dbo.MainDirectoryContent mdc ON mdc.MainDirectoryID=md.[ID]  AND mdc.Culture=@Culture

	ORDER BY Serial

	--====================================================
	--==ͬΪ¼ NTEXT ʹ UNION ALL Ϊ UNION  DISTINCT UNIONܺ NTEXT  ã  
	--==ǰû Admin Editor򷵻ȫ  
	--====================================================
	SELECT

		N'SubDirectory' AS KnowledgeDirectory,
		sd.[ID] AS [ID],
		sd.MainDirectoryID AS MainDirectoryID,
		sd.Serial AS Serial,
		sd.[Name] AS [Name],
		sd.Url AS Url,
		ISNULL(sd.UseBaseUrl,N'false') AS UseBaseUrl,
		ISNULL(sd.NewWindow,'false') AS NewWindow,
		ISNULL(sdc.Hidden,N'false') AS Hidden,
		--CASE WHEN EXISTS (SELECT inowc.[ID] FROM dbo.KnowledgeContent inowc WHERE inowc.KnowledgeID IN (Select inow.[ID] From dbo.Knowledge inow Where inow.PageDirectoryID In (select ipd.[ID] from dbo.PageDirectory ipd where ipd.SubDirectoryID=sd.[ID])) AND inowc.Culture=sdc.Culture AND LEN(LTRIM(RTRIM(CONVERT(NVARCHAR(4000),inowc.Content))))>0) THEN N'true' ELSE N'false' END AS ContentExists,
		ISNULL(sd.Overview,N'false') AS Overview,
		ISNULL(sd.Wizard,N'false') AS Wizard,

		sd.Editor AS Editor,
		dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),sd.Editor)) AS EditorPermission,

		sdc.Title AS Title,
		sdc.[Description] AS [Description],
		sdc.WizardPreviousTitle AS WizardPreviousTitle,
		sdc.WizardNextTitle AS WizardNextTitle,
		sdc.Culture AS Culture

	FROM dbo.SubDirectory sd
	LEFT JOIN dbo.SubDirectoryContent sdc ON sdc.SubDirectoryID=sd.[ID]  AND sdc.Culture=@Culture

	ORDER BY Serial

	--====================================================
	--==ȫ PageDirectory ¼
	--==ǰû Admin Editor򷵻ȫ
	--====================================================
	SELECT

		N'PageDirectory' AS KnowledgeDirectory,
		pd.[ID] AS [ID],
		pd.SubDirectoryID AS SubDirectoryID,
		pd.Serial AS Serial,
		pd.[Name] AS [Name],
		pd.Url AS Url,
		pd.PageSize AS PageSize,
		ISNULL(pd.UseBaseUrl,N'false') AS UseBaseUrl,
		ISNULL(pd.NewWindow,N'false') AS NewWindow,
		ISNULL(pd.Overview,N'false') AS Overview,
		ISNULL(pd.FastAccess,N'false') AS FastAccess,
		ISNULL(pd.Home,N'false') AS Home,
		ISNULL(pdc.Hidden,N'false') AS Hidden,
		--CASE WHEN EXISTS (SELECT inowc.[ID] FROM dbo.KnowledgeContent inowc WHERE inowc.KnowledgeID IN (Select inow.[ID] From dbo.Knowledge inow Where inow.PageDirectoryID=pd.[ID]) AND inowc.Culture=pdc.Culture AND LEN(LTRIM(RTRIM(CONVERT(NVARCHAR(4000),inowc.Content))))>0) THEN N'true' ELSE N'false' END AS ContentExists,

		ISNULL(pd.RightIndent,0) AS RightIndent,

		ISNULL(pd.jQuery,N'false') AS jQuery,

		ISNULL(pd.LogoHide,N'false') AS LogoHide,
		ISNULL(pd.MainMenuHide,N'false') AS MainMenuHide,
		ISNULL(pd.BannerHide,N'false') AS BannerHide,
		ISNULL(pd.BreadcrumbHide,N'false') AS BreadcrumbHide,
		ISNULL(pd.PageMenuHide,N'false') AS PageMenuHide,
		ISNULL(pd.PageBarHide,N'false') AS PageBarHide,
		ISNULL(pd.CopyrightHide,N'false') AS CopyrightHide,

		pd.Editor AS Editor,
		dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),pd.Editor)) AS EditorPermission,

		pdc.SeoTitle AS SeoTitle,
		pdc.SeoDescription AS SeoDescription,
		pdc.SeoKeywords AS SeoKeywords,

		pdc.Title AS Title,
		pdc.[Description] AS [Description],
		pdc.Culture AS Culture

	FROM dbo.PageDirectory pd
	LEFT JOIN dbo.PageDirectoryContent pdc ON pdc.PageDirectoryID=pd.[ID]  AND pdc.Culture=@Culture

	ORDER BY Serial

END

ELSE

BEGIN


	DECLARE @TempTable TABLE 
	(
		MainDirectoryID int,
		SubDirectoryID int,
		PageDirectoryID int
	)

	INSERT INTO @TempTable SELECT nowp.MainDirectoryID, nowp.SubDirectoryID, nowp.PageDirectoryID FROM dbo.View_KnowledgePermission nowp Where REPLACE(nowp.DedicatedTo,N',',N'')=N'' or dbo.UDF_UserDedicatedTo(@User,nowp.DedicatedTo)=1

	--====================================================
	--==طϷȨ޵ MainDirectory ¼   Where ˼1. DedicatedTo ۻΪգס ,,,,, ۻDedicatedTo ۻϷȨޣǰ pd û now  IS NULL 
	--====================================================
	SELECT 

		N'MainDirectory' AS KnowledgeDirectory,
		md.[ID] AS [ID],
		md.Serial AS Serial,
		md.[Name] AS [Name],
		md.Url AS Url,
		ISNULL(md.UseBaseUrl,N'false') AS UseBaseUrl,
		ISNULL(md.NewWindow,N'false') AS NewWindow,
		ISNULL(md.[System],N'false') AS [System],
		ISNULL(mdc.Hidden,N'false') AS Hidden,
		--CASE WHEN EXISTS (SELECT inowc.[ID] FROM dbo.KnowledgeContent inowc WHERE inowc.KnowledgeID IN (Select inow.[ID] From dbo.Knowledge inow Where inow.PageDirectoryID In (select ipd.[ID] from dbo.PageDirectory ipd where ipd.SubDirectoryID in (select isd.[ID] from dbo.SubDirectory isd where isd.MainDirectoryID=md.[ID]))) AND inowc.Culture=mdc.Culture AND LEN(LTRIM(RTRIM(CONVERT(NVARCHAR(4000),inowc.Content))))>0) THEN N'true' ELSE N'false' END  AS ContentExists,
		md.InActiveMainMenuIconMap AS InActiveMainMenuIconMap,
		md.ActiveMainMenuIconMap AS ActiveMainMenuIconMap,
		md.BannerMap AS BannerMap,
		md.BannerContentLayer AS BannerContentLayer,

		md.Editor AS Editor,
		dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),md.Editor)) AS EditorPermission,

		mdc.Title AS Title,
		mdc.[Description] AS [Description],
		mdc.Culture AS Culture

	FROM dbo.MainDirectory md
	LEFT JOIN dbo.MainDirectoryContent mdc ON mdc.MainDirectoryID=md.[ID]  AND mdc.Culture=@Culture

	--WHERE  EXISTS (Select nowp.KnowledgeID From dbo.View_KnowledgePermission nowp Where nowp.MainDirectoryID=md.[ID] And (REPLACE(nowp.DedicatedTo,N',',N'')=N'' or dbo.UDF_UserDedicatedTo(@User,nowp.DedicatedTo)=1))
	--WHERE  md.[ID] IN (Select nowp.MainDirectoryID From dbo.View_KnowledgePermission nowp Where REPLACE(nowp.DedicatedTo,N',',N'')=N'' or dbo.UDF_UserDedicatedTo(@User,nowp.DedicatedTo)=1)
	WHERE md.[ID] IN (Select tt.MainDirectoryID From @TempTable tt)

	ORDER BY Serial


	--====================================================
	--==طϷȨ޵ SubDirectory ¼   Where ˼1. DedicatedTo ۻΪգס ,,,,, ۻDedicatedTo ۻϷȨޣǰ pd û now  IS NULL 
	--====================================================
	SELECT 

		N'SubDirectory' AS KnowledgeDirectory,
		sd.[ID] AS [ID],
		sd.MainDirectoryID AS MainDirectoryID,
		sd.Serial AS Serial,
		sd.[Name] AS [Name],
		sd.Url AS Url,
		ISNULL(sd.UseBaseUrl,N'false') AS UseBaseUrl,
		ISNULL(sd.NewWindow,'false') AS NewWindow,
		ISNULL(sdc.Hidden,N'false') AS Hidden,
		--CASE WHEN EXISTS (SELECT inowc.[ID] FROM dbo.KnowledgeContent inowc WHERE inowc.KnowledgeID IN (Select inow.[ID] From dbo.Knowledge inow Where inow.PageDirectoryID In (select ipd.[ID] from dbo.PageDirectory ipd where ipd.SubDirectoryID=sd.[ID])) AND inowc.Culture=sdc.Culture AND LEN(LTRIM(RTRIM(CONVERT(NVARCHAR(4000),inowc.Content))))>0) THEN N'true' ELSE N'false' END AS ContentExists,
		ISNULL(sd.Overview,N'false') AS Overview,
		ISNULL(sd.Wizard,N'false') AS Wizard,

		sd.Editor AS Editor,
		dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),sd.Editor)) AS EditorPermission,

		sdc.Title AS Title,
		sdc.[Description] AS [Description],
		sdc.WizardPreviousTitle AS WizardPreviousTitle,
		sdc.WizardNextTitle AS WizardNextTitle,
		sdc.Culture AS Culture

	FROM dbo.SubDirectory sd
	LEFT JOIN dbo.SubDirectoryContent sdc ON sdc.SubDirectoryID=sd.[ID]  AND sdc.Culture=@Culture

	--WHERE EXISTS (Select nowp.KnowledgeID From dbo.View_KnowledgePermission nowp Where nowp.SubDirectoryID=sd.[ID] And (REPLACE(nowp.DedicatedTo,N',',N'')=N'' or dbo.UDF_UserDedicatedTo(@User,nowp.DedicatedTo)=1))
	--WHERE sd.[ID] IN  (Select nowp.SubDirectoryID From dbo.View_KnowledgePermission nowp Where REPLACE(nowp.DedicatedTo,N',',N'')=N'' or dbo.UDF_UserDedicatedTo(@User,nowp.DedicatedTo)=1)
	WHERE sd.[ID] IN (Select tt.SubDirectoryID From @TempTable tt)

	ORDER BY Serial




	--====================================================
	--==طϷȨ޵ PageDirectory ¼   Where ˼1. DedicatedTo ۻΪգס ,,,,, ۻDedicatedTo ۻϷȨޣǰ pd û now  IS NULL 
	--====================================================
	SELECT

		N'PageDirectory' AS KnowledgeDirectory,
		pd.[ID] AS [ID],
		pd.SubDirectoryID AS SubDirectoryID,
		pd.Serial AS Serial,
		pd.[Name] AS [Name],
		pd.Url AS Url,
		pd.PageSize AS PageSize,
		ISNULL(pd.UseBaseUrl,N'false') AS UseBaseUrl,
		ISNULL(pd.NewWindow,N'false') AS NewWindow,
		ISNULL(pd.Overview,N'false') AS Overview,
		ISNULL(pd.FastAccess,N'false') AS FastAccess,
		ISNULL(pd.Home,N'false') AS Home,
		ISNULL(pdc.Hidden,N'false') AS Hidden,
		--CASE WHEN EXISTS (SELECT inowc.[ID] FROM dbo.KnowledgeContent inowc WHERE inowc.KnowledgeID IN (Select inow.[ID] From dbo.Knowledge inow Where inow.PageDirectoryID=pd.[ID]) AND inowc.Culture=pdc.Culture AND LEN(LTRIM(RTRIM(CONVERT(NVARCHAR(4000),inowc.Content))))>0) THEN N'true' ELSE N'false' END AS ContentExists,
	
		ISNULL(pd.RightIndent,0) AS RightIndent,
	
		ISNULL(pd.jQuery,N'false') AS jQuery,

		ISNULL(pd.LogoHide,N'false') AS LogoHide,
		ISNULL(pd.MainMenuHide,N'false') AS MainMenuHide,
		ISNULL(pd.BannerHide,N'false') AS BannerHide,
		ISNULL(pd.BreadcrumbHide,N'false') AS BreadcrumbHide,
		ISNULL(pd.PageMenuHide,N'false') AS PageMenuHide,
		ISNULL(pd.PageBarHide,N'false') AS PageBarHide,
		ISNULL(pd.CopyrightHide,N'false') AS CopyrightHide,

		pd.Editor AS Editor,
		dbo.UDF_EditorDedicatedTo(@User,convert(nvarchar(4000),pd.Editor)) AS EditorPermission,

		pdc.SeoTitle AS SeoTitle,
		pdc.SeoDescription AS SeoDescription,
		pdc.SeoKeywords AS SeoKeywords,
		pdc.Title AS Title,
		pdc.[Description] AS [Description],
		pdc.Culture AS Culture

	FROM dbo.PageDirectory pd
	LEFT JOIN dbo.PageDirectoryContent pdc ON pdc.PageDirectoryID=pd.[ID]  AND pdc.Culture=@Culture

	--WHERE EXISTS (Select nowp.KnowledgeID From dbo.View_KnowledgePermission nowp Where nowp.PageDirectoryID=pd.[ID] And (REPLACE(nowp.DedicatedTo,N',',N'')=N'' or dbo.UDF_UserDedicatedTo(@User,nowp.DedicatedTo)=1))
	--WHERE pd.[ID] IN  (Select nowp.PageDirectoryID From dbo.View_KnowledgePermission nowp Where REPLACE(nowp.DedicatedTo,N',',N'')=N'' or dbo.UDF_UserDedicatedTo(@User,nowp.DedicatedTo)=1)
	WHERE pd.[ID] IN (Select tt.PageDirectoryID From @TempTable tt)

	ORDER BY Serial

END


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
--һıUserChiefEditorUserColumnEditor UserChiefEditor, UserColumnEditor ԣ Menu.cs 
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

SELECT 

	dbo.UDF_UserChiefEditor(@User) AS UserChiefEditor,
	dbo.UDF_UserColumnEditor(@User) AS UserColumnEditor
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[MenuMainDirectorySubDirectoryPageDirectory]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.MenuCommunityForum    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MenuCommunityForum]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[MenuCommunityForum]
GO

--====================================================================================
--==ǰ ASPX ˵ûظûȨ޷Χڵ Community, Forum ¼Ա ASPX ˹˵ϵͳ
--==ص Community, Forum  DataSet Ϊ2ϵ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.MenuCommunityForum

@User nvarchar(50),				-- ASPX ˴ݹû ʹ Table ûϵͳ
@Culture nvarchar(100)				--ǰĻ


AS
  

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
--ָûȨڵ Community б
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================
--==ȷ Public Forum ڵ Community ҵǰûΪ Admin
--====================================================
SELECT TOP 100 PERCENT

	N'Community' AS CommunityDirectory,
	co.[ID] AS [ID],
	co.Serial AS Serial,
	co.[Name] AS [Name],
	ISNULL(coc.Hidden,N'false') AS Hidden,
	co.InActiveMainMenuIconMap AS InActiveMainMenuIconMap,
	co.ActiveMainMenuIconMap AS ActiveMainMenuIconMap,
	co.BannerMap AS BannerMap,
	co.BannerContentLayer AS BannerContentLayer,
	coc.Culture AS Culture,
	coc.Title As Title,
	coc.[Description] AS [Description],
	dbo.UDF_GetForumIDFromCommunityID(co.[ID]) AS FirstForumID

FROM dbo.Community co
LEFT JOIN dbo.CommunityContent coc ON coc.CommunityID=co.[ID] AND coc.Culture=@Culture

WHERE
 
	(

		(co.[ID] IN (Select fo.CommunityID From dbo.Forum fo WHERE fo.[Public]=N'true')) 

		OR 

		(co.[ID] IN
			(
				Select fo.CommunityID 
				From dbo.Forum fo 
				Left Join dbo.UserForums uf ON uf.[Forum]=fo.[ID] 
				Where uf.[User]=@User And (uf.ReadEnabled=1 or uf.TopicWriteEnabled=1 or uf.FollowUpWriteEnabled=1) And dbo.UDF_UserCommunity(@User)=1 And fo.[Public]<>N'true'
			)
		)
	) 
	
	AND 

	dbo.UDF_UserAdmin(@User)<>1



UNION ALL

--====================================================
--==ǰû Admin 򷵻ȫ
--====================================================
SELECT TOP 100 PERCENT

	N'Community' AS CommunityDirectory,
	co.[ID] AS [ID],
	co.Serial AS Serial,
	co.[Name] AS [Name],
	ISNULL(coc.Hidden,N'false') AS Hidden,
	co.InActiveMainMenuIconMap AS InActiveMainMenuIconMap,
	co.ActiveMainMenuIconMap AS ActiveMainMenuIconMap,
	co.BannerMap AS BannerMap,
	co.BannerContentLayer AS BannerContentLayer,
	coc.Culture AS Culture,
	coc.Title As Title,
	coc.[Description] AS [Description],
	dbo.UDF_GetForumIDFromCommunityID(co.[ID]) AS FirstForumID

FROM dbo.Community co
LEFT JOIN dbo.CommunityContent coc ON coc.CommunityID=co.[ID] AND coc.Culture=@Culture
WHERE dbo.UDF_UserAdmin(@User)=1

--====================================================
--==ʹ UNION ʱֻһ UNION ſʹ ORDER BY
--====================================================
ORDER BY Serial





--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
--صǰûȨ޷Χڵ Forum ¼
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ


--====================================================
--==Ȼ Public Forum  ҵǰû admin
--====================================================
SELECT TOP 100 PERCENT

	N'Forum' AS CommunityDirectory,
	fo.[ID] AS [ID],
	fo.CommunityID AS CommunityID,
	fo.Serial AS Serial,
	fo.[Name] AS [Name],
	fo.Moderator AS Moderator,
	ISNULL(fo.[Public],N'false') AS [Public],
	ISNULL(foc.Hidden,N'false') AS Hidden,
	foc.Culture AS Culture,
	foc.Title As Title,
	foc.[Description] AS [Description],
	foc.CommandTitleTaskList,
	foc.CommandTitleTaskListDescription,
	foc.CommandTitleAdd,
	foc.CommandTitleAddDescription,
	foc.CommandTitleQuery,
	foc.CommandTitleQueryDescription

FROM dbo.Forum fo
LEFT JOIN dbo.ForumContent foc ON foc.ForumID=fo.[ID]  AND foc.Culture=@Culture

WHERE 
	(
		(fo.[Public]=N'true' ) Or

		(fo.[ID] in (Select uf.Forum From dbo.UserForums uf Where uf.[User]=@User And (uf.ReadEnabled=1 or uf.TopicWriteEnabled=1 or uf.FollowUpWriteEnabled=1)) And dbo.UDF_UserCommunity(@User)=1 And fo.[Public]<>N'true' )
	)  

	AND

	dbo.UDF_UserAdmin(@User)<>1


UNION

/*
--====================================================
--==ͬǰӵӵһȨޣд Forum Public Forum ⣬ΪѾõˣ ҵǰû admin
--====================================================
SELECT TOP 100 PERCENT

	N'Forum' AS CommunityDirectory,
	fo.[ID] AS [ID],
	fo.CommunityID AS CommunityID,
	fo.Serial AS Serial,
	fo.[Name] AS [Name],
	fo.Moderator AS Moderator,
	ISNULL(fo.[Public],N'false') AS [Public],
	ISNULL(foc.Hidden,N'false') AS Hidden,
	foc.Culture AS Culture,
	foc.Title As Title,
	foc.[Description] AS [Description],
	foc.CommandTitleTaskList,
	foc.CommandTitleTaskListDescription,
	foc.CommandTitleAdd,
	foc.CommandTitleAddDescription,
	foc.CommandTitleQuery,
	foc.CommandTitleQueryDescription

FROM dbo.Forum fo
LEFT JOIN dbo.ForumContent foc ON foc.ForumID=fo.[ID] AND foc.Culture=@Culture
WHERE fo.[ID] IN (Select uf.Forum From dbo.UserForums uf Where uf.[User]=@User And (uf.ReadEnabled=1 or uf.TopicWriteEnabled=1 or uf.FollowUpWriteEnabled=1)) AND fo.[Public]<>N'true' AND dbo.UDF_UserAdmin(@User)<>1

UNION
*/

--====================================================
--== Amin û򷵻ȫ
--====================================================
SELECT TOP 100 PERCENT

	N'Forum' AS CommunityDirectory,
	fo.[ID] AS [ID],
	fo.CommunityID AS CommunityID,
	fo.Serial AS Serial,
	fo.[Name] AS [Name],
	fo.Moderator AS Moderator,
	ISNULL(fo.[Public],N'false') AS [Public],
	ISNULL(foc.Hidden,N'false') AS Hidden,
	foc.Culture AS Culture,
	foc.Title As Title,
	foc.[Description] AS [Description],
	foc.CommandTitleTaskList,
	foc.CommandTitleTaskListDescription,
	foc.CommandTitleAdd,
	foc.CommandTitleAddDescription,
	foc.CommandTitleQuery,
	foc.CommandTitleQueryDescription

FROM dbo.Forum fo
LEFT JOIN dbo.ForumContent foc ON foc.ForumID=fo.[ID]  AND foc.Culture=@Culture
WHERE dbo.UDF_UserAdmin(@User)=1

--====================================================
--==ʹ UNION ʱֻһ UNION ſʹ ORDER BY
--====================================================
ORDER BY Serial
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[MenuCommunityForum]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.XToolOptionMove    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[XToolOptionMove]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[XToolOptionMove]
GO


/****** Object:  Stored Procedure dbo.XToolOptionMove    Script Date: 2008-12-3 11:30:05 ******/
--====================================================================================
--==ϵͳ - ù߽ Option еĿǰƻ
--==磬 Option е ID=5 Ŀƶ 2 λã൱ڣ 8 λòһֵȻ󣬽ԭ 5 λõǸĿɾ õ XToolOptionAdd, XToolOptionDelete
--== XToolOptionAdd ֮OptionContent жӦλõһЩҲҪ
--==ƶǰƺ -n  n
--==ùֻϵͳֻڿûʹøù߽κβ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-03-01
--====================================================================================

CREATE PROCEDURE dbo.XToolOptionMove

@ID int,						--Ҫƶ Option  ID
@Offset int,					--ƶٸλ +/- ֵ+ ʾƣ- ʾǰƣ
@Cultures INT					--жٸ


AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--===============================================
--== Offset Ϊ +/- ηֱ
--===============================================

IF @Offset>0

	BEGIN

		--===============================================
		--==Ǻƣǰ Option  @ID + @Offset + 1 λøһµ EntryȻٻص @ID λã Option Ŀɾ 
		--===============================================

		--===============================================
		--==¸ Entry Ĳ ID
		--===============================================
		DECLARE @NewPosition INT
		SET @NewPosition=@ID + @Offset + 1

		--===============================================
		--==µĲ XToolOptionAdd һ Option Ŀ
		--===============================================
		DECLARE @Cat nvarchar(100)
		DECLARE @RightIndent int
		DECLARE @Key nvarchar(100)
		DECLARE @Value nvarchar(3000)
		DECLARE @Legend nvarchar(50)
		DECLARE @NumberOnly nvarchar(50)
		DECLARE @TextArea nvarchar(50)
		DECLARE @MultiCulture nvarchar(50)
		DECLARE @ForTheme nvarchar(50)
		DECLARE @Validation nvarchar(50)

		SELECT 
			@Cat=opt.Cat,
			@RightIndent=opt.RightIndent,
			@Key=opt.[Key],
			@Value=opt.Value,
			@Legend=opt.Legend,
			@NumberOnly=opt.NumberOnly,
			@TextArea=opt.TextArea,
			@MultiCulture=opt.MultiCulture,
			@ForTheme=opt.ForTheme,
			@Validation=opt.Validation

		FROM dbo.[Option] opt
		WHERE opt.[ID]=@ID

		EXEC dbo.XToolOptionAdd @NewPosition,@Cat,@RightIndent,@Key,@Value,@Legend,@NumberOnly,@TextArea,@MultiCulture,@ForTheme,@Validation,@Cultures
		
		--===============================================
		--== OptionContent УӦֵҲ¡λ
		--===============================================
		DECLARE @CultureCounter INT
		SET @CultureCounter=1

		WHILE @CultureCounter<=@Cultures

		BEGIN
			--===============================================
			--==Ҫƶ Option  OptionContent ڵǰ Culture ¶Ӧļ¼Ա clone ²Ӧ OptionContent
			--===============================================
			DECLARE @CultureOriginal [nvarchar] (100) 
			DECLARE @TitleOriginal [nvarchar] (200) 
			DECLARE @CatTitleOriginal [nvarchar] (200)
			DECLARE @DescriptionOriginal [nvarchar] (3000)

			SELECT 
				@CultureOriginal=optc.Culture,
				@TitleOriginal=optc.Title,
				@CatTitleOriginal=optc.CatTitle,
				@DescriptionOriginal=optc.[Description]

			FROM dbo.[OptionContent] optc
			WHERE optc.[ID]=(@ID - 1) * @Cultures + @CultureCounter


			UPDATE dbo.[OptionContent] SET

				Culture=@CultureOriginal,
				Title=@TitleOriginal,
				CatTitle=@CatTitleOriginal,
				[Description]=@DescriptionOriginal

			WHERE [ID]=(@NewPosition - 1) * @Cultures + @CultureCounter


			--===============================================
			--==@CultureCounter++
			--===============================================
			SET @CultureCounter=@CultureCounter + 1

			--===============================================
			--==
			--===============================================
			CONTINUE
		END	


		--===============================================
		--==ɾǸ  Original Option
		--===============================================
		EXEC dbo.XToolOptionDelete @ID

	END

ELSE IF @Offset<0

	BEGIN

		--===============================================
		--==ǰƣǰ Option  @ID - ABS(@Offset)  λøһµ EntryȻٻص @ID+1 λã Option Ŀɾ 
		--===============================================

		--===============================================
		--==¸ Entry Ĳ ID
		--===============================================
		DECLARE @NewPosition2 INT
		SET @NewPosition2=@ID - ABS(@Offset)

		--===============================================
		--==µĲ XToolOptionAdd һ Option Ŀ
		--===============================================
		DECLARE @Cat2 nvarchar(100)
		DECLARE @RightIndent2 int
		DECLARE @Key2 nvarchar(100)
		DECLARE @Value2 nvarchar(3000)
		DECLARE @Legend2 nvarchar(50)
		DECLARE @NumberOnly2 nvarchar(50)
		DECLARE @TextArea2 nvarchar(50)
		DECLARE @MultiCulture2 nvarchar(50)
		DECLARE @ForTheme2 nvarchar(50)
		DECLARE @Validation2 nvarchar(50)

		SELECT 
			@Cat2=opt.Cat,
			@RightIndent2=opt.RightIndent,
			@Key2=opt.[Key],
			@Value2=opt.Value,
			@Legend2=opt.Legend,
			@NumberOnly2=opt.NumberOnly,
			@TextArea2=opt.TextArea,
			@MultiCulture2=opt.MultiCulture,
			@ForTheme2=opt.ForTheme,
			@Validation2=opt.Validation

		FROM dbo.[Option] opt
		WHERE opt.[ID]=@ID

		EXEC dbo.XToolOptionAdd @NewPosition2,@Cat2,@RightIndent2,@Key2,@Value2,@Legend2,@NumberOnly2,@TextArea2,@MultiCulture2,@ForTheme2,@Validation2,@Cultures
		
		--===============================================
		--== OptionContent УӦֵҲ¡λ ע⣺ʱOriginal OptionID Ѿ +1 ˣΪǰֵ
		--===============================================
		DECLARE @CultureCounter2 INT
		SET @CultureCounter2=1

		WHILE @CultureCounter2<=@Cultures

		BEGIN
			--===============================================
			--==Ҫƶ Option  OptionContent ڵǰ Culture ¶Ӧļ¼Ա clone ²Ӧ OptionContent
			--===============================================
			DECLARE @CultureOriginal2 [nvarchar] (100) 
			DECLARE @TitleOriginal2 [nvarchar] (200) 
			DECLARE @CatTitleOriginal2 [nvarchar] (200)
			DECLARE @DescriptionOriginal2 [nvarchar] (3000)

			SELECT 
				@CultureOriginal2=optc.Culture,
				@TitleOriginal2=optc.Title,
				@CatTitleOriginal2=optc.CatTitle,
				@DescriptionOriginal2=optc.[Description]

			FROM dbo.[OptionContent] optc
			WHERE optc.[ID]=(@ID + 1 - 1) * @Cultures + @CultureCounter2


			UPDATE dbo.[OptionContent] SET

				Culture=@CultureOriginal2,
				Title=@TitleOriginal2,
				CatTitle=@CatTitleOriginal2,
				[Description]=@DescriptionOriginal2

			WHERE [ID]=(@NewPosition2 - 1) * @Cultures + @CultureCounter2


			--===============================================
			--==@CultureCounter++
			--===============================================
			SET @CultureCounter2=@CultureCounter2 + 1

			--===============================================
			--==
			--===============================================
			CONTINUE
		END	

		--===============================================
		--==ɾǸ  Original Option   ID Ѿ +1 ˣ
		--===============================================
		DECLARE @IDPlus INT
		SET @IDPlus=@ID+1

		EXEC dbo.XToolOptionDelete @IDPlus

	END




--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[XToolOptionMove]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PublicGetBannerMapByMainDirectoryName    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PublicGetBannerMapByMainDirectoryName]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PublicGetBannerMapByMainDirectoryName]
GO

--====================================================================================
--==ݸ MainDirectoryName  MainDirectory ضӦ BannerMap
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-01-04
--====================================================================================

CREATE PROCEDURE dbo.PublicGetBannerMapByMainDirectoryName

@MainDirectoryName nvarchar(100),			-- MainDirectory ָ MainDirectoryName
@BannerMap nvarchar(4000) OUT			--ز, BannerMap

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--==
--================================================
SELECT @BannerMap=md.BannerMap FROM dbo.MainDirectory md WHERE md.[Name]=@MainDirectoryName


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PublicGetBannerMapByMainDirectoryName]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PublicSetBannerMapByMainDirectoryName    Script Date: 2009-7-10 19:03:38 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PublicSetBannerMapByMainDirectoryName]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PublicSetBannerMapByMainDirectoryName]
GO

--====================================================================================
--==ݸ MainDirectoryName  BannerMap д MainDirectory 
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-01-04
--====================================================================================

CREATE PROCEDURE dbo.PublicSetBannerMapByMainDirectoryName

@MainDirectoryName nvarchar(100),			-- MainDirectory ָ MainDirectoryName
@BannerMap nvarchar(4000)				-- MainDirectory  BannerMap

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--==
--================================================
UPDATE dbo.MainDirectory SET BannerMap=@BannerMap WHERE [Name]=@MainDirectoryName


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PublicSetBannerMapByMainDirectoryName]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PageDirectoryGetNeighbour    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PageDirectoryGetNeighbour]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PageDirectoryGetNeighbour]
GO

--====================================================================================
--== PageDirectoryName  Neighbour Ǻ͸ PageDirectory λͬһ SubDirectory, ͬһ MainDirectory  PageDirectory
--==
--== SP  Knowledge ɾض򣬷¼Σ
--==1. ɾ PageDirectory Ŀ鵱ǰĿǷͬһ SubDirectory µ BrotherУȡ֮ȡͬһ MainDirectory µģ SubDirectory µ PageDirectory MainDirectory µһ SubDirectory µһ PageDirectory
--==2. ɾ SubDirectory Ŀȡͬһ MainDirectory £ SubDirectory µһ PageDirectory
--==3. ɾ MainDirectory Ŀȡٽ MainDirectory һ SubDirectory µһ PageDirectory
--==4.  MainDirectory ɾˣ " | ݹ | "
--==
--==ؽ
--==ԼɾԼǳȥѰ Neighbour, ҵ˾ͷ Neighbour򷵻ؿգ
--==ԼɾԼԭⲻ @PageDirectoryName  Neighbour
--== ASPX ˣ Neighbour Ϊգ滻ǰ Context  PageMenuNameΪգ˵ѾɾˣѾû MainDirectory ˣ " | ݹ | "
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-01-15
--====================================================================================

CREATE PROCEDURE dbo.PageDirectoryGetNeighbour

@PageDirectoryName nvarchar(100),	-- @PageDirectoryName
@KnowledgeDirectory nvarchar(100),	-- MainDirectory, SubDirectory, PageDirectory?
@KnowledgeItem int,			--ɾĿ ID

@Neighbour nvarchar(100) OUT		--ز, ָ @KnowledgeItem  Neighbour

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--== @PageDirectoryName Ӧ PageDirectoryID, SubDirectoryID, MainDirectoryID
--================================================
DECLARE @PageDirectoryID INT
DECLARE @SubDirectoryID INT
DECLARE @MainDirectoryID INT

DECLARE @PageDirectorySerial INT
DECLARE @SubDirectorySerial INT
DECLARE @MainDirectorySerial INT

SELECT 

	@PageDirectoryID=pd.[ID],
	@PageDirectorySerial=pd.Serial,
	@SubDirectoryID=sd.[ID],
	@SubDirectorySerial=sd.Serial,
	@MainDirectoryID=md.[ID],
	@MainDirectorySerial=md.Serial

FROM dbo.PageDirectory pd 
LEFT JOIN dbo.SubDirectory sd ON sd.[ID]=pd.SubDirectoryID
LEFT JOIN dbo.MainDirectory md ON md.[ID]=sd.MainDirectoryID

WHERE pd.[Name]=@PageDirectoryName

--================================================
--== @PageDirectoryID, @SubDirectoryID, @MainDirectoryID ھ ID  Serial һģôһģСһģ
--==ȣʼΪ  @PageDirectoryNeighbourID=@PageDirectoryID@SubDirectoryNeighbourID=@SubDirectoryID @MainDirectoryNeighbourID=@MainDirectoryID (ʵϣں棬ǽ¼ҹѾų)
--================================================
DECLARE @PageDirectoryNeighbourID INT
DECLARE @SubDirectoryNeighbourID INT
DECLARE @MainDirectoryNeighbourID INT

SET @PageDirectoryNeighbourID=@PageDirectoryID
SET @SubDirectoryNeighbourID=@SubDirectoryID
SET @MainDirectoryNeighbourID=@MainDirectoryID

--================================
--== @PageDirectoryNeighbourID  Serial ٽģ ID ٽ ʱ Serial ܸû 1ǾҪ ID ٽģ
--================================
IF EXISTS (Select pd.[ID] From dbo.PageDirectory pd Where pd.Serial>@PageDirectorySerial And pd.SubDirectoryID=@SubDirectoryID)

	BEGIN
		SELECT @PageDirectoryNeighbourID=(Select Top 1 pd.[ID]  From dbo.PageDirectory pd Where pd.Serial>@PageDirectorySerial And pd.SubDirectoryID=@SubDirectoryID Order By pd.Serial ASC)
	END

ELSE IF EXISTS (Select pd.[ID] From dbo.PageDirectory pd Where pd.Serial<@PageDirectorySerial And pd.SubDirectoryID=@SubDirectoryID)

	BEGIN
		SELECT @PageDirectoryNeighbourID=(Select Top 1 pd.[ID]  From dbo.PageDirectory pd Where pd.Serial<@PageDirectorySerial And pd.SubDirectoryID=@SubDirectoryID Order By pd.Serial DESC)
	END
ELSE

	BEGIN

		IF EXISTS (Select pd.[ID] From dbo.PageDirectory pd Where pd.[ID]>@PageDirectoryID And pd.SubDirectoryID=@SubDirectoryID)

			BEGIN
				SELECT @PageDirectoryNeighbourID=(Select Top 1 pd.[ID]  From dbo.PageDirectory pd Where pd.[ID]>@PageDirectoryID And pd.SubDirectoryID=@SubDirectoryID Order By pd.[ID] ASC)			
			END
		ELSE
			BEGIN
				SELECT @PageDirectoryNeighbourID=(Select Top 1 pd.[ID]  From dbo.PageDirectory pd Where pd.[ID]<@PageDirectoryID And pd.SubDirectoryID=@SubDirectoryID Order By pd.[ID] DESC)			
			END
	END

--================================
--== @SubDirectoryNeighbourID  Serial ٽģ ID ٽ ʱ Serial ܸû 1ǾҪ ID ٽģ
--================================
IF EXISTS (Select sd.[ID] From dbo.SubDirectory sd Where sd.Serial>@SubDirectorySerial And sd.MainDirectoryID=@MainDirectoryID)

	BEGIN
		SELECT @SubDirectoryNeighbourID=(Select Top 1 sd.[ID]  From dbo.SubDirectory sd Where sd.Serial>@SubDirectorySerial And sd.MainDirectoryID=@MainDirectoryID Order By sd.Serial ASC)
	END

ELSE IF EXISTS (Select sd.[ID] From dbo.SubDirectory sd Where sd.Serial<@SubDirectorySerial And sd.MainDirectoryID=@MainDirectoryID)

	BEGIN
		SELECT @SubDirectoryNeighbourID=(Select Top 1 sd.[ID]  From dbo.SubDirectory sd Where sd.Serial<@SubDirectorySerial And sd.MainDirectoryID=@MainDirectoryID Order By sd.Serial DESC)
	END

ELSE

	BEGIN

		IF EXISTS (Select sd.[ID] From dbo.SubDirectory sd Where sd.[ID]>@SubDirectoryID And sd.MainDirectoryID=@MainDirectoryID)

			BEGIN
				SELECT @SubDirectoryNeighbourID=(Select Top 1 sd.[ID]  From dbo.SubDirectory sd Where sd.[ID]>@SubDirectoryID And sd.MainDirectoryID=@MainDirectoryID Order By sd.[ID] ASC)			
			END
		ELSE
			BEGIN
				SELECT @SubDirectoryNeighbourID=(Select Top 1 sd.[ID]  From dbo.SubDirectory sd Where sd.[ID]<@SubDirectoryID And sd.MainDirectoryID=@MainDirectoryID Order By sd.[ID] DESC)			
			END
	END


--================================
--== @MainDirectoryNeighbourID  Serial ٽģ ID ٽ ʱ Serial ܸû 1ǾҪ ID ٽģ
--================================
IF EXISTS (Select md.[ID] From dbo.MainDirectory md Where md.Serial>@MainDirectorySerial)

	BEGIN
		SELECT @MainDirectoryNeighbourID=(Select Top 1 md.[ID]  From dbo.MainDirectory md Where md.Serial>@MainDirectorySerial Order By md.Serial ASC)
	END

ELSE IF EXISTS (Select md.[ID] From dbo.MainDirectory md Where md.Serial<@MainDirectorySerial)

	BEGIN
		SELECT @MainDirectoryNeighbourID=(Select Top 1 md.[ID]  From dbo.MainDirectory md Where md.Serial<@MainDirectorySerial Order By md.Serial DESC)
	END

ELSE

	BEGIN

		IF EXISTS (Select md.[ID] From dbo.MainDirectory md Where md.[ID]>@MainDirectoryID)

			BEGIN
				SELECT @MainDirectoryNeighbourID=(Select Top 1 md.[ID]  From dbo.MainDirectory md Where md.[ID]>@MainDirectoryID Order By md.[ID] ASC)			
			END
		ELSE
			BEGIN
				SELECT @MainDirectoryNeighbourID=(Select Top 1 md.[ID]  From dbo.MainDirectory md Where md.[ID]<@MainDirectoryID Order By md.[ID] DESC)			
			END
	END


--================================================
--== @KnowledgeDirectory=  PageDirectory |  SubDirectory | MainDirectory  ο
--================================================

IF @KnowledgeDirectory=N'PageDirectory'

	--================================================	
	--== PageDirectory 
	--================================================
	BEGIN

		--================================================
		--==ȿǲǹ¼ҹˣǵĻ SP PageDirectoryDelete еԼ¼ҹ˵ɾᱻֹҲͲ Neighbour ⣬ֱ  @PageDirectoryName Ϊ @Neighbour OUT
		--================================================
		
		DECLARE @PageDirectoryCount INT
		SELECT @PageDirectoryCount=COUNT(pd.[ID]) FROM dbo.PageDirectory pd WHERE pd.SubDirectoryID=@SubDirectoryID

		--================================================
		--==Ƿ¼ҹ
		--================================================
		IF @PageDirectoryCount<=1

			--================================================
			--==ǡ¼ҹ
			--================================================
			BEGIN
				SELECT @Neighbour=@PageDirectoryName
			END

		ELSE

			--================================================
			--==ǡ¼ҹ
			--================================================
			BEGIN

				--================================================
				--==ǷԼɾԼֱ
				--================================================
				IF @PageDirectoryID=@KnowledgeItem
	
					BEGIN
						--================================================
						--==ǡԼɾԼ ...
						--================================================			
						SELECT  @Neighbour=(Select pd.[Name] From dbo.PageDirectory pd Where pd.[ID]=@PageDirectoryNeighbourID)
					END

				ELSE
					BEGIN			
						--================================================
						--==ǡԼɾԼֱ @PageDirectoryName Ϊ @Neighbour OUT
						--================================================			
						SELECT @Neighbour=@PageDirectoryName
					END

			END


	END

ELSE IF  @KnowledgeDirectory=N'SubDirectory'


	--================================================	
	--== SubDirectory 
	--================================================
	BEGIN

		--================================================
		--==ȿǲǹ¼ҹˣǵĻ SP PageDirectoryDelete еԼ¼ҹ˵ɾᱻֹҲͲ Neighbour ⣬ֱ  @PageDirectoryName Ϊ @Neighbour OUT
		--================================================
		
		DECLARE @SubDirectoryCount INT
		SELECT @SubDirectoryCount=COUNT(sd.[ID]) FROM dbo.SubDirectory sd WHERE sd.MainDirectoryID=@MainDirectoryID

		--================================================
		--==Ƿ¼ҹ
		--================================================
		IF @SubDirectoryCount<=1

			--================================================
			--==ǡ¼ҹ
			--================================================
			BEGIN
				SELECT @Neighbour=@PageDirectoryName
			END

		ELSE

			--================================================
			--==ǡ¼ҹ
			--================================================
			BEGIN

				--================================================
				--==ǷԼɾԼֱ
				--================================================
				IF @SubDirectoryID=@KnowledgeItem
	
					BEGIN
						--================================================
						--==ǡԼɾԼ ...
						--================================================			
						SELECT  @Neighbour=(Select Top 1 pd.[Name] From dbo.PageDirectory pd Where pd.SubDirectoryID=@SubDirectoryNeighbourID Order By pd.Serial ASC)
					END

				ELSE
					BEGIN			
						--================================================
						--==ǡԼɾԼֱ @PageDirectoryName Ϊ @Neighbour OUT
						--================================================			
						SELECT @Neighbour=@PageDirectoryName
					END

			END


	END



ELSE


	--================================================	
	--== MainDirectory 
	--================================================
	BEGIN

		--================================================
		--==ȿǲǹ¼ҹˣǵĻ @Neighbour=""   ASPX ˿յ @Neighbour ϵͳ
		--================================================
		
		DECLARE @MainDirectoryCount INT
		SELECT @MainDirectoryCount=COUNT(md.[ID]) FROM dbo.MainDirectory md

		--================================================
		--==Ƿ¼ҹ
		--================================================
		IF @MainDirectoryCount<=1

			--================================================
			--=ǡ¼ҹ
			--================================================
			BEGIN
				SELECT @Neighbour=N''
			END

		ELSE

			--================================================
			--=ǡ¼ҹ
			--================================================
			BEGIN

				--================================================
				--==ǷԼɾԼֱ
				--================================================
				IF @MainDirectoryID=@KnowledgeItem
	
					BEGIN
						--================================================
						--==ǡԼɾԼ ...
						--================================================			
						SELECT  @Neighbour=(Select Top 1 pd.[Name] From dbo.PageDirectory pd Where pd.SubDirectoryID=(select top 1 sd.[ID] from dbo.SubDirectory sd where sd.MainDirectoryID=@MainDirectoryNeighbourID order by sd.[ID] ASC) Order By pd.Serial ASC)
					END

				ELSE
					BEGIN			
						--================================================
						--==ǡԼɾԼֱ @PageDirectoryName Ϊ @Neighbour OUT
						--================================================			
						SELECT @Neighbour=@PageDirectoryName
					END

			END


	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PageDirectoryGetNeighbour]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.AdminEditorUserAuthentication    Script Date: 2009-7-10 19:03:42 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AdminEditorUserAuthentication]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[AdminEditorUserAuthentication]
GO

--====================================================================================
--==鵱ǰûǷԶ Knowledge  Levelб棬޸
--== Users еûɫ Admin, ChiefEditor Ȩ趨 Column Editor ܽб޸
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.AdminEditorUserAuthentication

@User NVARCHAR(50),				--ָû

@KnowledgeDirectory nvarchar(100),		--յ Knowledge  Ŀĵ Directory
@KnowledgeItem int,				--յ Knowledge  Ŀ ID

@oPass INT OUT				--ͨ 1 0

AS


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=========================================
--==
--=========================================
DECLARE @EditorPermission INT
SET @EditorPermission=0

--=========================================
--== @User  NULLǿΪ N''
--=========================================
IF @User IS NULL

BEGIN
	SET @User=N''
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=========================================
--==һ
--=========================================
DECLARE @MainDirectoryEditor NVARCHAR(4000)
DECLARE @SubDirectoryEditor NVARCHAR(4000)
DECLARE @PageDirectoryEditor NVARCHAR(4000)
DECLARE @KnowledgeEditor NVARCHAR(4000)

DECLARE @UserInEditorList INT

DECLARE @MainDirectoryID INT
DECLARE @SubDirectoryID INT
DECLARE @PageDirectoryID INT

--=========================================
--== MainDirectory
--=========================================

IF @KnowledgeDirectory=N'MainDirectory'

	BEGIN

		--=========================================
		--==ȡǰ MainDirectory ༭б
		--=========================================
		SELECT @MainDirectoryEditor=ISNULL(CONVERT(NVARCHAR(4000),md.Editor),N'') FROM dbo.MainDirectory md WHERE md.[ID]=@KnowledgeItem

		--=========================================
		--==ǰ @User Ƿڱ༭б
		--=========================================
		SET @UserInEditorList=0
		
		--IF  (@User In (select Element from dbo.UDF_PublicSplit(@MainDirectoryEditor,N',')))  And  (@User<>N'') 
		IF  (@User In (select [User] from dbo.UDF_UserResolve(@MainDirectoryEditor)))  And  (@User<>N'') 
		BEGIN
			SET @UserInEditorList=1
		END

		--=========================================
		--== Admin  ChiefEditor  Knowledge Ȩ༭беˣԱ༭
		--=========================================
		IF (dbo.UDF_UserAdmin(@User)=1)  OR  (dbo.UDF_UserChiefEditor(@User)=1)  OR  (@UserInEditorList=1)

		BEGIN
			SET @EditorPermission=1
		END

	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=========================================
--== SubDirectory
--=========================================

ELSE IF @KnowledgeDirectory=N'SubDirectory'

	BEGIN

		--=========================================
		--== SubDirectoryID  MainDirectoryID
		--=========================================
		SELECT @MainDirectoryID=sd.MainDirectoryID FROM dbo.SubDirectory sd WHERE sd.[ID]=@KnowledgeItem

		--=========================================
		--==ȡǰ MainDirectory, SubDirectory ༭б
		--=========================================
		SELECT @MainDirectoryEditor=ISNULL(CONVERT(NVARCHAR(4000),md.Editor),N'') FROM dbo.MainDirectory md WHERE md.[ID]=@MainDirectoryID
		SELECT @SubDirectoryEditor=ISNULL(CONVERT(NVARCHAR(4000),sd.Editor),N'') FROM dbo.SubDirectory sd WHERE sd.[ID]=@KnowledgeItem

		--=========================================
		--==ǰ @User Ƿڱ༭б (һ)
		--=========================================
		SET @UserInEditorList=0

		--IF  (@User In (select Element from dbo.UDF_PublicSplit(@MainDirectoryEditor,N',')))  And  (@User<>N'') 
		IF  (@User In (select [User] from dbo.UDF_UserResolve(@MainDirectoryEditor)))  And  (@User<>N'') 
		BEGIN
			SET @UserInEditorList=1
		END
		
		--IF  (@User In (select Element from dbo.UDF_PublicSplit(@SubDirectoryEditor,N',')))  And  (@User<>N'') 
		IF  (@User In (select [User] from dbo.UDF_UserResolve(@SubDirectoryEditor)))  And  (@User<>N'') 
		BEGIN
			SET @UserInEditorList=1
		END

		--=========================================
		--== Admin  ChiefEditor  Knowledge Ȩ༭беˣԱ༭
		--=========================================
		IF (dbo.UDF_UserAdmin(@User)=1)  OR  (dbo.UDF_UserChiefEditor(@User)=1)  OR  (@UserInEditorList=1)

		BEGIN
			SET @EditorPermission=1
		END

	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=========================================
--== PageDirectory
--=========================================

ELSE IF @KnowledgeDirectory=N'PageDirectory'

	BEGIN
		--=========================================
		--== PageDirectoryID  SubDirectoryID  MainDirectoryID
		--=========================================
		SELECT @SubDirectoryID=pd.SubDirectoryID FROM dbo.PageDirectory pd WHERE pd.[ID]=@KnowledgeItem
		SELECT @MainDirectoryID=sd.MainDirectoryID FROM dbo.SubDirectory sd WHERE sd.[ID]=@SubDirectoryID

		--=========================================
		--==ȡǰ MainDirectory, SubDirectory, PageDirectory  ༭б
		--=========================================
		SELECT @MainDirectoryEditor=ISNULL(CONVERT(NVARCHAR(4000),md.Editor),N'') FROM dbo.MainDirectory md WHERE md.[ID]=@MainDirectoryID
		SELECT @SubDirectoryEditor=ISNULL(CONVERT(NVARCHAR(4000),sd.Editor),N'') FROM dbo.SubDirectory sd WHERE sd.[ID]=@SubDirectoryID
		SELECT @PageDirectoryEditor=ISNULL(CONVERT(NVARCHAR(4000),pd.Editor),N'') FROM dbo.PageDirectory pd WHERE pd.[ID]=@KnowledgeItem

		--=========================================
		--==ǰ @User Ƿڱ༭б (һ)
		--=========================================
		SET @UserInEditorList=0

		--IF  (@User In (select Element from dbo.UDF_PublicSplit(@MainDirectoryEditor,N',')))  And  (@User<>N'') 
		IF  (@User In (select [User] from dbo.UDF_UserResolve(@MainDirectoryEditor)))  And  (@User<>N'') 
		BEGIN
			SET @UserInEditorList=1
		END
		
		--IF  (@User In (select Element from dbo.UDF_PublicSplit(@SubDirectoryEditor,N',')))  And  (@User<>N'') 
		IF  (@User In (select [User] from dbo.UDF_UserResolve(@SubDirectoryEditor)))  And  (@User<>N'') 
		BEGIN
			SET @UserInEditorList=1
		END

		--IF  (@User In (select Element from dbo.UDF_PublicSplit(@PageDirectoryEditor,N',')))  And  (@User<>N'') 
		IF  (@User In (select [User] from dbo.UDF_UserResolve(@PageDirectoryEditor)))  And  (@User<>N'') 
		BEGIN
			SET @UserInEditorList=1
		END

		--=========================================
		--== Admin  ChiefEditor  Knowledge Ȩ༭беˣԱ༭
		--=========================================
		IF (dbo.UDF_UserAdmin(@User)=1)  OR  (dbo.UDF_UserChiefEditor(@User)=1)  OR  (@UserInEditorList=1)

		BEGIN
			SET @EditorPermission=1
		END

	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=========================================
--== Knowledge
--=========================================

ELSE IF @KnowledgeDirectory=N'Knowledge'

	BEGIN

		--=========================================
		--==KnowledgeID  PageDirectoryID, SubDirectoryID  MainDirectoryID
		--=========================================
		SELECT @PageDirectoryID=now.PageDirectoryID FROM dbo.Knowledge now WHERE now.[ID]=@KnowledgeItem
		SELECT @SubDirectoryID=pd.SubDirectoryID FROM dbo.PageDirectory pd WHERE pd.[ID]=@PageDirectoryID
		SELECT @MainDirectoryID=sd.MainDirectoryID FROM dbo.SubDirectory sd WHERE sd.[ID]=@SubDirectoryID

		--=========================================
		--==ȡǰ MainDirectory, SubDirectory, PageDirectory, Knowledge  ༭б
		--=========================================
		SELECT @MainDirectoryEditor=ISNULL(CONVERT(NVARCHAR(4000),md.Editor),N'') FROM dbo.MainDirectory md WHERE md.[ID]=@MainDirectoryID
		SELECT @SubDirectoryEditor=ISNULL(CONVERT(NVARCHAR(4000),sd.Editor),N'') FROM dbo.SubDirectory sd WHERE sd.[ID]=@SubDirectoryID
		SELECT @PageDirectoryEditor=ISNULL(CONVERT(NVARCHAR(4000),pd.Editor),N'') FROM dbo.PageDirectory pd WHERE pd.[ID]=@PageDirectoryID
		SELECT @KnowledgeEditor=ISNULL(CONVERT(NVARCHAR(4000),now.Editor),N'') FROM dbo.Knowledge now WHERE now.[ID]=@KnowledgeItem

		--=========================================
		--==ǰ @User Ƿڱ༭б (һ)
		--=========================================
		SET @UserInEditorList=0

		--IF  (@User In (select Element from dbo.UDF_PublicSplit(@MainDirectoryEditor,N',')))  And  (@User<>N'') 
		IF  (@User In (select [User] from dbo.UDF_UserResolve(@MainDirectoryEditor)))  And  (@User<>N'') 
		BEGIN
			SET @UserInEditorList=1
		END
		
		--IF  (@User In (select Element from dbo.UDF_PublicSplit(@SubDirectoryEditor,N',')))  And  (@User<>N'') 
		IF  (@User In (select [User] from dbo.UDF_UserResolve(@SubDirectoryEditor)))  And  (@User<>N'') 
		BEGIN
			SET @UserInEditorList=1
		END

		--IF  (@User In (select Element from dbo.UDF_PublicSplit(@PageDirectoryEditor,N',')))  And  (@User<>N'') 
		IF  (@User In (select [User] from dbo.UDF_UserResolve(@PageDirectoryEditor)))  And  (@User<>N'') 
		BEGIN
			SET @UserInEditorList=1
		END

		--IF  (@User In (select Element from dbo.UDF_PublicSplit(@KnowledgeEditor,N',')))  And  (@User<>N'') 
		IF  (@User In (select [User] from dbo.UDF_UserResolve(@KnowledgeEditor)))  And  (@User<>N'') 
		BEGIN
			SET @UserInEditorList=1
		END

		--=========================================
		--== Admin  ChiefEditor  Knowledge Ȩ༭беˣԱ༭
		--=========================================
		IF (dbo.UDF_UserAdmin(@User)=1)  OR  (dbo.UDF_UserChiefEditor(@User)=1)  OR  (@UserInEditorList=1)

		BEGIN
			SET @EditorPermission=1
		END

	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=========================================
--==ǿַҪ  Admin  Chief Editor Ȩ
--=========================================

ELSE IF @KnowledgeDirectory=N''

	BEGIN
		--=========================================
		--== Admin  ChiefEditor
		--=========================================
		IF (dbo.UDF_UserAdmin(@User)=1)  OR  (dbo.UDF_UserChiefEditor(@User)=1) 

		BEGIN
			SET @EditorPermission=1
		END

	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=========================================
--==  һʹ  N'AdminEditor' ʱͳжϣҪ Admin  Chief Editor  Column Editor ɣ
--=========================================

ELSE

	BEGIN
		--=========================================
		--== Admin  ChiefEditor,  ColumnEditor
		--=========================================
		IF (dbo.UDF_UserAdmin(@User)=1)  OR  (dbo.UDF_UserChiefEditor(@User)=1)  OR  (dbo.UDF_UserColumnEditor(@User)=1)

		BEGIN
			SET @EditorPermission=1
		END

	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=========================================
--==
--=========================================

IF @EditorPermission=0

BEGIN
	SET @oPass=0
	RAISERROR(N'ܱǸվԱӵӦȨ޵ı༭иò',16,1)
	RETURN
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[AdminEditorUserAuthentication]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserForgetPassword    Script Date: 2009-7-10 19:03:43 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserForgetPassword]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserForgetPassword]
GO

--====================================================================================
--ûṩû䣬֤ûǷһ£һ£򷵻ûӦ Result 
-- oResult  0  -1û   -2˻ƥ䣩
-- oPassword û
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserForgetPassword

@Name nvarchar(50),				--û룩
@EmailAddress nvarchar(100),			--ַ

@oAdminEmailAddress nvarchar(100) OUT,	--ϵͳԱ Email ַ
@oPassword nvarchar(200) OUT,		--루ܵģ
@oResult int OUT				--Ƿͨ


AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==û | 
--======================================================

IF NOT EXISTS (Select us.[ID] From dbo.Users us Where us.[Name]=@Name)

	BEGIN 
		--======================================================
		--==û
		--======================================================
		SELECT @oResult=-1
		SELECT @oPassword=N''
		SELECT @oAdminEmailAddress=N''
		RETURN
	END	

ELSE

	BEGIN 
		--======================================================
		--==û
		--======================================================
		IF NOT EXISTS (Select us.[ID] From dbo.Users us Where us.[Name]=@Name And us.[Email]=@EmailAddress)

			BEGIN
				--======================================================
				--==ַƥ
				--======================================================
				SELECT @oResult=-2
				SELECT @oPassword=N''
				SELECT @oAdminEmailAddress=N''
				RETURN
			END
		ELSE
			BEGIN
				--======================================================
				--==ַƥ
				--======================================================
				SELECT @oResult=0
				SELECT @oPassword=ISNULL(us.[Password],N'') From dbo.[Users] us Where us.[Name]=@Name
				SELECT @oAdminEmailAddress=ISNULL(us.[Email],N'') From dbo.[Users] us Where dbo.UDF_UserAdmin(us.[Name])=1
				RETURN
			END
	END	


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserForgetPassword]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserChangePassword    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserChangePassword]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserChangePassword]
GO

--====================================================================================
--û޸룺ûǷڣǷȷǷһ
-- oResult  0ɹ  -1û   -2벻ƥ  -3벻һ£
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserChangePassword

@Name nvarchar(50),					--û룩

@OldEncryptedPassword nvarchar(200),			--루ܵģ
@NewEncryptedPassword nvarchar(200),			--
@NewEncryptedPasswordRetype nvarchar(200),		--루ڶ룩

@NewPassword nvarchar(200),				--
@NewPasswordRetype nvarchar(200),			--루ڶ룩

@oResult int OUT					--Ƿͨ


AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==û | 
--======================================================

IF NOT EXISTS (Select us.[ID] From dbo.Users us Where us.[Name]=@Name)

	BEGIN 
		--======================================================
		--==û
		--======================================================
		SELECT @oResult=-1
		RETURN
	END	

ELSE

	BEGIN 
		--======================================================
		--==û
		--======================================================
		IF NOT EXISTS (Select us.[ID] From dbo.Users us Where us.[Name]=@Name And us.[Password]=@OldEncryptedPassword)

			BEGIN
				--======================================================
				--==벻ƥ
				--======================================================
				SELECT @oResult=-2
				RETURN
			END
		ELSE
			BEGIN
				--======================================================
				--==ƥ
				--======================================================
				IF (@NewEncryptedPassword<>@NewEncryptedPasswordRetype) OR (@NewPassword=N'') OR (@NewPasswordRetype=N'')
				
					BEGIN
						--======================================================
						--==벻һ
						--======================================================
						SELECT @oResult=-3
						RETURN
					END

				ELSE

					BEGIN
						--======================================================
						--==һ£ͬʱҲƥ䣻ͬʱûҲڣ
						--======================================================
						UPDATE dbo.[Users] SET [Password]=@NewEncryptedPassword WHERE [Name]=@Name
						SELECT @oResult=0
						RETURN
					END

			END
	END	


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserChangePassword]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PublicGetBannerContentLayerByMainDirectoryName    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PublicGetBannerContentLayerByMainDirectoryName]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PublicGetBannerContentLayerByMainDirectoryName]
GO

--====================================================================================
--==ݸ MainDirectoryName  MainDirectory ضӦ BannerContentLayer
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.PublicGetBannerContentLayerByMainDirectoryName

@MainDirectoryName nvarchar(100),				-- MainDirectory ָ MainDirectoryName
@BannerContentLayer nvarchar(4000) OUT			--ز, BannerContentLayer

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--==
--================================================
SELECT @BannerContentLayer=md.BannerContentLayer FROM dbo.MainDirectory md WHERE md.[Name]=@MainDirectoryName


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PublicGetBannerContentLayerByMainDirectoryName]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.PublicSetBannerContentLayerByMainDirectoryName    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PublicSetBannerContentLayerByMainDirectoryName]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[PublicSetBannerContentLayerByMainDirectoryName]
GO

--====================================================================================
--==ݸ MainDirectoryName  BannerContentLayer д MainDirectory 
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.PublicSetBannerContentLayerByMainDirectoryName

@MainDirectoryName nvarchar(100),				-- MainDirectory ָ MainDirectoryName
@BannerContentLayer nvarchar(4000)				-- MainDirectory  BannerContentLayer

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--================================================
--==
--================================================
UPDATE dbo.MainDirectory SET BannerContentLayer=@BannerContentLayer WHERE [Name]=@MainDirectoryName


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[PublicSetBannerContentLayerByMainDirectoryName]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ResourcesSave    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ResourcesSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ResourcesSave]
GO

--====================================================================================
--== Resources
--==Tag رλã1. Resources  "," ַ    2. ResourcesTags  һ Tag  ResourcesID Ӧ Resources 
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.ResourcesSave

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@LogicalPath nvarchar(2000),		--ǰ Resource ߼·
@Tag nvarchar(1000)			--ǰ Resource ıǩ "," ǩ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼ ֻҪ Admin ChiefEditor, ColumnEditor Ȩ޶ԣ
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'AdminEditor',0,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ǰ @LogicalPath Ӧ Resources ¼ ID
--=====================================================
DECLARE @ResourcesID INT
SELECT @ResourcesID=res.[ID] FROM dbo.Resources res WHERE res.LogicalPath=@LogicalPath

--=====================================================
--==ɾ Resources  пѾ˵ĸļļ¼
--=====================================================
DELETE FROM dbo.Resources WHERE [ID]=@ResourcesID

--=====================================================
--==ɾ ResourcesTags  жӦ Tag ¼
--=====================================================
DELETE FROM dbo.ResourcesTags WHERE ResourcesID=@ResourcesID

--=====================================================
--== Resources ¼
--=====================================================
INSERT INTO dbo.Resources(LogicalPath,Tag) VALUES(@LogicalPath,@Tag)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--==ոձϢ ID
--======================================================
DECLARE @oNewID INT
SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--== Tag ǡ, бֽ⣬ ResourcesTags 
--======================================================
INSERT INTO dbo.ResourcesTags(ResourcesID,Tag) SELECT @oNewID, Element FROM dbo.UDF_PublicSplit(@Tag,N',')

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ResourcesSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ResourcesSelect    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ResourcesSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ResourcesSelect]
GO

--====================================================================================
--==ݸ  LogicalPath ضӦ Tag
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.ResourcesSelect

--@User nvarchar(50),					-- aspx ˴ݹû

@LogicalPath nvarchar(2000)				--ָ Resource ߼·

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼ ֻҪ Admin ChiefEditor, ColumnEditor Ȩ޶ԣ
--=====================================================
--DECLARE @oPass INT
--EXEC dbo.AdminEditorUserAuthentication @User,N'AdminEditor',0,@oPass OUT
--IF @oPass=0 BEGIN RETURN END
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ Resources 
--====================================================================================
SELECT
	res.[ID] AS [ID],
	res.LogicalPath AS LogicalPath,
	res.Tag AS Tag

FROM dbo.Resources res

WHERE res.LogicalPath=@LogicalPath


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ResourcesSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ResourcesQuery    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ResourcesQuery]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ResourcesQuery]
GO

--====================================================================================
--== Tag  Resources
--== Tag
--==ҳƣȽѯһṹһһPagingIDıPagingID@PageSize@CurrentPageѡȡǰҳļ¼ҳΪһ׷λ
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.ResourcesQuery

@User nvarchar(50),			-- aspx ˴ݹû

@Tag nvarchar(1000),			-- Tag

@PageSize INT,			--ҳƣÿҳĳߴ
@CurrentPage INT			--ҳƣǰҳ

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @Tag де * ͨ %
--=====================================================
SET @Tag=REPLACE(@Tag,N'*',N'%')

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼ ֻҪ Admin ChiefEditor, ColumnEditor Ȩ޶ԣ
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'AdminEditor',0,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ҳ 
--=====================================================
SET NOCOUNT ON

DECLARE @Paging TABLE
( 
	PagingID int identity(1,1), 
	[ID] int, 
	LogicalPath nvarchar(2000) COLLATE database_default, 
	Tag nvarchar(1000) COLLATE database_default 
 ) 

--=====================================================
--==ҳ 
--=====================================================
INSERT INTO @Paging 

SELECT   DISTINCT

	res.[ID] as [ID], 
	res.LogicalPath as LogicalPath, 
	res.Tag as Tag 

FROM dbo.Resources res
LEFT JOIN dbo.ResourcesTags rest ON rest.ResourcesID=res.[ID]

WHERE rest.Tag LIKE (N'%' + @Tag + N'%')

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
		
--=====================================================
--== @Paging лȡ
--=====================================================
Declare @FirstRecord int
Declare @LastRecord int
		
set @FirstRecord=(@CurrentPage - 1) * @PageSize	--ǰҳһ¼ǰ
set @LastRecord=(@CurrentPage * @PageSize + 1)	--ǰҳһ¼
		
--=====================================================
--==ܼ¼ÿҳļ¼Ceiling()õΪҳ ע⣺count(*)   @PageSize Ϊ INTõ INTԣҪת Decimal(18,2)
--=====================================================

SELECT 
	*,
	PageCount=CEILING (Convert(decimal(18,2),(select count(*) from @Paging)) / Convert(decimal(18,2),@PageSize)) 

FROM @Paging

WHERE PagingID>@FirstRecord AND PagingID<@LastRecord


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

RETURN

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ResourcesQuery]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ResourcesDelete    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ResourcesDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ResourcesDelete]
GO

--====================================================================================
--==ɾ Resources
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.ResourcesDelete

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@LogicalPath nvarchar(2000)		--ǰ Resource ߼·

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼ ֻҪ Admin ChiefEditor, ColumnEditor Ȩ޶ԣ
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'AdminEditor',0,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ɾ Resources еļ¼ Resources  Triggerɾ Resources ¼󣬻֮ɾ ResourcesTags жӦ¼
--=====================================================
DELETE FROM dbo.Resources WHERE LogicalPath=@LogicalPath

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ResourcesDelete]  TO [public]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ResourcesMove    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ResourcesMove]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ResourcesMove]
GO

--====================================================================================
--==ƶ Resources
--== Resources  OldLogicalPath Ӧļ¼޸Ϊ NewLogicalPath
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.ResourcesMove

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@OldLogicalPath nvarchar(2000),		-- Resource ¼߼·
@NewLogicalPath nvarchar(2000)		-- Resource ¼߼·


AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼ ֻҪ Admin ChiefEditor, ColumnEditor Ȩ޶ԣ
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'AdminEditor',0,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== LogicalPath ޸Ϊ LogicalPath
--=====================================================
UPDATE dbo.Resources SET LogicalPath=@NewLogicalPath WHERE LogicalPath=@OldLogicalPath

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ResourcesMove]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.ResourcesCopy    Script Date: 2009-7-10 19:03:40 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ResourcesCopy]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[ResourcesCopy]
GO

--====================================================================================
--== Resources
--==Tag رλã1. Resources  "," ַ    2. ResourcesTags  һ Tag  ResourcesID Ӧ Resources 
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.ResourcesCopy

@User nvarchar(50),			-- ASPX ˴ݹĵǰû

@SourceLogicalPath nvarchar(2000),	--Դ Resources
@TargetLogicalPath nvarchar(2000)	--Ŀ Resources

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼ ֻҪ Admin ChiefEditor, ColumnEditor Ȩ޶ԣ
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminEditorUserAuthentication @User,N'AdminEditor',0,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== Resources
--=====================================================
DECLARE @Tag nvarchar(1000)
SELECT @Tag=res.Tag FROM dbo.Resources res WHERE res.LogicalPath=@SourceLogicalPath
INSERT INTO dbo.Resources (LogicalPath, Tag) VALUES (@TargetLogicalPath,@Tag)

--======================================================
--==ոձϢ ID
--======================================================
DECLARE @oNewID INT
SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Seesion ڵı

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--======================================================
--== Tag ǡ, бֽ⣬ ResourcesTags 
--======================================================
INSERT INTO dbo.ResourcesTags(ResourcesID,Tag) SELECT @oNewID, Element FROM dbo.UDF_PublicSplit(@Tag,N',')

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[ResourcesCopy]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserGroupSave    Script Date: 2009-7-10 19:03:44 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserGroupSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserGroupSave]
GO

--====================================================================================
--== UserGroup
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserGroupSave

@User nvarchar(50),				-- ASPX ˴ݹĵǰ¼ûȨޣ

@GroupName nvarchar(50),			--ǰ
@RegisterDefault int,				--ǷעûĬ飨1/2

@oNewID int OUT				--¼¼ ID 

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--=====================================================
--==
--=====================================================
SET @GroupName=LTRIM(RTRIM(@GroupName))

--=====================================================
--==
--=====================================================
IF (@GroupName=N'') OR (@GroupName IS NULL)
BEGIN
	RAISERROR(N'Ϊա',16,1)
	RETURN
END

--=====================================================
--==Ѿڣٴ
--=====================================================
IF EXISTS (Select ug.[ID] from dbo.UserGroup ug Where ug.GroupName=@GroupName)
BEGIN
	RAISERROR(N'Ѿڡ',16,1)
	RETURN
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== UserGroup
--=====================================================
INSERT INTO dbo.UserGroup (GroupName,RegisterDefault) VALUES (@GroupName,@RegisterDefault)

--======================================================
--==ոձϢ ID
--======================================================
SELECT @oNewID=SCOPE_IDENTITY()	--ڸոɵ¼¼IDSCOPE_IDENTITY() ζŽڱ Session ڵı


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserGroupSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserGroupsSave    Script Date: 2009-7-10 19:03:44 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserGroupsSave]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserGroupsSave]
GO

--====================================================================================
--== UserGroups
--==Ϊʲô UserGroups  UserGroupSave ֱʹ "abc,eft,xyz" һַ GroupMembers ֱӱ棿ΪҪûӴΣʹַ GroupMembers бõ UDF_PublicSplit() ú 4000 ַơ
--== SP ܱã˱뱣֤ܡ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserGroupsSave

@User nvarchar(50),				-- ASPX ˴ݹĵǰ¼ûȨޣ

@UserGroupID int,				-- ID
@GroupMember nvarchar(50)			--Ա

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== UserGroups ¼ ע⣬ SP ܱã˱뱣֤ܣˣﲢ鵱 UserGroup ǷѾǰ Member෴ UserGroupSave  UserGroups е Member һȣ
--=====================================================
INSERT INTO dbo.UserGroups (UserGroupID,[User]) VALUES (@UserGroupID,@GroupMember)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserGroupsSave]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserGroupModify    Script Date: 2009-7-10 19:03:44 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserGroupModify]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserGroupModify]
GO

--====================================================================================
--==޸ UserGroup
--==޸ UserGroup Ҫ UserGroups ¶Ӧ Member ȫɾΪ SP UserGroupModify  ĳϣȻŴ SP UserGroupsSave Աµ Member ˣɵ Member 趨ɾӦõġ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserGroupModify

@User nvarchar(50),				-- ASPX ˴ݹĵǰ¼ûȨޣ

@ID int,						--޸ ID
@GroupName nvarchar(50),			--
@RegisterDefault int				--ǷעûĬ飨1/2

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ûȨ޼
--=====================================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--=====================================================
--==
--=====================================================
SET @GroupName=LTRIM(RTRIM(@GroupName))

--=====================================================
--==
--=====================================================
IF (@GroupName=N'') OR (@GroupName IS NULL)
BEGIN
	RAISERROR(N'Ϊա',16,1)
	RETURN
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==޸ UserGroup
--=====================================================
UPDATE dbo.UserGroup SET GroupName=@GroupName, RegisterDefault=@RegisterDefault  WHERE [ID]=@ID

--=====================================================
--==ɾӦ UserGroups ¼  UserGroupSave cs Уٴαµ Group Ա
--=====================================================
DELETE FROM dbo.UserGroups WHERE UserGroupID=@ID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserGroupModify]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserGroupSelect    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserGroupSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserGroupSelect]
GO

--====================================================================================
--== UserGroup ¼
--====================================================================================
--==Ȩ 2001-2009 CMS www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserGroupSelect

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

SELECT 
	[ID],
	GroupName,
	RegisterDefault

FROM dbo.UserGroup ORDER BY GroupName

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserGroupSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserGroupsSelect    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserGroupsSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserGroupsSelect]
GO

--====================================================================================
--== UserGroups صǰ UserGroup Ӧ  members
--====================================================================================
--==Ȩ 2001-2009 CMS www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserGroupsSelect

@UserGroupID int				--ָ UserGroup

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ UserForums 
--====================================================================================
SELECT 
	ugs.[ID] AS [ID],
	ugs.UserGroupID AS  UserGroupID,
	ugs.[User] AS GroupMember

FROM dbo.UserGroups ugs

WHERE ugs.UserGroupID=@UserGroupID


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserGroupsSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserGroupDelete    Script Date: 2009-7-10 19:03:44 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserGroupDelete]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserGroupDelete]
GO

--====================================================================================
--==ɾû  UserGroup ʹ Triggerɾ UserGroup ԶɾӦ UserGroups еļ¼
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserGroupDelete

@User nvarchar(50),		-- ASPX ˴ݹĵǰû

@ID int				--ɾ UserGroup  ID

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--========================================
--==Ȩ޼
--========================================
DECLARE @oPass INT
EXEC dbo.AdminUserAuthentication @User,@oPass OUT
IF @oPass=0 BEGIN RETURN END

--========================================
--==ɾ UserGroup
--========================================
DELETE FROM dbo.UserGroup WHERE [ID]=@ID

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserGroupDelete]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserGroupQuery    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserGroupQuery]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserGroupQuery]
GO

--====================================================================================
--== SP ãݸѯû
--==мΪΪNULL, 
--==ҳƣȽѯһṹһһPagingIDıPagingID@PageSize@CurrentPageѡȡǰҳļ¼ҳΪһ׷λ
--====================================================================================
--==Ȩ 2001-2009 CMS CMS http://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserGroupQuery

@GroupName nvarchar(50),	--û

@PageSize INT,		--ҳƣÿҳĳߴ
@CurrentPage INT,		--ҳƣǰҳ
@OrderBy nvarchar(100),	--
@OrderByOrder nvarchar(10)	--ʽ ASC, DESC

AS

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==ݴڴڶ̬ĵطʹã
--=====================================================
SET @GroupName=dbo.UDF_PublicStringEscape(@GroupName)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==Ȩ޼飨Ҫ
--=====================================================

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==̬ѯпܳ Unicode ַ磺FirstName=''nvarchar()ܳ4000̬ҪӵһԶΪ nvarchar(4000)
--==ö̬SQLͳ(ע⣺ҪSet Nocount on ¼Ӱ)
--==WhereӾ
--=====================================================
DECLARE @DynSQL NVARCHAR(4000)      
DECLARE @DynWhere NVARCHAR(4000) 

--=====================================================
--==ҳ 
--=====================================================
SET @DynSQL=N' SET NOCOUNT ON   '
SET @DynSQL=@DynSQL + N' Declare @Paging table '
SET @DynSQL=@DynSQL + N' ( '
SET @DynSQL=@DynSQL + N' PagingID int identity(1,1), '
SET @DynSQL=@DynSQL + N' [ID] INT, '
SET @DynSQL=@DynSQL + N' [GroupName] nvarchar(50) COLLATE database_default,  '
SET @DynSQL=@DynSQL + N' RegisterDefault INT, '
SET @DynSQL=@DynSQL + N' GroupMembersCount INT '	
SET @DynSQL=@DynSQL + N' ) '

--=====================================================
--==ҳ 
--=====================================================
SET @DynSQL=@DynSQL + N' Insert into @Paging '

SET @DynSQL=@DynSQL + N' Select distinct   '  
SET @DynSQL=@DynSQL + N' ug.[ID] as [ID], '
SET @DynSQL=@DynSQL + N' ug.GroupName as GroupName, '
SET @DynSQL=@DynSQL + N' ug.RegisterDefault as RegisterDefault, '
SET @DynSQL=@DynSQL + N' (select COUNT(ugs.[ID]) from dbo.UserGroups ugs where ugs.UserGroupID=ug.[ID]) as GroupMembersCount '

SET @DynSQL=@DynSQL + N' From dbo.UserGroup ug '

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==WHERE 1=1 ر涯̬ WHERE Ӿе AND 
--=====================================================
SET @DynSQL=@DynSQL + N' WHERE 1=1 '

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==̬ WHERE Ӿ
--=====================================================
SET @DynWhere=N''

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--==@GroupName ͳ0߿ַʾͳ: ֧ģͳ :
--=====================================================
IF @GroupName IS NOT NULL   
BEGIN
	--=====================================================
	--==˵ո (Ϊ @GroupName ΪNULL,Խ˳ոĲŵ)
	--=====================================================
	SET @GroupName=RTRIM(LTRIM(@GroupName)) 
	IF @GroupName<>N'' 
	BEGIN
		If CHARINDEX (N'*' , @GroupName) >=1
		Begin   set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(ug.[GroupName])) like ''' + REPLACE(@GroupName,N'*',N'%') + N'''' End
		Else
		Begin   set @DynWhere=@DynWhere + N' and RTRIM(LTRIM(ug.[GroupName]))=''' + @GroupName + N'''' End
	END
END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--===========================================================
--==ǰ SQL  ̬ WHERE Ӿ @DynSQL Ѿ WHERE 1=1
--===========================================================
SET @DynSQL=@DynSQL + @DynWhere

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== Order By Ӿ
--== OrderBy='' ʹȱʡ order by Name ASC
--=====================================================
SET @OrderBy=LTRIM(RTRIM(@OrderBy))
SET @OrderByOrder=LTRIM(RTRIM(@OrderByOrder))

IF LEN(@OrderBy)=0 OR  LEN(@OrderByOrder)=0

	BEGIN
	SET @DynSQL=@DynSQL + N' order by [GroupName] ASC '
	END
ELSE
	BEGIN
	SET @DynSQL=@DynSQL + N' order by [' + @OrderBy + N'] ' + @OrderByOrder
	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--=====================================================
--== @Paging лȡ
--===================================================== 
Declare @FirstRecord int
Declare @LastRecord int

set @FirstRecord=(@CurrentPage - 1) * @PageSize	--ǰҳһ¼ǰ
set @LastRecord=(@CurrentPage * @PageSize + 1)	--ǰҳһ¼

--=====================================================
--==ܼ¼ÿҳļ¼Ceiling()õΪҳ ע⣺count(*)   @PageSize Ϊ INTõ INTԣҪת Decimal(18,2)
--=====================================================
set @DynSQL=@DynSQL + N' Select *,PageCount=CEILING (Convert(decimal(18,2),(select count(*) from @Paging)) / Convert(decimal(18,2),' + Convert(nvarchar(20),@PageSize) + N')) From @Paging Where PagingID>' + Convert(nvarchar(20),@FirstRecord) + N' and PagingID<' + Convert(nvarchar(20),@LastRecord)

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--============================================
--==鶯̬ĳȣԳϵͳ
--============================================
DECLARE @oPassDynSQL INT
EXEC dbo.PublicDynSQLLengthCheck @DynSQL,@oPassDynSQL OUT
IF @oPassDynSQL=0 BEGIN RETURN END

--=====================================================
--==ִж̬ SQL 䣬 ʼͳ
--=====================================================
EXEC(@DynSQL)
RETURN

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserGroupQuery]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.UserUserGroupsSelect    Script Date: 2009-7-10 19:03:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[UserUserGroupsSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[UserUserGroupsSelect]
GO

--====================================================================================
--== UserGroups ָû UserGroupID  GroupName ָû飩
--====================================================================================
--==Ȩ 2001-2009 CMS www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.UserUserGroupsSelect

@UserName  nvarchar(50)				--ָû

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡ UserGroups 
--====================================================================================
SELECT DISTINCT

	ugs.UserGroupID AS  UserGroupID,
	ug.GroupName AS GroupName

FROM dbo.UserGroups ugs
INNER JOIN dbo.UserGroup ug ON ug.[ID]=ugs.UserGroupID

WHERE ugs.[User]=@UserName


--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[UserUserGroupsSelect]  TO [public]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

/****** Object:  Stored Procedure dbo.KnowledgePermissionSelect    Script Date: 2009-7-10 19:03:39 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[KnowledgePermissionSelect]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[KnowledgePermissionSelect]
GO

--====================================================================================
--==ݸ KnowledgeDirectory MainDirectory, SubDirectory, PageDirectory, Knowledge Ӧ Editor, DedicatedTo, CommentsPermission
--====================================================================================
--==Ȩ 2001-2009 CMS CMShttp://www.zhuzhicms.com
--==޸ 2009-04-12
--====================================================================================

CREATE PROCEDURE dbo.KnowledgePermissionSelect

@User NVARCHAR(50),				-- ASPX ݹû

@KnowledgeDirectory NVARCHAR(100),		--ǰ KnowledgeDirectory
@Parent INT,					--ǰ Knowledge  Parent ID

@Culture NVARCHAR(50),			--ָĻ

@CurrentPage INT				--ҳƣǰҳ

AS
  
--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

--====================================================================================
--==ѡͬ KnowledgeDirectory 
--====================================================================================
IF @KnowledgeDirectory=N'MainDirectory'

	--============================================================
	--==MainDirectory
	--============================================================
	BEGIN
		SELECT

			md.[ID] AS [ID],
			md.Serial AS Serial,
			mdc.Hidden AS Hidden,
			md.Editor AS Editor,
			md.DedicatedTo AS DedicatedTo,
			md.CommentsPermission AS CommentsPermission,
			mdc.Title AS Title

		FROM dbo.MainDirectory md
		LEFT JOIN dbo.MainDirectoryContent mdc ON mdc.MainDirectoryID=md.[ID] AND mdc.Culture=@Culture		

		ORDER BY Serial
	END

ELSE IF @KnowledgeDirectory=N'SubDirectory'

	--============================================================
	--==SubDirectory
	--============================================================
	BEGIN
		SELECT

			sd.[ID] AS [ID],
			sd.Serial AS Serial,
			sdc.Hidden AS Hidden,
			sd.Overview AS Overview,
			sd.Editor AS Editor,
			sd.DedicatedTo AS DedicatedTo,
			sd.CommentsPermission AS CommentsPermission,
			sdc.Title AS Title

		FROM dbo.SubDirectory sd
		LEFT JOIN dbo.SubDirectoryContent sdc ON sdc.SubDirectoryID=sd.[ID] AND sdc.Culture=@Culture

		WHERE sd.[MainDirectoryID]=@Parent

		ORDER BY Serial
	END

ELSE IF @KnowledgeDirectory=N'PageDirectory'

	--============================================================
	--==PageDirectory
	--============================================================
	BEGIN
		SELECT

			pd.[ID] AS [ID],
			pd.Serial AS Serial,
			pdc.Hidden AS Hidden,
			pd.Overview AS Overview,
			pd.Editor AS Editor,
			pd.DedicatedTo AS DedicatedTo,
			pd.CommentsPermission AS CommentsPermission,
			pdc.Title AS Title

		FROM dbo.PageDirectory pd
		LEFT JOIN dbo.PageDirectoryContent pdc ON pdc.PageDirectoryID=pd.[ID] AND pdc.Culture=@Culture

		WHERE pd.[SubDirectoryID]=@Parent

		ORDER BY Serial
	END

ELSE 

	--============================================================
	--==Knowledge
	--============================================================
	BEGIN

		--====================================================================================
		--==õǰ PageDirectory   Type ֵ 1ǺĽʹ Order By Serial ͨݣ Serial 򣩣  2  Order By UpdateTime ʱԷʱ
		--====================================================================================
		DECLARE @Type INT
		SELECT @Type=Type FROM dbo.PageDirectory WHERE [ID]=@Parent

		--====================================================================================
		--== @PageDirectoryName  ڵ PageDirectory ¼е PageSize ֵ
		--====================================================================================
		DECLARE @PageSize INT
		SELECT TOP 1 @PageSize=PageSize FROM dbo.PageDirectory WHERE [ID]=@Parent

		--====================================================================================
		--==ҳ
		--====================================================================================
		DECLARE @Paging TABLE 
		( 
			PagingID int identity(1,1), 
			[ID] int, 
			Serial int,
			Hidden nvarchar(50) COLLATE database_default,
			UpdateTime datetime,
			Author nvarchar(50) COLLATE database_default, 		
			Editor ntext COLLATE database_default, 
			DedicatedTo ntext COLLATE database_default, 
			CommentsPermission ntext COLLATE database_default,			
			Title nvarchar(2000) COLLATE database_default,
			PageDirectoryName nvarchar(100) COLLATE database_default
		) 

		--====================================================================================
		--== @Type ͬ Serial  UpdateTime 
		--====================================================================================
		IF @Type=1

		BEGIN
			INSERT INTO @Paging
	
			SELECT
				now.[ID] AS [ID],
				now.Serial AS Serial,
				nowc.Hidden AS Hidden,
				now.UpdateTime AS UpdateTime,
				now.Author AS Author,
				now.Editor AS Editor,
				now.DedicatedTo AS DedicatedTo,
				now.CommentsPermission AS CommentsPermission,
				nowc.Title AS Title,
				pd.[Name] AS PageDirectoryName
	
			FROM dbo.Knowledge now
			LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
			LEFT JOIN dbo.PageDirectory pd ON pd.[ID]=now.PageDirectoryID
			WHERE now.[PageDirectoryID]=@Parent

			ORDER BY Serial
		END

		ELSE

		BEGIN
			INSERT INTO @Paging
	
			SELECT
				now.[ID] AS [ID],
				now.Serial AS Serial,
				nowc.Hidden AS Hidden,
				now.UpdateTime AS UpdateTime,
				now.Author AS Author,
				now.Editor AS Editor,
				now.DedicatedTo AS DedicatedTo,
				now.CommentsPermission AS CommentsPermission,
				nowc.Title AS Title,
				pd.[Name] AS PageDirectoryName
	
			FROM dbo.Knowledge now
			LEFT JOIN dbo.KnowledgeContent nowc ON nowc.KnowledgeID=now.[ID] AND nowc.Culture=@Culture
			LEFT JOIN dbo.PageDirectory pd ON pd.[ID]=now.PageDirectoryID
			WHERE now.[PageDirectoryID]=@Parent

			ORDER BY UpdateTime DESC
		END

		--=====================================================
		--== @Paging лȡǰҳһһ¼λ
		--=====================================================
		DECLARE @FirstRecord int
		DECLARE @LastRecord int
				
		SET @FirstRecord=(@CurrentPage - 1) * @PageSize
		SET @LastRecord=(@CurrentPage * @PageSize + 1)
		
		--=====================================================
		--==صǰҳеļ¼
		--==ܼ¼ÿҳļ¼Ceiling()õΪҳ ע⣺count(*)   @PageSize Ϊ INTõ INTԣҪת Decimal(18,2)
		--=====================================================
		SELECT 	
			*,
			PageCount=CEILING(Convert(decimal(18,2),(select count(*) from @Paging)) / Convert(decimal(18,2),@PageSize)) 
		
		FROM @Paging 
		WHERE PagingID>@FirstRecord AND PagingID<@LastRecord

	END

--ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

GRANT  EXECUTE  ON [dbo].[KnowledgePermissionSelect]  TO [public]
GO

