Private objAPI
Private objCore
Private objXML
Private objUser
Private objCoop
Private objForum
Private objArticle
Private intPageNo
Private intPageId

Private Sub Class_Initialize()
    Set objAPI = New WAPmoAPI
    Set objCore = objAPI.Core
    Set objXML = objCore.XMLParser
    Set objUser = objCore.User
    Set objCoop = objCore.Coop
End Sub

Private Sub Class_Terminate()
    Set objCoop = Nothing
    Set objUser = Nothing
    Set objXML = Nothing
    Set objCore = Nothing
    Set objAPI = Nothing
End Sub

Public Sub main()
    objXML.Align = "center"
    objXML.Println MyKernel.Config("BBSTitle")
    objXML.Align = "left"
    Set objForum = MyKernel.Table(T_FORUM)
    Set objArticle = MyKernel.Table(T_ARTICLE)
    intPageNo = atoi(Request.QueryString("PageNo"))
    intPageId = atoi(Request.QueryString("PageId"))
    If MyKernel.Config("IsBBS") <> "1" Then
        objXML.Println "ùѱվر"
    ElseIf objForum.Exec("*", "SeqId=" & atol(Request.QueryString("ForumId"))) = False Then
        objCore.Redirect "bbs/index.asp"
    ElseIf objArticle.Exec("*", "SeqId=" & atol(Request.QueryString("ArticleId"))) = False Then
        objCore.Redirect "bbs/forum.asp?ForumId=" & objForum.Item("SeqId")
    ElseIf Request.ServerVariables("REQUEST_METHOD") = "POST" Then
        Call doPost
    Else
        objXML.Println "[" & objForum.Item("Title") & "]"
        objXML.Printf objCore.CreateA("bbs/post.asp?ForumId=" & objForum.Item("SeqId") & "&PageNo=" & intPageNo, "Ҫ", "")
        objXML.Printf " "
        objXML.Println objCore.CreateA("bbs/post.asp?ForumId=" & objForum.Item("SeqId") & "&PageNo=" & intPageNo & "&ArticleId=" & objArticle.Item("SeqId") & "&PageId=" & intPageId, "Ҫ", "")
        objXML.Println "⣺" & objArticle.Item("Title")
        objCore.Query("Refer") = objCore.Referer
        If atoi(Request.QueryString("PageId")) <= 1 Then
            objXML.Println "ݣ" & MyFormat(MyKernel.Config("ForbidWord"), objArticle.Item("Content"))
            If MyKernel.Modlist(9) = "1" And MyKernel.Config("IsMsgbox") = "1" Then
                objXML.Printf "ߣ"
                objXML.Println objCore.CreateA("msgbox.asp?Handle=Send&UserId=" & objArticle.Item("UserId"), objArticle.Item("UserName"), "")
            Else
                objXML.Println "ߣ" & objArticle.Item("UserName")
            End If
            objXML.Println "ʱ䣺" & FormatTime(getDate(objArticle.Item("Intime")), "YYYY-MM-DD HH24:MI:SS")
            Call UpdateRecord
        End If
        objCore.Query("Refer") = Empty
        objXML.Println String(16, "-")
        Call doGet
        objXML.Println objCore.CreateA("bbs/forum.asp?ForumId=" & objForum.Item("SeqId") & "&PageNo=" & intPageNo, "" & objForum.Item("Title"), objCore.CreateImg("back.gif", ""))
    End If
    Set objArticle = Nothing
    Set objForum = Nothing
    objXML.Println objCore.CreateA("bbs/index.asp", "" & MyKernel.Config("BBSTitle"), objCore.CreateImg("back.gif", ""))
    objCore.ExportBackHome "1", "ҳ"
    objXML.Println ""
End Sub

Private Sub doGet()
    Call doGetArticle
End Sub

Private Sub doPost()
End Sub

Private Sub doGetArticle()
    Dim objPage
    Dim rs
    Dim i
    Set objPage = Server.CreateObject("WMKernel.IPage")
    objPage.PageName = "PageId"
    objPage.PageSize = 10
    objPage.DataType = WM_DataType
    objPage.Increment = "Intime"
    objPage.Table = T_ARTICLE
    objPage.Where = "ForumId=" & objForum.Item("SeqId") & " AND Follow=" & objArticle.Item("SeqId")
    objPage.Sort = "Intime ASC"
    objPage.SortType = False
    Set rs = objPage.Exec()
    If objPage.TotalRow > 0 Then
        i = 0
        Dim objArt
        Set objArt = MyKernel.Table(T_ARTICLE)
        objCore.Query("Refer") = objCore.Referer
        Do While rs.EOF = False And i < objPage.PageSize
            objArt.Source = rs
            objXML.Println "" & MyFormat(MyKernel.Config("ForbidWord"), objArt.Item("Content"))
            If MyKernel.Modlist(9) = "1" And MyKernel.Config("IsMsgbox") = "1" Then
                objXML.Printf "ߣ"
                objXML.Println objCore.CreateA("msgbox.asp?Handle=Send&UserId=" & objArt.Item("UserId"), objArt.Item("UserName"), "")
            Else
                objXML.Println "ߣ" & objArt.Item("UserName")
            End If
            objXML.Println "ʱ䣺" & FormatTime(getDate(objArt.Item("Intime")), "YYYY-MM-DD HH24:MI:SS")
            objXML.Println String(16, "-")
            rs.MoveNext
            i = i + 1
        Loop
        objCore.Query("Refer") = Empty
        Set objArt = Nothing
        objXML.Println ""
        If objPage.PageNum < objPage.TotalPage Then
            objXML.Printf objCore.CreateA("bbs/article.asp?ForumId=" & objForum.Item("SeqId") & "&PageNo=" & intPageNo & "&ArticleId=" & objArticle.Item("SeqId") & "&PageId=" & (objPage.PageNum + 1), "һҳ", "")
            objXML.Printf "|"
            objXML.Println objCore.CreateA("bbs/article.asp?ForumId=" & objForum.Item("SeqId") & "&PageNo=" & intPageNo & "&ArticleId=" & objArticle.Item("SeqId") & "&PageId=" & (objPage.TotalPage), "ĩҳ", "")
        End If
        If objPage.PageNum > 1 Then
            objXML.Printf objCore.CreateA("bbs/article.asp?ForumId=" & objForum.Item("SeqId") & "&PageNo=" & intPageNo & "&ArticleId=" & objArticle.Item("SeqId") & "&PageId=" & (objPage.PageNum - 1), "һҳ", "")
            objXML.Printf "|"
            objXML.Println objCore.CreateA("bbs/article.asp?ForumId=" & objForum.Item("SeqId") & "&PageNo=" & intPageNo & "&ArticleId=" & objArticle.Item("SeqId") & "&PageId=" & (1), "һҳ", "")
        End If
        If objPage.TotalPage > 2 Then
            objXML.SetForm MyKernel.PathName("bbs/article.asp"), "get", "", True
            Call objCore.setQuery
            objXML.SetInput "ForumId", "hidden", objForum.Item("SeqId"), "", "", False
            objXML.SetInput "PageNo", "hidden", intPageNo, "", "", False
            objXML.SetInput "ArticleId", "hidden", objArticle.Item("SeqId"), "", "", False
            objXML.SetInput "PageId", "text", "", objPage.PageNum & "/" & objPage.TotalPage & "ҳ>>", "ҳ", False, 5, 5, "*N"
            objXML.SetInput "", "submit", "GO", "", "", True
        End If
        objXML.Println ""
    End If
    If TypeName(rs) <> "Nothing" Then rs.Close
    Set rs = Nothing
    Set objPage = Nothing
End Sub

Private Function MyFormat(ByVal strFmt, ByVal strIn)
    Dim reg
    Set reg = New RegExp
    reg.Pattern = "(" & strFmt & ")"
    reg.Global = True
    reg.IgnoreCase = True
    MyFormat = reg.Replace(strIn, "***")
    Set reg = Nothing
End Function

Private Sub UpdateRecord()
    Dim strSQL
    strSQL = "UPDATE $(Table) SET Hit=Hit+1 WHERE SeqId=$(SeqId)"
    strSQL = Replace(strSQL, "$(Table)", T_ARTICLE)
    strSQL = Replace(strSQL, "$(SeqId)", objArticle.Item("SeqId"))
    SafeExecute strSQL
End Sub
