protected static function autoLinkVideo($text, $docId = null) { $params = JUDownloadHelper::getParams(null, $docId); $auto_embed_youtube_in_comment = $params->get('auto_embed_youtube_in_comment', 0); $auto_embed_vimeo_in_comment = $params->get('auto_embed_vimeo_in_comment', 0); $video_width_in_comment = $params->get('video_width_in_comment', 360); $video_height_in_comment = $params->get('video_height_in_comment', 240); $regexYoutube = "#(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:v|vi|user)\/))([^\?&\"'<>\/\s]+)(?:$|\/|\?|\&)?#i"; preg_match_all($regexYoutube, $text, $matchesYoutube); if ($auto_embed_youtube_in_comment && count($matchesYoutube[0])) { foreach ($matchesYoutube[0] AS $key => $match) { $youtube_html = JUDownloadFrontHelperComment::parseVideo($match, $video_width_in_comment, $video_height_in_comment); $text = str_replace($matchesYoutube[0][$key], $youtube_html . '<br/>', $text); } } $regexVimeo = "#(?:http(?:s)?:\/\/)?(?:www\.)?vimeo.com\/(\d+)(?:$|\/|\?)?#"; preg_match_all($regexVimeo, $text, $matchesVimeo); if ($auto_embed_vimeo_in_comment && count($matchesVimeo[0])) { $arrIdVimeo = array_unique($matchesVimeo[0]); foreach ($arrIdVimeo AS $key => $match) { $vimeo_html = JUDownloadFrontHelperComment::parseVideo($match, $video_width_in_comment, $video_height_in_comment); $text = str_replace($matchesVimeo[0][$key], $vimeo_html, $text); } } return $text; }
public static function BBCode2Html($text) { $text = trim($text); if (!function_exists('escape')) { function escape($s) { global $text; $text = strip_tags($text); $code = $s[1]; $code = htmlspecialchars($code); $code = str_replace("[", "[", $code); $code = str_replace("]", "]", $code); return '<pre><code>' . $code . '</code></pre>'; } } $text = preg_replace_callback('/\[code\](.*?)\[\/code\]/ms', "escape", $text); $in = array( '3:)', ':)', ':(', ':P', ':D', '>:o', ':o', ';)', ':-/', ':v', ':\'(', '^_^', '8-)', '<3', '-_-', 'o.O', ':3', '(y)' ); $smileFolder = JUri::root(true) . '/components/com_judownload/assets/wysibb/theme/default/img/smiles/'; $out = array( '<img src="' . $smileFolder . 'devil.png" />', '<img src="' . $smileFolder . 'smile.png" />', '<img src="' . $smileFolder . 'frown.png" />', '<img src="' . $smileFolder . 'tongue.png" />', '<img src="' . $smileFolder . 'grin.png" />', '<img src="' . $smileFolder . 'angry.png" />', '<img src="' . $smileFolder . 'gasp.png" />', '<img src="' . $smileFolder . 'wink.png" />', '<img src="' . $smileFolder . 'unsure.png" />', '<img src="' . $smileFolder . 'pacman.png" />', '<img src="' . $smileFolder . 'cry.png" />', '<img src="' . $smileFolder . 'kiki.png" />', '<img src="' . $smileFolder . 'glasses.png" />', '<img src="' . $smileFolder . 'heart.png" />', '<img src="' . $smileFolder . 'squinting.png" />', '<img src="' . $smileFolder . 'confused.png" />', '<img src="' . $smileFolder . 'colonthree.png" />', '<img src="' . $smileFolder . 'like.png" />', ); $text = str_replace($in, $out, $text); $in = array( '/\[b\](.*?)\[\/b\]/ms', '/\[i\](.*?)\[\/i\]/ms', '/\[u\](.*?)\[\/u\]/ms', '/\[align=(.*?)\](.*?)\[\/align\]/ms', '/\[img\](.*?)\[\/img\]/ms', '/\[email\](.*?)\[\/email\]/ms', '/\[url\="?(.*?)"?\](.*?)\[\/url\]/ms', '/\[size\="?(.*?)"?\](.*?)\[\/size\]/ms', '/\[color\="?(.*?)"?\](.*?)\[\/color\]/ms', '/\[background\="?(.*?)"?\](.*?)\[\/background\]/ms', '/\[list\=(.*?)\](.*?)\[\/list\]/ms', '/\[list\](.*?)\[\/list\]/ms', '/\[\*\]([^\[\]\*\<]*)/ms', '/\[left\](.*?)\[\/left\]/ms', '/\[right\](.*?)\[\/right\]/ms', '/\[center\](.*?)\[\/center\]/ms' ); $out = array('<strong>\1</strong>', '<em>\1</em>', '<u>\1</u>', '<p style="\1">\2</p>', '<img src="\1" alt="\1" />', '<a href="mailto:\1">\1</a>', '<a href="\1" rel="nofollow">\2</a>', '<span style="font-size:\1%">\2</span>', '<span style="color:\1">\2</span>', '<span style="background-color:\1">\2</span>', '<ol start="\1">\2</ol>', '<ul>\1</ul>', '<li>\1</li>', '<p style="text-align:left">\1</p>', '<p style="text-align:right">\1</p>', '<p style="text-align:center">\1</p>' ); $text = preg_replace($in, $out, $text); $quoteFind = array( '/\[quote\]/is', '/\[\/quote\]/is', '/\[quote\s*=\s*"?([^"]*?)"?\s*\]/is' ); $quoteReplace = array( '<blockquote>', '</blockquote>', '<span class="author">$1 said:</span><blockquote>' ); $count = 0; do { $text = preg_replace($quoteFind, $quoteReplace, $text, -1, $count); } while ($count > 0); $videoPatt = '/\[video\](.*?)\[\/video\]/ms'; preg_match($videoPatt, $text, $matches); if ($matches && $matches[1]) { $vimeo_html = JUDownloadFrontHelperComment::parseVideo($matches[1]); $text = str_replace($matches[0], $vimeo_html, $text); } $text = str_replace("\r", "", $text); $text = "<p>" . preg_replace("/(\n){2,}/", "</p><p>", $text) . "</p>"; $text = nl2br($text); if (!function_exists('removeBr')) { function removeBr($s) { return str_replace("<br />", "", $s[0]); } } $text = preg_replace_callback('/<pre>(.*?)<\/pre>/ms', "removeBr", $text); $text = preg_replace('/<p><pre>(.*?)<\/pre><\/p>/ms', "<pre>\\1</pre>", $text); $text = preg_replace_callback('/<ul>(.*?)<\/ul>/ms', "removeBr", $text); $text = preg_replace('/<p><ul>(.*?)<\/ul><\/p>/ms', "<ul>\\1</ul>", $text); return $text; }