c_system_base.asp
上传用户:saigedz
上传日期:2019-10-14
资源大小:997k
文件大小:75k
源码类别:

中间件编程

开发平台:

HTML/CSS

  1. <%
  2. '///////////////////////////////////////////////////////////////////////////////
  3. '//              Z-Blog
  4. '// 作    者:    朱煊(zx.asd)
  5. '// 版权所有:    RainbowSoft Studio
  6. '// 技术支持:    rainbowsoft@163.com
  7. '// 程序名称:    
  8. '// 程序版本:    
  9. '// 单元名称:    c_system_base.asp
  10. '// 开始时间:    2005.02.11
  11. '// 最后修改:    
  12. '// 备    注:    
  13. '///////////////////////////////////////////////////////////////////////////////
  14. '定义全局变量
  15. Dim objConn
  16. Dim BlogTitle
  17. Dim BlogUser
  18. Dim BlogPath
  19. BlogPath=Server.MapPath("c_system_base.asp")
  20. BlogPath=Left(BlogPath,Len(BlogPath)-Len("c_system_base.asp"))
  21. Dim StarTime
  22. Dim EndTime
  23. StarTime = Timer()
  24. Dim Categorys()
  25. Dim Users()
  26. Dim Tags()
  27. Dim KeyWords
  28. Dim PluginName()
  29. Dim PluginActiveFunction()
  30. ReDim PluginName(0)
  31. ReDim PluginActiveFunction(0)
  32. Dim TemplateTagsName
  33. Dim TemplateTagsValue
  34. Dim TemplatesName
  35. Dim TemplatesContent
  36. '*********************************************************
  37. ' 目的:    System 初始化
  38. '*********************************************************
  39. Sub System_Initialize()
  40. On Error Resume Next
  41. Call ActivePlugin()
  42. 'plugin node
  43. For Each sAction_Plugin_System_Initialize in Action_Plugin_System_Initialize
  44. If Not IsEmpty(sAction_Plugin_System_Initialize) Then Call Execute(sAction_Plugin_System_Initialize)
  45. If bAction_Plugin_System_Initialize=True Then Exit Sub
  46. Next
  47. If OpenConnect()=False Then
  48. If Err.Number<>0 Then Err.Clear
  49. Call ShowError(4)
  50. End If
  51. Set BlogUser =New TUser
  52. BlogUser.Verify()
  53. Call GetCategory()
  54. Call GetUser()
  55. Call GetTags()
  56. Call GetKeyWords()
  57. Call LoadGlobeCache()
  58. Dim bolRebuildIndex
  59. Application.Lock
  60. bolRebuildIndex=Application(ZC_BLOG_CLSID & "SIGNAL_REBUILDINDEX")
  61. Application.UnLock
  62. If IsEmpty(bolRebuildIndex)=False Then
  63. If bolRebuildIndex=True Then
  64. Call MakeBlogReBuild_Core()
  65. End If
  66. End If
  67. Dim strTemplateModified
  68. Application.Lock
  69. strTemplateModified=Application(ZC_BLOG_CLSID & "TEMPLATEMODIFIED")
  70. Application.UnLock
  71. If IsEmpty(strTemplateModified)=False Then
  72. If LCase(CStr(strTemplateModified))<>LCase(CStr(CheckTemplateModified)) Then
  73. Call ClearGlobeCache()
  74. Call LoadGlobeCache()
  75. End If
  76. End If
  77. 'plugin node
  78. For Each sAction_Plugin_System_Initialize_Succeed in Action_Plugin_System_Initialize_Succeed
  79. If Not IsEmpty(sAction_Plugin_System_Initialize_Succeed) Then Call Execute(sAction_Plugin_System_Initialize_Succeed)
  80. If bAction_Plugin_System_Initialize_Succeed=True Then Exit Sub
  81. Next
  82. 'If Err.Number<>0 Then Call ShowError(10)
  83. Err.Clear
  84. End Sub
  85. '*********************************************************
  86. '*********************************************************
  87. ' 目的:    System 释放
  88. '*********************************************************
  89. Sub System_Terminate()
  90. 'plugin node
  91. For Each sAction_Plugin_System_Terminate in Action_Plugin_System_Terminate
  92. If Not IsEmpty(sAction_Plugin_System_Terminate) Then Call Execute(sAction_Plugin_System_Terminate)
  93. If bAction_Plugin_System_Terminate=True Then Exit Sub
  94. Next
  95. Call CloseConnect()
  96. End Sub
  97. '*********************************************************
  98. '*********************************************************
  99. ' 目的:    System 初始化 WithOutDB
  100. '*********************************************************
  101. Sub System_Initialize_WithOutDB()
  102. On Error Resume Next
  103. Call ActivePlugin()
  104. 'plugin node
  105. For Each sAction_Plugin_System_Initialize_WithOutDB in Action_Plugin_System_Initialize_WithOutDB
  106. If Not IsEmpty(sAction_Plugin_System_Initialize_WithOutDB) Then Call Execute(sAction_Plugin_System_Initialize_WithOutDB)
  107. If bAction_Plugin_System_Initialize_WithOutDB=True Then Exit Sub
  108. Next
  109. Call LoadGlobeCache()
  110. Dim strTemplateModified
  111. Application.Lock
  112. strTemplateModified=Application(ZC_BLOG_CLSID & "TEMPLATEMODIFIED")
  113. Application.UnLock
  114. If IsEmpty(strTemplateModified)=False Then
  115. If LCase(CStr(strTemplateModified))<>LCase(CStr(CheckTemplateModified)) Then
  116. Call ClearGlobeCache()
  117. Call LoadGlobeCache()
  118. End If
  119. End If
  120. 'plugin node
  121. For Each sAction_Plugin_System_Initialize_WithOutDB_Succeed in Action_Plugin_System_Initialize_WithOutDB_Succeed
  122. If Not IsEmpty(sAction_Plugin_System_Initialize_WithOutDB_Succeed) Then Call Execute(sAction_Plugin_System_Initialize_WithOutDB_Succeed)
  123. If bAction_Plugin_System_Initialize_WithOutDB_Succeed=True Then Exit Sub
  124. Next
  125. Err.Clear
  126. End Sub
  127. '*********************************************************
  128. '*********************************************************
  129. ' 目的:    System 释放 WithOutDB
  130. '*********************************************************
  131. Sub System_Terminate_WithOutDB()
  132. 'plugin node
  133. For Each sAction_Plugin_System_Terminate_WithOutDB in Action_Plugin_System_Terminate_WithOutDB
  134. If Not IsEmpty(sAction_Plugin_System_Terminate_WithOutDB) Then Call Execute(sAction_Plugin_System_Terminate_WithOutDB)
  135. If bAction_Plugin_System_Terminate_WithOutDB=True Then Exit Sub
  136. Next
  137. End Sub
  138. '*********************************************************
  139. '*********************************************************
  140. ' 目的:    数据库连接
  141. '*********************************************************
  142. Function OpenConnect()
  143. GetReallyDirectory()
  144. '判定是否为子目录调用
  145. Dim strDbPath
  146. strDbPath=BlogPath & ZC_DATABASE_PATH
  147. Set objConn = Server.CreateObject("ADODB.Connection")
  148. objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDbPath
  149. OpenConnect=True
  150. End Function
  151. '*********************************************************
  152. '*********************************************************
  153. ' 目的:    DB Disable Connect
  154. '*********************************************************
  155. Function CloseConnect()
  156. objConn.Close
  157. Set objConn=Nothing
  158. CloseConnect=True
  159. End Function
  160. '*********************************************************
  161. '*********************************************************
  162. ' 目的:    时间计长
  163. '*********************************************************
  164. Function RunTime()
  165. EndTime=Timer()
  166. RunTime = CLng(FormatNumber((EndTime-StarTime)*1000,3))
  167. End Function
  168. '*********************************************************
  169. '*********************************************************
  170. ' 目的:    分类读取
  171. '*********************************************************
  172. Function GetCategory()
  173. Dim i,j,k,l
  174. Dim aryAllData
  175. Dim arySingleData()
  176. Erase Categorys
  177. Dim objRS
  178. Set objRS=objConn.Execute("SELECT TOP 1 [cate_ID] FROM [blog_Category] ORDER BY [cate_ID] DESC")
  179. If (Not objRS.bof) And (Not objRS.eof) Then
  180. i=objRS("cate_ID")
  181. ReDim Categorys(i)
  182. End If
  183. objRS.Close
  184. Set objRS=Nothing
  185. Set objRS=objConn.Execute("SELECT [cate_ID],[cate_Name],[cate_Intro],[cate_Order],[cate_Count] FROM [blog_Category] ORDER BY [cate_ID] ASC")
  186. If (Not objRS.bof) And (Not objRS.eof) Then
  187. aryAllData=objRS.GetRows(objRS.RecordCount)
  188. objRS.Close
  189. Set objRS=Nothing
  190. k=UBound(aryAllData,1)
  191. l=UBound(aryAllData,2)
  192. For i=0 To l
  193. Set Categorys(aryAllData(0,i))=New TCategory
  194. Categorys(aryAllData(0,i)).LoadInfoByArray(Array(aryAllData(0,i),aryAllData(1,i),aryAllData(2,i),aryAllData(3,i),aryAllData(4,i)))
  195. Next
  196. End If
  197. GetCategory=True
  198. End Function
  199. '*********************************************************
  200. '*********************************************************
  201. ' 目的:    用户读取
  202. '*********************************************************
  203. Function GetUser()
  204. Dim i,j,k,l
  205. Dim aryAllData
  206. Dim arySingleData()
  207. Erase Users
  208. Dim objRS
  209. Set objRS=objConn.Execute("SELECT TOP 1 [mem_ID] FROM [blog_Member] ORDER BY [mem_ID] DESC")
  210. If (Not objRS.bof) And (Not objRS.eof) Then
  211. i=objRS("mem_ID")
  212. ReDim Users(i)
  213. End If
  214. objRS.Close
  215. Set objRS=Nothing
  216. 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")
  217. If (Not objRS.bof) And (Not objRS.eof) Then
  218. aryAllData=objRS.GetRows(objRS.RecordCount)
  219. objRS.Close
  220. Set objRS=Nothing
  221. k=UBound(aryAllData,1)
  222. l=UBound(aryAllData,2)
  223. For i=0 To l
  224. Set Users(aryAllData(0,i))=New TUser
  225. 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)))
  226. Next
  227. End If
  228. Getuser=True
  229. End Function
  230. '*********************************************************
  231. '*********************************************************
  232. ' 目的:    Tags读取
  233. '*********************************************************
  234. Function GetTags()
  235. Dim i,j,k,l
  236. Dim aryAllData
  237. Dim arySingleData()
  238. Erase Tags
  239. Dim objRS
  240. Set objRS=objConn.Execute("SELECT TOP 1 [tag_ID] FROM [blog_Tag] ORDER BY [tag_ID] DESC")
  241. If (Not objRS.bof) And (Not objRS.eof) Then
  242. i=objRS("tag_ID")
  243. ReDim Tags(i)
  244. End If
  245. Set objRS=objConn.Execute("SELECT [tag_ID],[tag_Name],[tag_Intro],[tag_Order],[tag_Count] FROM [blog_Tag] ORDER BY [tag_ID] ASC")
  246. If (Not objRS.bof) And (Not objRS.eof) Then
  247. aryAllData=objRS.GetRows(objRS.RecordCount)
  248. objRS.Close
  249. Set objRS=Nothing
  250. k=UBound(aryAllData,1)
  251. l=UBound(aryAllData,2)
  252. For i=0 To l
  253. Set Tags(aryAllData(0,i))=New TTag
  254. Tags(aryAllData(0,i)).LoadInfoByArray(Array(aryAllData(0,i),aryAllData(1,i),aryAllData(2,i),aryAllData(3,i),aryAllData(4,i)))
  255. Next
  256. End If
  257. GetTags=True
  258. End Function
  259. '*********************************************************
  260. '*********************************************************
  261. ' 目的:    KeyWords读取
  262. '*********************************************************
  263. Function GetKeyWords()
  264. 'Dim objRS
  265. 'Set objRS=objConn.Execute("SELECT [key_ID],[key_Name],[key_URL] FROM [blog_Keyword] ORDER BY [key_ID] ASC")
  266. 'If (Not objRS.bof) And (Not objRS.eof) Then
  267. ' KeyWords=objRS.GetRows
  268. 'End If
  269. 'objRS.Close
  270. 'Set objRS=Nothing
  271. GetKeyWords=True
  272. End Function
  273. '*********************************************************
  274. '*********************************************************
  275. ' 目的:    读取权限
  276. ' 备注:     权限最高为1 最低为5 不是则非法
  277. '           "Root"一定只能为1
  278. '           权限配置方式可以变通
  279. '*********************************************************
  280. Function GetRights(strAction)
  281. 'plugin node
  282. For Each sAction_Plugin_GetRights_Begin in Action_Plugin_GetRights_Begin
  283. If Not IsEmpty(sAction_Plugin_GetRights_Begin) Then Call Execute(sAction_Plugin_GetRights_Begin)
  284. If bAction_Plugin_GetRights_Begin=True Then Exit Function
  285. Next
  286. Select Case strAction
  287. Case "Root"
  288. GetRights=1
  289. Case "login"
  290. GetRights=5
  291. Case "verify"
  292. GetRights=5
  293. Case "logout"
  294. GetRights=5
  295. Case "admin"
  296. GetRights=4
  297. Case "cmt","CommentRev"
  298. GetRights=5
  299. Case "tb"
  300. GetRights=5
  301. Case "vrs"
  302. GetRights=5
  303. Case "rss"
  304. GetRights=5
  305. Case "gettburl"
  306. GetRights=5
  307. Case "ArticleMng"
  308. GetRights=3
  309. Case "ArticleEdt"
  310. GetRights=3
  311. Case "ArticlePst"
  312. GetRights=3
  313. Case "ArticleDel"
  314. GetRights=3
  315. Case "ArticleBud"
  316. GetRights=3
  317. Case "CategoryMng"
  318. GetRights=2
  319. Case "CategoryEdt"
  320. GetRights=2
  321. Case "CategoryPst"
  322. GetRights=2
  323. Case "CategoryDel"
  324. GetRights=2
  325. Case "TagMng"
  326. GetRights=1
  327. Case "TagEdt"
  328. GetRights=1
  329. Case "TagPst"
  330. GetRights=1
  331. Case "TagDel"
  332. GetRights=1
  333. 'Case "KeyWordMng"
  334. ' GetRights=1
  335. 'Case "KeyWordEdt"
  336. ' GetRights=1
  337. 'Case "KeyWordPst"
  338. ' GetRights=1
  339. 'Case "KeyWordDel"
  340. ' GetRights=1
  341. Case "GuestBookMng"
  342. GetRights=2
  343. Case "CommentMng"
  344. GetRights=4
  345. Case "CommentDel"
  346. GetRights=4
  347. Case "CommentEdt"
  348. GetRights=4
  349. Case "CommentSav"
  350. GetRights=4
  351. Case "CommentDelBatch"
  352. GetRights=4
  353. Case "TrackBackMng"
  354. GetRights=3
  355. Case "TrackBackDel"
  356. GetRights=3
  357. Case "TrackBackDelBatch"
  358. GetRights=3
  359. Case "TrackBackSnd"
  360. GetRights=3
  361. Case "UserMng"
  362. GetRights=4
  363. Case "UserEdt"
  364. GetRights=4
  365. Case "UserDel"
  366. GetRights=1
  367. Case "UserCrt"
  368. GetRights=1
  369. Case "BlogReBuild"
  370. GetRights=3
  371. Case "DirectoryReBuild"
  372. GetRights=3
  373. Case "FileReBuild"
  374. GetRights=1
  375. Case "AskFileReBuild"
  376. GetRights=1
  377. Case "FileMng"
  378. GetRights=2
  379. Case "FileSnd"
  380. GetRights=2
  381. Case "FileUpload"
  382. GetRights=2
  383. Case "FileDel"
  384. GetRights=2
  385. Case "FileDelBatch"
  386. GetRights=2
  387. Case "Search"
  388. GetRights=5
  389. 'Case "BlogMng"
  390. ' GetRights=4
  391. Case "SettingMng"
  392. GetRights=1
  393. Case "SettingSav"
  394. GetRights=1
  395. Case "PlugInMng"
  396. GetRights=4
  397. Case "SiteInfo"
  398. GetRights=4
  399. Case "SiteFileMng"
  400. GetRights=1
  401. Case "SiteFileEdt"
  402. GetRights=1
  403. 'Case "SiteFileFnd"
  404. ' GetRights=1
  405. Case "SiteFilePst"
  406. GetRights=1
  407. Case "SiteFileDel"
  408. GetRights=1
  409. 'Case "Update"
  410. ' GetRights=1
  411. Case "ThemesMng"
  412. GetRights=1
  413. Case "ThemesSav"
  414. GetRights=1
  415. Case "LinkMng"
  416. GetRights=1
  417. Case "LinkSav"
  418. GetRights=1
  419. Case "PlugInActive"
  420. GetRights=1
  421. Case "PlugInDisable"
  422. GetRights=1
  423. Case Else Call ShowError(1)
  424. End Select
  425. End Function
  426. '*********************************************************
  427. '*********************************************************
  428. ' 目的:    检查权限
  429. '*********************************************************
  430. Function CheckRights(strAction)
  431. 'plugin node
  432. For Each sAction_Plugin_CheckRights_Begin in Action_Plugin_CheckRights_Begin
  433. If Not IsEmpty(sAction_Plugin_CheckRights_Begin) Then Call Execute(sAction_Plugin_CheckRights_Begin)
  434. If bAction_Plugin_CheckRights_Begin=True Then Exit Function
  435. Next
  436. If BlogUser.Level>GetRights(strAction) Then
  437. CheckRights=False
  438. Else
  439. CheckRights=True
  440. End If
  441. End Function
  442. '*********************************************************
  443. '*********************************************************
  444. ' 目的:    Make Calendar
  445. '*********************************************************
  446. Function MakeCalendar(dtmYearMonth)
  447. 'plugin node
  448. For Each sAction_Plugin_MakeCalendar_Begin in Action_Plugin_MakeCalendar_Begin
  449. If Not IsEmpty(sAction_Plugin_MakeCalendar_Begin) Then Call Execute(sAction_Plugin_MakeCalendar_Begin)
  450. If bAction_Plugin_MakeCalendar_Begin=True Then Exit Function
  451. Next
  452. Dim strCalendar
  453. Dim y
  454. Dim m
  455. Dim d
  456. Dim firw
  457. Dim lasw
  458. Dim ny
  459. Dim nm
  460. Dim i
  461. Dim j
  462. Dim k
  463. Dim b
  464. Dim s
  465. Dim t
  466. Call CheckParameter(dtmYearMonth,"dtm",Date())
  467. y=year(dtmYearMonth)
  468. m=month(dtmYearMonth)
  469. ny=y
  470. nm=m+1
  471. If m=12 Then ny=ny+1:nm=1
  472. firw=Weekday(Cdate(y&"-"&m&"-1"))
  473. For i=28 to 32
  474. If IsDate(y&"-"&m&"-"&i) Then
  475. lasw=Weekday(Cdate(y&"-"&m&"-"&i))
  476. Else
  477. Exit For
  478. End If
  479. Next
  480. d=i-1
  481. k=1
  482. If firw>5 Then b=42 Else b=35
  483. If (d=28) And (firw=1) Then b=28
  484. If (firw>5) And (d<31) And (d-firw<>23) Then b=35
  485. '//////////////////////////////////////////////////////////
  486. ' 逻辑处理
  487. Dim aryDateLink(32)
  488. Dim aryDateID(32)
  489. Dim aryDateArticle(32)
  490. Dim objRS
  491. Set objRS=Server.CreateObject("ADODB.Recordset")
  492. objRS.CursorType = adOpenKeyset
  493. objRS.LockType = adLockReadOnly
  494. objRS.ActiveConnection=objConn
  495. objRS.Source=""
  496. 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#)")
  497. If (Not objRS.bof) And (Not objRS.eof) Then
  498. For i=1 To objRS.RecordCount
  499. j=CInt(Day(CDate(objRS("log_PostTime"))))
  500. aryDateLink(j)=True
  501. aryDateID(j)=objRS("log_ID")
  502. Set aryDateArticle(j)=New TArticle
  503. aryDateArticle(j).LoadInfobyArray Array(objRS("log_ID"),"",objRS("log_CateID"),"","","",objRS("log_Level"),objRS("log_AuthorID"),objRS("log_PostTime"),"","","",objRS("log_Url"),"")
  504. objRS.MoveNext
  505. If objRS.eof Then Exit For
  506. Next
  507. End If
  508. objRS.Close
  509. Set objRS=Nothing
  510. '//////////////////////////////////////////////////////////
  511. s="catalog.asp?date="&y&"-"&(m-1)
  512. t="catalog.asp?date="&y&"-"&(m+1)
  513. If m=1 Then s="catalog.asp?date="&(y-1)&"-12"
  514. If m=12 Then t="catalog.asp?date="&(y+1)&"-1"
  515. strCalendar=strCalendar & "<div class=""year"&y&" month"&m&""">"
  516. strCalendar=strCalendar & "<p class=""y""><a href="""&ZC_BLOG_HOST &s&""">&lt;&lt;</a>  <a href="""& ZC_BLOG_HOST &"catalog.asp?date="&y&"-"&m&""">"&y&"-"&m&"</a>  <a href="""&ZC_BLOG_HOST &t&""">&gt;&gt;</a></p>"
  517. strCalendar=strCalendar & "<p class=""w"">"&ZVA_Week_Abbr(1)&"</p><p class=""w"">"&ZVA_Week_Abbr(2)&"</p><p class=""w"">"&ZVA_Week_Abbr(3)&"</p><p class=""w"">"&ZVA_Week_Abbr(4)&"</p><p class=""w"">"&ZVA_Week_Abbr(5)&"</p><p class=""w"">"&ZVA_Week_Abbr(6)&"</p><p class=""w"">"&ZVA_Week_Abbr(7)&"</p>"
  518. j=0
  519. For i=1 to b
  520. If (j=>firw-1) and (k=<d) Then
  521. If aryDateLink(k) Then
  522. strCalendar=strCalendar & "<p id=""pCalendar_"&y&"_"&m&"_"&k&""" class=""yd""><a class=""l"" href="""& ZC_BLOG_HOST &"catalog.asp?date="&Year(aryDateArticle(k).PostTime)&"-"&Month(aryDateArticle(k).PostTime)&"-"&Day(aryDateArticle(k).PostTime)& """>"&(k)&"</a></p>"
  523. Else
  524. strCalendar=strCalendar & "<p id=""pCalendar_"&y&"_"&m&"_"&k&""" class=""d"">"&(k)&"</p>"
  525. End If
  526. k=k+1
  527. Else
  528. strCalendar=strCalendar & "<p class=""nd""></p>"
  529. End If
  530. j=j+1
  531. Next
  532. strCalendar=strCalendar & "</div>"
  533. MakeCalendar=strCalendar
  534. End Function
  535. '*********************************************************
  536. '*********************************************************
  537. ' 目的:    加载指定目录的文件列表
  538. '*********************************************************
  539. Function LoadIncludeFiles(strDir)
  540. On Error Resume Next
  541. Dim aryFileList()
  542. ReDim aryFileList(0)
  543. Dim fso, f, f1, fc, s, i
  544. Set fso = CreateObject("Scripting.FileSystemObject")
  545. Set f = fso.GetFolder(BlogPath & strDir)
  546. Set fc = f.Files
  547. i=0
  548. For Each f1 in fc
  549. i=i+1
  550. ReDim Preserve aryFileList(i)
  551. aryFileList(i)=f1.name 
  552. Next
  553. LoadIncludeFiles=aryFileList
  554. Set fso=nothing
  555. Err.Clear
  556. End Function
  557. '*********************************************************
  558. '*********************************************************
  559. ' 目的:    Get Template by Name
  560. '*********************************************************
  561. Function GetTemplate(Name)
  562. Dim i,j
  563. j=UBound(TemplatesName)
  564. For i=1 to j
  565. If LCase(TemplatesName(i))=LCase(Name) Then
  566. GetTemplate=TemplatesContent(i)
  567. End If
  568. Next
  569. End Function
  570. '*********************************************************
  571. '*********************************************************
  572. ' 目的:    Set Template by Name
  573. '*********************************************************
  574. Function SetTemplate(Name,Value)
  575. Dim i,j
  576. j=UBound(TemplatesName)
  577. For i=1 to j
  578. If LCase(TemplatesName(i))=LCase(Name) Then
  579. TemplatesContent(i)=Value
  580. End If
  581. Next
  582. End Function
  583. '*********************************************************
  584. '*********************************************************
  585. ' 目的:    Check Template Modified Date
  586. '*********************************************************
  587. Function CheckTemplateModified()
  588. Dim fso, f, f1, fc, s
  589. Dim d,nd
  590. Set fso = CreateObject("Scripting.FileSystemObject")
  591. Set f = fso.GetFolder(BlogPath & "themes" & "/" & ZC_BLOG_THEME & "/" & ZC_TEMPLATE_DIRECTORY)
  592. Set fc = f.Files
  593. For Each f1 in fc
  594.   d=f1.DateLastModified
  595.   If nd="" Then nd=d
  596.   If DateDiff("s",nd,d)>0 Then nd=d
  597. Next
  598. CheckTemplateModified=nd
  599. End Function
  600. '*********************************************************
  601. '*********************************************************
  602. ' 目的:    Load 全局 Cache
  603. '*********************************************************
  604. Function LoadGlobeCache()
  605. On Error Resume Next
  606. Dim bolReLoadCache
  607. Application.Lock
  608. bolReLoadCache=Application(ZC_BLOG_CLSID & "SIGNAL_RELOADCACHE")
  609. Application.UnLock
  610. If IsEmpty(bolReLoadCache)=True Then
  611. bolReLoadCache="ok"
  612. Else
  613. Application.Lock
  614. TemplateTagsName=Application(ZC_BLOG_CLSID & "TemplateTagsName")
  615. TemplateTagsValue=Application(ZC_BLOG_CLSID & "TemplateTagsValue")
  616. TemplatesName=Application(ZC_BLOG_CLSID & "TemplatesName")
  617. TemplatesContent=Application(ZC_BLOG_CLSID & "TemplatesContent")
  618. Application.UnLock
  619. If IsEmpty(TemplateTagsValue)=False And IsEmpty(TemplateTagsValue)=False And IsEmpty(TemplatesName)=False And IsEmpty(TemplatesContent)=False Then
  620. Exit Function
  621. End If
  622. End If
  623. Call GetReallyDirectory
  624. Dim i,j
  625. '加载模板
  626. Dim objStream
  627. Dim strContent
  628. Dim aryTemplatesName()
  629. Dim aryTemplatesContent()
  630. ReDim Preserve aryTemplatesName(3)
  631. ReDim Preserve aryTemplatesContent(3)
  632. '加载WAP
  633. Application.Lock
  634. aryTemplatesName(1)="TEMPLATE_WAP_ARTICLE_COMMENT"
  635. aryTemplatesName(2)="TEMPLATE_WAP_ARTICLE-MULTI"
  636. aryTemplatesName(3)="TEMPLATE_WAP_SINGLE"
  637. aryTemplatesContent(1)=LoadFromFile(BlogPath & "WAP/wap_article_comment.html","utf-8")
  638. aryTemplatesContent(2)=LoadFromFile(BlogPath & "WAP/wap_article-multi.html","utf-8")
  639. aryTemplatesContent(3)=LoadFromFile(BlogPath & "WAP/wap_single.html","utf-8")
  640. Application(ZC_BLOG_CLSID & "TEMPLATE_WAP_ARTICLE_COMMENT")=aryTemplatesContent(1)
  641. Application(ZC_BLOG_CLSID & "TEMPLATE_WAP_ARTICLE-MULTI")=aryTemplatesContent(2)
  642. Application(ZC_BLOG_CLSID & "TEMPLATE_WAP_SINGLE")=aryTemplatesContent(3)
  643. Application.UnLock
  644. '读取Template目录下的所有文件并写入Cache
  645. Dim aryFileList
  646. Dim aryFileNameTemplate()
  647. Dim aryFileNameTemplate_Variable()
  648. aryFileList=LoadIncludeFiles("themes" & "/" & ZC_BLOG_THEME & "/" & ZC_TEMPLATE_DIRECTORY)
  649. If IsArray(aryFileList) Then
  650. j=UBound(aryFileList)
  651. ReDim aryFileNameTemplate(j)
  652. ReDim aryFileNameTemplate_Variable(j)
  653. ReDim Preserve aryTemplatesName(3+j)
  654. ReDim Preserve aryTemplatesContent(3+j)
  655. For i=1 to j
  656. aryFileNameTemplate(i)="themes" & "/" & ZC_BLOG_THEME & "/" & ZC_TEMPLATE_DIRECTORY & "/" & aryFileList(i)
  657. aryFileNameTemplate_Variable(i)="TEMPLATE_" & UCase(Left(aryFileList(i),InStr(aryFileList(i),".")-1))
  658. If InStr(aryFileList(i),".")=0 Then 
  659. aryFileNameTemplate_Variable(i)="TEMPLATE_" & UCase(aryFileList(i))
  660. End If
  661. aryTemplatesName(3+i)=aryFileNameTemplate_Variable(i)
  662. strContent=""
  663. strContent=LoadFromFile(BlogPath & "" & aryFileNameTemplate(i),"utf-8")
  664. Application.Lock
  665. Application(ZC_BLOG_CLSID & aryFileNameTemplate_Variable(i))=strContent
  666. Application.UnLock
  667. aryTemplatesContent(3+i)=strContent
  668. Next
  669. End If
  670. '加载标签
  671. Dim a,b,c,d,e,a2,a3
  672. Dim t()
  673. Dim s()
  674. a=0
  675. b=20
  676. c=1
  677. d=320
  678. e=0
  679. a2=0
  680. a3=0
  681. '读取TEMPLATE下的Include目录下的所有文件并写入Cache
  682. 'Dim aryFileList
  683. Dim aryFileNameTemplateInclude()
  684. Dim aryFileNameTemplateInclude_Variable()
  685. aryFileList=LoadIncludeFiles("themes" & "/" & ZC_BLOG_THEME & "/" & "INCLUDE")
  686. If IsArray(aryFileList) Then
  687. e=UBound(aryFileList)
  688. ReDim aryFileNameTemplateInclude(e)
  689. ReDim aryFileNameTemplateInclude_Variable(e)
  690. ReDim aryFileNameTemplateInclude_Content(e)
  691. ReDim s(e)
  692. ReDim Preserve aryTemplateTagsName(e)
  693. ReDim Preserve aryTemplateTagsValue(e)
  694. For i=1 to e
  695. aryFileNameTemplateInclude(i)="themes" & "/" & ZC_BLOG_THEME & "/" & "INCLUDE" & "/" & aryFileList(i)
  696. aryFileNameTemplateInclude_Variable(i)="TEMPLATE_INCLUDE_" & UCase(Left(aryFileList(i),InStr(aryFileList(i),".")-1))
  697. If InStr(aryFileList(i),".")=0 Then 
  698. aryFileNameTemplateInclude_Variable(i)="TEMPLATE_INCLUDE_" & UCase(aryFileList(i))
  699. End If
  700. s(i)=aryFileNameTemplateInclude_Variable(i)
  701. strContent=""
  702. strContent=LoadFromFile(BlogPath & "" & aryFileNameTemplateInclude(i),"utf-8")
  703. strContent=Replace(strContent,"<"&"%=ZC_BLOG_HOST%"&">",ZC_BLOG_HOST)
  704. aryFileNameTemplateInclude_Content(i)=strContent
  705. aryTemplateTagsName(i)=s(i)
  706. aryTemplateTagsValue(i)=aryFileNameTemplateInclude_Content(i)
  707. Next
  708. End If
  709. '在模板文件中先替换一次模板INCLUDE里的文件标签
  710. For i=1 To aryTemplatesName
  711. For j=1 to e
  712. aryTemplatesContent(i)=Replace(aryTemplatesContent,"<#"+aryFileNameTemplateInclude_Variable(i)+"#>",aryFileNameTemplateInclude_Content(j))
  713. Next
  714. Next
  715. '读取Include目录下的所有文件并写入Cache
  716. 'Dim aryFileList
  717. Dim aryFileNameInclude()
  718. Dim aryFileNameInclude_Variable()
  719. Dim aryFileNameInclude_Content()
  720. aryFileList=LoadIncludeFiles("INCLUDE")
  721. If IsArray(aryFileList) Then
  722. a=UBound(aryFileList)
  723. ReDim aryFileNameInclude(a)
  724. ReDim aryFileNameInclude_Variable(a)
  725. ReDim aryFileNameInclude_Content(a)
  726. ReDim s(a)
  727. ReDim Preserve aryTemplateTagsName(e+a)
  728. ReDim Preserve aryTemplateTagsValue(e+a)
  729. For i=1 to a
  730. aryFileNameInclude(i)="/INCLUDE/" & aryFileList(i)
  731. aryFileNameInclude_Variable(i)="CACHE_INCLUDE_" & UCase(Left(aryFileList(i),InStr(aryFileList(i),".")-1))
  732. If InStr(aryFileList(i),".")=0 Then 
  733. aryFileNameInclude_Variable(i)="CACHE_INCLUDE_" & UCase(aryFileList(i))
  734. End If
  735. s(i)=aryFileNameInclude_Variable(i)
  736. strContent=""
  737. strContent=LoadFromFile(BlogPath & "" & aryFileNameInclude(i),"utf-8")
  738. strContent=Replace(strContent,"<"&"%=ZC_BLOG_HOST%"&">",ZC_BLOG_HOST)
  739. aryFileNameInclude_Content(i)=strContent
  740. aryTemplateTagsName(e+i)=s(i)
  741. aryTemplateTagsValue(e+i)=aryFileNameInclude_Content(i)
  742. Next
  743. a2=a
  744. ReDim Preserve aryTemplateTagsName(e+a+a2)
  745. ReDim Preserve aryTemplateTagsValue(e+a+a2)
  746. For i=1 to a
  747. aryTemplateTagsName(e+i+a)=aryFileNameInclude_Variable(i) & "_JS"
  748. Dim modname
  749. modname=LCase(Replace(aryFileNameInclude_Variable(i),"CACHE_INCLUDE_",""))
  750. If aryFileNameInclude_Variable(i)="CACHE_INCLUDE_CALENDAR" Then
  751. aryTemplateTagsValue(e+i+a)="<div id=""mod_"+modname+"""><script type=""text/javascript"">strBatchInculde+=""mod_"+modname+"="+modname+",""</script></div>"
  752. Else
  753. aryTemplateTagsValue(e+i+a)="<li id=""mod_"+modname+""" style=""display:none;""><script type=""text/javascript"">strBatchInculde+=""mod_"+modname+"="+modname+",""</script></li>"
  754. End If
  755. Next
  756. a3=a
  757. ReDim Preserve aryTemplateTagsName(e+a+a2+a3)
  758. ReDim Preserve aryTemplateTagsValue(e+a+a2+a3)
  759. For i=1 to a
  760. aryTemplateTagsName(e+i+a+a2)=aryFileNameInclude_Variable(i) & "_HTML"
  761. aryTemplateTagsValue(e+i+a+a2)=aryFileNameInclude_Content(i)
  762. Next
  763. End If
  764. ReDim Preserve aryTemplateTagsName(a+a2+a3+e+d)
  765. ReDim Preserve aryTemplateTagsValue(a+a2+a3+e+d)
  766. For j=1 to d
  767. i=Right("000" & CStr(j),3)
  768. aryTemplateTagsName(a+a2+a3+e+j)="ZC_MSG" & i
  769. Call Execute("aryTemplateTagsValue(a+a2+a3+e+j)=ZC_MSG" & i)
  770. Next
  771. ReDim t(b)
  772. t(1)="ZC_BLOG_VERSION"
  773. t(2)="ZC_BLOG_LANGUAGE"
  774. t(3)="ZC_BLOG_HOST"
  775. t(4)="ZC_BLOG_TITLE"
  776. t(5)="ZC_BLOG_SUBTITLE"
  777. t(6)="ZC_BLOG_NAME"
  778. t(7)="ZC_BLOG_SUB_NAME"
  779. t(8)="ZC_BLOG_CSS"
  780. t(9)="ZC_BLOG_COPYRIGHT"
  781. t(10)="ZC_BLOG_MASTER"
  782. t(11)="ZC_CONTENT_MAX"
  783. t(12)="ZC_EMOTICONS_FILENAME"
  784. t(13)="ZC_EMOTICONS_FILESIZE"
  785. t(14)="ZC_GUESTBOOK_CONTENT"
  786. t(15)="ZC_BLOG_CLSID"
  787. t(16)="ZC_TIME_ZONE"
  788. t(17)="ZC_IMAGE_WIDTH"
  789. t(18)="ZC_BLOG_THEME"
  790. t(19)="ZC_VERIFYCODE_WIDTH"
  791. t(20)="ZC_VERIFYCODE_HEIGHT"
  792. ReDim Preserve aryTemplateTagsName(a+a2+a3+e+d+b)
  793. ReDim Preserve aryTemplateTagsValue(a+a2+a3+e+d+b)
  794. For j=1 to b
  795. aryTemplateTagsName(a+a2+a3+e+d+j)=t(j)
  796. Call Execute("aryTemplateTagsValue(a+a2+a3+e+d+j)="& t(j))
  797. Next
  798. ReDim Preserve aryTemplateTagsName(a+a2+a3+e+d+b+c)
  799. ReDim Preserve aryTemplateTagsValue(a+a2+a3+e+d+b+c)
  800. aryTemplateTagsName(a+a2+a3+e+d+b+c)="BLOG_CREATE_TIME"
  801. aryTemplateTagsValue(a+a2+a3+e+d+b+c)=GetTime(Now())
  802. Application.Lock
  803. Application(ZC_BLOG_CLSID & "TemplateTagsName")=aryTemplateTagsName
  804. Application(ZC_BLOG_CLSID & "TemplateTagsValue")=aryTemplateTagsValue
  805. Application(ZC_BLOG_CLSID & "TemplatesName")=aryTemplatesName
  806. Application(ZC_BLOG_CLSID & "TemplatesContent")=aryTemplatesContent
  807. Application.UnLock
  808. TemplateTagsName=aryTemplateTagsName
  809. TemplateTagsValue=aryTemplateTagsValue
  810. TemplatesName=aryTemplatesName
  811. TemplatesContent=aryTemplatesContent
  812. Err.Clear
  813. Application.Lock
  814. Application(ZC_BLOG_CLSID & "TEMPLATEMODIFIED")=CheckTemplateModified()
  815. Application.UnLock
  816. Application.Lock
  817. Application(ZC_BLOG_CLSID & "SIGNAL_RELOADCACHE")=bolReLoadCache
  818. Application.UnLock
  819. LoadGlobeCache=True
  820. End Function
  821. '*********************************************************
  822. '*********************************************************
  823. ' 目的:    Clear Cache
  824. '*********************************************************
  825. Function ClearGlobeCache()
  826. Application.Lock
  827. Application(ZC_BLOG_CLSID & "CACHE_ARTICLE_VIEWCOUNT")=Empty
  828. Application(ZC_BLOG_CLSID & "TemplateTagsName")=Empty
  829. Application(ZC_BLOG_CLSID & "TemplateTagsValue")=Empty
  830. Application(ZC_BLOG_CLSID & "TemplatesName")=Empty
  831. Application(ZC_BLOG_CLSID & "TemplatesContent")=Empty
  832. Application(ZC_BLOG_CLSID & "TEMPLATE_B_ARTICLE_COMMENT")=Empty
  833. Application(ZC_BLOG_CLSID & "TEMPLATE_B_ARTICLE_COMMENTPOST")=Empty
  834. Application(ZC_BLOG_CLSID & "TEMPLATE_B_ARTICLE_COMMENTPOST-VERIFY")=Empty
  835. Application(ZC_BLOG_CLSID & "TEMPLATE_B_ARTICLE_TAG")=Empty
  836. Application(ZC_BLOG_CLSID & "TEMPLATE_B_ARTICLE_TRACKBACK")=Empty
  837. Application(ZC_BLOG_CLSID & "TEMPLATE_B_ARTICLE-MULTI")=Empty
  838. Application(ZC_BLOG_CLSID & "TEMPLATE_B_ARTICLE-SINGLE")=Empty
  839. Application(ZC_BLOG_CLSID & "TEMPLATE_B_ARTICLE-GUESTBOOK")=Empty
  840. Application(ZC_BLOG_CLSID & "TEMPLATE_B_PAGEBAR")=Empty
  841. Application(ZC_BLOG_CLSID & "TEMPLATE_B_ARTICLE_NVABAR_L")=Empty
  842. Application(ZC_BLOG_CLSID & "TEMPLATE_B_ARTICLE_NVABAR_R")=Empty
  843. Application(ZC_BLOG_CLSID & "TEMPLATE_B_ARTICLE_MUTUALITY")=Empty
  844. Application(ZC_BLOG_CLSID & "TEMPLATE_B_ARTICLE-ISTOP")=Empty
  845. Application(ZC_BLOG_CLSID & "TEMPLATE_CATALOG")=Empty
  846. Application(ZC_BLOG_CLSID & "TEMPLATE_DEFAULT")=Empty
  847. Application(ZC_BLOG_CLSID & "TEMPLATE_SEARCH")=Empty
  848. Application(ZC_BLOG_CLSID & "TEMPLATE_SINGLE")=Empty
  849. Application(ZC_BLOG_CLSID & "TEMPLATE_TAGS")=Empty
  850. Application(ZC_BLOG_CLSID & "TEMPLATE_WAP_ARTICLE_COMMENT")=Empty
  851. Application(ZC_BLOG_CLSID & "TEMPLATE_WAP_ARTICLE-MULTI")=Empty
  852. Application(ZC_BLOG_CLSID & "TEMPLATE_WAP_SINGLE")=Empty
  853. Application(ZC_BLOG_CLSID & "TEMPLATE_GUESTBOOK")=Empty
  854. Application(ZC_BLOG_CLSID & "SIGNAL_RELOADCACHE")=Empty
  855. Application(ZC_BLOG_CLSID & "TEMPLATEMODIFIED")=Empty
  856. Application.UnLock
  857. ClearGlobeCache=True
  858. End Function
  859. '*********************************************************
  860. '*********************************************************
  861. ' 目的:    Parse Tag 并格式化
  862. '*********************************************************
  863. Function ParseTag(strTag)
  864. Dim s
  865. Dim t
  866. Dim i
  867. Dim Tag
  868. Dim b
  869. Dim objTag
  870. strTag=Trim(strTag)
  871. strTag=Replace(strTag,",",vbCrlf)
  872. strTag=Replace(strTag,",",vbCrlf)
  873. strTag=TransferHTML(strTag,"[normalname]")
  874. strTag=Replace(strTag,vbCrlf,",")
  875. t=Split(strTag,",")
  876. For i=LBound(t) To UBound(t)
  877. t(i)=Trim(t(i))
  878. Next
  879. GetTags()
  880. For i=LBound(t) To UBound(t)
  881. b=False
  882. For Each Tag in Tags
  883. If IsObject(Tag) Then
  884. If UCase(Tag.Name)=UCase(t(i)) Then
  885. b=True
  886. End If
  887. End If
  888. Next
  889. If b=False Then
  890. Set objTag=New TTag
  891. objTag.ID=0
  892. objTag.Name=t(i)
  893. objTag.Order=0
  894. objTag.Intro=""
  895. objTag.Post
  896. Set objTag=Nothing
  897. End If
  898. Next
  899. GetTags()
  900. For i=LBound(t) To UBound(t)
  901. For Each Tag in Tags
  902. If IsObject(Tag) Then
  903. If UCase(Tag.Name)=UCase(t(i)) Then
  904. t(i)="{"&Tag.ID&"}"
  905. End If
  906. End If
  907. Next
  908. Next
  909. s=Join(t)
  910. s=Replace(s," ","")
  911. ParseTag=s
  912. End Function
  913. '*********************************************************
  914. '*********************************************************
  915. ' 目的:    得到实际上的真实目录
  916. '*********************************************************
  917. Function GetReallyDirectory()
  918. On Error Resume Next
  919. Dim fso
  920. Set fso = CreateObject("Scripting.FileSystemObject")
  921. If fso.FileExists(BlogPath & "" & ZC_DATABASE_PATH) Then
  922. BlogPath=BlogPath
  923. ElseIf fso.FileExists(BlogPath & ".." & ZC_DATABASE_PATH) Then
  924. BlogPath=BlogPath & ".."
  925. ElseIf fso.FileExists(BlogPath & "...." & ZC_DATABASE_PATH) Then
  926. BlogPath=BlogPath & "...."
  927. ElseIf fso.FileExists(BlogPath & "......" & ZC_DATABASE_PATH) Then
  928. BlogPath=BlogPath & "......"
  929. ElseIf fso.FileExists(BlogPath & "........" & ZC_DATABASE_PATH) Then
  930. BlogPath=BlogPath & "........"
  931. ElseIf fso.FileExists(BlogPath & ".........." & ZC_DATABASE_PATH) Then
  932. BlogPath=BlogPath & ".........."
  933. End If
  934. Set fso=Nothing
  935. GetReallyDirectory=True
  936. Err.Clear
  937. End Function
  938. '*********************************************************
  939. '*********************************************************
  940. ' 目的:    设置提示标志
  941. '*********************************************************
  942. Function SetBlogHint(bolOperateSuccess,bolRebuildIndex,bolRebuildFiles)
  943. Call SetBlogHintWithCLSID(bolOperateSuccess,bolRebuildIndex,bolRebuildFiles,ZC_BLOG_CLSID)
  944. End Function
  945. '*********************************************************
  946. '*********************************************************
  947. ' 目的:    设置提示自定义标志
  948. '*********************************************************
  949. Function SetBlogHint_Custom(strInfo)
  950. Application.Lock
  951. Application(ZC_BLOG_CLSID & "SIGNAL_OPERATEINFO")=Application(ZC_BLOG_CLSID & "SIGNAL_OPERATEINFO") & vbCrlf &  strInfo
  952. Application.UnLock
  953. End Function
  954. '*********************************************************
  955. '*********************************************************
  956. ' 目的:    设置提示标志withCLSID
  957. '*********************************************************
  958. Function SetBlogHintWithCLSID(bolOperateSuccess,bolRebuildIndex,bolRebuildFiles,newCLSID)
  959. Application.Lock
  960. Application(newCLSID & "SIGNAL_OPERATESUCCESS")=bolOperateSuccess
  961. If IsEmpty(bolRebuildIndex)=False Then
  962. Application(newCLSID & "SIGNAL_REBUILDINDEX")=bolRebuildIndex
  963. End If
  964. If IsEmpty(bolRebuildFiles)=False Then
  965. Application(newCLSID & "SIGNAL_REBUILDFILES")=bolRebuildFiles
  966. End If
  967. Application.UnLock
  968. End Function
  969. '*********************************************************
  970. '*********************************************************
  971. ' 目的:    输出提示
  972. '*********************************************************
  973. Function GetBlogHint()
  974. Dim bolOperateSuccess,bolRebuildIndex,bolRebuildFiles,strOperateInfo
  975. Application.Lock
  976. bolOperateSuccess=Application(ZC_BLOG_CLSID & "SIGNAL_OPERATESUCCESS")
  977. bolRebuildIndex=Application(ZC_BLOG_CLSID & "SIGNAL_REBUILDINDEX")
  978. bolRebuildFiles=Application(ZC_BLOG_CLSID & "SIGNAL_REBUILDFILES")
  979. strOperateInfo=Application(ZC_BLOG_CLSID & "SIGNAL_OPERATEINFO")
  980. Application(ZC_BLOG_CLSID & "SIGNAL_OPERATEINFO")=Empty
  981. Application.UnLock
  982. If IsEmpty(bolOperateSuccess)=False Then
  983. If bolOperateSuccess=True Then
  984. Response.Write "<p class='hint hint_green'><font color='green'>" & ZC_MSG266 & "</font></p>"
  985. End If
  986. If bolOperateSuccess=False Then
  987. Response.Write "<p class='hint hint_red'><font color='red'>" & ZC_MSG267 & "</font></p>"
  988. End If
  989. Application.Lock
  990. Application(ZC_BLOG_CLSID & "SIGNAL_OPERATESUCCESS")=Empty
  991. Application.UnLock
  992. End If
  993. If IsEmpty(strOperateInfo)=False Then
  994. Dim s,t
  995. t=Split(strOperateInfo,vbCrlf)
  996. For Each s In t
  997. If s<>"" Then 
  998. Response.Write "<p class='hint hint_Teal'><font color='Teal'>" & s & "</font></p>"
  999. End If
  1000. Next
  1001. End If
  1002. If IsEmpty(bolRebuildIndex)=False Then
  1003. If bolRebuildIndex=True Then
  1004. Response.Write "<p class='hint hint_blue'><font color='blue'>" & ZC_MSG268 & "</font></p>"
  1005. End If
  1006. End If
  1007. If IsEmpty(bolRebuildFiles)=False Then
  1008. If bolRebuildFiles=True Then
  1009. Response.Write "<p class='hint hint_blue'><font color='blue'>" & ZC_MSG269 & "</font></p>"
  1010. End If
  1011. End If
  1012. End Function
  1013. '*********************************************************
  1014. '*********************************************************
  1015. ' 目的:    解析ZC_CUSTOM_DIRECTORY_REGEX
  1016. '*********************************************************
  1017. Function ParseCustomDirectory(strRegex,strPost,strCategory,strUser,strYear,strMonth,strDay,strID,strAlias)
  1018. On Error Resume Next
  1019. Dim s
  1020. s=strRegex
  1021. s=Replace(s,"{%post%}",strPost)
  1022. s=Replace(s,"{%category%}",strCategory)
  1023. s=Replace(s,"{%user%}",strUser)
  1024. s=Replace(s,"{%year%}",strYear)
  1025. s=Replace(s,"{%month%}",Right("0" & strMonth,2))
  1026. s=Replace(s,"{%day%}",Right("0" & strDay,2))
  1027. s=Replace(s,"{%id%}",strID)
  1028. s=Replace(s,"{%alias%}",strAlias)
  1029. ParseCustomDirectory=s
  1030. Err.Clear
  1031. End Function
  1032. '*********************************************************
  1033. '*********************************************************
  1034. ' 目的:    按照CustomDirectory指示创建相应的目录
  1035. '*********************************************************
  1036. Sub CreatDirectoryByCustomDirectory(strCustomDirectory)
  1037. On Error Resume Next
  1038. Dim s
  1039. Dim t
  1040. Dim i
  1041. Dim fso
  1042. Set fso = CreateObject("Scripting.FileSystemObject")
  1043. s=BlogPath
  1044. t=Split(strCustomDirectory,"/")
  1045. For i=LBound(t) To UBound(t)
  1046. If (IsEmpty(t(i))=False) And (t(i)<>"") Then
  1047. s=s & t(i) & ""
  1048. If (fso.FolderExists(fldr)=False) Then
  1049. Call fso.CreateFolder(s)
  1050. End If
  1051. End If
  1052. Next
  1053. Set fso = Nothing
  1054. Err.Clear
  1055. End Sub
  1056. '*********************************************************
  1057. '*********************************************************
  1058. ' 目的: 加入二级菜单项  
  1059. '*********************************************************
  1060. Function MakeSubMenu(strName,strUrl,strType,isNewWindows)
  1061. Dim strSource
  1062. strSource=strSource & "<span class=""" & strType & """>"
  1063. strSource=strSource & "<a " & "href=""" & strUrl  & """"
  1064. If isNewWindows=True Then strSource=strSource & " target=""_blank"""
  1065. strSource=strSource & ">" & strName
  1066. strSource=strSource & "</a></span>"
  1067. MakeSubMenu=strSource
  1068. End Function
  1069. '*********************************************************
  1070. '*********************************************************
  1071. ' 目的: 注册插件函数 
  1072. '*********************************************************
  1073. Function RegisterPlugin(strPluginName,strPluginActiveFunction)
  1074. 'On Error Resume Next
  1075. Dim i
  1076. i=UBound(PluginName)
  1077. ReDim Preserve PluginName(i+1)
  1078. ReDim Preserve PluginActiveFunction(i+1)
  1079. PluginName(i)=strPluginName
  1080. PluginActiveFunction(i)=strPluginActiveFunction
  1081. 'Err.Clear
  1082. End Function
  1083. '*********************************************************
  1084. '*********************************************************
  1085. ' 目的: 激活插件函数 
  1086. '*********************************************************
  1087. Function ActivePlugin()
  1088. On Error Resume Next
  1089. Dim i
  1090. For i=0 To UBound(PluginActiveFunction)-1
  1091. Call Execute(PluginActiveFunction(i))
  1092. Next
  1093. Err.Clear
  1094. End Function
  1095. '*********************************************************
  1096. '*********************************************************
  1097. ' 目的: 安装插件函数,只运行一次
  1098. '*********************************************************
  1099. Function InstallPlugin(strPluginName)
  1100. On Error Resume Next
  1101. Call Execute("Call InstallPlugin_" & strPluginName & "()")
  1102. Err.Clear
  1103. End Function
  1104. '*********************************************************
  1105. '*********************************************************
  1106. ' 目的: 删除插件函数,只运行一次
  1107. '*********************************************************
  1108. Function UninstallPlugin(strPluginName)
  1109. On Error Resume Next
  1110. Call Execute("Call UninstallPlugin_" & strPluginName & "()")
  1111. Err.Clear
  1112. End Function
  1113. '*********************************************************
  1114. '*********************************************************
  1115. ' 目的: 检测插件是否已激活 
  1116. '*********************************************************
  1117. Function CheckPluginState(strPluginName)
  1118. CheckPluginState=CheckPluginStateByNewValue(strPluginName,ZC_BLOG_THEME & "|" & ZC_USING_PLUGIN_LIST)
  1119. End Function
  1120. '*********************************************************
  1121. '*********************************************************
  1122. ' 目的: 检测插件是否已激活 by new value 
  1123. '*********************************************************
  1124. Function CheckPluginStateByNewValue(strPluginName,newZC_USING_PLUGIN_LIST)
  1125. Dim s,i
  1126. s=Split(newZC_USING_PLUGIN_LIST,"|")
  1127. For i=LBound(s) To UBound(s)
  1128. If UCase(s(i))=UCase(strPluginName) Then
  1129. CheckPluginStateByNewValue=True
  1130. Exit Function
  1131. End If
  1132. Next
  1133. CheckPluginStateByNewValue=False
  1134. End Function
  1135. '*********************************************************
  1136. '*********************************************************
  1137. ' 目的:挂上Action接口
  1138. ' 参数:'plugname:接口名称
  1139. 'actioncode:要执行的语句,要转义为Execute可执行语句
  1140. '*********************************************************
  1141. Function Add_Action_Plugin(plugname,actioncode)
  1142. On Error Resume Next
  1143. actioncode=Replace(actioncode,"Exit Function","b" & plugname & "=True")
  1144. actioncode=Replace(actioncode,"Exit Sub","b" & plugname & "=True")
  1145. Call Execute("ReDim Preserve " & plugname & "(UBound("& plugname &")+1)")
  1146. Call Execute(plugname & "(UBound("& plugname &"))=" & plugname & "(UBound("& plugname &"))&""" & Replace(actioncode,"""","""""") & """" & ":")
  1147. Err.Clear
  1148. End Function
  1149. '*********************************************************
  1150. '*********************************************************
  1151. ' 目的:挂上Filter接口
  1152. ' 参数:'plugname:接口名称
  1153. 'functionname:要挂接的函数名
  1154. '*********************************************************
  1155. Function Add_Filter_Plugin(plugname,functionname)
  1156. On Error Resume Next
  1157. Call Execute("s" & plugname & "=" & "s" & plugname & "&""" & functionname & """" & "& ""|""")
  1158. Err.Clear
  1159. End Function
  1160. '*********************************************************
  1161. '*********************************************************
  1162. ' 目的:挂上Response接口
  1163. ' 参数:'plugname:接口名称
  1164. 'parameter:要写入的内容
  1165. '*********************************************************
  1166. Function Add_Response_Plugin(plugname,parameter)
  1167. On Error Resume Next
  1168. Call Execute(plugname & "=" & plugname & "&""" & Replace(parameter,"""","""""") & """")
  1169. Err.Clear
  1170. End Function
  1171. '*********************************************************
  1172. '*********************************************************
  1173. ' 目的:GetSettingFormName
  1174. '*********************************************************
  1175. Function GetSettingFormName(s)
  1176. On Error Resume Next
  1177. Dim x
  1178. Call Execute("x=" & s)
  1179. GetSettingFormName=x
  1180. Err.Clear
  1181. End Function
  1182. '*********************************************************
  1183. '*********************************************************
  1184. ' 目的:GetSettingFormName with Default
  1185. '*********************************************************
  1186. Function GetSettingFormNameWithDefault(s,d)
  1187. On Error Resume Next
  1188. Err.Clear
  1189. Dim x
  1190. Call Execute("x=" & s)
  1191. GetSettingFormNameWithDefault=x
  1192. If Err.Number<>0 Then
  1193. GetSettingFormNameWithDefault=d
  1194. End If
  1195. Err.Clear
  1196. End Function
  1197. '*********************************************************
  1198. '*********************************************************
  1199. ' 目的:GetNameFormTheme
  1200. '*********************************************************
  1201. Function GetNameFormTheme(s)
  1202. On Error Resume Next
  1203. GetNameFormTheme=s
  1204. Dim objXmlFile
  1205. Set objXmlFile=Server.CreateObject("Microsoft.XMLDOM")
  1206. objXmlFile.async = False
  1207. objXmlFile.ValidateOnParse=False
  1208. objXmlFile.load(BlogPath & "themes" & "/" & s & "/" & "theme.xml")
  1209. If objXmlFile.readyState=4 Then
  1210. If objXmlFile.parseError.errorCode <> 0 Then
  1211. Else
  1212. GetNameFormTheme=objXmlFile.documentElement.selectSingleNode("name").text
  1213. End If
  1214. End If
  1215. Err.Clear
  1216. End Function
  1217. '*********************************************************
  1218. '*********************************************************
  1219. ' 目的:    Blog ReBuild 核心
  1220. '*********************************************************
  1221. Function MakeBlogReBuild_Core()
  1222. On Error Resume Next
  1223. 'plugin node
  1224. For Each sAction_Plugin_MakeBlogReBuild_Core_Begin in Action_Plugin_MakeBlogReBuild_Core_Begin
  1225. If Not IsEmpty(sAction_Plugin_MakeBlogReBuild_Core_Begin) Then Call Execute(sAction_Plugin_MakeBlogReBuild_Core_Begin)
  1226. If bAction_Plugin_MakeBlogReBuild_Core_Begin=True Then Exit Function
  1227. Next
  1228. BlogReBuild_Statistics
  1229. BlogReBuild_Archives
  1230. BlogReBuild_Previous
  1231. BlogReBuild_Comments
  1232. BlogReBuild_GuestComments
  1233. BlogReBuild_TrackBacks
  1234. BlogReBuild_Catalogs
  1235. BlogReBuild_Calendar
  1236. BlogReBuild_Authors
  1237. BlogReBuild_Tags
  1238. 'BlogReBuild_Categorys
  1239. BuildAllCache
  1240. ExportRSS
  1241. 'ExportATOM
  1242. Call ClearGlobeCache()
  1243. Call LoadGlobeCache()
  1244. Dim bolOperateSuccess
  1245. Application.Lock
  1246. bolOperateSuccess=Application(ZC_BLOG_CLSID & "SIGNAL_OPERATESUCCESS")
  1247. Application.UnLock
  1248. Call SetBlogHint(bolOperateSuccess,False,Empty)
  1249. MakeBlogReBuild_Core=True
  1250. 'plugin node
  1251. For Each sAction_Plugin_MakeBlogReBuild_Core_End in Action_Plugin_MakeBlogReBuild_Core_End
  1252. If Not IsEmpty(sAction_Plugin_MakeBlogReBuild_Core_End) Then Call Execute(sAction_Plugin_MakeBlogReBuild_Core_End)
  1253. If bAction_Plugin_MakeBlogReBuild_Core_End=True Then Exit Function
  1254. Next
  1255. Err.Clear
  1256. End Function
  1257. '*********************************************************
  1258. '*********************************************************
  1259. ' 目的:    全新的部份索引程序
  1260. '*********************************************************
  1261. Function BuildAllCache()
  1262. 'plugin node
  1263. For Each sAction_Plugin_BuildAllCache_Begin in Action_Plugin_BuildAllCache_Begin
  1264. If Not IsEmpty(sAction_Plugin_BuildAllCache_Begin) Then Call Execute(sAction_Plugin_BuildAllCache_Begin)
  1265. If bAction_Plugin_BuildAllCache_Begin=True Then Exit Function
  1266. Next
  1267. Dim strList
  1268. Dim ArticleList
  1269. Dim AuthList
  1270. Dim CateList
  1271. Dim TagsList
  1272. Dim aryAllList()
  1273. Dim objRS
  1274. Dim i
  1275. Dim j
  1276. Dim n
  1277. Dim l
  1278. Dim k
  1279. Set objRS=Server.CreateObject("ADODB.Recordset")
  1280. objRS.CursorType = adOpenKeyset
  1281. objRS.LockType = adLockReadOnly
  1282. objRS.ActiveConnection=objConn
  1283. objRS.Source=""
  1284. objRS.Open("SELECT [log_ID] FROM [blog_Article] WHERE ([log_Level]>1) AND ([log_Istop]=False) ORDER BY [log_PostTime] DESC")
  1285. If (Not objRS.bof) And (Not objRS.eof) Then
  1286. objRS.PageSize = ZC_DISPLAY_COUNT
  1287. ReDim aryAllList(objRS.PageCount+1)
  1288. For i=1 to objRS.PageCount
  1289. objRS.AbsolutePage=i
  1290. For j = 1 To objRS.PageSize
  1291. If j=1 Then aryAllList(i)="AllPage" & i & "["
  1292. If i=1 Then
  1293. aryAllList(i)=aryAllList(i) & objRS("log_ID") & ";"
  1294. End If
  1295. If j=objRS.PageSize Then aryAllList(i)=aryAllList(i) & "]"
  1296. objRS.MoveNext
  1297. If objRS.EOF Then aryAllList(i)=aryAllList(i) & "]":Exit For
  1298. Next
  1299. Next
  1300. End If
  1301. objRS.Close
  1302. strList=strList & Join(aryAllList)
  1303. Erase aryAllList
  1304. objRS.Open("SELECT [log_ID] FROM [blog_Article] WHERE ([log_Level]>1) AND ([log_Istop]=True) ORDER BY [log_PostTime] DESC")
  1305. If (Not objRS.bof) And (Not objRS.eof) Then
  1306. objRS.PageSize = ZC_DISPLAY_COUNT
  1307. ReDim aryAllList(objRS.PageCount+1)
  1308. For i=1 to objRS.PageCount
  1309. objRS.AbsolutePage=i
  1310. For j = 1 To objRS.PageSize
  1311. If j=1 Then aryAllList(i)="IstopPage" & i & "["
  1312. aryAllList(i)=aryAllList(i) & objRS("log_ID") & ";"
  1313. If j=objRS.PageSize Then aryAllList(i)=aryAllList(i) & "]"
  1314. objRS.MoveNext
  1315. If objRS.EOF Then aryAllList(i)=aryAllList(i) & "]":Exit For
  1316. Next
  1317. Next
  1318. End If
  1319. objRS.Close
  1320. strList=strList & Join(aryAllList)
  1321. Erase aryAllList
  1322. Call SaveToFile(BlogPath & "/CACHE/cache_list_"&ZC_BLOG_CLSID&".html",strList,"utf-8",False)
  1323. BuildAllCache=True
  1324. End Function
  1325. '*********************************************************
  1326. '*********************************************************
  1327. ' 目的:    
  1328. '*********************************************************
  1329. Function BlogReBuild_Calendar()
  1330. 'plugin node
  1331. For Each sAction_Plugin_BlogReBuild_Calendar_Begin in Action_Plugin_BlogReBuild_Calendar_Begin
  1332. If Not IsEmpty(sAction_Plugin_BlogReBuild_Calendar_Begin) Then Call Execute(sAction_Plugin_BlogReBuild_Calendar_Begin)
  1333. If bAction_Plugin_BlogReBuild_Calendar_Begin=True Then Exit Function
  1334. Next
  1335. Dim objStream
  1336. Dim strCalendar
  1337. Dim i,j
  1338. Dim objRS
  1339. Dim k,l,m,n
  1340. 'Calendar
  1341. strCalendar=MakeCalendar("")
  1342. strCalendar=TransferHTML(strCalendar,"[no-asp]")
  1343. Call SaveToFile(BlogPath & "/include/calendar.asp",strCalendar,"utf-8",True)
  1344. BlogReBuild_Calendar=True
  1345. End Function
  1346. '*********************************************************
  1347. '*********************************************************
  1348. ' 目的:    
  1349. '*********************************************************
  1350. Function BlogReBuild_Archives()
  1351. 'plugin node
  1352. For Each sAction_Plugin_BlogReBuild_Archives_Begin in Action_Plugin_BlogReBuild_Archives_Begin
  1353. If Not IsEmpty(sAction_Plugin_BlogReBuild_Archives_Begin) Then Call Execute(sAction_Plugin_BlogReBuild_Archives_Begin)
  1354. If bAction_Plugin_BlogReBuild_Archives_Begin=True Then Exit Function
  1355. Next
  1356. Dim i
  1357. Dim j
  1358. Dim l
  1359. Dim n
  1360. Dim objRS
  1361. Dim objStream
  1362. Dim ArtList
  1363. 'Archives
  1364. Dim strArchives
  1365. Set objRS=objConn.Execute("SELECT * FROM [blog_Article] WHERE ([log_Level]>1) ORDER BY [log_PostTime] DESC")
  1366. If (Not objRS.bof) And (Not objRS.eof) Then
  1367. Dim dtmYM()
  1368. i=0
  1369. j=0
  1370. ReDim Preserve dtmYM(0)
  1371. Do While Not objRS.eof
  1372. j=UBound(dtmYM)
  1373. i=Year(objRS("log_PostTime")) & "-" & Month(objRS("log_PostTime"))
  1374. If i<>dtmYM(j) Then
  1375. ReDim Preserve dtmYM(j+1)
  1376. dtmYM(j+1)=i
  1377. End If
  1378. objRS.MoveNext
  1379. Loop
  1380. End If
  1381. objRS.Close
  1382. Set objRS=Nothing
  1383. If Not IsEmpty(dtmYM) Then
  1384. For i=1 to UBound(dtmYM)
  1385. l=Year(dtmYM(i))
  1386. n=Month(dtmYM(i))+1
  1387. IF n>12 Then l=l+1:n=1
  1388. Set objRS=objConn.Execute("SELECT COUNT([log_ID]) FROM [blog_Article] WHERE ([log_Level]>1) AND [log_PostTime] BETWEEN #"& Year(dtmYM(i)) &"-"& Month(dtmYM(i)) &"-1# AND #"& l &"-"& n &"-1#")
  1389. If (Not objRS.bof) And (Not objRS.eof) Then
  1390. If ZC_MOONSOFT_PLUGIN_ENABLE=True Then
  1391. strArchives=strArchives & "<li><a href="""& ZC_BLOG_HOST & ZC_STATIC_DIRECTORY & "/" & Year(dtmYM(i)) & "_" & Month(dtmYM(i)) & "." & ZC_STATIC_TYPE & """>" & Year(dtmYM(i)) & " " & ZVA_Month(Month(dtmYM(i))) & " (" & objRS(0) & ")" +"</a></li>"
  1392. ' Call BuildCategory(Empty,Empty,Empty,Year(dtmYM(i)) & "-" & Month(dtmYM(i)),Empty,ZC_DISPLAY_MODE_ALL,ZC_STATIC_DIRECTORY,Year(dtmYM(i)) & "_" & Month(dtmYM(i))& "." & ZC_STATIC_TYPE)
  1393. Else
  1394. strArchives=strArchives & "<li><a href="""& ZC_BLOG_HOST &"catalog.asp?date=" & Year(dtmYM(i)) & "-" & Month(dtmYM(i)) & """>" & Year(dtmYM(i)) & " " & ZVA_Month(Month(dtmYM(i))) & "<span class=""article-nums""> (" & objRS(0) & ")</span>" +"</a></li>"
  1395. End If
  1396. If ZC_ARCHIVE_COUNT>0 Then
  1397. If i=ZC_ARCHIVE_COUNT Then Exit For
  1398. End If
  1399. End If
  1400. objRS.Close
  1401. Set objRS=Nothing
  1402. Next
  1403. End If
  1404. strArchives=TransferHTML(strArchives,"[no-asp]")
  1405. Call SaveToFile(BlogPath & "/include/archives.asp",strArchives,"utf-8",True)
  1406. BlogReBuild_Archives=True
  1407. End Function
  1408. '*********************************************************
  1409. '*********************************************************
  1410. ' 目的:    
  1411. '*********************************************************
  1412. Function BlogReBuild_Catalogs()
  1413. 'plugin node
  1414. For Each sAction_Plugin_BlogReBuild_Catalogs_Begin in Action_Plugin_BlogReBuild_Catalogs_Begin
  1415. If Not IsEmpty(sAction_Plugin_BlogReBuild_Catalogs_Begin) Then Call Execute(sAction_Plugin_BlogReBuild_Catalogs_Begin)
  1416. If bAction_Plugin_BlogReBuild_Catalogs_Begin=True Then Exit Function
  1417. Next
  1418. Dim objRS
  1419. Dim objStream
  1420. Dim ArtList
  1421. 'Catalogs
  1422. Dim strCatalog
  1423. Set objRS=objConn.Execute("SELECT * FROM [blog_Category] ORDER BY [cate_Order] ASC,[cate_Count] DESC,[cate_ID] ASC")
  1424. If (Not objRS.bof) And (Not objRS.eof) Then
  1425. Do While Not objRS.eof
  1426. strCatalog=strCatalog & "<li><span class=""feed-icon""><a href="""& Categorys(objRS("cate_ID")).RssUrl &""" target=""_blank""><img title=""rss"" width=""20"" height=""12"" src="""&ZC_BLOG_HOST&"IMAGE/LOGO/rss.png"" border=""0"" alt=""rss"" /></a>&nbsp;</span><a href="""& Categorys(objRS("cate_ID")).Url & """>"+Categorys(objRS("cate_ID")).Name + "<span class=""article-nums""> (" & Categorys(objRS("cate_ID")).Count & ")</span>" +"</a></li>"
  1427. 'If ZC_MOONSOFT_PLUGIN_ENABLE=True Then
  1428. ' Call BuildCategory(Empty,Categorys(objRS("cate_ID")).ID,Empty,Empty,Empty,ZC_DISPLAY_MODE_ALL,Categorys(objRS("cate_ID")).Directory,Categorys(objRS("cate_ID")).FileName)
  1429. 'End If
  1430. objRS.MoveNext
  1431. Loop
  1432. End If
  1433. objRS.Close
  1434. Set objRS=Nothing
  1435. strCatalog=TransferHTML(strCatalog,"[no-asp]")
  1436. Call SaveToFile(BlogPath & "/include/catalog.asp",strCatalog,"utf-8",True)
  1437. BlogReBuild_Catalogs=True
  1438. End Function
  1439. '*********************************************************
  1440. '*********************************************************
  1441. ' 目的:    
  1442. '*********************************************************
  1443. Function BlogReBuild_Categorys()
  1444. 'plugin node
  1445. For Each sAction_Plugin_BlogReBuild_Categorys_Begin in Action_Plugin_BlogReBuild_Categorys_Begin
  1446. If Not IsEmpty(sAction_Plugin_BlogReBuild_Categorys_Begin) Then Call Execute(sAction_Plugin_BlogReBuild_Categorys_Begin)
  1447. If bAction_Plugin_BlogReBuild_Categorys_Begin=True Then Exit Function
  1448. Next
  1449. Dim objRS
  1450. Dim objStream
  1451. Dim objArticle
  1452. Dim i
  1453. 'Categorys
  1454. Dim strCategory
  1455. Dim Category
  1456. For Each Category in Categorys
  1457. If IsObject(Category) Then
  1458. Set objRS=objConn.Execute("SELECT [log_ID] FROM [blog_Article] WHERE ([log_ID]>0) AND ([log_Level]>1) AND ([log_CateID]="&Category.ID&") ORDER BY [log_PostTime] DESC")
  1459. If (Not objRS.bof) And (Not objRS.eof) Then
  1460. For i=1 to ZC_PREVIOUS_COUNT
  1461. Set objArticle=New TArticle
  1462. If objArticle.LoadInfoByID(objRS("log_ID")) Then
  1463. strCategory=strCategory & "<li><a href="""& objArticle.Url & """>" & objArticle.Title & "</a></li>"
  1464. End If
  1465. Set objArticle=Nothing
  1466. objRS.MoveNext
  1467. If objRS.eof Then Exit For
  1468. Next
  1469. End If
  1470. objRS.close
  1471. strCategory=TransferHTML(strCategory,"[no-asp]")
  1472. Call SaveToFile(BlogPath & "/include/category_"&Category.ID&".asp",strCategory,"utf-8",True)
  1473. strCategory=""
  1474. End If
  1475. Next
  1476. BlogReBuild_Categorys=True
  1477. End Function
  1478. '*********************************************************
  1479. '*********************************************************
  1480. ' 目的:    
  1481. '*********************************************************
  1482. Function BlogReBuild_Authors()
  1483. 'plugin node
  1484. For Each sAction_Plugin_BlogReBuild_Authors_Begin in Action_Plugin_BlogReBuild_Authors_Begin
  1485. If Not IsEmpty(sAction_Plugin_BlogReBuild_Authors_Begin) Then Call Execute(sAction_Plugin_BlogReBuild_Authors_Begin)
  1486. If bAction_Plugin_BlogReBuild_Authors_Begin=True Then Exit Function
  1487. Next
  1488. Dim objRS
  1489. Dim objStream
  1490. 'Authors
  1491. Dim strAuthor
  1492. Dim User
  1493. For Each User in Users
  1494. If IsObject(User) Then
  1495. strAuthor=strAuthor & "<li><a href="""& User.Url & """>"+User.Name + " (" & User.Count & ")" +"</a></li>"
  1496. End If
  1497. Next
  1498. strAuthor=TransferHTML(strAuthor,"[no-asp]")
  1499. Call SaveToFile(BlogPath & "/include/authors.asp",strAuthor,"utf-8",True)
  1500. BlogReBuild_Authors=True
  1501. End Function
  1502. '*********************************************************
  1503. '*********************************************************
  1504. ' 目的:    
  1505. '*********************************************************
  1506. Function BlogReBuild_Tags()
  1507. 'plugin node
  1508. For Each sAction_Plugin_BlogReBuild_Tags_Begin in Action_Plugin_BlogReBuild_Tags_Begin
  1509. If Not IsEmpty(sAction_Plugin_BlogReBuild_Tags_Begin) Then Call Execute(sAction_Plugin_BlogReBuild_Tags_Begin)
  1510. If bAction_Plugin_BlogReBuild_Tags_Begin=True Then Exit Function
  1511. Next
  1512. Dim objRS
  1513. Dim objStream
  1514. Dim i,j
  1515. i=GetSettingFormName("ZC_TAGS_DISPLAY_COUNT")
  1516. If i="" Then i=50
  1517. j=0
  1518. 'Authors
  1519. Dim strTag
  1520. Set objRS=objConn.Execute("SELECT * FROM [blog_Tag] ORDER BY [tag_Count] DESC,[tag_ID] ASC")
  1521. If (Not objRS.bof) And (Not objRS.eof) Then
  1522. Do While Not objRS.eof
  1523. If j=i Then Exit Do
  1524. strTag=strTag & "<li><a href="""& Tags(objRS("tag_ID")).Url & """>"+Tags(objRS("tag_ID")).Name + " <span class=""tag-count"">(" & Tags(objRS("tag_ID")).Count & ")</span>" +"</a></li>"
  1525. objRS.MoveNext
  1526. j=j+1
  1527. Loop
  1528. End If
  1529. objRS.Close
  1530. Set objRS=Nothing
  1531. strTag=TransferHTML(strTag,"[no-asp]")
  1532. Call SaveToFile(BlogPath & "/include/tags.asp",strTag,"utf-8",True)
  1533. BlogReBuild_Tags=True
  1534. End Function
  1535. '*********************************************************
  1536. '*********************************************************
  1537. ' 目的:    
  1538. '*********************************************************
  1539. Function BlogReBuild_Previous()
  1540. 'plugin node
  1541. For Each sAction_Plugin_BlogReBuild_Previous_Begin in Action_Plugin_BlogReBuild_Previous_Begin
  1542. If Not IsEmpty(sAction_Plugin_BlogReBuild_Previous_Begin) Then Call Execute(sAction_Plugin_BlogReBuild_Previous_Begin)
  1543. If bAction_Plugin_BlogReBuild_Previous_Begin=True Then Exit Function
  1544. Next
  1545. Dim i
  1546. Dim objRS
  1547. Dim objStream
  1548. Dim objArticle
  1549. 'Previous
  1550. Dim strPrevious
  1551. Set objRS=objConn.Execute("SELECT [log_ID] FROM [blog_Article] WHERE ([log_ID]>0) AND ([log_Level]>1) ORDER BY [log_PostTime] DESC")
  1552. If (Not objRS.bof) And (Not objRS.eof) Then
  1553. For i=1 to ZC_PREVIOUS_COUNT
  1554. Set objArticle=New TArticle
  1555. If objArticle.LoadInfoByID(objRS("log_ID")) Then
  1556. strPrevious=strPrevious & "<li><a href="""& objArticle.Url & """ title="""& objArticle.HtmlTitle &"""><span class=""article-date"">["& Right("0" & Month(objArticle.PostTime),2) & "/" & Right("0" & Day(objArticle.PostTime),2) &"]</span>" & objArticle.Title & "</a></li>"
  1557. End If
  1558. Set objArticle=Nothing
  1559. objRS.MoveNext
  1560. If objRS.eof Then Exit For
  1561. Next
  1562. End If
  1563. objRS.close
  1564. strPrevious=TransferHTML(strPrevious,"[no-asp]")
  1565. Call SaveToFile(BlogPath & "/include/previous.asp",strPrevious,"utf-8",True)
  1566. BlogReBuild_Previous=True
  1567. End Function
  1568. '*********************************************************
  1569. '*********************************************************
  1570. ' 目的:    
  1571. '*********************************************************
  1572. Function BlogReBuild_Comments()
  1573. 'plugin node
  1574. For Each sAction_Plugin_BlogReBuild_Comments_Begin in Action_Plugin_BlogReBuild_Comments_Begin
  1575. If Not IsEmpty(sAction_Plugin_BlogReBuild_Comments_Begin) Then Call Execute(sAction_Plugin_BlogReBuild_Comments_Begin)
  1576. If bAction_Plugin_BlogReBuild_Comments_Begin=True Then Exit Function
  1577. Next
  1578. Dim objRS
  1579. Dim objStream
  1580. Dim objArticle
  1581. 'Comments
  1582. Dim strComments
  1583. Dim s
  1584. Dim i
  1585. Set objRS=objConn.Execute("SELECT [log_ID],[comm_ID],[comm_Content],[comm_PostTime],[comm_Author] FROM [blog_Comment] WHERE [log_ID]>0 ORDER BY [comm_PostTime] DESC,[comm_ID] DESC")
  1586. If (Not objRS.bof) And (Not objRS.eof) Then
  1587. For i=1 to ZC_MSG_COUNT
  1588. s=objRS("comm_Content")
  1589. s=Replace(s,vbCrlf,"")
  1590. If (Len(s)>ZC_RECENT_COMMENT_WORD_MAX) And (ZC_RECENT_COMMENT_WORD_MAX>(Len(ZC_MSG305)+1)) Then s=Left(s,ZC_RECENT_COMMENT_WORD_MAX-(Len(ZC_MSG305)+1))&ZC_MSG305
  1591. Set objArticle=New TArticle
  1592. If objArticle.LoadInfoByID(objRS("log_ID")) Then
  1593. strComments=strComments & "<li><a href="""& objArticle.Url & "#cmt" & objRS("comm_ID") & """ title=""" & objRS("comm_PostTime") & " post by " & objRS("comm_Author") & """>"+s+"</a></li>"
  1594. End If
  1595. Set objArticle=Nothing
  1596. objRS.MoveNext
  1597. If objRS.eof Then Exit For
  1598. Next
  1599. End If
  1600. objRS.close
  1601. Set objRS=Nothing
  1602. strComments=TransferHTML(strComments,"[no-asp]")
  1603. Call SaveToFile(BlogPath & "/include/comments.asp",strComments,"utf-8",True)
  1604. BlogReBuild_Comments=True
  1605. End Function
  1606. '*********************************************************
  1607. '*********************************************************
  1608. ' 目的:    
  1609. '*********************************************************
  1610. Function BlogReBuild_GuestComments()
  1611. 'plugin node
  1612. For Each sAction_Plugin_BlogReBuild_GuestComments_Begin in Action_Plugin_BlogReBuild_GuestComments_Begin
  1613. If Not IsEmpty(sAction_Plugin_BlogReBuild_GuestComments_Begin) Then Call Execute(sAction_Plugin_BlogReBuild_GuestComments_Begin)
  1614. If bAction_Plugin_BlogReBuild_GuestComments_Begin=True Then Exit Function
  1615. Next
  1616. Dim objRS
  1617. Dim objStream
  1618. Dim objArticle
  1619. 'Comments
  1620. Dim strComments
  1621. Dim s
  1622. Dim i
  1623. Set objRS=objConn.Execute("SELECT [log_ID],[comm_ID],[comm_Content],[comm_PostTime],[comm_Author] FROM [blog_Comment] WHERE [log_ID]=0 ORDER BY [comm_ID] DESC")
  1624. If (Not objRS.bof) And (Not objRS.eof) Then
  1625. For i=1 to ZC_MSG_COUNT
  1626. s=objRS("comm_Content")
  1627. s=Replace(s,vbCrlf,"")
  1628. If (len(s)>ZC_RECENT_COMMENT_WORD_MAX) And (ZC_RECENT_COMMENT_WORD_MAX>(Len(ZC_MSG305)+1)) Then s=Left(s,ZC_RECENT_COMMENT_WORD_MAX-(Len(ZC_MSG305)+1))&ZC_MSG305
  1629. strComments=strComments & "<li><a href="""& ZC_BLOG_HOST & "guestbook.asp" & "#cmt" & objRS("comm_ID") & """ title=""" & objRS("comm_PostTime") & " post by " & objRS("comm_Author") & """>"+s+"</a></li>"
  1630. objRS.MoveNext
  1631. If objRS.eof Then Exit For
  1632. Next
  1633. End If
  1634. objRS.close
  1635. Set objRS=Nothing
  1636. strComments=TransferHTML(strComments,"[no-asp]")
  1637. Call SaveToFile(BlogPath & "/include/guestcomments.asp",strComments,"utf-8",True)
  1638. BlogReBuild_GuestComments=True
  1639. End Function
  1640. '*********************************************************
  1641. '*********************************************************
  1642. ' 目的:    
  1643. '*********************************************************
  1644. Function BlogReBuild_TrackBacks()
  1645. 'plugin node
  1646. For Each sAction_Plugin_BlogReBuild_TrackBacks_Begin in Action_Plugin_BlogReBuild_TrackBacks_Begin
  1647. If Not IsEmpty(sAction_Plugin_BlogReBuild_TrackBacks_Begin) Then Call Execute(sAction_Plugin_BlogReBuild_TrackBacks_Begin)
  1648. If bAction_Plugin_BlogReBuild_TrackBacks_Begin=True Then Exit Function
  1649. Next
  1650. Dim objRS
  1651. Dim objStream
  1652. Dim objArticle
  1653. 'TrackBacks
  1654. Dim strTrackBacks
  1655. Dim s
  1656. Dim i
  1657. Set objRS=objConn.Execute("SELECT * FROM [blog_TrackBack] ORDER BY [tb_ID] DESC")
  1658. If (Not objRS.bof) And (Not objRS.eof) Then
  1659. For i=1 to ZC_MSG_COUNT
  1660. s=objRS("tb_Title")
  1661. s=Replace(s,vbCrlf,"")
  1662. If (len(s)>ZC_RECENT_COMMENT_WORD_MAX) And (ZC_RECENT_COMMENT_WORD_MAX>(Len(ZC_MSG305)+1)) Then s=Left(s,ZC_RECENT_COMMENT_WORD_MAX-(Len(ZC_MSG305)+1))&ZC_MSG305
  1663. Set objArticle=New TArticle
  1664. If objArticle.LoadInfoByID(objRS("log_ID")) Then
  1665. strTrackBacks=strTrackBacks & "<li><a href="""& objArticle.Url & "#tb" & objRS("tb_ID") & """ title=""" & objRS("tb_PostTime") & " post by " & Replace(objRS("tb_Blog"),"""","") & """>"+s+"</a></li>"
  1666. End If
  1667. Set objArticle=Nothing
  1668. objRS.MoveNext
  1669. If objRS.eof Then Exit For
  1670. Next
  1671. End If
  1672. objRS.close
  1673. Set objRS=Nothing
  1674. strTrackBacks=TransferHTML(strTrackBacks,"[no-asp]")
  1675. Call SaveToFile(BlogPath & "/include/trackbacks.asp",strTrackBacks,"utf-8",True)
  1676. BlogReBuild_TrackBacks=True
  1677. End Function
  1678. '*********************************************************
  1679. '*********************************************************
  1680. ' 目的:    
  1681. '*********************************************************
  1682. Function BlogReBuild_Statistics()
  1683. 'plugin node
  1684. For Each sAction_Plugin_BlogReBuild_Statistics_Begin in Action_Plugin_BlogReBuild_Statistics_Begin
  1685. If Not IsEmpty(sAction_Plugin_BlogReBuild_Statistics_Begin) Then Call Execute(sAction_Plugin_BlogReBuild_Statistics_Begin)
  1686. If bAction_Plugin_BlogReBuild_Statistics_Begin=True Then Exit Function
  1687. Next
  1688. Dim i
  1689. Dim objRS
  1690. Dim objStream
  1691. '重新统计分类及用户的文章数、评论数
  1692. Dim Category
  1693. For Each Category in Categorys
  1694. If IsObject(Category) Then
  1695. Set objRS=objConn.Execute("SELECT COUNT([log_ID]) FROM [blog_Article] WHERE [log_Level]>1 AND [log_CateID]=" & Category.ID )
  1696. i=objRS(0)
  1697. objConn.Execute("UPDATE [blog_Category] SET [cate_Count]="&i&" WHERE [cate_ID] =" & Category.ID)
  1698. Set objRS=Nothing
  1699. End If
  1700. Next
  1701. Dim User
  1702. 'For Each User in Users
  1703. ' If IsObject(User) Then
  1704. ' Set objRS=objConn.Execute("SELECT COUNT([log_ID]) FROM [blog_Article] WHERE [log_Level]>1 AND [log_AuthorID]=" & User.ID )
  1705. ' i=objRS(0)
  1706. ' objConn.Execute("UPDATE [blog_Member] SET [mem_PostLogs]="&i&" WHERE [mem_ID] =" & User.ID)
  1707. ' Set objRS=Nothing
  1708. '
  1709. ' Set objRS=objConn.Execute("SELECT COUNT([comm_ID]) FROM [blog_Comment] WHERE [comm_AuthorID]=" & User.ID )
  1710. ' i=objRS(0)
  1711. ' objConn.Execute("UPDATE [blog_Member] SET [mem_PostComms]="&i&" WHERE [mem_ID] =" & User.ID)
  1712. ' Set objRS=Nothing
  1713. ' End If
  1714. 'Next
  1715. 'Dim Tag
  1716. 'For Each Tag in Tags
  1717. ' If IsObject(Tag) Then
  1718. ' Set objRS=objConn.Execute("SELECT COUNT([log_ID]) FROM [blog_Article] WHERE [log_Level]>1 AND [log_Tag] LIKE '%{" & Tag.ID & "}%'")
  1719. ' i=objRS(0)
  1720. ' objConn.Execute("UPDATE [blog_Tag] SET [tag_Count]="&i&" WHERE [tag_ID] =" & Tag.ID)
  1721. ' Set objRS=Nothing
  1722. ' End If
  1723. 'Next
  1724. 'Statistics
  1725. Dim strStatistics
  1726. Set objRS=Server.CreateObject("ADODB.Recordset")
  1727. objRS.CursorType = adOpenKeyset
  1728. objRS.LockType = adLockReadOnly
  1729. objRS.ActiveConnection=objConn
  1730. objRS.Source=""
  1731. objRS.Open("SELECT COUNT([log_ID])AS allArticle,SUM([log_CommNums]) AS allCommNums,SUM([log_ViewNums]) AS allViewNums,SUM([log_TrackBackNums]) AS allTrackBackNums FROM [blog_Article]")
  1732. If (Not objRS.bof) And (Not objRS.eof) Then
  1733. strStatistics=strStatistics & "<li>"& ZC_MSG082 &":" & objRS("allArticle") & "</li>"
  1734. strStatistics=strStatistics & "<li>"& ZC_MSG124 &":" & objRS("allCommNums") & "</li>"
  1735. strStatistics=strStatistics & "<li>"& ZC_MSG125 &":" & objRS("allTrackBackNums") & "</li>"
  1736. strStatistics=strStatistics & "<li>"& ZC_MSG129 &":" & objRS("allViewNums") & "</li>"
  1737. End If
  1738. objRS.Close
  1739. objRS.Open("SELECT COUNT([comm_ID])AS allComment FROM [blog_Comment] WHERE [log_ID]=0")
  1740. If (Not objRS.bof) And (Not objRS.eof) Then
  1741. strStatistics=strStatistics & "<li>"& ZC_MSG284 &":" & objRS("allComment") & "</li>"
  1742. End If
  1743. objRS.Close
  1744. strStatistics=strStatistics & "<li>"& ZC_MSG306 &":" & GetNameFormTheme(ZC_BLOG_THEME) & "</li>"
  1745. strStatistics=strStatistics & "<li>"& ZC_MSG083 &":" & ZC_BLOG_CSS & "</li>"
  1746. 'strStatistics=strStatistics & "<li>"& ZC_MSG084 &":" & ZC_BLOG_LANGUAGE & "</li>"
  1747. Set objRS=Nothing
  1748. strStatistics=TransferHTML(strStatistics,"[no-asp]")
  1749. Call SaveToFile(BlogPath & "/include/statistics.asp",strStatistics,"utf-8",False)
  1750. Call GetCategory()
  1751. Call GetUser()
  1752. Call GetTags()
  1753. Call GetKeyWords()
  1754. BlogReBuild_Statistics=True
  1755. End Function
  1756. '*********************************************************
  1757. '/////////////////////////////////////////////////////////////////////////////////////////
  1758. '*********************************************************
  1759. ' 目的:    Export RSS 2.0
  1760. '*********************************************************
  1761. Function ExportRSS()
  1762. 'plugin node
  1763. For Each sAction_Plugin_ExportRSS_Begin in Action_Plugin_ExportRSS_Begin
  1764. If Not IsEmpty(sAction_Plugin_ExportRSS_Begin) Then Call Execute(sAction_Plugin_ExportRSS_Begin)
  1765. If bAction_Plugin_ExportRSS_Begin=True Then Exit Function
  1766. Next
  1767. Dim Rss2Export
  1768. Dim objArticle
  1769. Set Rss2Export = New TNewRss2Export
  1770. With Rss2Export
  1771. .TimeZone=ZC_TIME_ZONE
  1772. .AddChannelAttribute "title",TransferHTML(ZC_BLOG_TITLE,"[html-format]")
  1773. .AddChannelAttribute "link",TransferHTML(ZC_BLOG_HOST,"[html-format]")
  1774. .AddChannelAttribute "description",TransferHTML(ZC_BLOG_SUBTITLE,"[html-format]")
  1775. .AddChannelAttribute "generator","RainbowSoft Studio Z-Blog " & ZC_BLOG_VERSION
  1776. .AddChannelAttribute "language",ZC_BLOG_LANGUAGE
  1777. .AddChannelAttribute "copyright",TransferHTML(ZC_BLOG_COPYRIGHT,"[nohtml][html-format]")
  1778. .AddChannelAttribute "pubDate",GetTime(Now())
  1779. Dim i
  1780. Dim objRS
  1781. Set objRS=objConn.Execute("SELECT [log_ID],[log_Tag],[log_CateID],[log_Title],[log_Intro],[log_Content],[log_Level],[log_AuthorID],[log_PostTime],[log_CommNums],[log_ViewNums],[log_TrackBackNums],[log_Url],[log_Istop] FROM [blog_Article] WHERE ([log_ID]>0) AND ([log_Level]>2) ORDER BY [log_PostTime] DESC")
  1782. If (Not objRS.bof) And (Not objRS.eof) Then
  1783. For i=1 to ZC_RSS2_COUNT
  1784. Set objArticle=New TArticle
  1785. If objArticle.LoadInfoByArray(Array(objRS("log_ID"),objRS("log_Tag"),objRS("log_CateID"),objRS("log_Title"),objRS("log_Intro"),objRS("log_Content"),objRS("log_Level"),objRS("log_AuthorID"),objRS("log_PostTime"),objRS("log_CommNums"),objRS("log_ViewNums"),objRS("log_TrackBackNums"),objRS("log_Url"),objRS("log_Istop"))) Then
  1786. If ZC_RSS_EXPORT_WHOLE Then
  1787. .AddItem objArticle.HtmlTitle,Users(objArticle.AuthorID).Email & " (" & Users(objArticle.AuthorID).Name & ")",objArticle.HtmlUrl,objArticle.PostTime,objArticle.HtmlUrl,objArticle.HtmlContent,Categorys(objArticle.CateID).HtmlName,objArticle.CommentUrl,objArticle.WfwComment,objArticle.WfwCommentRss,objArticle.TrackBackUrl
  1788. Else
  1789. .AddItem objArticle.HtmlTitle,Users(objArticle.AuthorID).Email & " (" & Users(objArticle.AuthorID).Name & ")",objArticle.HtmlUrl,objArticle.PostTime,objArticle.HtmlUrl,objArticle.HtmlIntro,Categorys(objArticle.CateID).HtmlName,objArticle.CommentUrl,objArticle.WfwComment,objArticle.WfwCommentRss,objArticle.TrackBackUrl
  1790. End If
  1791. End If
  1792. objRS.MoveNext
  1793. If objRS.eof Then Exit For
  1794. Set objArticle=Nothing
  1795. Next
  1796. End If
  1797. End With
  1798. 'Rss2Export.Execute
  1799. Rss2Export.SaveToFile(BlogPath & "/rss.xml")
  1800. Set Rss2Export = Nothing
  1801. objRS.close
  1802. Set objRS=Nothing
  1803. ExportRSS=True
  1804. 'Response.ContentType = "text/html"
  1805. 'Response.Clear
  1806. End Function
  1807. '*********************************************************
  1808. '*********************************************************
  1809. ' 目的:    Export ATOM 1.0
  1810. '*********************************************************
  1811. Function ExportATOM()
  1812. 'plugin node
  1813. For Each sAction_Plugin_ExportATOM_Begin in Action_Plugin_ExportATOM_Begin
  1814. If Not IsEmpty(sAction_Plugin_ExportATOM_Begin) Then Call Execute(sAction_Plugin_ExportATOM_Begin)
  1815. If bAction_Plugin_ExportATOM_Begin=True Then Exit Function
  1816. Next
  1817. Dim objArticle
  1818. Dim Atom10Export
  1819. Set Atom10Export = New TAtom10Export
  1820. Atom10Export.TimeZone=ZC_TIME_ZONE
  1821. Dim AtomEntry
  1822. Dim AtomFeed
  1823. Set AtomFeed = New TAtomFeed
  1824. With AtomFeed
  1825. .atomTitle=TransferHTML(ZC_BLOG_TITLE,"[html-format]")
  1826. .atomSubtitle=TransferHTML(ZC_BLOG_SUBTITLE,"[html-format]")
  1827. .atomID=ZC_BLOG_HOST
  1828. .atomLink "alternate","text/html",ZC_BLOG_HOST
  1829. .atomLink "self","application/atom+xml",ZC_BLOG_HOST & "atom.xml"
  1830. '.atomPerson "author",BlogUser.Name,BlogUser.Email,BlogUser.HomePage
  1831. .atomGenerator "RainbowSoft Studio Z-Blog","http://www.rainbowsoft.org/",ZC_BLOG_VERSION
  1832. .atomUpdated=GetTime(Now())
  1833. End With
  1834. Atom10Export.GetFeed(AtomFeed.Node)
  1835. Dim i
  1836. Dim objRS
  1837. Set objRS=objConn.Execute("SELECT [log_ID],[log_Tag],[log_CateID],[log_Title],[log_Intro],NULL,[log_Level],[log_AuthorID],[log_PostTime],[log_CommNums],[log_ViewNums],[log_TrackBackNums],[log_Url],[log_Istop] FROM [blog_Article] WHERE ([log_ID]>0) AND ([log_Level]>2) ORDER BY [log_PostTime] DESC")
  1838. If (Not objRS.bof) And (Not objRS.eof) Then
  1839. For i=1 to ZC_RSS2_COUNT
  1840. Set objArticle=New TArticle
  1841. Set AtomEntry = New TAtomEntry
  1842. With AtomEntry
  1843. If objArticle.LoadInfoByArray(Array(objRS("log_ID"),objRS("log_Tag"),objRS("log_CateID"),objRS("log_Title"),objRS("log_Intro"),,objRS("log_Level"),objRS("log_AuthorID"),objRS("log_PostTime"),objRS("log_CommNums"),objRS("log_ViewNums"),objRS("log_TrackBackNums"),objRS("log_Url"),objRS("log_Istop"))) Then
  1844. .atomTitle=objArticle.HtmlTitle
  1845. .atomPerson "author",Users(objArticle.AuthorID).Name,Users(objArticle.AuthorID).Email,Users(objArticle.AuthorID).HomePage
  1846. .atomCategory "",Categorys(objArticle.CateID).Url,Categorys(objArticle.CateID).HtmlName
  1847. .atomUpdated=objArticle.PostTime
  1848. .atomPublished=objArticle.PostTime
  1849. .atomSummary=objArticle.HtmlIntro
  1850. .atomLink "alternate","text/html",objArticle.Url
  1851. .atomID=objArticle.Url
  1852. End If
  1853. End With
  1854. Atom10Export.GetEntry(AtomEntry.Node)
  1855. Set AtomEntry = Nothing
  1856. Set objArticle=Nothing
  1857. objRS.MoveNext
  1858. If objRS.eof Then Exit For
  1859. Next
  1860. End If
  1861. objRS.close
  1862. Set objRS=Nothing
  1863. 'Atom10Export.Execute
  1864. Atom10Export.SaveToFile(BlogPath & "/atom.xml")
  1865. Set Atom10Export = Nothing
  1866. ExportATOM=True
  1867. 'Response.ContentType = "text/html"
  1868. 'Response.Clear
  1869. End Function
  1870. '*********************************************************
  1871. '*********************************************************
  1872. ' 目的:    Build Category
  1873. '*********************************************************
  1874. Function BuildCategory(intPage,intCateId,intAuthorId,dtmYearMonth,strTagsName,intType,strDirectory,strFileName)
  1875. Dim ArtList
  1876. Set ArtList=New TArticleList
  1877. ArtList.LoadCache
  1878. ArtList.template="CATALOG"
  1879. If ArtList.ExportByMixed(intPage,intCateId,intAuthorId,dtmYearMonth,strTagsName,intType) Then
  1880. ArtList.FileName=strFileName
  1881. ArtList.Directory=strDirectory
  1882. ArtList.Build
  1883. ArtList.Save
  1884. End If
  1885. Set ArtList=Nothing
  1886. End Function
  1887. '*********************************************************
  1888. '*********************************************************
  1889. ' 目的:    Build Article
  1890. '*********************************************************
  1891. Function BuildArticle(intID,bolBuildNavigate,bolBuildCategory)
  1892. Dim objArticle
  1893. Set objArticle=New TArticle
  1894. If objArticle.LoadInfoByID(intID) Then
  1895. objArticle.Statistic
  1896. objArticle.template="SINGLE"
  1897. If objArticle.Export(ZC_DISPLAY_MODE_ALL) Then
  1898. objArticle.SaveCache
  1899. objArticle.Build
  1900. objArticle.Save
  1901. If (bolBuildCategory=True) And (ZC_MOONSOFT_PLUGIN_ENABLE=True) Then
  1902. Call BuildCategory(Empty,Categorys(objArticle.CateID).ID,Empty,Empty,Empty,ZC_DISPLAY_MODE_ALL,Categorys(objArticle.CateID).Directory,Categorys(objArticle.CateID).FileName)
  1903. Call BuildCategory(Empty,Empty,Empty,Year(objArticle.PostTime) & "-" & Month(objArticle.PostTime),Empty,ZC_DISPLAY_MODE_ALL,ZC_STATIC_DIRECTORY,Year(objArticle.PostTime) & "_" & Month(objArticle.PostTime) & "." & ZC_STATIC_TYPE)
  1904. End If
  1905. End If
  1906. If (bolBuildNavigate=True) And (ZC_USE_NAVIGATE_ARTICLE=True) Then
  1907. Dim objRS
  1908. Set objRS=objConn.Execute("SELECT TOP 1 [log_ID] FROM [blog_Article] WHERE ([log_Level]>2) AND ([log_PostTime]<#" & objArticle.PostTime & "#) ORDER BY [log_PostTime] DESC")
  1909. If (Not objRS.bof) And (Not objRS.eof) Then
  1910. Call BuildArticle(objRS("log_ID"),False,False)
  1911. End If
  1912. Set objRS=Nothing
  1913. Set objRS=objConn.Execute("SELECT TOP 1 [log_ID] FROM [blog_Article] WHERE ([log_Level]>2) AND ([log_PostTime]>#" & objArticle.PostTime & "#) ORDER BY [log_PostTime] ASC")
  1914. If (Not objRS.bof) And (Not objRS.eof) Then
  1915. Call BuildArticle(objRS("log_ID"),False,False)
  1916. End If
  1917. Set objRS=Nothing
  1918. End If
  1919. BuildArticle=True
  1920. End If
  1921. Set objArticle=Nothing
  1922. End Function
  1923. '*********************************************************
  1924. %>