Log in

View Full Version : Flagging Particular Posts


BettorsTalk.com
06-02-2005, 08:52 PM
Does anyone know if there is a hack for vbulletin that will flag certain messages that contain certain words for example "+++++++" and once it flags it the post doesn't get posted, but is sent to a moderator or administrator and a warning is sent to the user that posted the message?

If so can someone please direct me to this hack. And what kind of resources or should I say strain would this put on a server/database? In other words wouldn't the software have to filter every single post to through out a post by the definition above?

Wired1
06-02-2005, 10:11 PM
Don't think it would put much strain on a server, as vB already scans for words in posts via the Replacement Variable Manager (and the banned word list of course). Actually, it'd just be an if/then in the right place (if you don't mind hard coding it). It'd only get a bit more complicated if it was a dynamic option within the admin menu, but no more strain than any other switch.

Andreas
06-02-2005, 10:55 PM
Just some idea:

Create a new setting and call it flagwords.

In functions_newpost.php

FIND

// ### DUPE CHECK ###


ABOVE that ADD

if (!empty($vboptions['flagwords']))
{
$found = false;
$lcpost = strtolower($post['message']);
foreach (explode(' ', strtolower($vboptions['flagwords'])) as $flagword)
{
$found |= strpos($lcpost, $flagword);
}
if ($found) {
$post['visible'] = 0;
}
}


Then posts containing any of the words in flagwords will go into moderation.

BettorsTalk.com
06-03-2005, 02:44 AM
Just some idea:

Create a new setting and call it flagwords.

In functions_newpost.php

FIND

// ### DUPE CHECK ###


ABOVE that ADD

if (!empty($vboptions['flagwords']))
{
$found = false;
$lcpost = strtolower($post['message']);
foreach (explode(' ', strtolower($vboptions['flagwords'])) as $flagword)
{
$found |= strpos($lcpost, $flagword);
}
if ($found) {
$post['visible'] = 0;
}
}


Then posts containing any of the words in flagwords will go into moderation.


What do you mean the flagged words would go into moderation? And is there anyway to have it send an e-mail to the person that made the post with a comment on why the post didn't show up?

Andreas
06-03-2005, 02:57 AM
What do you mean the flagged words would go into moderation?

Let's say you've specified bad words as the words that should trigger this.
Now a user posts

This sentence contains bad words

Then this post will go into the moderation queue.


And is there anyway to have it send an e-mail to the person that made the post with a comment on why the post didn't show up?
Sure. Create a new phrase postflagged with appropriate text in phrasegroups Email Subject Text and Email Body Text.
Then place the following code after $post['visible'] = 0;


eval(fetch_email_phrases('postflagged', $bbuserinfo['languageid']));
vbmail($bbuserinfo['email'], $subject, $message, true);

BettorsTalk.com
06-03-2005, 04:38 PM
KirbyDE,

Now would this work with the Replacement Variable Manager hack that I had installed ?

In other words I want this to only work with certain banned words that I have in the replacement variable manager hack as I have other words in the Vbulletin Options Censorship Options that I don't need this associated with.

Thanks

Andreas
06-03-2005, 04:47 PM
Create a new setting and call it flagwords.

This means that this modifications has it's own wordlist, which is totally independant from Replacement Variables and Censored Words.

BettorsTalk.com
06-03-2005, 06:36 PM
KirbyDE,

What you told me to do then will work with say more than 1 word?

Example: Northcoast Trivia
Example: Northcoast Trivia Tests

Thanks!

Andreas
06-03-2005, 06:38 PM
Sure, just separate them by space

Willard Reece
06-13-2005, 09:57 PM
Just some idea:

Create a new setting and call it flagwords.

In functions_newpost.php

FIND

// ### DUPE CHECK ###


ABOVE that ADD

if (!empty($vboptions['flagwords']))
{
$found = false;
$lcpost = strtolower($post['message']);
foreach (explode(' ', strtolower($vboptions['flagwords'])) as $flagword)
{
$found |= strpos($lcpost, $flagword);
}
if ($found) {
$post['visible'] = 0;
}
}


Then posts containing any of the words in flagwords will go into moderation.


Create a new setting and call it flagwords. where?
explain more please

Andreas
06-14-2005, 09:59 PM
Create a new setting and call it flagwords. where?
explain more please
In the vBulletin Options - where exactly is up to you to decide :)
I'd most likely place it in Censorship Options.

Willard Reece
06-14-2005, 10:27 PM
In the vBulletin Options - where exactly is up to you to decide :)
I'd most likely place it in Censorship Options.

your saying add the name flagwords to the Censorship Options without the {} and save it and edit functions_newpost.php
and that should do it?
or please show an example of what your saying.....

whats throwing me off is you said create a new setting

Andreas
06-14-2005, 10:39 PM
Yes, create a new Setting:

Open the Setting/Option Group where you want it to appear and click Add Setting.
See screenshot.

Please note that debug mode must be turned on to add new settings.

Willard Reece
06-14-2005, 10:53 PM
where do I turn on debug.... thought I knew but guess not

Andreas
06-14-2005, 10:58 PM
$debug = 1;


in config.php

Willard Reece
06-14-2005, 11:02 PM
The bold below causes a file error when adding a thread

Warning: strpos(): Empty delimiter. in /includes/functions_newpost.php on line 313



if (!empty($vboptions['flagwords']))
{
$found = false;
$lcpost = strtolower($post['message']);
foreach (explode(' ', strtolower($vboptions['flagwords'])) as $flagword)
{
$found |= strpos ($lcpost, $flagword); [U] }
if ($found) {
$post['visible'] = 0;
}
}

Let's say you've specified bad words as the words that should trigger this.
Now a user posts

Then this post will go into the moderation queue.


Sure. Create a new phrase postflagged with appropriate text in phrasegroups Email Subject Text and Email Body Text.
Then place the following code after $post['visible'] = 0;


eval(fetch_email_phrases('postflagged', $bbuserinfo['languageid']));
vbmail($bbuserinfo['email'], $subject, $message, true);



can you also explain this better?

Byron
06-18-2005, 04:08 PM
I am looking for a script to assist moderating.

It will be good if there is a script that can check all new posts and detect words from a list.

If any word from the list is detected, it will send an email to an email address.

This way we can be notified immediately when any sensitive words are in a new post.

nmorris666
06-21-2005, 08:49 PM
ok, I am trying this as well. I have the code in the functions_newpost.php, and the flagwords setup. I attached the setup. Any ideas?