Private objAPI
Private objCore
Private objXML
Private objUser
Private objStaple
Private objContent
Private strHandle
Private strQuery

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")
    If objCore.CheckStaple() = False Then
        objXML.Println "ҲҪ۵1"
    Else
        Set objStaple = objCore.Staple
        If objStaple.Item("Category") <> STAPLE_NORMAL Then
            objXML.Println "ҲҪ۵2"
        ElseIf objStaple.Item("RemarkType") = 0 And objUser.Item("Status") < USER_REGISTER Then
            Call RegisterHint
        ElseIf objCore.CheckContent() = False Then
            objXML.Println "ҲҪ۵3"
        Else
            Set objContent = objCore.Content
            If objContent.Item("Category") <> CONTENT_NORMAL Then
                objXML.Println "ҲҪ۵5"
            Else
                objXML.Println "[" & objContent.Item("Title") & "]"
                objXML.Println String(16, "-")
                strQuery = "StapleId=$(StapleId)&PageNo=$(PageNo)&ContentId=$(ContentId)&Intime=$(Intime)&PageId=$(PageId)"
                strQuery = Replace(strQuery, "$(StapleId)", objStaple.Item("SeqId"))
                strQuery = Replace(strQuery, "$(PageNo)", Request.QueryString("PageNo"))
                strQuery = Replace(strQuery, "$(ContentId)", objContent.Item("SeqId"))
                strQuery = Replace(strQuery, "$(Intime)", objContent.Item("Intime"))
                strQuery = Replace(strQuery, "$(PageId)", Request.QueryString("PageId"))
                If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
                    Call doPost
                Else
                    Call doGet
                End If
                'objXML.Println objCore.CreateA("content.asp?" & strQuery, "ٷ", objCore.CreateImg("back.gif", ""))
                objXML.Println objCore.CreateA("content.asp?" & strQuery, "" & objContent.Item("Title"), objCore.CreateImg("back.gif", ""))
            End If
            Set objContent = Nothing
        End If
        objCore.ExportBackStaple "1", "$(StapleName)"
        objXML.Println ""
        objCore.ExportBackTheme "1", "$(ThemeName)"
        objXML.Println ""
        Set objStaple = Nothing
    End If
    objCore.ExportBackHome "1", "ҳ"
    objXML.Println ""
End Sub

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

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

Private Sub doGetMain()
    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_REMARK
    objPage.Where = "ContentId=" & objContent.Item("SeqId")
    objPage.Sort = "SeqId DESC"
    objPage.SortType = True
    Set rs = objPage.Exec()
    If objPage.TotalRow > 0 Then
        i = 0
        objCore.Query("Refer") = objCore.Referer
        Do While rs.EOF = False And i < objPage.PageSize
            If MyKernel.Modlist(9) = "1" And MyKernel.Config("IsMsgbox") = "1" Then
                objXML.Printf "ǳƣ"
                objXML.Println objCore.CreateA("msgbox.asp?Handle=Send&UserId=" & rs("UserId"), rs("UserName"), "")
            Else
                objXML.Println "ǳƣ" & rs("UserName")
            End If
            objXML.Println "ۣ" & MyFormat(MyKernel.Config("ForbidWord"), rs("Content"))
            objXML.Println "ʱ䣺" & FormatTime(getDate(rs("Intime")), "YYYY-MM-DD HH24:MI:SS")
            objXML.Println String(16, "-")
            rs.MoveNext
            i = i + 1
        Loop
        objCore.Query("Refer") = Empty
        If objPage.PageNum < objPage.TotalPage Then
            objXML.Printf objCore.CreateA("remark.asp?" & strQuery & "&Page=" & (objPage.PageNum + 1), "һҳ", "")
            objXML.Printf "|"
            objXML.Println objCore.CreateA("remark.asp?" & strQuery & "&Page=" & (objPage.TotalPage), "ĩҳ", "")
        End If
        If objPage.PageNum > 1 Then
            objXML.Printf objCore.CreateA("remark.asp?" & strQuery & "&Page=" & (objPage.PageNum - 1), "һҳ", "")
            objXML.Printf "|"
            objXML.Println objCore.CreateA("remark.asp?" & strQuery & "&Page=" & (1), "һҳ", "")
        End If
        If objPage.TotalPage > 2 Then
            objXML.SetForm "remark.asp", "get", "", True
            Call objCore.setQuery
            objXML.SetInput "StapleId", "hidden", objStaple.Item("SeqId"), "", "", False
            objXML.SetInput "PageNo", "hidden", Request.QueryString("PageNo"), "", "", False
            objXML.SetInput "ContentId", "hidden", objContent.Item("SeqId"), "", "", False
            objXML.SetInput "Intime", "hidden", objContent.Item("Intime"), "", "", False
            objXML.SetInput "PageId", "hidden", Request.QueryString("PageId"), "", "", False
            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
    Call ExportForm
End Sub

Private Sub doGetAdd()
    Call ExportForm
    objXML.Println objCore.CreateA("remark.asp?" & strQuery, "鿴(" & objContent.Item("RemarkTotal") & ")", "")
End Sub

Private Sub ExportForm()
    objXML.SetForm objCore.FormatURL("remark.asp?Handle=Add&" & strQuery), "post", "", True
    objXML.SetInput "Content", "text", "", "ۣ", "", True
    objXML.SetInput "", "submit", "ȷ", "", "", True
End Sub

Private Sub doPostAdd()
    Dim MyIO
    Dim blnError
    Dim strError
    Set MyIO = Server.CreateObject("WMCore.IIO")
    blnError = True
    If MyIO.Parse(KBYTE * 3) <> 0 Then
        strError = "󳤶ȣ" & (KBYTE * 3)
    Else
        Dim strContent
        strContent = Trim(MyIO.Form("Content", 65001))
        If strContent = "" Then
            strError = ""
        ElseIf getTime(Now()) - objUser.Item("LastRemark") < atoi(MyKernel.Config("RemarkInterval")) Then
            strError = "лĲ룬벻ҪƵ1"
        ElseIf objUser.Item("RemarkTotal") >= atoi(MyKernel.Config("RemarkTotal")) Then
            strError = "лĲ룬벻ҪƵ2"
        Else
            blnError = False
            strError = "л"
            Dim strSQL
            Dim lngTime
            lngTime = getTime(Now())
            strSQL = "INSERT INTO $(Table) (StapleId,ContentId,Title,Content,UserId,UserName,IPAddr,Intime) VALUES ($(StapleId),$(ContentId),'$(Title)','$(Content)',$(UserId),'$(Nick)','$(IPAddr)',$(Timeval))"
            strSQL = Replace(strSQL, "$(Table)", T_REMARK)
            strSQL = Replace(strSQL, "$(StapleId)", objStaple.Item("SeqId"))
            strSQL = Replace(strSQL, "$(ContentId)", objContent.Item("SeqId"))
            strSQL = Replace(strSQL, "$(Title)", SafeString(objContent.Item("Title")))
            strSQL = Replace(strSQL, "$(Content)", SafeString(strContent))
            strSQL = Replace(strSQL, "$(UserId)", objUser.Item("UserId"))
            If objUser.Item("UserId") = WM_USERID Then
                strSQL = Replace(strSQL, "$(Nick)", "ο" & Split(objCore.IPAddr, ".")(0))
            Else
                strSQL = Replace(strSQL, "$(Nick)", objUser.Item("Nick"))
            End If
            strSQl = Replace(strSQL, "$(IPAddr)", objCore.IPAddr)
            strSQL = Replace(StrSQL, "$(Timeval)", lngTime)
            SafeExecute strSQL
            strSQL = "UPDATE $(Table) SET RemarkTotal=$(RemarkTotal),LastRemark=$(Timeval) WHERE SeqId=$(SeqId)"
            strSQL = Replace(strSQL, "$(Table)", T_USER)
            If objUser.Item("LastRemark") >= lngTime Then
                objUser.Item("RemarkTotal") = objUser.Item("RemarkTotal") + 1
            Else
                objUser.Item("RemarkTotal") = 1
            End If
            strSQL = Replace(strSQL, "$(RemarkTotal)", objUser.Item("RemarkTotal"))
            If objUser.Item("UserId") = WM_USERID Then
                Dim arrTmp
                arrTmp = vbsre.cache("WAPmo.Guest")
                arrTmp(7) = objUser.Item("RemarkTotal")
                arrTmp(8) = lngTime
                vbsre.cache("WAPmo.Guest") = arrTmp
            Else
                MyKernel.Memory("RemarkTotal") = objUser.Item("RemarkTotal")
                MyKernel.Memory("LastRemark") = lngTime
            End If
            strSQL = Replace(StrSQL, "$(Timeval)", lngTime)
            strSQL = Replace(strSQL, "$(SeqId)", objUser.Item("SeqId"))
            SafeExecute strSQL
            strSQL = "UPDATE $(Table) SET RemarkTotal=RemarkTotal+1 WHERE SeqId=$(SeqId)"
            strSQL = Replace(strSQL, "$(Table)", T_CONTENT)
            strSQL = Replace(strSQL, "$(SeqId)", objContent.Item("SeqId"))
            SafeExecute strSQL
            objContent.Item("RemarkTotal") = objContent.Item("RemarkTotal") + 1
            doRemoveSingleContent objContent.Item("SeqId"), objStaple.Item("SeqId"), objContent.Item("Intime")
        End If
    End If
    Set MyIO = Nothing
    objXML.Println strError
    If blnError Then
        Call doGetAdd
    Else
        objXML.Println objCore.CreateA("remark.asp?" & strQuery, "鿴(" & objContent.Item("RemarkTotal") & ")", "")
    End If
End Sub

Private Sub RegisterHint()
    objCore.Query("Referer") = objCore.Referer
    objXML.Println "ֻעûܷ"
    objXML.Printf "ûע᣿"
    objXML.Println objCore.CreateA("register.asp", "ע", "")
    objXML.Printf "Ѿעˣ"
    objXML.Println objCore.CreateA("login.asp", "˵¼", "")
    objCore.Query("Referer") = Empty
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
