📄 #post_edit.mo
字号:
Option Explicit
If Not TBBS.CheckForum("crt", Request.QueryString("fid")) Then
TBBS.AddError "missing_forum", Array()
ElseIf Not TBBS.CheckTopic(Request.QueryString("id")) Then
TBBS.AddError "missing_topic", Array()
ElseIf atol(TBBS.Forum("crt.seqid")) <> atol(TBBS.Topic("forumid")) Then
TBBS.AddError "missing_topic", Array()
ElseIf atol(TBBS.Topic("userid")) = atol(MyKernel.Memory("seqid")) And TBBS.Permit("edit_self_topic") = 0 Then
TBBS.AddError "ps_edit_self_topic", Array()
ElseIf atol(TBBS.Topic("userid")) <> atol(MyKernel.Memory("seqid")) And TBBS.Permit("edit_other_topic") = 0 Then
TBBS.AddError "ps_edit_other_topic", Array()
ElseIf atol(TBBS.Topic("locked")) = 1 Then
TBBS.AddError "topic_locked", Array()
Else
Call TBBS.SetTopicNav(True)
TBBS.AddNav "", TBBS.Lang("new_edit")
TBBS.Page("name") = TBBS.GetNav()
TBBS.AddOnline TBBS.Forum("crt.seqid"), TBBS.Page("name")
TBBS.Vars("handle_name") = TBBS.Lang("new_edit")
TBBS.Vars("action_addr") = GetURL("post.asp", Array("handle", "fid", "id"), Array("edit", TBBS.Forum("crt.seqid"), TBBS.Topic("seqid")))
TBBS.Vars("failed") = TBBS.Lang("edit_failed")
Call main()
End If
Private Sub doGet()
TBBS.Vars("state") = 0
TBBS.Vars("title") = TBBS.Topic("title")
TBBS.Vars("content") = TBBS.Topic("content")
Call SetUpload
End Sub
Private Sub doPost()
Dim clsCmd
If TBBS.Forum("crt.allow") = "" Then
MyIO.Allow = TBBS.Env("allow")
Else
MyIO.Allow = TBBS.Forum("crt.allow")
End If
TBBS.Vars("state") = 1
TBBS.Vars("title") = Trim(MyIO.Form("title"))
TBBS.Vars("content") = SafeHTML(MyIO.Form("content"))
TBBS.Vars("face") = atoi(MyIO.Form("face"))
If Not TBBS.CheckValidate("post") Then
TBBS.AddHint "invalid_validate", Array()
ElseIf atol(TBBS.Topic("follow")) = 0 And Len(TBBS.Vars("title")) < atol(TBBS.Env("topic_title_min_size")) Then
TBBS.AddHint "topic_title_too_short", Array(TBBS.Env("topic_title_min_size"))
ElseIf Len(TBBS.Vars("title")) > atol(TBBS.Env("topic_title_max_size")) Then
TBBS.AddHint "topic_title_too_long", Array(TBBS.Env("topic_title_max_size"))
ElseIf Trim(TBBS.Vars("content")) = "" Then
TBBS.AddHint "empty_content", Array()
ElseIf Len(TBBS.Vars("content")) < atol(TBBS.Env("topic_content_min_size")) Then
TBBS.Addhint "topic_content_too_short", Array(TBBS.Env("topic_content_min_size"))
ElseIf Len(TBBS.Vars("content")) > atol(TBBS.Env("topic_content_max_size")) Then
TBBS.AddHint "topic_content_too_long", Array(TBBS.Env("topic_content_max_size"))
Else
If TBBS.Vars("title") = "" Then
TBBS.Vars("title") = TBBS.Topic("title")
End If
TBBS.Vars("topicid") = TBBS.Topic("seqid")
If TBBS.Vars("title") = "" Then
TBBS.Vars("topictitle") = FormatTime(GetDate(atol(TBBS.Topic("posttime"))), "Y-m-d H:i:s")
Else
TBBS.Vars("topictitle") = TBBS.Vars("title")
End If
Call ParseUpload
Call ParseDelete
Call ParseUpdate
Set clsCmd = MyKernel.Command(T_TOPIC)
clsCmd.CommandType = "UPDATE"
clsCmd.Where = "seqid=" & TBBS.Topic("seqid")
clsCmd.Add "title", TBBS.Vars("title")
clsCmd.Add "face", TBBS.Vars("face")
clsCmd.Add "edittime", TBBS.Vars("time")
clsCmd.Add "edituserid", MyKernel.Memory("seqid")
clsCmd.Add "editusername", MyKernel.Memory("username")
If reg_test("\[local\](\d+)\[/local\]", "i", TBBS.Vars("content")) Then
clsCmd.Add "content", preg_replace("\[local\](\d+)\[/local\]", "gi", "FormatUpload($1)", TBBS.Vars("content"))
Else
clsCmd.Add "content", TBBS.Vars("content")
End If
clsCmd.Exec
Set clsCmd = Nothing
TBBS.Vars("state") = 2
doRedirect
TBBS.AddHint "edit_ok", Array()
TBBS.AddHint "back_edit", Array(TBBS.Vars("redirect"))
TBBS.AddHint "back_forum", Array(TBBS.Topic("forumid"))
TBBS.AddHint "back_home", Array(TBBS.Env("bbs_name"))
End If
Session.Contents.Remove "validate"
End Sub
Private Function TodayPosts()
If atol(MyKernel.Memory("lastposttime")) < TBBS.Vars("date") Then
TodayPosts = 0
Else
TodayPosts = atol(MyKernel.Memory("todayposts"))
End If
End Function
Private Sub SetUpload()
Dim xmlDoc, xmlTopic
Dim strSQL
Set xmlTopic = TBBS.Element("topic")
strSQL = "SELECT * FROM $(Table) WHERE TOPICID=$(TopicID)"
strSQL = Replace(strSQL, "$(Table)", T_UPLOAD)
strSQL = Replace(strSQL, "$(TopicID)", TBBS.Topic("seqid"))
Set xmlDoc = MyKernel.DB.SQLToXML(strSQL, "uploads", "upload")
xmlTopic.appendChild xmlDoc.documentElement.cloneNode(True)
Set xmlDoc = Nothing
Set xmlTopic = Nothing
End Sub
Private Sub ParseUpdate()
Dim arrID, arrSeqID, arrCent, arrCoin, arrIntro
Dim clsCmd, clsItem
Dim i
arrID = Split(MyIO.Form("id"), ", ")
arrSeqID = MyIO.FormArray("seqid")
arrCent = MyIO.FormArray("cent")
arrCoin = MyIO.FormArray("coin")
arrIntro = MyIO.FormArray("intro")
If Not CBool(IsArray(arrSeqID) And IsArray(arrCent) And IsArray(arrCoin) And IsArray(arrIntro)) Then
'pass
ElseIf UBound(arrSeqID) <> UBound(arrCent) Then
TBBS.AddHint "update_file_failed", Array()
ElseIf UBound(arrSeqID) <> UBound(arrCoin) Then
TBBS.AddHint "update_file_failed", Array()
ElseIf UBound(arrSeqID) <> UBound(arrIntro) Then
TBBS.AddHint "update_file_failed", Array()
Else
Set clsCmd = MyKernel.Command(T_UPLOAD)
For i = 0 To UBound(arrSeqID)
If Not InArray(arrID, arrSeqID(i), False) Then
clsCmd.CommandType = "SELECT"
clsCmd.Where = "USERID=" & MyKernel.Memory("seqid") & " AND SEQID=" & atol(arrSeqID(i))
If clsCmd.Exec Then
clsCmd.CommandType = "UPDATE"
clsCmd.Where = "seqid=" & clsCmd("seqid")
clsCmd.Add "cent", atol(arrCent(i))
clsCmd.Add "coin", atol(arrCoin(i))
clsCmd.Add "intro", Left(arrIntro(i), 255)
Set clsItem = MyIO.File("update" & arrSeqID(i), 0)
If clsItem Is Nothing Then
'pass
ElseIf clsItem.State <> 0 Then
'pass
Else
If fso.FileExists(TBBS.MapPath("upload/" & clsCmd("uppath"))) Then
fso.DeleteFile TBBS.MapPath("upload/" & clsCmd("uppath"))
End If
clsCmd.Add "upname", reg_match("([^/\\]+)$", "", clsItem.FileName)(0)
clsCmd.Add "uppath", GetUploadPath(clsItem)
clsCmd.Add "upsize", clsItem.Size
clsCmd.Add "upext", clsItem.FileExt
clsCmd.Add "uptype", TBBS.FileType(clsItem.FileExt)
clsCmd.Add "uptime", TBBS.Vars("time")
End If
Set clsItem = Nothing
clsCmd.Exec
End If
End If
Next
Set clsCmd = Nothing
End If
End Sub
Private Sub ParseDelete()
Dim arrID, arr, i
Dim blnDel, strSQL
Dim clsCmd
arrID = MyIO.FormArray("id")
If Not IsArray(arrID) Then Exit Sub
If Not IsNumericArray(arrID) Then Exit Sub
strSQL = "SELECT UPTYPE,UPPATH FROM $(Table) WHERE USERID=$(UserID) AND SEQID IN ($(SeqID))"
strSQL = Replace(strSQL, "$(Table)", T_UPLOAD)
strSQL = Replace(strSQL, "$(UserID)", MyKernel.Memory("seqid"))
strSQL = Replace(strSQL, "$(SeqID)", Join(arrID, ","))
arr = MyKernel.DB.GetRows(strSQL)
If Not IsArray(arr) Then Exit Sub
For i = 0 To UBound(arr, 2)
Select Case arr(0, i)
Case TBBS_IMAGE
MyKernel.Memory("images") = atol(MyKernel.Memory("images")) - 1
Case TBBS_RING
MyKernel.Memory("rings") = atol(MyKernel.Memory("rings")) - 1
Case TBBS_VIDEO
MyKernel.Memory("videos") = atol(MyKernel.Memory("videos")) - 1
Case TBBS_SOFT
MyKernel.Memory("softs") = atol(MyKernel.Memory("softs")) - 1
End Select
If fso.FileExists(TBBS.MapPath("upload/" & arr(1, i))) Then
fso.DeleteFile TBBS.MapPath("upload/" & arr(1, i))
End If
Next
strSQL = "DELETE FROM $(Table) WHERE USERID=$(UserID) AND SEQID IN ($(SeqID))"
strSQL = Replace(strSQL, "$(Table)", T_UPLOAD)
strSQL = Replace(strSQL, "$(UserID)", MyKernel.Memory("seqid"))
strSQL = Replace(strSQL, "$(SeqID)", Join(arrID, ","))
TBBS.Vars("deletes") = MyKernel.DB.Exec(strSQL)
Set clsCmd = MyKernel.Command(T_USER)
clsCmd.CommandType = "UPDATE"
clsCmd.Where = "seqid=" & MyKernel.Memory("seqid")
clsCmd.Add "images", MyKernel.Memory("images")
clsCmd.Add "rings", MyKernel.Memory("rings")
clsCmd.Add "videos", MyKernel.Memory("videos")
clsCmd.Add "softs", MyKernel.Memory("softs")
clsCmd.Exec
Set clsCmd = Nothing
End Sub
Private Sub doRedirect()
Dim arr1, arr2, strURL
Dim lngRows, intSize
lngRows = atol(TBBS.Topic("serial"))
intSize = 10
arr1 = Array("fid", "id", "page")
If atol(TBBS.Topic("follow")) > 0 Then
arr2 = Array(TBBS.Forum("crt.seqid"), TBBS.Topic("follow"), GetPageNum(lngRows, intSize))
Else
arr2 = Array(TBBS.Forum("crt.seqid"), TBBS.Topic("seqid"), GetPageNum(lngRows, intSize))
End If
strURL = "$(URL)#topic$(ID)"
strURL = Replace(strURL, "$(URL)", GetURL("topic.asp", arr1, arr2))
strURL = Replace(strURL, "$(ID)", TBBS.Topic("seqid"))
TBBS.Redirect strURL
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -