|
注:
Xinsoft CMS 0.9版 是一个正在开发中的强大的内容管理系统。 支持无限级文章频道、专题,支持 Blog ,支持用户私有文章频道与站点公有文章频道之间的映射,初步支持Wiki,允许一篇文章存在多个版本和一个主版本,允许在一台服务器上基于一套CMS架设多个站点,支持对管理员的权限设置按照 GACL 列表进行,权限可向下继承和从中间截断。不仅仅支持树状拓扑的信息结构,也支持网状拓扑的信息结点。文字、附件、多媒体文件、RichText、定义值,通过一个统一的信息节点结构去处理、归类。
其中体现了一些本人对知识管理、社会化软件的设计理念。
面向高端应用,初显知识管理理念端倪
以下代码涉及到的是管理员权限设置。
这些代码可以作为学习触发器、存储过程、用户自定义函数的绝佳教程:)
表:
CREATE TABLE [Administrator] ( [uid] [int] NOT NULL , [uname] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL , [pwd] [char] (32) COLLATE Chinese_PRC_CI_AS NULL , [echoname] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NULL , [Flag] [int] NULL CONSTRAINT [DF_Administrator_Flag] DEFAULT (1), [comment] [nvarchar] (250) COLLATE Chinese_PRC_CI_AS NULL , [varchar] (250) COLLATE Chinese_PRC_CI_AS NULL , [RegTime] [datetime] NULL CONSTRAINT [DF_Administrator_RegTime] DEFAULT (getdate()), [LogTime] [datetime] NULL , [LogCount] [int] NULL CONSTRAINT [DF_Administrator_LogCount] DEFAULT (0), CONSTRAINT [PK_Administrator] PRIMARY KEY CLUSTERED ( [uid] ) ON [PRIMARY] ) ON [PRIMARY] GO
CREATE TABLE [XcmsOpt] ( [ID] [int] NOT NULL , [schemaname] [varchar] (40) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_XcmsOpt_schemaname] DEFAULT ('catalog'), [cname] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NULL , CONSTRAINT [PK_XcmsOpt] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] ) ON [PRIMARY] GO
CREATE TABLE [XcmsOptItem] ( [OptID] [int] NULL , [ID] [int] NOT NULL , [MaskPos] [tinyint] NULL CONSTRAINT [DF_XcmsOptItem_MaskPos] DEFAULT (1), [cname] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NULL , CONSTRAINT [PK_XcmsOptItem] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] ) ON [PRIMARY] GO
存储过程:
SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO
CREATE PROCEDURE dbo.Proc_Administrator_AddUser @uname varchar(20), @upass varchar(250), @echoname nvarchar(40), @email varchar(250), @comment nvarchar(250), @flag int AS Begin Declare @pwd char(32) Declare @N int Declare @uid int set @uname=Lower( @uname ) select @N=Count(uid) from Administrator where uname=@uname
If @N<1 select @N=Count(uid) from Administrator where echoname=@echoname
If @N<1 Begin Select top 1 @N=uid from Administrator order by uid desc If @@RowCount>0 set @N=@N+1 Else set @N=1
set @uid=@N
End Else set @uid=0
If @uid>0 Begin Set @pwd=dbo.Xmd5( @upass ) insert into Administrator ( [uid] , [uname] , [pwd] , [echoname] , [flag] , [comment] , ) values( @uid , @uname , @pwd , @echoname , @flag , @comment , @email ) End
Return( @uid ) End GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS OFF GO
CREATE Proc Proc_Administrator_CheckLogin
@uname varchar(20) , @upass varchar(80)
, @uid int output , @echoname nvarchar(40) output , @flag int output
As Begin
-- Return: -- -1 Uname Not Found -- 0 Uname is Locked -- -2 Upass is Error -- 1 Success
Declare @N int Declare @pwd char(32)
Set @uname=dbo.Secu_InputFilter_LevA ( @uname ) Select @uid=uid , @pwd=pwd , @echoname=echoname , @flag=flag from Administrator where uname=@uname If @uid is null Set @N=-1 Else If @flag<1 Set @N=0 Else Set @N=1
If @N=1 If dbo.Xmd5( @upass ) = @pwd Set @N=1 Else Set @N=-2
If @N=1 Update Administrator set LogTime=getdate() , LogCount=LogCount+1 where uid=@uid
Return( @N ) End GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO
CREATE PROCEDURE Proc_Administrator_RegTestCode @uid int , @RegTestCode char(32) AS Begin Declare @uname varchar(20) Declare @Comment nvarchar(250) Declare @Flag int
select @uname=uname , @Comment=Comment , @Flag=Flag from Administrator where uid=@uid
If @Flag=0 If dbo.Xmd5( 'uname=' + @uname + ';RegTestCode=' + @RegTestCode + ';' ) = @Comment Begin Set @Flag=1 Update Administrator set Comment='' where uid=@uid End Else Set @Flag=0 Update Administrator set Flag=@Flag where uid=@uid Return( @Flag ) End GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
[1] [2] [3] 下一页
|