View Full Version : [RELEASE] v2.0 Email new thread notifications to subscribed users
chrispadfield
Wed 30th May '01, 1:39pm
A few have requested this, me especially so i made it.
What it does: Emails all those who have subscribed to a forum an email telling them about a new thread.
Extra queries: 1 upon every new thread. Extra time processing new threads as emails must be sent.
code changes, 1 in newthread.php and 2 new templates.
CODE CHANGE:
Add:
// This emails a new thread notification to those subscribed to the forum
if ($enableemail) {
// do emails
$useremails=$DB_site->query("SELECT user.*
FROM subscribeforum,user
WHERE subscribeforum.forumid='$forumid'
AND subscribeforum.userid=user.userid
AND user.userid<>'$bbuserinfo[userid]'
");
$toemail=$val;
$forumtitle = $foruminfo['title'];
$threadinfo['title'] = $subject;
$bbuserinfo['username']=unhtmlspecialchars($bbuserinfo['username']);
while ($touser=$DB_site->fetch_array($useremails)) {
$touser['username']=unhtmlspecialchars($touser['username']);
eval("\$emailmsg = \"".gettemplate("email_newthread",1,0)."\";");
eval("\$emailsubject = \"".gettemplate("email_newthreadsubject",1,0)."\";");
mail($touser[email],$emailsubject,$emailmsg,"From: \"$bbtitle Mailer\" <$webmasteremail>");
}
}
below the section //send email to moderators which ends with
}
}
}
}
add two templates:
i) email_newthread
Hello $touser[username],
$bbuserinfo[username] has just started a new thread: in $foruminfo[title]
This is a forum you have subscribed to at $bbtitle
The thread title is: $threadinfo[title]
This thread is located at:
$bburl/showthread.php?threadid=$threadid&goto=newpost
Yours,
$bbtitle team
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unsubscription information:
You are receiving these "new thread" notifications because
you are subscribed to the $foruminfo[title] forum.
To unsubscribe, please visit:
$bburl/usercp.php
and secondly
email_newthreadsubject
New Thread in $foruminfo[title]
any you are away :)
chrispadfield
Wed 30th May '01, 1:41pm
please note if you are testing this you need two users because it will NOT send an email to the person who started the thread. Either remove the last line of the query
AND user.userid<>'$bbuserinfo[userid]'
or use two different users.
chrispadfield
Wed 30th May '01, 2:21pm
oops, i left a line of debug code in.
if you have already installed this, remove this line
echo $touser;
the code change had been updated so if you have not installed it yet don't worry.
mrlister
Wed 30th May '01, 4:05pm
is it possible to make it so it does this every hour and every hour lists all the new threads within the thread.
chrispadfield
Wed 30th May '01, 6:08pm
i am not sure what you mean. Why would you want to send them every hour when they can be done instantly? by the sounds of it you want something more like the community bulletin thing made by Kier/tubedog
chrispadfield
Thu 31st May '01, 11:32am
sorry, another fix
you need to change $threadinfo[threadid] to $threadid
Joe
Sat 2nd Jun '01, 3:57am
The emails this sends out are from "nobody" at : nobody@snoturtle.serverhost.com
How do i change this to Bike Forums with my real email addy? :)
chrispadfield
Sat 2nd Jun '01, 9:58am
mail($touser[email],$emailsubject,$emailmsg,"From: \"$bbtitle Mailer\" <$webmasteremail>");
is the line that generates that and it is copied straight from the newreply.php code (which is where most of this code came from). I can't see how it can work in one place and not the other. sorry, not a clue.
Kevin Green
Mon 15th Oct '01, 12:23pm
Hi,
Very interested in this thread for user support purposes.
Will it email users subscribed to the Forum when there are additions to any of the existing threads
Will it email users if there are additions to the thread it has already notified them of?
I ask because I am interested in having users emailed if there is a new thread or if there are any additions to existing threads regardless of whether they have been previously notified but perhaps failed to check the Forum.
Many thanks
kevin
Pie'oh'pah
Mon 15th Oct '01, 2:48pm
Hi,
we have the same problem as Joe, when unregistered users are involved.
-Pie
Pie'oh'pah
Mon 15th Oct '01, 3:13pm
No i must stand corrected: It's happening even if users are registered...
-Pie
claytonp
Tue 16th Oct '01, 7:19am
Hello,
I thought I would attempt this code hack myself, however I cannot locate the following in newthread.php
below the section //send email to moderators which ends with
}
}
}
}
as indicated by chrispadfield. Am I doing something wrong.
I have already created the two templates.
Regards,
Clayton
express
Tue 16th Oct '01, 1:10pm
Below This
// send email to moderators
if ($enableemail) {
$moderators=$DB_site->query_first("SELECT CONCAT(newthreademail,' ',newpostemail) AS newthreademail FROM forum WHERE forumid='$forumid'");
$modtable=$DB_site->query("SELECT DISTINCT user.email FROM moderator,user WHERE moderator.userid=user.userid AND forumid IN ($foruminfo[parentlist]) AND (newthreademail=1 OR newpostemail=1)");
while($thismod=$DB_site->fetch_array($modtable)) {
$moderators['newthreademail'].=" $thismod[email]";
}
if ($moderators['newthreademail']!="") {
$mods=explode(" ",trim($moderators['newthreademail']));
while (list($key,$val)=each($mods)) {
if (trim($val)!="") {
$toemail=$val;
$forumtitle = $foruminfo['title'];
$threadinfo['title'] = $subject;
eval("\$emailmsg = \"".gettemplate("email_moderator",1,0)."\";");
eval("\$emailsubject = \"".gettemplate("emailsubject_moderator",1,0)."\";");
mail($toemail,$emailsubject,$emailmsg,"From: \"$bbtitle Mailer\" <$webmasteremail>");
}
}
}
}
Stasik
Tue 16th Oct '01, 3:42pm
to fix "nobody" problem replace"
eval("\$emailsubject = \"".gettemplate("email_newthreadsubject",1,0)."\";");
with:
eval("\$emailsubject = \"".gettemplate("emailsubject_moderator",1,0)."\";");
then you can delete teplate called "email_newthreadsubject"
chrispadfield
Tue 16th Oct '01, 4:51pm
not quite sure how that will help as that edits the subject of the email not where it is from. Unless you have a linebreak in the subject template, that might make it not work.
Stasik
Tue 16th Oct '01, 4:55pm
that was linebrake
express
Tue 16th Oct '01, 7:11pm
Tested and works great on my board and 2 others.
VirtueTech
Tue 16th Oct '01, 10:39pm
I can't believe I overlooked this.
WizyWyg
Tue 16th Oct '01, 11:09pm
Hi can someone repost the code in its entirety with all the corrections. looking through the coding and this site is somewhat driving me cross eyed
chrispadfield
Wed 17th Oct '01, 6:41am
Originally posted by WizyWyg
Hi can someone repost the code in its entirety with all the corrections. looking through the coding and this site is somewhat driving me cross eyed
my code in the 1st post still works for me :)
Kevin Green
Wed 17th Oct '01, 7:39am
As stated in the subject I would like to implement this hack but my 2.0.3 vBulletin newthread.php does not contain the line:-
// send email to moderators
here is the listing of my newthread.php (this is the original one I got with my vBulletin package as far as I am aware):-
{htmldoctype}
<html>
<head>
<title>$bbtitle - Post New Thread</title>
$headinclude
<!--<script type="text/javascript" language="javascript" src="$bburl/spellcheck/spch.js"></script>-->
<script language="javascript">
<!--
var postmaxchars = $postmaxchars;
function validate(theform) {
if (theform.message.value=="" || theform.subject.value=="") {
alert("Please complete the subject and message fields.");
return false; }
if (postmaxchars != 0) {
if (theform.message.value.length > $postmaxchars) {
alert("Your message is too long.\n\nReduce your message to $postmaxchars characters.\nIt is currently "+theform.message.value.length+" characters long.");
return false; }
else { return true; }
} else { return true; }
}
function checklength(theform) {
if (postmaxchars != 0) { message = "\nThe maximum permitted length is $postmaxchars characters."; }
else { message = ""; }
alert("Your message is "+theform.message.value.length+" characters long."+message);
}
//-->
</script>
</head>
<body>
$header
<!-- breadcrumb -->
<table cellpadding="2" cellspacing="0" border="0" width="{contenttablewidth}" {tableinvisibleextra} align="center">
<tr>
<td width="100%">$navbar</td>
</tr>
</table>
<!-- /breadcrumb -->
$postpreview
<br>
<form enctype="multipart/form-data" action="newthread.php" method="POST" name="vbform" onSubmit="return validate(this)">
<input type="hidden" name="s" value="$session[sessionhash]">
<input type="hidden" name="forumid" value="$forumid">
<input type="hidden" name="action" value="postthread">
<table cellpadding="{tableouterborderwidth}" cellspacing="0" border="0" bgcolor="{tablebordercolor}" {tableouterextra} width="{contenttablewidth}" align="center"><tr><td>
<table cellpadding="4" cellspacing="{tableinnerborderwidth}" border="0" {tableinnerextra} width="100%">
<tr>
<td bgcolor="{tableheadbgcolor}" colspan="2"><normalfont color="{tableheadtextcolor}" class="thtcolor"><b>Post New Thread</b></normalfont></td>
</tr>
$logincode
<tr bgcolor="{secondaltcolor}">
<td bgcolor="{secondaltcolor}"><normalfont><b>Subject:</b></normalfont></td>
<td bgcolor="{secondaltcolor}"><normalfont><input type="text" class="bginput" name="subject" value="$subject" size="40" maxlength="85" tabindex="1"></normalfont></td>
</tr>
$posticons
$vbcode_buttons
<tr>
<td bgcolor="{secondaltcolor}" valign="top" nowrap><normalfont><b>Message:</b></normalfont>
<p><smallfont>
See Forum Rules (below) for<br>
more information about what<br>
codes you are allowed to use<br>
in your posts.
</smallfont></p>
$vbcode_smilies</td>
<td bgcolor="{secondaltcolor}">
<table cellpadding="0" cellspacing="0" border="0">
<tr valign="top">
<td><textarea name="message" rows="20" cols="$textareacols" wrap="virtual" tabindex="2">$message</textarea><br>
<smallfont><a href="javascript:checklength(document.vbform);">[check message length]</a></smallfont></td>
</tr>
</table>
</td>
</tr>
<tr>
<td bgcolor="{firstaltcolor}" valign="top"><normalfont><b>Options:</b></normalfont></td>
<td bgcolor="{firstaltcolor}" valign="top"><smallfont>
<input type="checkbox" name="parseurl" value="yes" $parseurlchecked> <b>Automatically parse URLs:</b> automatically adds and around internet addresses.
<br><input type="checkbox" name="email" value="yes" $emailchecked> <b>Email Notification:</b> emails sent to you whenever someone replies. Only registered users are eligible.
$disablesmiliesoption
<br><input type="checkbox" name="signature" value="yes" $signaturechecked> <b>Show Signature:</b> include your profile signature. Only registered users may have signatures.
</smallfont></td>
</tr>
$attachmentoption
$postpolloption
</table>
</td></tr></table>
<br>
<table cellpadding="2" cellspacing="0" border="0" width="{contenttablewidth}" {tableinvisibleextra} align="center">
<tr>
<td align="center"><normalfont>
<input type="submit" class="bginput" name="submit" value="Submit New Thread" accesskey="s" tabindex="3">
<input type="submit" class="bginput" name="preview" value="Preview Post" accesskey="p" tabindex="4">
<!--<input type="button" class="bginput" value="Spell Check" onclick="var f=document.forms['vbform']; doSpell( '$spellchecklang', f.message, '$bburl/spellcheck/sproxy.php', true);" tabindex="5">-->
</normalfont></td>
</tr>
</table>
</form>
<table cellpadding="2" cellspacing="0" border="0" width="{contenttablewidth}" {tableinvisibleextra} align="center">
<tr>
<td><smallfont><b>Forum Rules:</b><br>$forumrules</smallfont></td>
</tr>
</table>
$footer
</body>
</html>
:confused:
Fred Manteghian
Wed 17th Oct '01, 11:48am
Originally posted by chrispadfield
mail($touser[email],$emailsubject,$emailmsg,"From: \"$bbtitle Mailer\" <$webmasteremail>");
is the line that generates that and it is copied straight from the newreply.php code (which is where most of this code came from). I can't see how it can work in one place and not the other. sorry, not a clue.
Hi Chris,
this is a wonderful bit of code, thanks so much.
I too have the problem where the template's use of the $bbtitle varialbe works fine, but when my email is received the "from" field is blank.
I'm new to PHP3 and scripts (groan...i'll let ya :D ), but I see identical code in Newreply.php3 and that seems to work fine?
Thanks again.
express
Wed 17th Oct '01, 12:27pm
Fred Manteghian
install Chris's code then make the change in Stasik post and then delete this template
email_newthreadsubject
express
Mon 22nd Oct '01, 5:29pm
Seen a couple of people asking about this, so I figured I would bump it up again.
chrispadfield
Mon 22nd Oct '01, 7:12pm
p.s. a word of warning with this hack, if you have very busy forums don't install it :) This is because if, say you had 500 people subscribed to a forum then ever new thread they are going to get an email, this will slow down newticket creation quite a lot.
Eventually, i am going to be working on a proper system that sends emails after a delayed period so your users do not notice it.
claytonp
Tue 23rd Oct '01, 5:44am
Hello Chris,
Many thanks for the advice concerning the large number of users on the forum, I finally got the hack to work.
Just to give you a little bit of background: We have set up a forum for Urgent problems - so rather than worry about my email distribution list, all I have to do now is post a message on the forum and those people who have registered will now receive the email - great.
However, if I then want to post a "followup" message to say that everything is OK, I would then POST REPLY which would contain the appropriate message, but this is NOT emailed to the registered users.
Is there a hack around this - is it the file newreply.php ?
Please help, because we need to get this up and running as soon as possible.
Your help is greatly appreciated.
chrispadfield
Tue 23rd Oct '01, 6:49am
you mean you want everyone to get ever reply or just your replies? it requries some hacking of reply.php but I don't think it exists of yet.
claytonp
Tue 23rd Oct '01, 8:01am
Hello Chris,
Many thanks for your reply. In this case I would want the following:
For ALL post replies in the forum, EVERYBODY (who has subscribed to that forum) would be notified via email.
As I said, this forum is for Urgent issues and we need to keep customers informed of every development.
Hope this helps.
Powered by vBulletin™ Version 4.0.0 Beta 2 Copyright © 2009 vBulletin Solutions, Inc. All rights