Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 2.x > vBulletin 2.x Beta Releases

Reply
 
Thread Tools
Details »»

Version: 1.00, by intellected intellected is offline
Developer Last Online: Apr 2002 Show Printable Version Email this Page

Version: 2.2.x Rating:
Released: 02-21-2002 Last Update: Never Installs: 9
Is in Beta Stage  
No support by the author.

UPDATED!!! AGAIN!

This is a more effective solution than the standard "ban", and is meant to be used for very annoying troublemakers that keeps re-registering once banned. Anyway - once a user is placed under the "Hellban", the following happens:

1. Every 3:d time the user tries to load a page, he is greeted with a fake "500 Internal Server Error" message.

2. Nobody but moderators and the user himself can see his posts. He is, essentially, under a site-wide ignore.

This may not be a 100% fail-safe solution, but a lot of the morons will hopefully get tired and go away.

Here is how it's done:

1. Run the following query on your database:

INSERT INTO usergroup VALUES("666","Hellban","","0","1","1","1","1","0", "1","0","0","0","1","1","1","1","0","0","1","1","1 ","0","0","1","0","0","0","0","0","0","0","0","1") ;
ALTER TABLE post ADD hellban INT UNSIGNED;
ALTER TABLE thread ADD hellban INT UNSIGNED;

2. Add this at the bottom of you global.php
PHP Code:
if ($bbuserinfo[usergroupid] == 666) {
  
  
$randnum mt_rand(1,3);
  if (
$randnum == 1) {
    
header("HTTP/1.0 500 Internal Server Error");
    exit;
  }   


3. Find this in newreply.php:
PHP Code:
$DB_site->query("INSERT INTO post (postid,threadid,title,username,userid,dateline,attachmentid,pagetext,allowsmilie,showsignature,ipaddress,iconid,visible) VALUES (NULL,'$threadid','".addslashes(htmlspecialchars($title))."','".addslashes(htmlspecialchars($postusername))."','$bbuserinfo[userid]','".time()."','$attachmentid','".addslashes($message)."','$allowsmilie','$signature','$ipaddress','$iconid','$visible')"); 
REPLACE it with this:

PHP Code:
if ($bbuserinfo[usergroup] == 666) {
  
$DB_site->query("INSERT INTO post (postid,threadid,title,username,userid,dateline,attachmentid,pagetext,allowsmilie,showsignature,ipaddress,iconid,visible,hellban) VALUES (NULL,'$threadid','".addslashes(htmlspecialchars($title))."','".addslashes(htmlspecialchars($postusername))."','$bbuserinfo[userid]','".time()."','$attachmentid','".addslashes($message)."','$allowsmilie','$signature','$ipaddress','$iconid','$visible','$bbuserinfo[userid]')");
} else {
  
$DB_site->query("INSERT INTO post (postid,threadid,title,username,userid,dateline,attachmentid,pagetext,allowsmilie,showsignature,ipaddress,iconid,visible) VALUES (NULL,'$threadid','".addslashes(htmlspecialchars($title))."','".addslashes(htmlspecialchars($postusername))."','$bbuserinfo[userid]','".time()."','$attachmentid','".addslashes($message)."','$allowsmilie','$signature','$ipaddress','$iconid','$visible')");

4. find this in newthread.php

PHP Code:
$DB_site->query("INSERT INTO thread (threadid,title,lastpost,forumid,open,replycount,postusername,postuserid,lastposter,dateline,iconid,visible,attach) VALUES (NULL,'".addslashes(htmlspecialchars($subject))."','".time()."','$forumid','1','0','".addslashes($postusername)."','$bbuserinfo[userid]','".addslashes($postusername)."','".time()."','$iconid','$visible','$attachcount')"); 
PHP Code:
if ($bbuserinfo[usergroup] == 666) {
  
$DB_site->query("INSERT INTO thread (threadid,title,lastpost,forumid,open,replycount,postusername,postuserid,lastposter,dateline,iconid,visible,attach,hellban) VALUES (NULL,'".addslashes(htmlspecialchars($subject))."','".time()."','$forumid','1','0','".addslashes($postusername)."','$bbuserinfo[userid]','".addslashes($postusername)."','".time()."','$iconid','$visible','$attachcount','$bbuserinfo[userid]')");
} else {
  
$DB_site->query("INSERT INTO thread (threadid,title,lastpost,forumid,open,replycount,postusername,postuserid,lastposter,dateline,iconid,visible,attach) VALUES (NULL,'".addslashes(htmlspecialchars($subject))."','".time()."','$forumid','1','0','".addslashes($postusername)."','$bbuserinfo[userid]','".addslashes($postusername)."','".time()."','$iconid','$visible','$attachcount')"); 

in that file, also find this:

PHP Code:
$DB_site->query("INSERT INTO post (postid,threadid,title,username,userid,dateline,attachmentid,pagetext,allowsmilie,showsignature,ipaddress,iconid,visible) VALUES (NULL,'$threadid','".addslashes(htmlspecialchars($subject))."','".addslashes($postusername)."','$bbuserinfo[userid]','".time()."','$attachmentid','".addslashes($message)."','$allowsmilie','$signature','$ipaddress','$iconid','1')"); 
PHP Code:
if ($bbuserinfo[usergroup] == 666) {
  
$DB_site->query("INSERT INTO post (postid,threadid,title,username,userid,dateline,attachmentid,pagetext,allowsmilie,showsignature,ipaddress,iconid,visible,hellban) VALUES (NULL,'$threadid','".addslashes(htmlspecialchars($subject))."','".addslashes($postusername)."','$bbuserinfo[userid]','".time()."','$attachmentid','".addslashes($message)."','$allowsmilie','$signature','$ipaddress','$iconid','1','$bbuserinfo[userid]')");
} else {
  
$DB_site->query("INSERT INTO post (postid,threadid,title,username,userid,dateline,attachmentid,pagetext,allowsmilie,showsignature,ipaddress,iconid,visible) VALUES (NULL,'$threadid','".addslashes(htmlspecialchars($subject))."','".addslashes($postusername)."','$bbuserinfo[userid]','".time()."','$attachmentid','".addslashes($message)."','$allowsmilie','$signature','$ipaddress','$iconid','1')");

After that, find this:

PHP Code:
if ($visible==1) {
        
$DB_site->query("UPDATE forum SET replycount=replycount+1,threadcount=threadcount+1,lastpost='".time()."',lastposter='".addslashes($postusername)."' WHERE forumid IN ($foruminfo[parentlist])");

and replace with this:

PHP Code:
if ($visible==&& $bbuserinfo[usergroup] != 666) {
  
$DB_site->query("UPDATE forum SET replycount=replycount+1,threadcount=threadcount+1,lastpost='".time()."',lastposter='".addslashes($postusername)."' WHERE forumid IN ($foruminfo[parentlist])");

I showthread.php, find this:
PHP Code:
  $getpostids=$DB_site->query(
    SELECT post.postid FROM post
    WHERE post.threadid='
$threadid' AND post.visible=1 
    ORDER BY dateline 
$postorder LIMIT ".($limitlower-1).",$perpage 
  "
); 
Replace with this:

PHP Code:
if ($bbuserinfo[usergroupid] == 666 || ismoderator($forumid)) {
  
  
$getpostids=$DB_site->query(
    SELECT post.postid FROM post
    WHERE post.threadid='
$threadid' AND post.visible=1 AND post.hellban = '$bbuserinfo[userid]'
    ORDER BY dateline 
$postorder LIMIT ".($limitlower-1).",$perpage 
  "
);  
  
} else {

$getpostids=$DB_site->query(
    SELECT post.postid FROM post
    WHERE post.threadid='
$threadid' AND post.visible=1 AND post.hellban = NULL
    ORDER BY dateline 
$postorder LIMIT ".($limitlower-1).",$perpage 
"
);


in forumdisplay.php, find this:

PHP Code:
    $getthreadids=$DB_site->query("
    SELECT
    "
.iif($sortfield=="voteavg",$votequery,"")."
        thread.threadid
    FROM thread
    WHERE thread.forumid = 
$foruminfo[forumid]
        AND thread.sticky=0
        AND thread.visible=1
    
$datecut
    
$limitothers
      ORDER BY sticky DESC, 
$sortfield $sqlsortorder
      LIMIT "
.($sel_limitlower-1).",$perpage"); 
Replace that with this:

PHP Code:
if ($bbuserinfo[usergroup] == 666) {
  
$getthreadids=$DB_site->query("
    SELECT
    "
.iif($sortfield=="voteavg",$votequery,"")."
        thread.threadid
    FROM thread
    WHERE thread.forumid = 
$foruminfo[forumid]
        AND thread.sticky=0
        AND thread.visible=1
        AND thread.hellban = NULL
        AND thread.hellban = '
$bbuserinfo[userid]'
    
$datecut
    
$limitothers
      ORDER BY sticky DESC, 
$sortfield $sqlsortorder
      LIMIT "
.($sel_limitlower-1).",$perpage");
      
} else {
  
    
$getthreadids=$DB_site->query("
    SELECT
    "
.iif($sortfield=="voteavg",$votequery,"")."
        thread.threadid
    FROM thread
    WHERE thread.forumid = 
$foruminfo[forumid]
        AND thread.sticky=0
        AND thread.visible=1
    
$datecut
    
$limitothers
      ORDER BY sticky DESC, 
$sortfield $sqlsortorder
      LIMIT "
.($sel_limitlower-1).",$perpage");
  

Now, whenever you want to get rid of a user, simply set him or her to usergroup Hellban.

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #22  
Old 03-02-2002, 11:58 AM
Overgrow's Avatar
Overgrow Overgrow is offline
 
Join Date: Nov 2001
Posts: 320
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I did a quick & dirty hack that has much of the same effect but without the query JOIN -- (removes a person's posts but lets them see 'em normally so they don't know what happened)...

https://vborg.vbsupport.ru/showthrea...threadid=35589
Reply With Quote
  #23  
Old 03-02-2002, 03:59 PM
Freddie Bingham's Avatar
Freddie Bingham Freddie Bingham is offline
 
Join Date: Oct 2001
Posts: 506
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

JOINS are only a problem if the field(s) you are joining are not-indexed.
Reply With Quote
  #24  
Old 03-02-2002, 04:08 PM
Overgrow's Avatar
Overgrow Overgrow is offline
 
Join Date: Nov 2001
Posts: 320
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Freddie, you so smart... and it appears usergroupid is already indexed. So his original showthread join with the user would not have been a problem eh? Sorry intellected! I see you already changed it to use a new field, post.hellban. If the original way really didn't add much overhead, it was probably the more elegant solution rather than adding a new field to post.
Reply With Quote
  #25  
Old 03-02-2002, 10:30 PM
Freddie Bingham's Avatar
Freddie Bingham Freddie Bingham is offline
 
Join Date: Oct 2001
Posts: 506
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I don't know, I didn't look at his code so I have no comment on it's effectiveness at utilizing the database.
Reply With Quote
  #26  
Old 04-19-2002, 10:42 AM
Jawelin Jawelin is offline
 
Join Date: Nov 2001
Posts: 557
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I think the usergroup is already read at showpost / newreply / newthread time.
So there is that info at postbit level, and we can use it without adding the hellban field to post & thread tables.

What do you think about ?
Thnx
Reply With Quote
  #27  
Old 05-06-2002, 10:28 AM
FFMania FFMania is offline
 
Join Date: Mar 2002
Posts: 46
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Same thing.....same error....can't get the query to work....help plz?
Reply With Quote
  #28  
Old 05-13-2002, 02:10 PM
GenSec GenSec is offline
 
Join Date: Oct 2001
Posts: 156
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I like hellban idea, but there is another way.
If you created 666 usergroup you find in admin/ functions.php
PHP Code:
    if (!$ignore[$post[userid]]) {
        eval(
"\$retval = \"".gettemplate("postbit")."\";");
    } else {
        eval(
"\$retval = \"".gettemplate("postbit_ignore")."\";");
    } 
add below
PHP Code:
    if ($post[usergroupid]==666 AND $bbuserinfo[usergroupid]!=666) {
           eval(
"\$retval = \"".gettemplate("postbit_ignore")."\";");
    } 
and all your hellbanned user are on common ignore list.

Or change postbit_ignore template for more suited.
Reply With Quote
  #29  
Old 05-31-2002, 03:20 AM
Brad Brad is offline
 
Join Date: Nov 2001
Posts: 4,765
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Database error in vBulletin Control Panel 2.2.5:

Invalid SQL: INSERT INTO usergroup VALUES("666","Ultimate ban","","0","1","1","1","1","0","1","0","0","0","1 ","1","1","1","0","0","1","1","1","0","0","1","0", "0","0","0","0","0","0","0","1");

mysql error: You have an error in your SQL syntax near ';
' at line 1

mysql error number: 1064

Date: Friday 31st of May 2002 05:20:26 AM
Script: http://www.kousetsu.net/forums/forums/admin/query.php
Referer: http://www.kousetsu.net/forums/admin/query.php?s=<?php echo 6ed374efbed9b32d097264f97d3a4586; ?>
Reply With Quote
  #30  
Old 05-31-2002, 02:43 PM
Brad Brad is offline
 
Join Date: Nov 2001
Posts: 4,765
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

n/m, got it to work in phpmyadmin
Reply With Quote
  #31  
Old 06-01-2002, 07:00 AM
Brad Brad is offline
 
Join Date: Nov 2001
Posts: 4,765
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

i found a better method if you got admins out there that like members you ban. simalar to the one above but im using it and it works
in functions.php


find
PHP Code:
if (!$ignore[$post[userid]]) {
        eval(
"\$retval = \"".gettemplate("postbit")."\";");
    } else {
        eval(
"\$retval = \"".gettemplate("postbit_ignore")."\";");
    } 
under add
PHP Code:
if ($post[userid]==*users id here* AND $bbuserinfo[userid]!=*users ID here*) {
           eval(
"\$retval = \"".gettemplate("postbit_ignore")."\";");
      } 
replace *user id here* with their user id

then deleate everything from postbit_ignore
Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 05:20 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05245 seconds
  • Memory Usage 2,392KB
  • Queries Executed 25 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (17)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (3)pagenav_pagelink
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • 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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete