Nice hack. Just a few observations;
1) In the threadban_noreply template you are missing the word 'to' in the TB1.0-Inst file. It reads
You have been banned $tempban from replying this thread...
2) Reply bans don't work with Quick Reply (and many people have that hack installed). To fix this, in newreply.php, find
PHP Code:
$lastpost = $DB_site->query_first("SELECT * FROM post WHERE threadid = '$threadid' ORDER BY postid DESC");
if($lastpost[userid]!=$bbuserinfo[userid] || (time()-$lastpost[dateline])>3600 || ($attachmentid and !$foruminfo[moderateattach])) {
$lastpost = $DB_site->query_first("SELECT * FROM post WHERE threadid = '$threadid' ORDER BY postid DESC");
if($lastpost[userid]!=$bbuserinfo[userid] || (time()-$lastpost[dateline])>3600 || ($attachmentid and !$foruminfo[moderateattach])) {
and underneath, add
PHP Code:
//##########Thread ban##########
$bans=$DB_site->query("SELECT * FROM bans WHERE threadid='$threadid' AND active=1");
while ($ban=$DB_site->fetch_array($bans)) {
if ($bbuserinfo[userid] == $ban[userid]) {
$modds=$DB_site->query_first("SELECT username FROM user WHERE userid='$ban[mod]'");
$ban[reason] = stripslashes($ban[reason]);
if ($ban[reason] == "") {
$ban[reason] = "No reason given.";
}
if ($ban[banlength] != 0) {
$tempban = "temporarily";
$currenttime = mktime();
if ($currenttime > ($ban[banlength] + $ban[banstart])) {
$updexe=$DB_site->query("UPDATE bans SET active=0 WHERE userid=$bbuserinfo[userid] AND threadid='$threadid'");
$headercont = "location:./newreply.php?s=$session[sessionhash]&threadid=$threadid&action=newreply";
@header($headercont);
}
}
$reasonpre = "<br><smallfont><b>Reason for ban:</b> $ban[reason]</smallfont>";
eval("standarderror(\"".gettemplate("threadban_noreply")."\");");
exit;
}
}
. I merely pasted the code here from the hack.
3) It would be nice if you could prune archived bans and perhaps also back them up (put them under backup database options).
4) Users can still edit posts. If you want to have them not be able to edit posts insert the hack in editpost.php like so;
below
PHP Code:
}
}
}
}
}
$foruminfo=getforuminfo($threadinfo[forumid]);
insert
PHP Code:
$bans=$DB_site->query("SELECT * FROM bans WHERE threadid='$threadid' AND active=1");
while ($ban=$DB_site->fetch_array($bans)) {
if ($bbuserinfo[userid] == $ban[userid]) {
$modds=$DB_site->query_first("SELECT username FROM user WHERE userid='$ban[mod]'");
$ban[reason] = stripslashes($ban[reason]);
if ($ban[reason] == "") {
$ban[reason] = "No reason given.";
}
if ($ban[banlength] != 0) {
$tempban = "temporarily";
$currenttime = mktime();
if ($currenttime > ($ban[banlength] + $ban[banstart])) {
$updexe=$DB_site->query("UPDATE bans SET active=0 WHERE userid=$bbuserinfo[userid] AND threadid='$threadid'");
$headercont = "location:./newreply.php?s=$session[sessionhash]&threadid=$threadid&action=newreply";
@header($headercont);
}
}
$reasonpre = "<br><smallfont><b>Reason for ban:</b> $ban[reason]</smallfont>";
eval("standarderror(\"".gettemplate("threadban_noreply")."\");");
exit;
}
}
. Even with all that though, it's possible for users to post if they just posted before and their double post is merged (when you have that 'anti-double post' hack).
For the record I have this running on vB 2.2.9 just fine.