diff --git a/contrib/spoiler/main.php b/contrib/spoiler/main.php new file mode 100644 index 00000000..9fb8c31d --- /dev/null +++ b/contrib/spoiler/main.php @@ -0,0 +1,37 @@ + + * Link: http://trac.shishnet.org/shimmie2/ + * License: GPLv2 + * Description: Adds a [spoiler] tag to rot13 text inside it + */ +class Spoiler extends Extension { + public function receive_event($event) { + if(is_a($event, 'TextFormattingEvent')) { + $event->formatted = $this->filter($event->formatted); + $event->stripped = $this->filter($event->stripped); + } + } + + private function filter($text) { + $l1 = strlen("[spoiler]"); + $l2 = strlen("[/spoiler]"); + while(true) { + $start = strpos($text, "[spoiler]"); + if($start === false) break; + + $end = strpos($text, "[/spoiler]"); + if($end === false) break; + + $beginning = substr($text, 0, $start); + $middle = str_rot13(substr($text, $start+$l1, ($end-$start-$l1))); + $ending = substr($text, $end + $l2, (strlen($text)-$end+$l2)); + + $text = $beginning . $middle . $ending; + } + return $text; + } +} +add_event_listener(new Spoiler(), 45); // before bbcode, so before
s are inserted +?>