From 96ae672063615a5da75a6d0bfa5dd35960a873d8 Mon Sep 17 00:00:00 2001 From: shish <shish@7f39781d-f577-437e-ae19-be835c7a54ca> Date: Sun, 8 Jul 2007 20:14:34 +0000 Subject: [PATCH] word filter extension git-svn-id: file:///home/shish/svn/shimmie2/trunk@244 7f39781d-f577-437e-ae19-be835c7a54ca --- contrib/word_filter/main.php | 43 ++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 contrib/word_filter/main.php diff --git a/contrib/word_filter/main.php b/contrib/word_filter/main.php new file mode 100644 index 00000000..f8918cda --- /dev/null +++ b/contrib/word_filter/main.php @@ -0,0 +1,43 @@ +<?php + +class WordFilter extends Extension { + public function receive_event($event) { + if(is_a($event, 'TextFormattingEvent')) { + $event->formatted = $this->filter($event->formatted); + $event->stripped = $this->filter($event->stripped); + } + if(is_a($event, 'SetupBuildingEvent')) { + $sb = new SetupBlock("Word Filter"); + $sb->add_longtext_option("word_filter"); + $sb->add_label("<br>(each line should be search term and replace term, separated by a comma)"); + $event->panel->add_block($sb); + } + if(is_a($event, 'ConfigSaveEvent')) { + $event->config->set_string_from_post("word_filter"); + } + } + + private function filter($text) { + $map = $this->get_map(); + foreach($map as $search => $replace) { + $text = str_replace($search, $replace, $text); + } + return $text; + } + + private function get_map() { + global $config; + $raw = $config->get_string("word_filter"); + $lines = explode("\n", $raw); + $map = array(); + foreach($lines as $line) { + $parts = split(",", $line); + if(count($parts) == 2) { + $map[$parts[0]] = $parts[1]; + } + } + return $map; + } +} +add_event_listener(new WordFilter()); +?>