View Single Post
  #17  
Old 03-22-2003, 05:06 PM
Zelda-King's Avatar
Zelda-King Zelda-King is offline
 
Join Date: Nov 2002
Location: London, England
Posts: 674
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01235 seconds
  • Memory Usage 1,821KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (4)bbcode_php
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete