Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.7 > vBulletin 3.7 Add-ons
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
User Optional Word Censorship Details »»
User Optional Word Censorship
Version: 1.00, by MrEyes MrEyes is offline
Developer Last Online: May 2017 Show Printable Version Email this Page

Category: End-User Options - Version: 3.7.0 RC 3 Rating:
Released: 04-17-2008 Last Update: Never Installs: 22
Re-useable Code Code Changes Translations  
No support by the author.

User Optional Word Censorship

What this hack does

The default censorship options in VB are all or nothing, in other words it is either enabled or disabled for all users regardless of their personal preference. Without any additional SQL calls and an extremely low runtime impact (on top of the resource usage required when using the censor in the first place), this hack gives the user the option to view your forum with the AdminCP configured censor switched on if you have it enabled.

How to install

In summary the install requires:
  • Around 2 minutes.
  • 1 file change.
  • The addition of a custom user profile field.
  • A basic understanding of PHP.

So this is what you need to do:

First create a custom user profile field:
  1. Log in to your AdminCP.
  2. Goto "User Profile Fields -> Add New User Profile Field"
  3. In "Profile Field Type" select "Multiple-Selection Checkbox" and then click "Continue"
  4. In "Title" enter "Enable word censor" *
  5. In "Description" enter "If you choose to enabled this option all words on the current censor list will be replaced with * characters" *
  6. In "Options" enter "Enable censor" *
  7. Set "Private Field" to "Yes"
  8. Set "Field Searchable on Members List" to "No"
  9. Set "Show on Members List" to "No"
  10. Set "Display Page -> Which page displays this option?" to "Options: Other"
  11. Click "Save", this will then take you to a page that summarises all current profile fields.
  12. On this profile fields list find the one you just added and take note of the "Name" value. Typically this will be somthing like "Field5".

* These options set the text that is displayed to the user, feel free to customise/change these to whatever you want.

All the AdminCP work is done now, so if you want logout. The next step is to make a small file edit, to check this field value when VB calls the censor code.
  1. Take a backup of "includes\functions.php" just incase something goes horribly wrong.
  2. Open the "includes\functions.php" file in your favourite text editor.
  3. Find the following lines (typically these are around line 545):

    Code:
    if ($vbulletin->options['enablecensor'] AND !empty($vbulletin->options['censorwords']))
    {
  4. Immediately after the lines above (i.e. after the {) add the following code:

    Code:
    if ((isset($vbulletin->userinfo['field5'])) && ($vbulletin->userinfo['field5'] != 1))
    {
    	return $text;
    }
    You should end up with something that looks like this:

    Code:
    if ($vbulletin->options['enablecensor'] AND !empty($vbulletin->options['censorwords']))
    {
    	if ((isset($vbulletin->userinfo['field5'])) && ($vbulletin->userinfo['field5'] != 1))
    	{
    		return $text;
    	}
    	
    	if (empty($censorwords))
  5. Now this is probably the most complicated part of this simple install. Remember when you setup the profile field and you took a note of the "Name" value? Well in the text you just pasted into the function.php file you need to change this:

    Code:
    if ((isset($vbulletin->userinfo['field5'])) && ($vbulletin->userinfo['field5'] != 1))
    To match the name of the field, so for example if your field name is "Field12", it would look like this:

    Code:
    if ((isset($vbulletin->userinfo['field12'])) && ($vbulletin->userinfo['field12'] != 1))
  6. Save the file, and upload to your server.

The last, and most critically important step is:
  1. Click Install
All done, sit back and relax

Footnotes

By default the censor will be off for all users, so they will have to change their profile in order to enabled this. I could not find a way to create a profile checkbox field that is checked by default, and describing how to run SQL scripts to set the field value is more complicated than I wanted to go with this simple hack. So if anybody knows how to do this post the details and I will update the article. In the meantime a simpler option (rather than playing with the DB) is to use "Yes" / "No" radio buttons and set the default value to Yes (or no if you prefer). If you do this you will also have to subtly change the code above from:

Code:
if ((isset($vbulletin->userinfo['field5'])) && ($vbulletin->userinfo['field5'] != "Yes"))
to:

Code:
if ((isset($vbulletin->userinfo['field5'])) && ($vbulletin->userinfo['field5'] != "Yes"))

Show Your Support

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

Comments
  #22  
Old 01-02-2009, 06:10 AM
Brittany Brittany is offline
 
Join Date: Jul 2008
Posts: 41
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

nvm i got it working that you sooooo much.
Reply With Quote
  #23  
Old 01-02-2009, 06:42 AM
Brittany Brittany is offline
 
Join Date: Jul 2008
Posts: 41
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

ok now when I go to enable it, it works fine, when I go to disable it all the words remain with stars
Reply With Quote
  #24  
Old 01-02-2009, 11:43 AM
Brittany Brittany is offline
 
Join Date: Jul 2008
Posts: 41
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It works just fine now.
Reply With Quote
  #25  
Old 01-02-2009, 03:13 PM
Phaedrus Phaedrus is offline
 
Join Date: Jul 2006
Location: Colorado
Posts: 617
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Any user who has the option selected will have their words turned into asterisk if they use one of the words they chose to have edited, that will go into the database exactly that way and all users will see it that way.

However those who do not have it on, their words will remain and everybody will see them except those tender souls with the option turned on.
Reply With Quote
  #26  
Old 01-04-2009, 08:36 PM
beansbaxter's Avatar
beansbaxter beansbaxter is offline
 
Join Date: May 2005
Location: Seattle
Posts: 96
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

For a super large big forum with a ton of traffic, how much server load will this add?
Reply With Quote
  #27  
Old 01-07-2009, 12:12 AM
Phaedrus Phaedrus is offline
 
Join Date: Jul 2006
Location: Colorado
Posts: 617
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by beansbaxter View Post
For a super large big forum with a ton of traffic, how much server load will this add?
It would add one query per page.
Reply With Quote
  #28  
Old 01-10-2009, 02:19 AM
asailorsanchor asailorsanchor is offline
 
Join Date: Jan 2009
Posts: 5
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

When I unclick enable it still censors my words.. anyone know how i can fix this?
Reply With Quote
  #29  
Old 01-12-2009, 04:04 AM
asailorsanchor asailorsanchor is offline
 
Join Date: Jan 2009
Posts: 5
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

anyone?
Reply With Quote
  #30  
Old 01-15-2009, 02:38 AM
asailorsanchor asailorsanchor is offline
 
Join Date: Jan 2009
Posts: 5
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

one more try, anyone know how to make this work?
Reply With Quote
  #31  
Old 01-18-2009, 04:15 AM
asailorsanchor asailorsanchor is offline
 
Join Date: Jan 2009
Posts: 5
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

anyone know how I click install?
Reply With Quote
Reply


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 11:24 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04281 seconds
  • Memory Usage 2,307KB
  • 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
  • (7)bbcode_code
  • (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