📄 board.asp
字号:
YxBBs.Execute("Update [YX_Board]Set RootID="&NewRootID&" where BoardID="&BoardID)
Temp=BoardID
YxBBs.Execute("Update [YX_Board] Set RootID="&NewRootID&" where ParentStr like '%"&Temp&"%' And RootID="&RootID&"")
End If
Next
Call Suc("","排序成功!","?")
UpdateBoardCache
End Sub
Sub Addmaster(s,o,n)
Dim Arr,Oarr,i,Sql
Dim GradeNum,GradeName,Gradepic
'Set Rs = YxBBs.Execute("SELECT GradeName,GradePic FROM YX_UserGrade WHERE ClassID = 3 ORDER BY UserMinPostNum DESC")
Set Rs=Conn.Execute("Select GradeNum,GradeName,GradePic FROM YX_UserGrade WHERE ClassID = 3 ORDER BY UserMinPostNum DESC")
If Not (Rs.Eof And Rs.Bof) Then
GradeNum = Rs(0)
GradeName = Rs(1)
Gradepic = Rs(2)
End If
Randomize
Arr = Split(s,"@@")
Oarr = Split(o,"@@")
Set Rs = Server.Createobject("Adodb.Recordset")
For i = 0 To Ubound(Arr)
Sql = "SELECT * FROM [YX_User] WHERE Name = '" & Arr(i) & "'"
Rs.Open Sql,Conn,1,3
If Rs.Eof And Rs.Bof Then
Call GoBack("",Arr(i) &"这个用户还没有注册!")
Else
If Rs("ClassID") = 5 Then
Rs("GradeNum") = GradeNum
Rs("GradeName") = GradeName
Rs("Gradepic") = Gradepic
Rs("ClassID") = 3
Rs.Update
End If
End If
Rs.Close
Next
'判断原版主在其他版面是否还担任版主,如没有担任则撤换该用户职位。
If n = 1 Then
Dim Iboardmaster
Dim UserGrade, Article
Iboardmaster = False
For i = 0 To Ubound(Oarr)
Set Rs = YxBBs.Execute("SELECT BoardAdmin FROM YX_Board")
Do While Not Rs.Eof
If InStr("|" & Trim(Rs(0)) & "|","|" & Trim(Oarr(i)) & "|") > 0 Then
Iboardmaster = True
Exit Do
End If
Rs.Movenext
Loop
If Not Iboardmaster Then
Set Rs = YxBBs.Execute("SELECT ID,ClassID,EssayNum FROM [YX_User] WHERE Name='" & Trim(Oarr(i)) & "' Or ClassID=3")
If Not (Rs.Eof And Rs.Bof) Then
'If Rs(1) > 2 Then
If Not Isnumeric(Rs(2)) Or Rs(2) = "" Then
Article = 0
Else
Article = Cstr(Rs(2))
End If
'取对应注册会员的等级
Set UserGrade = YxBBs.Execute("SELECT TOP 1 GradeNum,GradeName,GradePic FROM YX_UserGrade WHERE UserMinPostNum <= " & Article & " AND NOT UserMinPostNum = -1 AND ClassID = 5 ORDER BY UserMinPostNum DESC")
If Not (UserGrade.Eof And UserGrade.Bof) Then
YxBBs.Execute("UPDATE [YX_User] Set GradeNum="&UserGrade(0)&",GradePic='"&UserGrade(2)&"',GradeName='"&UserGrade(1)&"',ClassID=5 WHERE ID="&Rs(0))
End If
UserGrade.Close:Set UserGrade = Nothing
'End If
End If
End If
Iboardmaster = False
Next
End If
Set Rs = Nothing
End Sub
Sub BoardUnite
%><form method=POST style="margin:0" action="?Action=SaveBoardUnite">
<table width="98%" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor="#FFFFFF">
<tr bgcolor="#4D65A4"><td height="25" bgcolor="#CCCCCC">论坛合并</td>
</tr>
<tr><td height="40" bgcolor="#DEDEDE">将论坛:
<select size="1" name="BoardID"><option value='0'>请选择原论坛</option><%=YxBBs.BoardIDList(0,0)%></select> 合并到论坛: <select size="1" name="NewBoardID"><option value='0'>请选择目标论坛</option><%=YxBBs.BoardIDList(0,0)%></select> 中 <input type="submit" onclick=checkclick('操作后将不能恢复!您确定要合并吗?') value=" 论坛合并 "></td></tr>
<tr bgcolor="#E8F4EF"><td height="40" bgcolor="#CCCCCC" ><b>注意事项:</b><font color=red>此操作不可恢复,请慎重操作!</font><br>
分类不能操作,不能和其属下的论坛合并。<br>
合并后原论坛(包括属下论坛)将被删除,所有帖子(包括属下论坛的帖子)将转移到指定的目标论坛中 </td></tr></table></form>
<%
End Sub
Sub SaveBoardUnite
Dim BoardID,NewBoardID,TempParentStr,TempParentID,Rs1
Dim I,AllTable
Dim ParentStr,Depth,ParentID,Child,RootID
BoardID=YxBBs.Fun.Getstr("BoardID")
NewBoardID=YxBBs.Fun.Getstr("NewBoardID")
IF BoardID="" Or NewBoardID="" Then
Call GoBack("","请先指定论坛后再进行合并!")
Exit Sub
ElseIf BoardID=NewBoardID Then
Call Goback("","同一个论坛不用合并了!")
Exit sub
End If
Set Rs=YxBBs.Execute("Select ParentStr,BoardID,Depth,ParentID,Child,RootID from YX_board where BoardID="&BoardID)
If Rs(2)="0" then
Call Goback("系统错误","分类不能做合并操作!")
Exit Sub
End If
ParentStr=Rs(0) & "," & Rs(1)
ParentID=Rs(3)
TempParentStr=rs(1)
DepTh=rs(2)
Child=rs(4)+1
RootID=rs(5)
Rs.Close
TempParentID=ParentID
'判断是否合并到下属论坛
Set Rs=YxBBs.Execute("Select BoardID From [YX_Board] where BoardID="&NewBoardID&" And ParentStr like '%"&ParentStr&"%'")
If Not (rs.eof and rs.bof) then
Call Goback("","不能将论坛合并到其下属论坛中!")
Exit Sub
End if
Rs.Close
'得到全部下属论坛ID
i=0
Set Rs=YxBBs.Execute("Select BoardID from [YX_Board] where RootID="&RootID&" And ParentStr like '%"&ParentStr&"%'")
do while not rs.eof
If i=0 then
TempParentStr=Rs(0)
Else
TempParentStr=TempParentStr & "," & Rs(0)
End if
i=i+1
Rs.movenext
loop
If i>0 then
ParentStr=TempParentStr & "," & BoardID
Else
ParentStr=BoardID
End if
'更新其原来所属论坛版面数
YxBBs.Execute("update [YX_Board] set Child=Child-"&child&" where BoardID="&TempParentID)
'更新其原来所属论坛数据,排序相当于剪枝而不需考虑
For I=1 to Depth
'得到其父类的父类的版面ID
Set rs=YxBBs.Execute("select ParentID from [YX_Board] where boardID="&TempParentID)
If Not (rs.eof and rs.bof) then
TempParentID=rs(0)
YxBBs.Execute("update [YX_Board] set Child=Child-"&Child&" where boardid="&TempParentID)
End if
Next
'更新论坛帖子数据
AllTable=Split(YxBBs.BBSTable(0),",")
For i=0 To uBound(AllTable)
YxBBs.Execute("update [YX_BBS"&AllTable(i)&"] set BoardID="&NewBoardID&" where BoardID in ("&ParentStr&")")
Next
YxBBs.Execute("update [YX_Topic] set BoardID="&NewBoardID&" where BoardID in ("&ParentStr&")")
'删除被合并论坛
Set Rs=YxBBs.Execute("Select Sum(EssayNum),sum(TopicNum),sum(TodayNum) from [YX_Board] where RootID="&RootID&" And BoardID in ("&ParentStr&")")
YxBBs.Execute("Delete from [YX_Board] where RootID="&RootID&" And BoardID in ("&ParentStr&")")
'更新新论坛帖子计数
YxBBs.Execute("update [YX_Board] set EssayNum=EssayNum+"&rs(0)&",TopicNum=TopicNum+"&rs(1)&",TodayNum=TodayNum+"&rs(2)&" where BoardID ="&NewBoardID&"")
'更新上级版块
set Rs1=YxBBs.Execute("select Depth,ParentStr,Boardid from [YX_Board] where BoardID="&NewBoardID)
If Rs1(0)>1 Then
ParentStr=Rs1(0)
YxBBs.Execute("update [YX_Board] set EssayNum=EssayNum+"&rs(0)&",TopicNum=TopicNum+"&rs(1)&",TodayNum=TodayNum+"&rs(2)&" where boardid in ("&ParentStr&")")
End If
Rs1.Close:Set Rs1=Nothing
Rs.Close
Call Suc("","合并成功!已经将原论坛(包括属下)的所有帖子合并到目标论坛。","?")
UpdateBoardCache
End Sub
Sub ClearData
Set Rs=YxBBs.execute("Select BoardName,TopicNum,EssayNum From[YX_Board] where BoardID="&YxBBs.BoardID&"")
IF Rs.Eof Then
Call GoBack("","论坛版面不存在,可能经被删除了")
Exit Sub
End If%>
<table width="98%" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor="#FFFFFF">
<tr bgcolor="#CCCCCC"><td height="25" colspan="2"><%=Rs("BoardName")%> 数据清理</td>
</tr>
<tr bgcolor="#DEDEDE"><td height="40"><b>帖子信息</b><br>
版面主题数:<%=Rs("TopicNum")%><br>版面总帖数:<%=Rs("EssayNum")%><br>精华主题数:<%=YxBBs.Execute("Select Count(TopicID) From[YX_Topic] where IsGood and BoardID="&YxBBs.BoardID&"")(0)%><br></td><td><b>注意事项</b><br>
<font color=red>此操作不可恢复!精华帖子不会被删除!</Font><br>如果您的论坛数据众多,执行此操作将消耗大量的服务器资源。<br>执行过程请耐心等候,最好选择夜间在线人少的时候更新。</td></tr>
<tr bgcolor="#CCCCCC"><td height="40" colspan="2" ><form method=POST style="margin:0" action="?Action=StartClearData">清除 <b><%=Rs(0)%></b> 在 <input name="BoardID" value="<%=YxBBs.BoardID%>" type="hidden"><select name="SqlTableID"><option value="0">所有数据表</option><%=SqlTableList%></select> 中 <input type=text name="ClearDate" value="365" size=5> 天前的帖子。 <input type="submit" value=" 执行清理 ">
</form></td></tr></tbody></table>
<%Rs.Close
End Sub
Sub StartClearData
Dim SqlTableID,ClearDate,BoardID,AllTable,i
SqlTableID=YxBBs.Fun.GetStr("SqlTableID")
ClearDate=YxBBs.Fun.GetStr("ClearDate")
BoardID=YxBBs.Fun.GetStr("BoardID")
If Not isnumeric(ClearDate) or Not isNumeric(SqlTableID) or Not isNumeric(BoardID) Then
Call GoBack("","请用数字填写!")
Exit Sub
End If
IF Int(SqlTableID)=0 Then
AllTable=Split(YxBBs.BBSTable(0),",")
Else
AllTable=Split(SqlTableID,",")
End if
For i=0 to uBound(AllTable)
Set Rs=YxBBs.Execute("Select TopicID,isVote From[YX_Topic] where BoardID="&BoardID&" And IsGood=False And DATEDIFF('d',[LastTime],'"&YxBBs.NowBbsTime&"')>"&ClearDate&" ")
Do While Not Rs.Eof
YxBBs.Execute("Delete from [YX_Bbs"&AllTable(i)&"] where BoardID="&BoardID&" And (TopicId="&RS(0)&" Or ReplyTopicId="&RS(0)&")")
IF Rs(1) Then'删除投票
YxBBs.Execute("Delete from [YX_TopicVote] where TopicID="&RS(0)&"")
YxBBs.Execute("Delete from [YX_TopicVoteUser] where TopicID="&RS(0)&"")
End If
Rs.movenext
Loop
Rs.Close
YxBBs.Execute("Delete From[YX_Topic] where BoardID="&BoardID&" And SqlTableID="&AllTable(i)&" And IsGood=False And DATEDIFF('d',[LastTime],'"&YxBBs.NowBbsTime&"')>"&ClearDate&" ")
Next
Call Suc("","成功的清理了论坛数据!","?")
End Sub
Sub PassUser
Set Rs=YxBBs.execute("Select PassUser,BoardName From [YX_Board] where BoardID="&YxBBs.BoardID&" And ParentID<>0")
IF Rs.eof Then
Call GoBack("","此论坛的类型不是认证论坛,不能设置认证用户。")
Exit Sub
End If%>
<form method=POST style='margin:0' action="?Action=SavePassUser">
<table width="98%" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor="#FFFFFF">
<tr bgcolor="#CCCCCC"><td height="25" colspan="2">修改论坛论证用户</td>
</tr>
<tr bgcolor="#DEDEDE"><td width="30%" height="28"><b>所在论坛:</b> </td>
<td width="70%"><input name="BoardID" value="<%=YxBBs.BoardID%>" type="hidden"><%=Rs("BoardName")%></td></tr>
<tr bgcolor="#DEDEDE"><td height="28"><b>通过认证的用户:</b><br>
各用户之间用“|”隔开<Br>请不要使用回车键Enter</td><td height="28"><textarea name="PassUser" rows="3"><%=Rs("PassUser")%></textarea></td></tr>
<tr bgcolor="#CCCCCC"><td colspan="2" align="center"><input type="submit" value=" 提 交 "> <input type="reset" name="Submit" value=" 重 置 "></td></tr></tbody></table>
</table></form>
<%Rs.Close
End Sub
Sub SavePassUser
Dim PassUsers,BoardID
BoardID=YxBBs.Fun.GetStr("BoardID")
PassUsers=Trim(Replace(Request.Form("PassUser"),"'",""))
PassUsers=Replace(PassUsers,chr(10), "")
PassUsers=Replace(PassUsers,chr(13), "")
YxBBs.Execute("Update [YX_Board] Set PassUser='"&PassUsers&"' where BoardID="&BoardID&" And ParentID<>0")
Cache.Name="BoardInfo"
Cache.clean()
Call Suc("","成功的更新了该论坛的认证会员!","?")
End Sub
Sub BoardUpdate
%>
<table width="98%" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor="#FFFFFF">
<tr><td bgcolor="#DEDEDE"><div align="center"><b><span id=YxBBsT name=YxBBsT>数据版面正在整理,请稍等</span></b></div>
<table width="400" border="0" align="center" cellpadding="1" cellspacing="1">
<tr><td bgcolor=#d7d7d7>
<table width="400" border="0" cellspacing="0" cellpadding="1">
<tr>
<td bgcolor=ffffff height=9><img src="../images/hr1.gif" width=0 height=16 id=YxBBsimg name=YxBBsimg align=absmiddle></td>
</tr></table>
</td></tr></table>
<div align="center"><span id=YxBBstxt name=YxBBstxt style="font-size:9pt">0</span><span style="font-size:9pt">%</span></div></td></tr></table><br>
<%Response.Flush
Dim BoardNum,EssayNum,TopicNum,TodayNum,ParentStr,LastReply,LastCaption
Dim AllTable,I,II,III,SQL
BoardNum=YxBBs.Execute("Select Count(BoardID) from[YX_Board] Where ParentID<>0")(0)
II=0
Set Rs=YxBBs.Execute("Select BoardID,BoardName,Child,ParentStr,RootID from[YX_Board] Where ParentID<>0 Order by Child,RootID,Orders Desc")
If Not Rs.EOF Then
SQL=Rs.GetRows()
Rs.Close
For i=0 to UBound(SQL,2)
EssayNum=0
TopicNum=0
TodayNum=0
LastReply=""
LastCaption="无"
AllTable=Split(YxBBs.BBSTable(0),",")
For III=0 To uBound(AllTable)
EssayNum=EssayNum+YxBBs.Execute("Select Count(*) From[YX_Bbs"&AllTable(III)&"] where BoardID="&SQL(0,i)&" And IsDel=False")(0)
TodayNum=TodayNum+YxBBs.Execute("Select Count(*) From[YX_Bbs"&AllTable(III)&"] where BoardID="&SQL(0,i)&" And IsDel=False And DATEDIFF('d',[LastTime],'"&YxBBs.NowBbsTime&"')<1")(0)
Next
TopicNum=YxBBs.Execute("Select Count(TopicID) From[YX_Topic] where BoardID="&SQL(0,i)&" and IsDel=False")(0)
Set Rs=YxBBs.execute("Select top 1 TopicID,Name,Caption,AddTime,Face,SqlTableID,BoardID From [YX_Topic] where IsDel=False And BoardID="&SQL(0,i)&" order by TopicID desc")
If Not Rs.eof then
LastCaption=replace(YxBBs.Fun.StrLeft(Rs("Caption"),20),"'","'")
LastReply=Rs("Name")&"|"&LastCaption&"|"&Rs("AddTime")&"|"&Rs("Face")&"|"&Rs("TopicID")&"|"&Rs("BoardID")&"|"&Rs("SqlTableID")&""
End If
Rs.Close
YxBBs.Execute("update [YX_Board] Set EssayNum="&EssayNum&",TodayNum="&TodayNum&",TopicNum="&TopicNum&",LastReply='"&LastReply&"' where BoardID="&SQL(0,i)&"")
'如果有上级论坛,那么更新上级论坛
If SQL(2,I)>0 Then
ParentStr=SQL(3,i) & "," & SQL(0,i)
Set Rs=YxBBs.Execute("Select Sum(EssayNum),Sum(TopicNum),Sum(TodayNum) From [YX_Board] Where ParentStr = '"&ParentStr&"'")
If Not IsNull(Rs(0)) Then EssayNum = Rs(0) + EssayNum
If Not IsNull(Rs(1)) Then TopicNum = Rs(1) + TopicNum
If Not IsNull(Rs(2)) Then TodayNum = Rs(2) + TodayNum
Rs.Close
Set Rs=YxBBs.execute("Select top 1 TopicID,Name,Caption,AddTime,Face,SqlTableID,BoardID From [YX_Topic] where IsDel=False And BoardID In ("&ParentStr&") Order by LastTime Desc")
If Not Rs.eof then
LastCaption=replace(YxBBs.Fun.StrLeft(Rs("Caption"),20),"'","'")
LastReply=Rs("Name")&"|"&LastCaption&"|"&Rs("AddTime")&"|"&Rs("Face")&"|"&Rs("TopicID")&"|"&Rs("BoardID")&"|"&Rs("SqlTableID")&""
End If
Rs.Close
YxBBs.Execute("update [YX_Board] Set EssayNum="&EssayNum&",TodayNum="&TodayNum&",TopicNum="&TopicNum&",LastReply='"&LastReply&"' where BoardID="&SQL(0,i)&"")
End IF
Call Table("论坛 <Font color=blue>"&SQL(1,i)&"</Font> 整理成功","总帖数"&EssayNum&" | 主题数:"&TopicNum&" | 今日帖:"&TodayNum&" | 最新主题:"&LastCaption&"")
II=II+1
Response.Write "<script>YxBBsimg.width=" & Fix((ii/BoardNum) * 400) & ";" & VbCrLf
Response.Write "YxBBstxt.innerHTML=""" & FormatNumber(ii/BoardNum*100,4,-1) & """;" & VbCrLf
Response.Write "</script>" & VbCrLf
Response.Flush
Next
End If
Response.Write "<script>YxBBsimg.width=400;YxBBstxt.innerHTML=""100"";YxBBsT.innerHTML=""<font color=red>成功完成整理!</font>"";</script>"
updateBoardCache
End Sub
Function SqlTableList()
Dim AllTable,I
AllTable=Split(YxBBs.BBSTable(0),",")
For i=0 To uBound(AllTable)
SqlTableList=SqlTableList&"<option value='"&AllTable(I)&"'>数据表"&AllTable(I)&"</option>"
Next
End Function
Sub Table(Str1,Str2)
Response.Write("<table width='98%' border='1' align='center' cellpadding='3' cellspacing='2' bordercolor='#999999' bordercolordark='#FFFFFF' bgcolor='#DEF0FE'><tr><td><Div style='margin:5;line-height: 150%'>"&Str1&"<br>"&Str2&"</Div></td></tr></table>")
End Sub
%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -