word filter extension
git-svn-id: file:///home/shish/svn/shimmie2/trunk@244 7f39781d-f577-437e-ae19-be835c7a54ca
This commit is contained in:
parent
ef412f6efd
commit
96ae672063
1 changed files with 43 additions and 0 deletions
43
contrib/word_filter/main.php
Normal file
43
contrib/word_filter/main.php
Normal file
|
@ -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());
|
||||||
|
?>
|
Reference in a new issue