Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 12-14-2010, 12:42 PM
Scandal's Avatar
Scandal Scandal is offline
 
Join Date: Dec 2005
Location: Athens / Greece
Posts: 409
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default How to change this php function

Well, in functions.php, there is this function for the censorship system:
PHP Code:
// #############################################################################
/**
* Replaces any instances of words censored in $vbulletin->options['censorwords'] with $vbulletin->options['censorchar']
*
* @param    string    Text to be censored
*
* @return    string
*/
function fetch_censored_text($text)
{
    global 
$vbulletin;
    static 
$censorwords;

    if (!
$text)
    {
        
// return $text rather than nothing, since this could be '' or 0
        
return $text;
    }

    if (
$vbulletin->options['enablecensor'] AND !empty($vbulletin->options['censorwords']))
    {
        if (empty(
$censorwords))
        {
            
$vbulletin->options['censorwords'] = preg_quote($vbulletin->options['censorwords'], '#');
            
$censorwords preg_split('#[ \r\n\t]+#'$vbulletin->options['censorwords'], -1PREG_SPLIT_NO_EMPTY);
        }

        foreach (
$censorwords AS $censorword)
        {
            if (
substr($censorword02) == '\\{')
            {
                if (
substr($censorword, -22) == '\\}')
                {
                    
// prevents errors from the replace if the { and } are mismatched
                    
$censorword substr($censorword2, -2);
                }

                
// ASCII character search 0-47, 58-64, 91-96, 123-127
                
$nonword_chars '\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f';

                
// words are delimited by ASCII characters outside of A-Z, a-z and 0-9
                
$text preg_replace(
                    
'#(?<=[' $nonword_chars ']|^)' $censorword '(?=[' $nonword_chars ']|$)#si',
                    
str_repeat($vbulletin->options['censorchar'], vbstrlen($censorword)),
                    
$text
                
);
            }
            else
            {
                
$text preg_replace("#$censorword#si"str_repeat($vbulletin->options['censorchar'], vbstrlen($censorword)), $text);
            }
        }
    }

    
// strip any admin-specified blank ascii chars
    
$text strip_blank_ascii($text$vbulletin->options['censorchar']);

    return 
$text;

When a message has censored words, this function replaces each character of the word with the censorchar.
I want to change this function to return the $text WITH the censored words, BUT beside each censored word, I want to there is a " " (space).
For example, if I write the censored word "example" I want to return " example".

I know it is droll, but I need it

Thanks in advance and sorry for my bad english.
Reply With Quote
  #2  
Old 12-14-2010, 07:51 PM
Digital Jedi's Avatar
Digital Jedi Digital Jedi is offline
 
Join Date: Oct 2006
Location: PopCulturalReferenceLand
Posts: 5,171
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This might not be what you were going for, but why not just disable the censor and use Replacement Variables instead? Unless you were needing to recode for some reason.
Reply With Quote
  #3  
Old 12-15-2010, 08:46 AM
Scandal's Avatar
Scandal Scandal is offline
 
Join Date: Dec 2005
Location: Athens / Greece
Posts: 409
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Digital Jedi View Post
This might not be what you were going for, but why not just disable the censor and use Replacement Variables instead? Unless you were needing to recode for some reason.
I need to use the censorship system.
I had achieved it before one year ago but I forget the changes.

It doen't need to recode all the function. Only the part of character replacement. I remember that it was a simple change to the function.

Well,
I have add the following code to functions_newpost.php
PHP Code:
  // Censorship Warning
  
$iwarncens fetch_censored_text($post['message']);
            if (
$iwarncens != $post['message'])
            {
            
$dataman->error('iwarn');
            } 
...and when the $post['message'] it is not the same with primary text, this code appears an error message.
The censorship system can change the $post['message']. If the cens system doesn't change the $post['message'] the error doesn't appear.
So, I want to do an as far as possible simple change to the text.. not the replacement of all characters.

The code which I have add, works normally when the cens system change the text...

Thanks and sorry for my bad english..
Reply With Quote
  #4  
Old 12-15-2010, 12:02 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You maybe could change:

PHP Code:
                $text preg_replace("#$censorword#si"str_repeat($vbulletin->options['censorchar'], vbstrlen($censorword)), $text); 

to

PHP Code:
                $text preg_replace("#$censorword#si"$censorword"$text); 

There is also another preg_replace() line above that where you could make a similar change although I'm not sure if that would do what you want.
Reply With Quote
  #5  
Old 12-15-2010, 12:30 PM
Scandal's Avatar
Scandal Scandal is offline
 
Join Date: Dec 2005
Location: Athens / Greece
Posts: 409
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks kh99, it works fine!
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 01:43 PM.


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.08426 seconds
  • Memory Usage 2,232KB
  • Queries Executed 13 (?)
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
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (4)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (5)post_thanks_box
  • (5)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (5)post_thanks_postbit_info
  • (5)postbit
  • (5)postbit_onlinestatus
  • (5)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_postinfo_query
  • fetch_postinfo
  • 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
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete