% '/////////////////////////////////////////////////////////////////////////////// '// Z-Blog '// 作 者: 朱煊(zx.asd) '// 版权所有: RainbowSoft Studio '// 技术支持: rainbowsoft@163.com '// 程序名称: '// 程序版本: '// 单元名称: c_system_base.asp '// 开始时间: 2005.02.11 '// 最后修改: '// 备 注: '/////////////////////////////////////////////////////////////////////////////// '定义全局变量 Dim objConn Dim BlogTitle Dim BlogUser Dim BlogPath BlogPath=Server.MapPath("c_system_base.asp") BlogPath=Left(BlogPath,Len(BlogPath)-Len("c_system_base.asp")) Dim StarTime Dim EndTime StarTime = Timer() Dim Categorys() Dim Users() Dim Tags() Dim KeyWords '********************************************************* ' 目的: System 初始化 '********************************************************* Sub System_Initialize() On Error Resume Next If OpenConnect()=False Then If Err.Number<>0 Then Err.Clear Call ShowError(4) End If Set BlogUser =New TUser BlogUser.Verify() Call GetCategory() Call GetUser() Call GetTags() Call GetKeyWords() Call LoadGlobeCache If Err.Number<>0 Then Call ShowError(10) End Sub '********************************************************* '********************************************************* ' 目的: System 释放 '********************************************************* Sub System_Terminate() Call CloseConnect() End Sub '********************************************************* '********************************************************* ' 目的: 数据库连接 '********************************************************* Function OpenConnect() GetReallyDirectory() '判定是否为子目录调用 Dim strDbPath strDbPath=BlogPath & ZC_DATABASE_PATH Set objConn = Server.CreateObject("ADODB.Connection") objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDbPath OpenConnect=True End Function '********************************************************* '********************************************************* ' 目的: DB Disable Connect '********************************************************* Function CloseConnect() objConn.Close Set objConn=Nothing CloseConnect=True End Function '********************************************************* '********************************************************* ' 目的: 时间计长 '********************************************************* Function RunTime() EndTime=Timer() RunTime = CLng(FormatNumber((EndTime-StarTime)*1000,3)) End Function '********************************************************* '********************************************************* ' 目的: 分类读取 '********************************************************* Function GetCategory() Dim i,j,k,l Dim aryAllData Dim arySingleData() Erase Categorys Dim objRS Set objRS=objConn.Execute("SELECT TOP 1 [cate_ID] FROM [blog_Category] ORDER BY [cate_ID] DESC") If (Not objRS.bof) And (Not objRS.eof) Then i=objRS("cate_ID") ReDim Categorys(i) End If objRS.Close Set objRS=Nothing Set objRS=objConn.Execute("SELECT [cate_ID],[cate_Name],[cate_Intro],[cate_Order],[cate_Count] FROM [blog_Category] ORDER BY [cate_ID] ASC") If (Not objRS.bof) And (Not objRS.eof) Then aryAllData=objRS.GetRows(objRS.RecordCount) objRS.Close Set objRS=Nothing k=UBound(aryAllData,1) l=UBound(aryAllData,2) For i=0 To l Set Categorys(aryAllData(0,i))=New TCategory Categorys(aryAllData(0,i)).LoadInfoByArray(Array(aryAllData(0,i),aryAllData(1,i),aryAllData(2,i),aryAllData(3,i),aryAllData(4,i))) Next End If GetCategory=True End Function '********************************************************* '********************************************************* ' 目的: 用户读取 '********************************************************* Function GetUser() Dim i,j,k,l Dim aryAllData Dim arySingleData() Erase Users Dim objRS Set objRS=objConn.Execute("SELECT TOP 1 [mem_ID] FROM [blog_Member] ORDER BY [mem_ID] DESC") If (Not objRS.bof) And (Not objRS.eof) Then i=objRS("mem_ID") ReDim Users(i) End If objRS.Close Set objRS=Nothing Set objRS=objConn.Execute("SELECT [mem_ID],[mem_Name],[mem_Level],[mem_Password],[mem_Email],[mem_HomePage],[mem_PostLogs],[mem_Intro] FROM [blog_Member] ORDER BY [mem_ID] ASC") If (Not objRS.bof) And (Not objRS.eof) Then aryAllData=objRS.GetRows(objRS.RecordCount) objRS.Close Set objRS=Nothing k=UBound(aryAllData,1) l=UBound(aryAllData,2) For i=0 To l Set Users(aryAllData(0,i))=New TUser Users(aryAllData(0,i)).LoadInfoByArray(Array(aryAllData(0,i),aryAllData(1,i),aryAllData(2,i),aryAllData(3,i),aryAllData(4,i),aryAllData(5,i),aryAllData(6,i),aryAllData(7,i))) Next End If Getuser=True End Function '********************************************************* '********************************************************* ' 目的: Tags读取 '********************************************************* Function GetTags() Dim i,j,k,l Dim aryAllData Dim arySingleData() Erase Tags Dim objRS Set objRS=objConn.Execute("SELECT TOP 1 [tag_ID] FROM [blog_Tag] ORDER BY [tag_ID] DESC") If (Not objRS.bof) And (Not objRS.eof) Then i=objRS("tag_ID") ReDim Tags(i) End If Set objRS=objConn.Execute("SELECT [tag_ID],[tag_Name],[tag_Intro],[tag_Order],[tag_Count] FROM [blog_Tag] ORDER BY [tag_ID] ASC") If (Not objRS.bof) And (Not objRS.eof) Then aryAllData=objRS.GetRows(objRS.RecordCount) objRS.Close Set objRS=Nothing k=UBound(aryAllData,1) l=UBound(aryAllData,2) For i=0 To l Set Tags(aryAllData(0,i))=New TTag Tags(aryAllData(0,i)).LoadInfoByArray(Array(aryAllData(0,i),aryAllData(1,i),aryAllData(2,i),aryAllData(3,i),aryAllData(4,i))) Next End If GetTags=True End Function '********************************************************* '********************************************************* ' 目的: KeyWords读取 '********************************************************* Function GetKeyWords() 'Dim objRS 'Set objRS=objConn.Execute("SELECT [key_ID],[key_Name],[key_URL] FROM [blog_Keyword] ORDER BY [key_ID] ASC") 'If (Not objRS.bof) And (Not objRS.eof) Then ' KeyWords=objRS.GetRows 'End If 'objRS.Close 'Set objRS=Nothing GetKeyWords=True End Function '********************************************************* '********************************************************* ' 目的: 读取权限 ' 备注: 权限最高为1 最低为5 不是则非法 ' "Root"一定只能为1 ' 权限配置方式可以变通 '********************************************************* Function GetRights(strAction) Select Case strAction Case "Root" GetRights=1 Case "login" GetRights=5 Case "verify" GetRights=5 Case "logout" GetRights=5 Case "admin" GetRights=4 Case "cmt","CommentRev" GetRights=5 Case "tb" GetRights=5 Case "vrs" GetRights=5 Case "rss" GetRights=5 Case "gettburl" GetRights=5 Case "ArticleMng" GetRights=3 Case "ArticleEdt" GetRights=3 Case "ArticlePst" GetRights=3 Case "ArticleDel" GetRights=3 Case "ArticleBud" GetRights=3 Case "CategoryMng" GetRights=2 Case "CategoryEdt" GetRights=2 Case "CategoryPst" GetRights=2 Case "CategoryDel" GetRights=2 Case "TagMng" GetRights=1 Case "TagEdt" GetRights=1 Case "TagPst" GetRights=1 Case "TagDel" GetRights=1 'Case "KeyWordMng" ' GetRights=1 'Case "KeyWordEdt" ' GetRights=1 'Case "KeyWordPst" ' GetRights=1 'Case "KeyWordDel" ' GetRights=1 Case "GuestBookMng" GetRights=2 Case "CommentMng" GetRights=4 Case "CommentDel" GetRights=4 Case "CommentEdt" GetRights=4 Case "CommentSav" GetRights=4 Case "CommentDelBatch" GetRights=4 Case "TrackBackMng" GetRights=3 Case "TrackBackDel" GetRights=3 Case "TrackBackDelBatch" GetRights=3 Case "TrackBackSnd" GetRights=3 Case "UserMng" GetRights=4 Case "UserEdt" GetRights=4 Case "UserDel" GetRights=1 Case "UserCrt" GetRights=1 Case "BlogReBuild" GetRights=3 Case "FileReBuild" GetRights=1 Case "AskFileReBuild" GetRights=1 Case "FileMng" GetRights=2 Case "FileSnd" GetRights=2 Case "FileUpload" GetRights=2 Case "FileDel" GetRights=2 Case "FileDelBatch" GetRights=2 Case "Search" GetRights=5 'Case "BlogMng" ' GetRights=4 Case "SettingMng" GetRights=1 Case "SettingSav" GetRights=1 Case "PlugInMng" GetRights=4 Case "SiteInfo" GetRights=4 Case "SiteFileMng" GetRights=1 Case "SiteFileEdt" GetRights=1 'Case "SiteFileFnd" ' GetRights=1 Case "SiteFilePst" GetRights=1 Case "SiteFileDel" GetRights=1 Case "Update" GetRights=1 Case Else Call ShowError(1) End Select End Function '********************************************************* '********************************************************* ' 目的: 检查权限 '********************************************************* Function CheckRights(strAction) If BlogUser.Level>GetRights(strAction) Then CheckRights=False Else CheckRights=True End If End Function '********************************************************* '********************************************************* ' 目的: Make Calendar '********************************************************* Function MakeCalendar(dtmYearMonth) Dim strCalendar Dim y Dim m Dim d Dim firw Dim lasw Dim ny Dim nm Dim i Dim j Dim k Dim b Dim s Dim t Call CheckParameter(dtmYearMonth,"dtm",Date()) y=year(dtmYearMonth) m=month(dtmYearMonth) ny=y nm=m+1 If m=12 Then ny=ny+1:nm=1 firw=Weekday(Cdate(y&"-"&m&"-1")) For i=28 to 32 If IsDate(y&"-"&m&"-"&i) Then lasw=Weekday(Cdate(y&"-"&m&"-"&i)) Else Exit For End If Next d=i-1 k=1 If firw>5 Then b=42 Else b=35 If (d=28) And (firw=1) Then b=28 If (firw>5) And (d<31) Then b=35 '////////////////////////////////////////////////////////// ' 逻辑处理 Dim aryDateLink(32) Dim aryDateID(32) Dim aryDateArticle(32) Dim objRS Set objRS=Server.CreateObject("ADODB.Recordset") objRS.CursorType = adOpenKeyset objRS.LockType = adLockReadOnly objRS.ActiveConnection=objConn objRS.Source="" objRS.Open("select [log_ID],[log_CateID],[log_AuthorID],[log_Level],[log_PostTime],[log_Url],[log_Istop] from [blog_Article] where ([log_Level]>2) And ([log_PostTime] BETWEEN #"&y&"-"&m&"-1# AND #"&ny&"-"&nm&"-1#)") If (Not objRS.bof) And (Not objRS.eof) Then For i=1 To objRS.RecordCount j=CInt(Day(CDate(objRS("log_PostTime")))) aryDateLink(j)=True aryDateID(j)=objRS("log_ID") Set aryDateArticle(j)=New TArticle aryDateArticle(j).LoadInfobyArray Array(objRS("log_ID"),"",objRS("log_CateID"),"","","",objRS("log_Level"),objRS("log_AuthorID"),objRS("log_PostTime"),"","","",objRS("log_Url"),"") objRS.MoveNext If objRS.eof Then Exit For Next End If objRS.Close Set objRS=Nothing '////////////////////////////////////////////////////////// s="catalog.asp?date="&y&"-"&(m-1) t="catalog.asp?date="&y&"-"&(m+1) If m=1 Then s="catalog.asp?date="&(y-1)&"-12" If m=12 Then t="catalog.asp?date="&(y+1)&"-1" strCalendar=strCalendar & "
"&ZVA_Week_Abbr(1)&"
"&ZVA_Week_Abbr(2)&"
"&ZVA_Week_Abbr(3)&"
"&ZVA_Week_Abbr(4)&"
"&ZVA_Week_Abbr(5)&"
"&ZVA_Week_Abbr(6)&"
"&ZVA_Week_Abbr(7)&"
" j=0 For i=1 to b If (j=>firw-1) and (k="&(k)&"
" End If k=k+1 Else strCalendar=strCalendar & "" End If j=j+1 Next strCalendar=strCalendar & "" & ZC_MSG266 & "
" End If If bolOperateSuccess=False Then Response.Write "" & ZC_MSG267 & "
" End If Application.Lock Application(ZC_BLOG_CLSID & "SIGNAL_OPERATESUCCESS")=Empty Application.UnLock End If If IsEmpty(bolRebuildIndex)=False Then If bolRebuildIndex=True Then Response.Write "" & ZC_MSG268 & "
" End If End If If IsEmpty(bolRebuildFiles)=False Then If bolRebuildFiles=True Then Response.Write "" & ZC_MSG269 & "
" End If End If End Function '********************************************************* '********************************************************* ' 目的: 解析ZC_CUSTOM_DIRECTORY_REGEX '********************************************************* Function ParseCustomDirectory(strRegex,strPost,strCategory,strUser,strYear,strMonth,strDay,strID,strAlias) On Error Resume Next Dim s s=strRegex s=Replace(s,"{%post%}",strPost) s=Replace(s,"{%category%}",strCategory) s=Replace(s,"{%user%}",strUser) s=Replace(s,"{%year%}",strYear) s=Replace(s,"{%month%}",Right("0" & strMonth,2)) s=Replace(s,"{%day%}",Right("0" & strDay,2)) s=Replace(s,"{%id%}",strID) s=Replace(s,"{%alias%}",strAlias) ParseCustomDirectory=s Err.Clear End Function '********************************************************* '********************************************************* ' 目的: 按照CustomDirectory指示创建相应的目录 '********************************************************* Sub CreatDirectoryByCustomDirectory(strCustomDirectory) On Error Resume Next Dim s Dim t Dim i Dim fso Set fso = CreateObject("Scripting.FileSystemObject") s=BlogPath t=Split(strCustomDirectory,"/") For i=LBound(t) To UBound(t) If (IsEmpty(t(i))=False) And (t(i)<>"") Then s=s & t(i) & "\" If (fso.FolderExists(fldr)=False) Then Call fso.CreateFolder(s) End If End If Next Set fso = Nothing Err.Clear End Sub '********************************************************* %>