⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 #post_edit.mo

📁 WAPmo手机网站管理平台是一款创建与管理维护WAP网站的的软件产品
💻 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 + -