📄 book
字号:
Private blnError
Private strError
Private Sub Class_Initialize()
Set MyXML = MyKernel.XMLParser
blnError = True
End Sub
Private Sub Class_Terminate()
End Sub
Public Sub main()
MyXML.Align = "center"
MyXML.Println MyKernel.Config("BookTitle")
MyXML.Align = "left"
If MyKernel.Config("IsBook") <> "1" Then
MyXML.Println "该功能已被站长关闭"
ElseIf MyIO.Env("REQUEST_METHOD") = "POST" Then
Call doPost
Else
Call doGet
End If
Call BackHomeX(BOOK_SEQID)
Call SetLog("book", 0)
Call MyKernel.OutputXML(Empty)
End Sub
Private Sub doGet()
MyXML.Println "[查看留言]"
Select Case MyKernel.Config("IsBookPublic")
Case "0"
Call doGetMain
Case "1"
If IsGuest() Then
RegisterHint "只有注册用户才能查看留言"
Else
Call doGetMain
End If
Case "2"
If Not IsGuest() Then
Call doGetMain
End If
End Select
Call doGetForm
End Sub
Private Sub doGetMain()
Dim objPage, xmlNode, xmlDoc2
Dim i
Set objPage = vbsre.mocom.WAPmo.Page.newInstance()
objPage.ID = atol(MyIO.QueryString("Page"))
objPage.Size = 10
objPage.DataType = WM_DataType
objPage.Table = T_BOOK
If MyKernel.Config("IsBookPublic") = "2" Then
objPage.Where = "FOLLOW=0 AND USERID=" & atol(MyKernel.Memory("SeqID"))
objPage.Count = GetPageCount(objPage)
Else
objPage.Where = "FOLLOW=0"
objPage.Count = GetBookCount()
End If
objPage.Index = "SEQID"
objPage.Sort = "SEQID DESC"
objPage.SortType = 1
objPage.Build "msgs", "msg"
If objPage.Rows.hasChildNodes Then
i = 0
Set xmlDoc2 = GetReplyDoc(objPage.Rows.childNodes)
For Each xmlNode In objPage.Rows.childNodes
MyXML.Println String(16, "-")
If atol(XMLAttr(xmlNode, "userid")) < 1 Then
MyXML.Println "昵称:" & XMLAttr(xmlNode, "username") & "[游客]"
ElseIf Not ValidCoop() And MyKernel.Config("IsMsgbox") = "1" Then
MyXML.Printf "昵称:"
MyXML.Println MyXML.CreateA(GetMsgSendURL(XMLAttr(xmlNode, "userid")), XMLAttr(xmlNode, "username"), "", "")
Else
MyXML.Println "昵称:" & XMLAttr(xmlNode, "username")
End If
MyXML.Println "留言:" & XMLAttr(xmlNode, "content")
MyXML.Println "时间:" & FormatTime(XMLAttr(xmlNode, "intime"), "Y-m-d H:i:s")
doGetReply xmlDoc2, XMLAttr(xmlNode, "seqid")
i = i + 1
Next
Set xmlDoc2 = Nothing
If objPage.ID < objPage.Total Then
MyXML.Printf MyXML.CreateA(GetURL("guestbook.asp", "Page", objPage.ID + 1), "下一页", "", "")
MyXML.Printf "|"
MyXML.Println MyXML.CreateA(GetURL("guestbook.asp", "Page", objPage.Total), "最末页", "", "")
End If
If objPage.ID > 1 Then
MyXML.Printf MyXML.CreateA(GetURL("guestbook.asp", "Page", objPage.ID - 1), "上一页", "", "")
MyXML.Printf "|"
MyXML.Println MyXML.CreateA("guestbook.asp", "第一页", "", "")
End If
If objPage.Total > 2 Then
MyXML.SetF "guestbook.asp", "get", "", True
Call SetQuery
MyXML.SetN "Page", "text", "", objPage.ID & "/" & objPage.Total & "页>>跳到", "页", False, 5, 5, "N*"
MyXML.SetN "", "submit", "GO", "", "", True, 0, 0, ""
End If
End If
Set objPage = Nothing
End Sub
Private Function GetBookCount()
Dim strName
strName = "WAPmo.Book"
If IsEmpty(GetCache(strName)) Then
SetCache strName, MyKernel.DB.GetRow("SELECT COUNT(SEQID) FROM " & T_BOOK & " WHERE FOLLOW=0")
End If
GetBookCount = atol(GetCache(strName))
End Function
Private Sub doGetForm()
MyXML.Println String(16, "-")
MyXML.Println "[发表留言]"
If MyKernel.Config("IsBookWrite") = "0" And IsGuest() Then
Call RegisterHint("只有注册用户才能发表留言")
Else
MyXML.SetF "guestbook.asp", "post", "", True
If IsGuest() Then
MyXML.SetN "UserName", "text", "", "您的昵称:", "", True, 0, 0, ""
End If
MyXML.SetN "Content", "text", "", "您的留言:", "", True, 0, 0, ""
MyXML.SetN "", "submit", "确定", "", "", True, 0, 0, ""
End If
End Sub
Private Function GetReplyDoc(xmlNodes)
Dim tmp, i
ReDim tmp(xmlNodes.length - 1)
For i = 0 To xmlNodes.length - 1
tmp(i) = XMLAttr(xmlNodes(i), "seqid")
Next
Set GetReplyDoc = MyKernel.DB.SQLToXML("SELECT CONTENT,FOLLOW,INTIME FROM " & T_BOOK & " WHERE FOLLOW IN (" & Join(tmp, ",") & ")", "replies", "reply")
End Function
Private Sub doGetReply(xmlDoc, ByVal lngFollow)
Dim xmlNodes, xmlNode
Set xmlNodes = XMLQueries(xmlDoc.documentElement, "reply[@follow = " & lngFollow & "]")
For Each xmlNode In xmlNodes
MyXML.Println "站长回复:" & XMLAttr(xmlNode, "content")
MyXML.Println "回复时间:" & FormatTime(XMLAttr(xmlNode, "intime"), "Y-m-d H:i:s")
Next
Set xmlNodes = Nothing
End Sub
Private Sub doPost()
Call doPostAdd
If MyKernel.Config("IsBookPublic") = "0" Then
MyXML.Println MyXML.CreateA("guestbook.asp", "查看留言", "", "")
ElseIf MyKernel.Config("IsBookPublic") = "1" And Not IsGuest() Then
MyXML.Println MyXML.CreateA("guestbook.asp", "查看留言", "", "")
End If
End Sub
Private Sub doPostAdd()
Dim strUserName
Dim strContent
Dim objCmd, strSQL, lngTime, lngCount
strUserName = Trim(MyIO.Form("UserName"))
strContent = Trim(MyIO.Form("Content"))
If strContent = "" Then
strError = "请输入您的留言"
ElseIf IsGuest() And strUserName = "" Then
strError = "请输入您的昵称"
ElseIf IsGuest() And Not ValidName(strUserName) Then
strError = "请勿在昵称中使用特殊字符"
ElseIf IsGuest() And LenC(strUserName) > 20 Then
strError = "昵称的长度不能超过20个字节(即10个汉字)"
ElseIf GetTime(Now()) - atol(MyKernel.Memory("LastBook")) < atoi(MyKernel.Config("BookInterval")) Then
strError = "感谢您的参与,请不要频繁发表留言"
ElseIf atol(MyKernel.Memory("BookTotal")) > atoi(MyKernel.Config("BookTotal")) Then
strError = "感谢你的参与,一天最多能发表" & MyKernel.Config("BookTotal") & "个留言"
Else
blnError = False
strError = "感谢您的留言,我们会在近期回复"
lngTime = GetTime(Now())
lngCount = GetBookCount()
Set objCmd = MyKernel.Command(T_BOOK)
objCmd.CommandType = "INSERT"
If IsGuest() Then
objCmd.Add "UserID", 0
objCmd.Add "UserName", strUserName
Else
objCmd.Add "UserID", MyKernel.Memory("SeqID")
objCmd.Add "UserName", MyKernel.Memory("UserName")
End If
objCmd.Add "Content", strContent
objCmd.Add "Reply", 0
objCmd.Add "IPAddr", MyIO.Env("REMOTE_ADDR")
objCmd.Add "Follow", 0
objCmd.Add "Intime", lngTime
objCmd.Exec
Set objCmd = Nothing
SetCache "WAPmo.Book", lngCount + 1
If atol(MyKernel.Memory("LastBook")) >= GetTime(Date()) Then
MyKernel.Memory("BookTotal") = atoi(MyKernel.Memory("BookTotal")) + 1
Else
MyKernel.Memory("BookTotal") = 1
End If
MyKernel.Memory("LastBook") = lngTime
If Not IsGuest() Then
strSQL = "UPDATE $(Table) SET BOOKTOTAL=$(BookTotal),LASTBOOK=$(Timeval) WHERE SEQID=$(SeqId)"
strSQL = Replace(strSQL, "$(Table)", T_USER)
strSQL = Replace(strSQL, "$(BookTotal)", MyKernel.Memory("BookTotal"))
strSQL = Replace(StrSQL, "$(Timeval)", lngTime)
strSQL = Replace(strSQL, "$(SeqId)", MyKernel.Memory("SeqId"))
MyKernel.DB.Exec strSQL
End If
End If
MyXML.Println strError
If blnError Then
Call doGetForm
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -