diff --git a/contrib/spoiler/main.php b/contrib/spoiler/main.php deleted file mode 100644 index 820ce0b7..00000000 --- a/contrib/spoiler/main.php +++ /dev/null @@ -1,44 +0,0 @@ - - * 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->strip($event->stripped); - } - } - - private function filter($text) { - return str_replace( - array("[spoiler]","[/spoiler]"), - array("",""), - $text); - } - - private function strip($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 -?> diff --git a/ext/bbcode/main.php b/ext/bbcode/main.php index b2f705fb..f5c9a5c0 100644 --- a/ext/bbcode/main.php +++ b/ext/bbcode/main.php @@ -30,6 +30,7 @@ class BBCode extends Extension { $text = preg_replace("/\[li\](.*?)\[\/li\]/s", "
  • \\1
  • ", $text); $text = preg_replace("#\[\*\]#s", "
  • ", $text); $text = preg_replace("#
    <(li|ul|ol|/ul|/ol)>#s", "<\\1>", $text); + $text = $this->filter_spoiler($text); return $text; } @@ -51,6 +52,33 @@ class BBCode extends Extension { $text = preg_replace("/\[ol\](.*?)\[\/ol\]/s", "\\1", $text); $text = preg_replace("/\[li\](.*?)\[\/li\]/s", "\\1", $text); $text = preg_replace("/\[\*\](.*?)/s", "\\1", $text); + $text = $this->strip_spoiler($text); + return $text; + } + + private function filter_spoiler($text) { + return str_replace( + array("[spoiler]","[/spoiler]"), + array("",""), + $text); + } + + private function strip_spoiler($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; } }