From c83ba877d3b8297b030e41278b1bbed2bfb86a5f Mon Sep 17 00:00:00 2001 From: shish Date: Sun, 9 Dec 2007 05:18:13 +0000 Subject: [PATCH] word banning extension git-svn-id: file:///home/shish/svn/shimmie2/trunk@653 7f39781d-f577-437e-ae19-be835c7a54ca --- contrib/ban_words/main.php | 57 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 contrib/ban_words/main.php diff --git a/contrib/ban_words/main.php b/contrib/ban_words/main.php new file mode 100644 index 00000000..9f6ef176 --- /dev/null +++ b/contrib/ban_words/main.php @@ -0,0 +1,57 @@ + + * Link: http://trac.shishnet.org/shimmie2/ + * License: GPLv2 + * Description: For stopping spam and other comment abuse + */ + +class BanWords extends Extension { + public function receive_event($event) { + if(is_a($event, 'InitExtEvent')) { + global $config; + $config->set_default_string('banned_words', " +viagra +porn + "); + } + + if(is_a($event, 'CommentPostingEvent')) { + global $config; + $banned = $config->get_string("banned_words"); + $comment = strtolower($event->comment); + + foreach(explode("\n", $banned) as $word) { + $word = trim(strtolower($word)); + if(strlen($word) == 0) { + // line is blank + continue; + } + else if($word[0] == '/') { + // lines that start with slash are regex + if(preg_match($word, $comment)) { + $event->veto("Comment contains banned terms"); + break; + } + } + else { + // other words are literal + if(strpos($comment, $word) !== false) { + $event->veto("Comment contains banned terms"); + break; + } + } + } + } + + if(is_a($event, 'SetupBuildingEvent')) { + $sb = new SetupBlock("Banned Phrases"); + $sb->add_label("One per line, lines that start with slashes are treated as regex"); + $sb->add_longtext_option("banned_words"); + $event->panel->add_block($sb); + } + } +} +add_event_listener(new BanWords(), 30); // before the comment is added +?>