Private objAPI
Private objCore
Private objXML
Private objUser
Private strHandle

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

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

Public Sub main()
    strHandle = Request.QueryString("Handle")
    objXML.Align = "center"
    objXML.Println MyKernel.Config("BookTitle")
    objXML.Align = "left"
    If MyKernel.Config("IsBook") <> "1" Then
        objXML.Println "ùѱվر"
    ElseIf Request.ServerVariables("REQUEST_METHOD") = "POST" Then
        Call doPost
    Else
        Call doGet
    End If
    Call FastBack
End Sub

Private Sub RegisterHint(ByVal strHint)
    objCore.Query("Referer") = objCore.Referer
    objXML.Println strHint
    objXML.Printf "ûע᣿"
    objXML.Println objCore.CreateA("register.asp", "ע", "")
    objXML.Printf "Ѿעˣ"
    objXML.Println objCore.CreateA("login.asp", "˵¼", "")
    objCore.Query("Referer") = Empty
End Sub

Private Sub doGet()
    Select Case LCase(strHandle)
    Case "add"
        Call doGetAdd
    Case Else
        Call doGetMain
    End Select
End Sub

Private Sub doGetMain()
    objXML.Println "[鿴]"
    If MyKernel.Config("IsBookPublic") = "1" And objUser.Item("Status") < USER_REGISTER Then
        RegisterHint "ֻעûܲ鿴"
        Exit Sub
    End If
    Dim objPage
    Dim rs
    Dim i
    Set objPage = Server.CreateObject("WMKernel.IPage")
    objPage.PageName = "Page"
    objPage.PageSize = 10
    objPage.DataType = WM_DataType
    objPage.Increment = "SeqId"
    objPage.Table = T_BOOK
    If MyKernel.Config("IsBookPublic") = "2" Then
        objPage.Where = "Follow=0 And UserId=" & objUser.Item("UserId")
    Else
        objPage.Where = "Follow=0"
    End If
    objPage.Sort = "SeqId DESC"
    objPage.SortType = True
    Set rs = objPage.Exec()
    If objPage.TotalRow > 0 Then
        i = 0
        Dim objBook
        Set objBook = MyKernel.Table(T_BOOK)
        objCore.Query("Refer") = objCore.Referer
        Do While rs.EOF = False And i < objPage.PageSize
            objBook.Source = rs
            objXML.Println String(16, "-")
            If MyKernel.Modlist(9) = "1" And MyKernel.Config("IsMsgbox") = "1" Then
                objXML.Printf "ǳƣ"
                objXML.Println objCore.CreateA("msgbox.asp?Handle=Send&UserId=" & objBook.Item("UserId"), objBook.Item("UserName"), "")
            Else
                objXML.Println "ǳƣ" & objBook.Item("UserName")
            End If
            objXML.Println "ԣ" & MyFormat(MyKernel.Config("ForbidWord"), objBook.Item("Content"))
            objXML.Println "ʱ䣺" & FormatTime(getDate(objBook.Item("Intime")), "YYYY-MM-DD HH24:MI:SS")
            doGetReply objBook.Item("SeqId")
            rs.MoveNext
            i = i + 1
        Loop
        objCore.Query("Refer") = Empty
        Set objBook = Nothing
        If objPage.PageNum < objPage.TotalPage Then
            objXML.Printf objCore.CreateA("guestbook.asp?Page=" & (objPage.PageNum + 1), "һҳ", "")
            objXML.Printf "|"
            objXML.Println objCore.CreateA("guestbook.asp?Page=" & (objPage.TotalPage), "ĩҳ", "")
        End If
        If objPage.PageNum > 1 Then
            objXML.Printf objCore.CreateA("guestbook.asp?Page=" & (objPage.PageNum - 1), "һҳ", "")
            objXML.Printf "|"
            objXML.Println objCore.CreateA("guestbook.asp?Page=" & (1), "һҳ", "")
        End If
        If objPage.TotalPage > 2 Then
            objXML.SetForm "guestbook.asp", "get", "", True
            Call objCore.setQuery
            objXML.SetInput "Page", "text", "", objPage.PageNum & "/" & objPage.TotalPage & "ҳ>>", "ҳ", False, 5, 5, "N*"
            objXML.SetInput "", "submit", "GO", "", "", True
        End If
    End If
    If TypeName(rs) <> "Nothing" Then rs.Close
    Set rs = Nothing
    Set objPage = Nothing
    objXML.Println objCore.CreateA("guestbook.asp?Handle=Add", "", "")
End Sub

Private Sub doGetAdd()
    If MyKernel.Config("IsBookWrite") = "0" And objUser.Item("Status") < USER_REGISTER Then
        Call RegisterHint("ֻעûܷ")
        Exit Sub
    End If
    objXML.Println "[]"
    objXML.SetForm objCore.FormatURL("guestbook.asp?Handle=Add"), "post", "", True
    objXML.SetInput "Content", "text", "", "ԣ", "", True
    objXML.SetInput "", "submit", "ȷ", "", "", True
End Sub

Private Sub doGetReply(ByVal lngFollow)
    Dim strSQL
    Dim rs
    strSQL = "SELECT * FROM $(Table) WHERE Follow=$(Follow)"
    strSQL = Replace(strSQL, "$(Table)", T_BOOK)
    strSQL = Replace(strSQL, "$(Follow)", lngFollow)
    Set rs = MyKernel.Execute(strSQL)
    Do While rs.EOF = False
        objXML.Println "վظ" & rs("Content")
        objXML.Println "ظʱ䣺" & FormatTime(getDate(rs("Intime")), "YYYY-MM-DD HH24:MI:SS")
        rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing
End Sub

Private Sub doPost()
    Select Case LCase(strHandle)
    Case "add"
        Call doPostAdd
    Case Else
        objXML.Println "δ֪"
    End Select
End Sub

Private Sub doPostAdd()
    Dim MyIO
    Dim blnError
    Dim strError
    Dim objBook
    Set MyIO = Server.CreateObject("WMCore.IIO")
    Set objBook = MyKernel.Table(T_BOOK)
    If MyIO.Parse(KBYTE) <> 0 Then
        objXML.Println "󳤶ȣ" & KBYTE
    Else
        objBook.Item("Content") = MyIO.Form("Content", 65001)
        If objBook.Item("Content") = "" Then
            blnError = True
            strError = ""
        ElseIf getTime(Now()) - objUser.Item("LastBook") < atoi(MyKernel.Config("BookInterval")) Then
            strError = "лĲ룬벻ҪƵ"
        ElseIf objUser.Item("BookTotal") > atoi(MyKernel.Config("BookTotal")) Then
            blnError = True
            strError = "лĲ룬һܷ" & MyKernel.Config("BookTotal") & ""
        Else
            blnError = False
            strError = "лԣǻڽڻظ"
            Dim strSQL
            Dim lngTime
            lngTime = getTime(Now())
            strSQL = "INSERT INTO $(Table) (UserId,UserName,Content,Reply,IPAddr,Follow,Intime) VALUES ($(UserId),'$(UserName)','$(Content)',0,'$(IPAddr)',0,$(Timeval))"
            strSQL = Replace(strSQL, "$(Table)", T_BOOK)
            strSQL = Replace(strSQL, "$(UserId)", objUser.Item("UserId"))
            If objUser.Item("UserId") = WM_USERID Then
                strSQL = Replace(strSQL, "$(UserName)", "ο" & Split(objCore.IPAddr, ".")(0))
            Else
                strSQL = Replace(strSQL, "$(UserName)", SafeString(objUser.Item("Nick")))
            End If
            strSQL = Replace(strSQL, "$(Content)", SafeString(objBook.Item("Content")))
            strSQL = Replace(strSQL, "$(IPAddr)", objCore.IPAddr)
            strSQL = Replace(strSQL, "$(Timeval)", lngTime)
            SafeExecute strSQL
            strSQL = "UPDATE $(Table) SET BookTotal=$(BookTotal),LastBook=$(Timeval) WHERE SeqId=$(SeqId)"
            strSQL = Replace(strSQL, "$(Table)", T_USER)
            If objUser.Item("LastBook") >= getTime(Date()) Then
                objUser.Item("BookTotal") = objUser.Item("BookTotal") + 1
            Else
                objUser.Item("BookTotal") = 1
            End If
            strSQL = Replace(strSQL, "$(BookTotal)", objUser.Item("BookTotal"))
            If objUser.Item("UserId") = WM_USERID Then
                Dim arrTmp
                arrTmp = vbsre.cache("WAPmo.Guest")
                arrTmp(9) = objUser.Item("BookTotal")
                objTmp(10) = lngTime
                vbsre.cache("WAPmo.Guest") = arrTmp
            Else
                MyKernel.Memory("BookTotal") = objUser.Item("BookTotal")
                MyKernel.Memory("LastBook") = lngTime
            End If
            strSQL = Replace(StrSQL, "$(Timeval)", lngTime)
            strSQL = Replace(strSQL, "$(SeqId)", objUser.Item("SeqId"))
            SafeExecute strSQL
        End If
        Set objBook = Nothing
        objXML.Println strError
        If blnError Then
            Call doGetAdd
        End If
    End If
    Set MyIO = Nothing
End Sub

Private Sub FastBack()
    If strHandle <> "" Then
        If CBool(MyKernel.Config("IsBookPublic") = "1" And objUser.Item("Status") < USER_REGISTER) = False Then
            objXML.Println objCore.CreateA("guestbook.asp", "鿴", "")
        End If
    End If
    objCore.ExportBackHome "1", "ҳ"
    objXML.Println ""
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
