Stick/Edit topic question - Posted (1611 Views)
Member Locked
philsbbs
Posts: 397
397
Hi,

I want to automatically send a private message to an author when a moderator or administrator edits or makes there topic sticky or unsticky.
Has anyone done such coding on there forum that they wish to share.
Thanks in advance.
Phil
 Sort direction, for dates DESC means newest first  
 Page size 
Posted
Advanced Member
Carefree
Posts: 4224
4224
I haven't, no, but I'll write it for you tonight.
Posted
Advanced Member
Carefree
Posts: 4224
4224
Here you are.

In "pop_lock.asp", look for the following lines (appx 192-196):

Code:

	case "StickyTopic"
strEncodedPassword = sha256("" & strPassword)
mLev = cLng(chkUser(strDBNTFUserName, strEncodedPassword,-1))
if mLev > 0 then '## is Member
if (chkForumModerator(Forum_ID, strDBNTFUserName) = "1") or (mLev = 4) then


Replace them with the following:

case "StickyTopic"
strEncodedPassword = sha256("" & strPassword)
mLev = cLng(chkUser(strDBNTFUserName, strEncodedPassword,-1))
if mLev > 0 then '## is Member
if (chkForumModerator(Forum_ID, strDBNTFUserName) = "1") or (mLev > 2) then
strSql="SELECT M.M_EMAIL, M.M_NAME, M.MEMBER_ID, T.T_AUTHOR, T.T_SUBJECT, T.TOPIC_ID FROM " & strMemberTablePrefix &_
"MEMBERS M INNER JOIN " & strTablePrefix & "TOPICS T ON (T.T_AUTHOR=M.MEMBER_ID AND T.TOPIC_ID="& Topic_ID &")"
set rsPost=my_Conn.Execute(strSql)
if not rsPost.EOF then
strT2=rsPost("T_SUBJECT")
strT3=rsPost("M_EMAIL")
strT4=rsPost("M_NAME")
end if
rsPost.Close
set rsPost=Nothing
strRecipients = chkString(strT3,"SQLString")
strRecipientsName = chkString(strT4,"SQLString")
strFrom = strSender
strFromName = strForumTitle
strsubject = strForumTitle & " Sticky Topic Change, "&strRecipientsName
strMessage = strMessage & "Your topic on "& strForumTitle &", titled: "& chr(34)& strT2 & chr(34) &" was made sticky by staff member: "& strDBNTFUserName& vbNewLine& "Link: "&strForumURL& "topic.asp?topic_id="&Topic_ID & vbNewLine
%>
<!--#INCLUDE FILE="inc_mail.asp" -->
<%

Then, in "pop_open.asp", look for the following lines (appx 156-160):

Code:

	case "UnStickyTopic"
strEncodedPassword = sha256("" & strPassword)
mLev = cLng(ChkUser(strDBNTFUserName, strEncodedPassword,-1))
if mLev > 0 then '## is Member
if (chkForumModerator(Forum_ID, strDBNTFUserName) = "1") or (mLev = 4) then


Replace them with the following:

case "UnStickyTopic"
strEncodedPassword = sha256("" & strPassword)
mLev = cLng(ChkUser(strDBNTFUserName, strEncodedPassword,-1))
if mLev > 0 then '## is Member
if (chkForumModerator(Forum_ID, strDBNTFUserName) = "1") or (mLev > 2) then
strSql="SELECT M.M_EMAIL, M.M_NAME, M.MEMBER_ID, T.T_AUTHOR, T.T_SUBJECT, T.TOPIC_ID FROM " & strMemberTablePrefix &_
"MEMBERS M INNER JOIN " & strTablePrefix & "TOPICS T ON (T.T_AUTHOR=M.MEMBER_ID AND T.TOPIC_ID="& Topic_ID &")"
set rsPost=my_Conn.Execute(strSql)
if not rsPost.EOF then
strT2=rsPost("T_SUBJECT")
strT3=rsPost("M_EMAIL")
strT4=rsPost("M_NAME")
end if
rsPost.Close
set rsPost=Nothing
strRecipients = chkString(strT3,"SQLString")
strRecipientsName = chkString(strT4,"SQLString")
strFrom = strSender
strFromName = strForumTitle
strsubject = strForumTitle & " Sticky Topic Change, "&strRecipientsName
strMessage = strMessage & "Your topic on "& strForumTitle &", titled: "& chr(34)& strT2 & chr(34) &" was made un-sticky by staff member: "& strDBNTFUserName& vbNewLine& "Link: "&strForumURL& "topic.asp?topic_id="&Topic_ID & vbNewLine
%>
<!--#INCLUDE FILE="inc_mail.asp" -->
<%
Posted
Member Locked
philsbbs
Posts: 397
397
Thanks it works a treat, is it possible to have it also send a private message as well as a email ??
Phil
Posted
Advanced Member
Carefree
Posts: 4224
4224
Sure. I'll add that today for you.
Posted
Advanced Member
Carefree
Posts: 4224
4224
To also send a PM to the topic's author, replace the routines as follows.
"pop_lock.asp"

Code:

	case "StickyTopic"
strEncodedPassword = sha256("" & strPassword)
mLev = cLng(chkUser(strDBNTFUserName, strEncodedPassword,-1))
if mLev > 0 then '## is Member
if (chkForumModerator(Forum_ID, strDBNTFUserName) = "1") or (mLev > 2) then
strSql="SELECT M.M_EMAIL, M.M_NAME, M.MEMBER_ID, T.T_AUTHOR, T.T_SUBJECT, T.TOPIC_ID FROM " & strMemberTablePrefix &_
"MEMBERS M INNER JOIN " & strTablePrefix & "TOPICS T ON (T.T_AUTHOR=M.MEMBER_ID AND T.TOPIC_ID="& Topic_ID &")"
set rsPost=my_Conn.Execute(strSql)
if not rsPost.EOF then
T1=rsPost("T_AUTHOR")
strT2=rsPost("T_SUBJECT")
strT3=rsPost("M_EMAIL")
strT4=rsPost("M_NAME")
end if
rsPost.Close
set rsPost=Nothing
strRecipients = chkString(strT3,"SQLString")
strRecipientsName = chkString(strT4,"SQLString")
strFrom = strSender
strFromName = strForumTitle
strsubject = strForumTitle & " Sticky Topic Change, "&strRecipientsName
strMessage = strMessage & "Your topic on "& strForumTitle &", titled: "& chr(34)& strT2 & chr(34) &" was made sticky by staff member: "& strDBNTFUserName& vbNewLine& "Link: "&strForumURL& "topic.asp?topic_id="&Topic_ID & vbNewLine
%>
<!--#INCLUDE FILE="inc_mail.asp" -->
<%
strSql="INSERT INTO " & strTablePrefix & "PM (M_SUBJECT, M_MESSAGE, M_TO, M_FROM, M_SENT, M_MAIL, M_READ, M_OUTBOX) VALUES ('" & strSubject & "', '" & strMessage & "', " & t1 & ", " & MEMBERID & ", '" & DateToStr(strForumTimeAdjust) & "', " & "0,0,1)"
Response.Write strSql

"pop_open.asp"

Code:

				strSql="SELECT M.M_EMAIL, M.M_NAME, M.MEMBER_ID, T.T_AUTHOR, T.T_SUBJECT, T.TOPIC_ID FROM " & strMemberTablePrefix &_
"MEMBERS M INNER JOIN " & strTablePrefix & "TOPICS T ON (T.T_AUTHOR=M.MEMBER_ID AND T.TOPIC_ID="& Topic_ID &")"
set rsPost=my_Conn.Execute(strSql)
if not rsPost.EOF then
T1=rsPost("T_AUTHOR")
strT2=rsPost("T_SUBJECT")
strT3=rsPost("M_EMAIL")
strT4=rsPost("M_NAME")
end if
rsPost.Close
set rsPost=Nothing
strRecipients = chkString(strT3,"SQLString")
strRecipientsName = chkString(strT4,"SQLString")
strFrom = strSender
strFromName = strForumTitle
strsubject = strForumTitle & " Sticky Topic Change, "&strRecipientsName
strMessage = strMessage & "Your topic on "& strForumTitle &", titled: "& chr(34)& strT2 & chr(34) &" was made un-sticky by staff member: "& strDBNTFUserName& vbNewLine& "Link: "&strForumURL& "topic.asp?topic_id="&Topic_ID & vbNewLine
%>
<!--#INCLUDE FILE="inc_mail.asp" -->
<%
strSql="INSERT INTO " & strTablePrefix & "PM (M_SUBJECT, M_MESSAGE, M_TO, M_FROM, M_SENT, M_MAIL, M_READ, M_OUTBOX) VALUES ('" & strSubject & "', '" & strMessage & "', " & t1 & ", " & MEMBERID & ", '" & DateToStr(strForumTimeAdjust) & "', " & "0,0,1)"
Response.Write strSql
 
You Must enter a message