www.gusucode.com > CC校友录贴吧 CCBar源码程序asp编程 > forum/forum_add_save.asp

    <%
'===================================================================
'= ASP FILENAME	: /forum/form_add_save.asp
'= CREATED TIME : 2006-6-24
'= LAST MODIFIED: 2006-6-24
'= VERSION INFO : CCASP Framework Ver 2.0.1 ALL RIGHTS RESERVED BY www.cclinux.com
'= DESCRIPTION  : 发表新贴
'= Change Log:
'===================================================================
%>

<!-- #include file = "../inc/customer/include_customer_action_execute.asp" -->
<!-- #include file = "../main_func.asp" -->
<!-- #include file = "./forum_inc.asp" -->
<!-- #include file = "./forum_func.asp" -->

<%
'========================================================
'==   Action参数设置
'========================================================
'== 页面名
Const CONST_PAGE_FILE	= "user/form_add_save.asp"

'== 页面标题/功能
Const CONST_PAGE_TITLE	= "发表新贴"

'== 功能函数名字空间
Const CONST_ACTION_FUNC	= "FormSaveAddTopicsCtl"

'== 相对根目录路径 
GBL_strHomeURL			= "../"

'== 页面构造
Call ActionBuild()

'== 请求校验与过滤
Call ActionFilter(CONST_PAGE_FILE,CONST_ACTION_FUNC)

'== 页面析构
Call ActionOver()

%>

<%
'===================================================================
'= Sub         : FormSaveAddTopicsCtl() 
'= Time	       : Created At 2006-6-24
'= Input       : Non
'= Table       : INSERT INTO CLASS_TOPICS
'= Description : 发表新贴
'===================================================================
Sub FormSaveAddTopicsCtl()

	Dim strTitle,strContent,strFace,strUserIp	'== Get form data 
	Dim strAddInfo								'== checked data's clew
	Dim intErrId
	Dim strHtmlCode,strSuccUrl

	intErrId = 0

	If Trim(Request.QueryString("action")) = "FormSaveAddReply" Then
		Call FormSaveAddReply()
		Exit Sub
	End If

	Dim strActFlag : strActFlag = Trim(Request.QueryString("pstActFlag"))
	If strActFlag <> "" And strActFlag <> "FORUM_EDIT_MODE" Then
		Call ResultExecute(E_USER_PUB,"贴子编辑模式不正确","ES_ERR")
		Exit Sub
	End If

	Dim ForumId : ForumId = Trim(Request.Form("hidForumId"))
	strAddInfo = "贴吧栏目"
	intErrId = DataCheck("DT_ID",ForumId,strAddInfo,"ES_ERR")
	Call ResultExecute(intErrId,strAddInfo,"ES_ERR")

	Dim intForumSubject : intForumSubject = Trim(Request.Form("selForumSubject"))
	If Not IsNumeric(intForumSubject) Then
		intForumSubject = 0
	End If 

	Call CheckMasterForum(ForumId)

	'== edit mode 
	If strActFlag = "FORUM_EDIT_MODE" Then

		Dim GetRSId : GetRSId = Trim(Request.QueryString("TopicsId"))
		strAddInfo = "该要编辑的帖子"
		intErrId = DataCheck("DT_ID",GetRSId,strAddInfo,"")
		Call ResultExecute(intErrId,strAddInfo,"ES_ERR")

	End If

	'== Check title of forum
	strTitle = Trim(Request.Form("iptTitle"))
	strAddInfo = "帖子主题"
	intErrId = DataCheck("DT_FIX_LENGTH",strTitle,strAddInfo,"1|DTC_LESS_MORE_LEN|100|")
	Call ResultExecute(intErrId,strAddInfo,"ES_ERR")

	'== Check smile face 
	strFace = Trim(Request.Form("rdoFace"))
	strAddInfo = "发贴心情图标文件名"
	intErrId = DataCheck("DT_FIX_LENGTH",strFace,strAddInfo,"1|DTC_LESS_MORE_LEN|15|")
	Call ResultExecute(intErrId,strAddInfo,"ES_ERR")
	If Ucase(Right(strFace,4)) <> ".GIF" Then
		Call ResultExecute(E_USER_PUB,"发贴心情图标文件名","ES_ERR")
	End If

	'== Check contents
	strContent = Trim(Request.Form("txtContent"))
	strAddInfo = "帖子内容"
	intErrId = DataCheck("DT_FIX_LENGTH",strContent,strAddInfo,"5|DTC_LESS_MORE_LEN|10000|")
	Call ResultExecute(intErrId,strAddInfo,"ES_ERR")

	GBL_objPubDB.Clear()
	GBL_objPubDB.TableName = "CLASS_TOPICS"
	If strActFlag = "FORUM_EDIT_MODE" Then
		GBL_objPubDB.SQLType = "UPDATE"
		If GBL_strUserAuthen = 1 Or GetMaster(ForumId) Then
			GBL_objPubDB.Where = "TOPICS_ID=" & GetRSId 
		Else
			GBL_objPubDB.Where = "TOPICS_ID=" & GetRSId & " AND TOPICS_OWNER_ID=" & GBL_intUserId
		End If
	Else
		GBL_objPubDB.SQLType = "INSERT"
	End If

	GBL_objPubDB.AddField "TOPICS_TITLE",strTitle
	GBL_objPubDB.AddField "TOPICS_CONTENT",htmlencode2(strContent)
	GBL_objPubDB.AddField "TOPICS_FACE",strFace
	If strActFlag <> "FORUM_EDIT_MODE" Then
		GBL_objPubDB.AddField "TOPICS_FORUM_ID",ForumId
		GBL_objPubDB.AddField "TOPICS_DATE",NOW()
		GBL_objPubDB.AddField "TOPICS_LAST_POST",NOW()
	End If

	If strActFlag <> "FORUM_EDIT_MODE" Then 
		GBL_objPubDB.AddField "TOPICS_OWNER",GBL_strUserRealName
		GBL_objPubDB.AddField "TOPICS_OWNER_ID",GBL_intUserId
		GBL_objPubDB.AddField "TOPICS_LAST_POSTER","--------"
	End If
	
	GBL_objPubDB.AddField "TOPICS_LAST_EDIT",Now()
	GBL_objPubDB.AddField "TOPICS_SUBJECT",intForumSubject	

	'== insert class_topics a new topics record
	GBL_objPubDB.SQLRSExecute()
	Call ResultExecute(GBL_objPubDB.intErrNum,"","ES_ERR")

	'== update the forum's topics
	Call RecordCounter("CLASS_FORUM","FORUM_TOPICS",1,"AND FORUM_ID=" & ForumId)

	If strActFlag <> "FORUM_EDIT_MODE" Then 

		'== update  _FORUM
		GBL_objPubDB.Clear()
		GBL_objPubDB.ALlSQL = "UPDATE CLASS_FORUM SET FORUM_LAST_TOPICS='" & strTitle & "',FORUM_LAST_POST='" & Now() & "' WHERE FORUM_ID=" & ForumId
		GBL_objPubDB.SQLExecute()

		Call ResultExecute(GBL_objPubDB.intErrNum,"up forum after add topics","ES_ERR")

		'== Update user topics number
		Call RecordCounter("CLASS_USER","USER_TOPICS",1,"AND USER_ID=" & GBL_intUserId)

		'== Update user level
		Call UpdateLevel(GBL_intTopicsLevel)

		strHtmlCode = "发表帖子成功"
		strSuccUrl = "forum/forum_list.asp?action=ShowForumList&ForumId=" & ForumId
		Call SuccExecute(strHtmlCode,strSuccUrl)

		Call ResultExecute(1101,ForumId,"ES_SUCC")

	Else
		strHtmlCode = "修改帖子成功"
		strSuccUrl = "forum/forum_show.asp?action=ShowForumContent&TopicsId=" & GetRSId & "&ForumId=" & ForumId
		Call SuccExecute(strHtmlCode,strSuccUrl)

	End If
	
End Sub

'===================================================================
'= Sub         : FormSaveAddReply() 
'= Time	       : Created At 2006-6-24
'= Input       : None
'= Table       : INSERT INTO CLASS_REPLY
'= Description : Save forum reply
'===================================================================
Sub FormSaveAddReply()

	Dim strTitle,strContent,strFace,strUserIp	'== Get form data 
	Dim strAddInfo								'== checked data's clew
	Dim intErrId
	Dim GetRS
	Dim strHtmlCode,strSuccUrl

	intErrId = 0

	'== check edit mode
	Dim strActFlag
	strActFlag = Trim(Request.QueryString("pstActFlag"))
	If strActFlag <> "" And strActFlag <> "FORUM_EDIT_MODE" Then
		Call ResultExecute(E_USER_PUB,"贴子回复编辑模式不正确","ES_ERR")
		Exit Sub
	End If

	'== check forum id
	Dim ForumId : ForumId = Trim(Request.Form("hidForumId"))
	If Not IsNumeric(ForumId) Then
		Call ResultExecute(E_USER_PUB,"贴吧forum id错误" & ForumId,"ES_ERR")
		Exit Sub
	End If

	Call CheckMasterForum(ForumId)

	'== edit mode 
	If strActFlag = "FORUM_EDIT_MODE" Then
		Dim GetRSId1
		GetRSId1 = Trim(Request.QueryString("ReplyId"))
		strAddInfo = "该要编辑的帖子"
		intErrId = DataCheck("DT_ID",GetRSId1,strAddInfo,"")
		Call ResultExecute(intErrId,strAddInfo,"ES_ERR")

	End If

	'== check topics id
	Dim GetRSId : GetRSId = Trim(Request.QueryString("TopicsId"))
	strAddInfo = "需回复帖子"
	intErrId = DataCheck("DT_ID",GetRSId,strAddInfo,"")
	Call ResultExecute(intErrId,strAddInfo,"ES_ERR")

	'== Check smile face 
	strFace = Trim(Request.Form("rdoFace"))
	strAddInfo = "发贴心情图标文件名"
	intErrId = DataCheck("DT_FIX_LENGTH",strFace,strAddInfo,"1|DTC_LESS_MORE_LEN|15|")
	Call ResultExecute(intErrId,strAddInfo,"ES_ERR")
	If Ucase(Right(strFace,4)) <> ".GIF" Then
		Call ResultExecute(E_USER_PUB,"发贴心情图标文件名","ES_ERR")
	End If

	'== Check re title
	strTitle = Trim(Request.Form("iptReTitle"))
	strAddInfo = "回复贴主题"
	intErrId = DataCheck("DT_FIX_LENGTH",strTitle,strAddInfo,"1|DTC_LESS_MORE_LEN|100|")
	Call ResultExecute(intErrId,strAddInfo,"ES_ERR")

	'== Check contents
	strContent = Trim(Request.Form("txtContent"))
	strAddInfo = "回复内容"
	intErrId = DataCheck("DT_FIX_LENGTH",strContent,strAddInfo,"5|DTC_LESS_MORE_LEN|10000|")
	Call ResultExecute(intErrId,strAddInfo,"ES_ERR")

	GBL_objPubDB.Clear()
	GBL_objPubDB.TableName = "CLASS_REPLY"

	If strActFlag = "FORUM_EDIT_MODE" Then
		GBL_objPubDB.SQLType = "UPDATE"
		If GBL_strUserAuthen = 1 Or GetMaster(ForumId) Then
			GBL_objPubDB.Where = "REPLY_ID=" & GetRSId1 
		Else
			GBL_objPubDB.Where = "REPLY_ID=" & GetRSId1 & " AND REPLY_OWNER_ID=" & GBL_intUserId
		End If
	Else
		GBL_objPubDB.SQLType = "INSERT"
	End If

	GBL_objPubDB.AddField "REPLY_CONTENT",htmlencode(strContent)

	If strActFlag <> "FORUM_EDIT_MODE" Then
		GBL_objPubDB.AddField "REPLY_OWNER",GBL_strUserRealName
		GBL_objPubDB.AddField "REPLY_OWNER_ID",GBL_intUserId
		GBL_objPubDB.AddField "REPLY_FORUM_ID",ForumId
		GBL_objPubDB.AddField "REPLY_DATE",NOW()
	End If

	GBL_objPubDB.AddField "REPLY_TOPICS_ID",GetRSId
	GBL_objPubDB.AddField "REPLY_LAST_POST",Now()
	GBL_objPubDB.AddField "REPLY_FACE",strFace
	GBL_objPubDB.AddField "REPLY_TITLE",strTitle

	'== insert class_reply a new reply record
	GBL_objPubDB.SQLExecute()
	Call ResultExecute(GBL_objPubDB.intErrNum,"","ES_ERR")

	If strActFlag = "FORUM_EDIT_MODE" Then
		strHtmlCode = "修改回复成功"
		strSuccUrl = "forum/forum_show.asp?action=ShowForumContent&TopicsId=" & GetRSId & "&ForumId=" & ForumId
		Call SuccExecute(strHtmlCode,strSuccUrl)
	Else

		'== update replies
		Call RecordCounter("CLASS_TOPICS","TOPICS_REPLIES",1,"AND TOPICS_ID=" & GetRSId)

		'== update _TOPICS
		GBL_objPubDB.Clear()
		GBL_objPubDB.AllSQL = "UPDATE CLASS_TOPICS SET TOPICS_LAST_POSTER='" & GBL_strUserRealName & "',TOPICS_LAST_POSTER_ID='" & GBL_intUserId & "',TOPICS_LAST_POST='" & Now() & "' WHERE TOPICS_ID=" & GetRSId
		GBL_objPubDB.SQLExecute()
		Call ResultExecute(GBL_objPubDB.intErrNum,"up topics after add reply","ES_ERR")

		'== update  _FORUM
		GBL_objPubDB.Clear()
		GBL_objPubDB.ALlSQL = "UPDATE CLASS_FORUM SET FORUM_LAST_REPLY='" & strTitle & "',FORUM_LAST_POST='" & Now() & "' WHERE FORUM_ID=" & ForumId
		GBL_objPubDB.SQLExecute()
		Call ResultExecute(GBL_objPubDB.intErrNum,"up forum after add reply","ES_ERR")

		'== Update user reply number
		Call RecordCounter("CLASS_USER","USER_REPLY",1,"AND USER_ID=" & GBL_intUserId)

		'== Update user level
		Call UpdateLevel(GBL_intReplyLevel)

		'== 成功处理
		strHtmlCode = "回复成功"
		strSuccUrl = "forum/forum_show.asp?action=ShowForumContent&TopicsId=" & GetRSId & "&ForumId=" & ForumId
		Call SuccExecute(strHtmlCode,strSuccUrl)

	End If
	
End Sub

'===================================================================
'= Function    : GetMaster(intForumId)
'= Time		   : Created At 2006-6-24
'= Input       : 
'= Table	   : Qurey CLASS_FORUM,CLASS_USER
'= Description : get user master of forum
'===================================================================
Function GetMaster(intForumId)

	Dim strTmp,i

	strTmp =  Trim(GetConfig(Application(GBL_strCookieURL & "FORUM_MASTER"),"Forum" & intForumId))

	If strTmp <> "" Then
		strTmp = Split(strTmp,"|")
		For i = Lbound(strTmp) To Ubound(strTmp)
			If Trim(strTmp(i)) = GBL_strUserAccount Then
				GetMaster = True
				Exit Function
			End If
		Next
	End If

	GetMaster = False

End Function
%>