Private objAPI
Private objCore
Private objXML
Private objUser
Private objCoop
Private strHandle
Private blnError
Private strError
Private MyIO

Private Sub Class_Initialize()
    Set objAPI = New WAPmoAPI
    Set objCore = objAPI.Core
    Set objXML = objCore.XMLParser
    Set objUser = objCore.User
    Set objCoop = objCore.Coop
    strHandle = Request.QueryString("Handle")
    blnError = True
    strError = Empty
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 "ҵĿ̨"
    objXML.Align = "left"
    If objUser.Item("Status") < USER_REGISTER Then
        Call RegisterHint
    ElseIf Request.ServerVariables("REQUEST_METHOD") = "POST" Then
        Call doPost
    Else
        Call doGet
    End If
    objCore.ExportBackHome "1", "$(SiteName)"
    objXML.Println ""
End Sub

Private Sub doGet()
    Select Case LCase(strHandle)
    Case "info"
        Call doGetInfo
    Case "modify"
        Call doGetModify
    Case "password"
        Call doGetPassword
    Case "publish"
        Call doGetPublish
    Case "publish.modify"
        Call doGetPublishModify
    Case Else
        Call doGetMain
    End Select
End Sub

Private Sub doPost()
    Set MyIO = Server.CreateObject("WMCore.IIO")
    Select Case LCase(strHandle)
    Case "modify"
        Call doPostModify
    Case "password"
        Call doPostPassword
    Case "publish.modify"
        Call doPostPublishModify
    Case Else
        Call doGetMain
    End Select
    Set MyIO = Nothing
End Sub

Private Sub doGetInfo()
    objXML.Println "[ҵĻ]"
    objXML.Println String(16, "-")
    objXML.Println "ǳƣ" & objUser.Item("Nick")
    objXML.Println "ʵ" & objUser.Item("UserName")
    objXML.Println "ֻ룺" & IIf(ValidMobile(objUser.Item("Mobile")), objUser.Item("Mobile"), "")
    objXML.Println "עʱ䣺" & FormatTime(getDate(objUser.Item("RegisterTime")), "YYYY-MM-DD HH24:MI:SS")
    objXML.Println "նƣ" & objUser.Item("FirstUserAgent")
    objXML.Println objCore.CreateA("console.asp?Handle=Modify", "޸", "")
    objXML.Println objCore.CreateA("console.asp?Handle=Password", "޸", "")
    objXML.Println objCore.CreateA("console.asp", "ؿ̨", "back.gif")
End Sub

Private Sub doGetModify()
    objXML.Println "[޸]"
    objXML.SetForm objCore.FormatURL("console.asp?Handle=Modify"), "post", "", True
    objXML.SetInput "Nick", "text", "", "ǳƣ", "", True
    objXML.SetInput "Name", "text", "", "ʵ", "", True
    objXML.SetInput "Mobile", "text", "", "ֻ룺", "", True, 11, 0, "NNNNNNNNNNN"
    objXML.SetInput "", "submit", "ȷ", "", "", True
    objXML.Println objCore.CreateA("console.asp", "ؿ̨", "back.gif")
End Sub

Private Sub doGetPassword()
    objXML.Println "[޸]"
    objXML.SetForm objCore.FormatURL("console.asp?Handle=Password"), "post", "", True
    objXML.SetInput "Passwd", "password", "", "룺", "", True
    objXML.SetInput "NewPwd", "password", "", "룺", " ִСд٣λ", True
    objXML.SetInput "CfmPwd", "password", "", "ȷ룺", " һ룬Աȷ", True
    objXML.SetInput "", "submit", "ȷ", "", "", True
    objXML.Println objCore.CreateA("console.asp", "ؿ̨", "back.gif")
End Sub

Private Sub doGetMain()
    objXML.Println objCore.CreateA("msgbox.asp", "ҵ", "msgbox.gif")
    objXML.Println objCore.CreateA("marker.asp", "ҵǩ", "marker.gif")
    objXML.Println objCore.CreateA("console.asp?Handle=Info", "ҵ", "info.gif")
    objXML.Println objCore.CreateA("console.asp?Handle=Publish", "ҵϢ", "publish.gif")
End Sub

Private Sub doPostModify()
    objXML.Println "[޸]"
    If MyIO.Parse(KBYTE) <> 0 Then
        strError = "󳤶ȣ" & KBYTE
    Else
        Dim strNick, strName, strMobile
        strNick = Trim(MyIO.Form("Nick", 65001))
        strName = Trim(MyIO.Form("Name", 65001))
        strMobile = Trim(MyIO.Form("Mobile", 65001))
        If strNick = "" Then strNick = objUser.Item("Nick")
        If strName = "" Then strName = objUser.Item("Name")
        If strMobile = "" Then strMobile = objUser.Item("Mobile")
        If strMobile <> "" And ValidMobile(strMobile) = False Then
            strError = "ֻʽ"
        ElseIf LenC(strNick) > 20 Then
            strError = "ʺŵĳȲܳ20ֽڣ10֣"
        ElseIf hasRecord("SELECT TOP 1 SeqId FROM " & T_USER & " WHERE Nick='" & SafeString(strNick) & "' AND SeqId<>" & objUser.Item("SeqId")) Then
            strError = "ǳѱռ"
        Else
            blnError = False
            strError = "޸ĳɹ"
            Dim strSQL
            strSQL = "UPDATE $(Table) SET Nick='$(Nick)',UserName='$(Name)',Mobile='$(Mobile)' WHERE SeqId=$(SeqId)"
            strSQL = Replace(strSQL, "$(Table)", T_USER)
            strSQL = Replace(strSQL, "$(Nick)", SafeString(strNick))
            strSQL = Replace(strSQL, "$(Name)", SafeString(strName))
            strSQL = Replace(strSQL, "$(Mobile)", SafeString(strMobile))
            strSQL = Replace(strSQL, "$(SeqId)", objUser.Item("SeqId"))
            SafeExecute strSQL
        End If
    End If
    objXML.Println strError
    If blnError Then
        Call doGetModify
    Else
        objXML.Println objCore.CreateA("console.asp", "ؿ̨", "back.gif")
    End If
End Sub

Private Sub doPostPassword()
    objXML.Println "[޸]"
    If MyIO.Parse(KBYTE) <> 0 Then
        strError = "󳤶ȣ" & KBYTE
    Else
        Dim strOld, strNew, strCfm
        strOld = Trim(MyIO.Form("Passwd", 65001))
        strNew = Trim(MyIO.Form("NewPwd", 65001))
        strCfm = Trim(MyIO.Form("CfmPwd", 65001))
        If strOld = "" Then
            strError = ""
        ElseIf objUser.Item("Passwd") <> MD5(strOld) Then
            strError = ""
        ElseIf strNew = "" Then
            strError = ""
        ElseIf strNew <> strCfm Then
            strError = "ȷ벻"
        Else
            blnError = False
            strError = "޸ĳɹǣ" & strNew
            Dim strSQL
            objUser.Item("Passwd") = MD5(strNew)
            strSQL = "UPDATE $(Table) SET Passwd='$(Passwd)' WHERE SeqId=$(SeqId)"
            strSQL = Replace(strSQL, "$(Table)", T_USER)
            strSQL = Replace(strSQL, "$(Passwd)", objUser.Item("Passwd"))
            strSQL = Replace(strSQL, "$(SeqId)", objUser.Item("SeqId"))
            SafeExecute strSQL
            MyKernel.Memory("Passwd") = objUser.Item("Passwd")
        End If
    End IF
    objXML.Println strError
    If blnError Then
        Call doGetPassword
    Else
        objXML.Println objCore.CreateA("console.asp", "ؿ̨", "back.gif")
    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 Sub doGetPublish
    objXML.Println "[ҷϢ]"
    objXML.Println String(16, "-")
    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.Column = "SeqId,StapleId,Title,Intime,Examine"
    objPage.Table = T_CONTENT
    objPage.Where = "UserId=" & MyKernel.Memory("UserId")
    objPage.Sort = "SeqId DESC"
    objPage.SortType = True
    Set rs = objPage.Exec()
    objXML.Println "Ϣ" & objPage.TotalRow & ""
    If objPage.TotalRow > 0 Then
        i = 0
        Do While rs.EOF = False And i < objPage.PageSize
            objXML.Printf ((objPage.PageNum - 1) * objPage.PageSize + i + 1) & "." & rs("Title") & "[" & IIf(atoi(rs("Examine")) = 1, "", "δ") & "/"
            objXML.Printf objCore.CreateA("content.asp?StapleId=" & rs("StapleId") & "&ContentId=" & rs("SeqId") & "&Intime=" & rs("Intime"), "鿴", "")
            objXML.Printf "/"
            objXML.Printf objCore.CreateA("console.asp?Handle=Publish.Modify&SeqId=" & rs("SeqId"), "༭", "")
            objXML.Println "]"
            rs.MoveNext
            i = i + 1
        Loop
        If objPage.PageNum < objPage.TotalPage Then
            objXML.Printf objCore.CreateA("console.asp?Handle=Publish&Page=" & (objPage.PageNum + 1), "һҳ", "")
            objXML.Printf "|"
            objXML.Println objCore.CreateA("console.asp?Handle=Publish&Page=" & (objPage.TotalPage), "ĩҳ", "")
        End If
        If objPage.PageNum > 1 Then
            objXML.Printf objCore.CreateA("console.asp?Handle=Publish&Page=" & (objPage.PageNum - 1), "һҳ", "")
            objXML.Printf "|"
            objXML.Println objCore.CreateA("console.asp?Handle=Publish&Page=" & (1), "һҳ", "")
        End If
        If objPage.TotalPage > 2 Then
            objXML.SetForm "console.asp", "get", "", True
            Call objCore.setQuery
            objXML.SetInput "Handle", "hidden", "Publish", "", "", False
            objXML.SetInput "Page", "hidden", Request.QueryString("Page"), "", "", 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
    objXML.Println objCore.CreateA("console.asp", "ؿ̨", "back.gif")
End Sub

Private Sub doGetPublishModify()
    objXML.Println "[༭Ϣ]"
    Dim strSQL
    Dim rs
    strSQL = getLimitSQL(1, "SeqId,Title,Content", T_CONTENT, "SeqId=$(SeqId) AND UserId=$(UserId)", "", "")
    strSQL = Replace(strSQL, "$(SeqId)", atol(Request.QueryString("SeqId")))
    strSQL = Replace(strSQL, "$(UserId)", MyKernel.Memory("UserId"))
    Set rs = MyKernel.Execute(strSQL)
    If rs.EOF = False Then
        objXML.SetForm "console.asp?Handle=Publish.Modify&SeqId=" & rs("SeqId"), "post", "", True
        objXML.SetInput "Title", "text", rs("Title"), "⣺", "", True
        objXML.SetInput "Content", "text", rs("Content"), "ݣ", "", True
        objXML.SetInput "", "submit", "ȷ༭", "", "", True
    Else
        objXML.Println "δҵҪ༭Ϣ"
    End If
    rs.Close
    Set rs = Nothing
    objXML.Println objCore.CreateA("console.asp?Handle=Publish", "ҵϢ", "back.gif")
    objXML.Println objCore.CreateA("console.asp", "ؿ̨", "back.gif")
End Sub

Private Sub doPostPublishModify()
    objXML.Println "[༭Ϣ]"
    Dim strSQL
    Dim rs
    Dim blnUpdate
    strSQL = getLimitSQL(1, "SeqId,StapleId,Title,Content,Intime", T_CONTENT, "SeqId=$(SeqId) AND UserId=$(UserId)", "", "")
    strSQL = Replace(strSQL, "$(SeqId)", atol(Request.QueryString("SeqId")))
    strSQL = Replace(strSQL, "$(UserId)", MyKernel.Memory("UserId"))
    Set rs = MyKernel.Execute(strSQL)
    blnUpdate = False
    If rs.EOF = False Then
        Dim strTitle, strContent
        strTitle = MyIO.Form("Title", 65001)
        strContent = MyIO.Form("Content", 65001)
        If strTitle = "" Then
            objXML.Println "༭ʧܣ"
        Else
            objXML.Println "Ϣ༭ɹ"
            blnUpdate = True
            strSQL = "UPDATE $(Table) SET Title='$(Title)',Content='$(Content)' WHERE SeqId=$(SeqId)"
            strSQL = Replace(strSQL, "$(Table)", T_CONTENT)
            strSQL = Replace(strSQL, "$(Title)", SafeString(strTitle))
            strSQL = Replace(strSQL, "$(Content)", SafeString(strContent))
            strSQL = Replace(strSQL, "$(SeqId)", rs("SeqId"))
            doRemoveContent rs("SeqId"), rs("StapleId"), rs("Intime")
        End If
        objXML.Println objCore.CreateA("console.asp?Handle=Publish.Modify&SeqId=" & rs("SeqId"), "±༭", "")
    Else
        objXML.Println "δҵҪ༭Ϣ"
    End If
    rs.Close
    Set rs = Nothing
    objXML.Println objCore.CreateA("console.asp?Handle=Publish", "ҵϢ", "back.gif")
    objXML.Println objCore.CreateA("console.asp", "ؿ̨", "back.gif")
    If blnUpdate Then SafeExecute strSQL
End Sub

Private Sub doRemoveContent(ByVal lngId, ByVal lngFollow, ByVal lngTime)
    Dim strPath
    strPath = MyKernel.MapPath("cache/staple" & lngFollow & "/" & FormatTime(getDate(lngTime), "YYYYMMDD"))
    If vbsre.fso.FolderExists(strPath) = False Then Exit Sub
    Dim objFolder
    Dim objFile
    Dim strKey
    Dim intKey
    Set objFolder = vbsre.fso.GetFolder(strPath)
    strKey = "content_" & lngId & "_"
    intKey = Len(strKey)
    For Each objFile In objFolder.Files
        If LCase(Left(objFile.Name, intKey)) = strKey Then
            vbsre.fso.DeleteFile strPath & "\" & objFile.Name
        End If
    Next
    Set objFolder = Nothing
End Sub
