From c8186776a47e92ff22c2d956b5eda5cd927318c6 Mon Sep 17 00:00:00 2001 From: shish Date: Mon, 16 Jul 2007 07:25:53 +0000 Subject: [PATCH] Spoiler filter git-svn-id: file:///home/shish/svn/shimmie2/trunk@287 7f39781d-f577-437e-ae19-be835c7a54ca --- contrib/spoiler/main.php | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 contrib/spoiler/main.php 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 +?>