public function parse($text, $plain = false) { static $fullParser, $plainParser; // Create parser if not already created if ($plain && !$plainParser || !$plain && !$fullParser) { $parser = new Classes\BBCodeParser(null, ['escapeHtml' => true, 'maxNewLines' => 3, 'strictMode' => false, 'xhtmlOutput' => false]); // Custom hooks and filters $parser->addHook(new Classes\EmoticonHook(['path' => '/', 'extension' => '', 'emoticons' => EmoticonModel::getEmoticons()])); $parser->addHook(new Classes\ClickableHook()); $plain or $parser->addFilter(new Classes\AudioFilter()); $plain or $parser->addFilter(new Classes\VideoFilter()); $parser->addFilter(new Classes\UrlFilter()); // Decoda hooks and filters $parser->addFilter(new Decoda\Filter\DefaultFilter()); $parser->addFilter(new Decoda\Filter\BlockFilter()); $parser->addFilter(new Decoda\Filter\EmailFilter()); $plain or $parser->addFilter(new Decoda\Filter\ImageFilter()); $parser->addFilter(new Decoda\Filter\ListFilter()); $parser->addFilter(new Decoda\Filter\QuoteFilter()); if ($plain) { $plainParser = $parser; } else { $fullParser = $parser; } } else { $parser = $plain ? $plainParser : $fullParser; } $parser->setString($text); return $parser->parse(); }
public static function getEmoticons() { static $emoticons; if (is_null($emoticons)) { $images = Emoticon::with('emoticon')->get(); $emoticons = []; foreach ($images as $image) { $notations = array_pluck($image->notation, 'notation'); $path = $image->emoticon->getPath(); $emoticons[$path] = $notations; } } return $emoticons; }