]> git.mxchange.org Git - friendica.git/commitdiff
New option in the bbcode parser to disable oembed.
authorMichael Vogel <icarus@dabo.de>
Sun, 17 Jun 2012 23:29:08 +0000 (01:29 +0200)
committerMichael Vogel <icarus@dabo.de>
Sun, 17 Jun 2012 23:29:08 +0000 (01:29 +0200)
include/bb2diaspora.php
include/bbcode.php

index 0617ecc5fd918d63d6aaf553f1ed6613085e073c..7b4caec462375d51b4718ca5563d923668a17dd6 100644 (file)
@@ -70,6 +70,17 @@ function stripdcode_br_cb($s) {
 
 function bb2diaspora($Text,$preserve_nl = false) {
 
+       // Convert it to HTML - don't try oembed
+       $Text = bbcode($Text, $preserve_nl, false);
+
+       // Now convert HTML to Markdown
+       $md = new Markdownify(false, false, false);
+       $Text = $md->parseString($Text);
+
+       // Remove all unconverted tags
+       $Text = strip_tags($Text);
+
+/*
        $ev = bbtoevent($Text);
 
        // Replace any html brackets with HTML Entities to prevent executing HTML or script
@@ -85,17 +96,7 @@ function bb2diaspora($Text,$preserve_nl = false) {
        if($preserve_nl)
                $Text = str_replace(array("\n","\r"), array('',''),$Text);
 
-       // Convert it to HTML
-       $Text = bbcode($Text);
 
-       // Now convert HTML to Markdown
-       $md = new Markdownify(false, false, false);
-       $Text = $md->parseString($Text);
-
-       // Remove all unconverted tags
-       $Text = strip_tags($Text);
-
-/*
        // Set up the parameters for a URL search string
        $URLSearchString = "^\[\]";
        // Set up the parameters for a MAIL search string
index efc362880f3f437456ef836656533a9eab58f5a1..f542ad263c8d2a0f741796d13b03c3cb00da6705 100644 (file)
@@ -50,7 +50,7 @@ function bb_unspacefy_and_trim($st) {
        // BBcode 2 HTML was written by WAY2WEB.net
        // extended to work with Mistpark/Friendica - Mike Macgirvin
 
-function bbcode($Text,$preserve_nl = false) {
+function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
 
        $a = get_app();
 
@@ -108,10 +108,14 @@ function bbcode($Text,$preserve_nl = false) {
 
        $Text = preg_replace("/([^\]\=]|^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1<a href="$2" target="external-link">$2</a>', $Text);
 
-       $Text = preg_replace_callback("/\[bookmark\=([^\]]*)\].*?\[\/bookmark\]/ism",'tryoembed',$Text);
+       if ($tryoembed)
+               $Text = preg_replace_callback("/\[bookmark\=([^\]]*)\].*?\[\/bookmark\]/ism",'tryoembed',$Text);
+
        $Text = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism",'[url=$1]$2[/url]',$Text);
 
-       $Text = preg_replace_callback("/\[url\]([$URLSearchString]*)\[\/url\]/ism",'tryoembed',$Text);
+       if ($tryoembed)
+               $Text = preg_replace_callback("/\[url\]([$URLSearchString]*)\[\/url\]/ism",'tryoembed',$Text);
+
        $Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/ism", '<a href="$1" target="external-link">$1</a>', $Text);
        $Text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '<a href="$1" target="external-link">$2</a>', $Text);
        //$Text = preg_replace("/\[url\=([$URLSearchString]*)\]([$URLSearchString]*)\[\/url\]/ism", '<a href="$1" target="_blank">$2</a>', $Text);
@@ -250,31 +254,35 @@ function bbcode($Text,$preserve_nl = false) {
        $Text = preg_replace("/\[audio\](.*?\.(ogg|ogv|oga|ogm|webm|mp4|mp3))\[\/audio\]/ism", '<audio src="$1" controls="controls"><a href="$1">$1</a></audio>', $Text);
 
        // Try to Oembed
-       $Text = preg_replace_callback("/\[video\](.*?)\[\/video\]/ism", 'tryoembed', $Text);
-       $Text = preg_replace_callback("/\[audio\](.*?)\[\/audio\]/ism", 'tryoembed', $Text);
-
+       if ($tryoembed) {
+               $Text = preg_replace_callback("/\[video\](.*?)\[\/video\]/ism", 'tryoembed', $Text);
+               $Text = preg_replace_callback("/\[audio\](.*?)\[\/audio\]/ism", 'tryoembed', $Text);
+       }
 
        // html5 video and audio
 
 
        $Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/ism", '<iframe src="$1" width="425" height="350"><a href="$1">$1</a></iframe>', $Text);
-         
+
 
        // Youtube extensions
-       $Text = preg_replace_callback("/\[youtube\](https?:\/\/www.youtube.com\/watch\?v\=.*?)\[\/youtube\]/ism", 'tryoembed', $Text);        
-       $Text = preg_replace_callback("/\[youtube\](www.youtube.com\/watch\?v\=.*?)\[\/youtube\]/ism", 'tryoembed', $Text);        
-       $Text = preg_replace_callback("/\[youtube\](https?:\/\/youtu.be\/.*?)\[\/youtube\]/ism",'tryoembed',$Text); 
-        
+       if ($tryoembed) {
+               $Text = preg_replace_callback("/\[youtube\](https?:\/\/www.youtube.com\/watch\?v\=.*?)\[\/youtube\]/ism", 'tryoembed', $Text);        
+               $Text = preg_replace_callback("/\[youtube\](www.youtube.com\/watch\?v\=.*?)\[\/youtube\]/ism", 'tryoembed', $Text);        
+               $Text = preg_replace_callback("/\[youtube\](https?:\/\/youtu.be\/.*?)\[\/youtube\]/ism",'tryoembed',$Text); 
+       }
+
        $Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text); 
        $Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/embed\/(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text); 
-       $Text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text); 
-               
-        
+       $Text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text);
+
        $Text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/ism", '<iframe width="425" height="350" src="http://www.youtube.com/embed/$1" frameborder="0" ></iframe>', $Text);
 
 
-       $Text = preg_replace_callback("/\[vimeo\](https?:\/\/player.vimeo.com\/video\/[0-9]+).*?\[\/vimeo\]/ism",'tryoembed',$Text); 
-       $Text = preg_replace_callback("/\[vimeo\](https?:\/\/vimeo.com\/[0-9]+).*?\[\/vimeo\]/ism",'tryoembed',$Text); 
+       if ($tryoembed) {
+               $Text = preg_replace_callback("/\[vimeo\](https?:\/\/player.vimeo.com\/video\/[0-9]+).*?\[\/vimeo\]/ism",'tryoembed',$Text); 
+               $Text = preg_replace_callback("/\[vimeo\](https?:\/\/vimeo.com\/[0-9]+).*?\[\/vimeo\]/ism",'tryoembed',$Text); 
+       }
 
        $Text = preg_replace("/\[vimeo\]https?:\/\/player.vimeo.com\/video\/([0-9]+)(.*?)\[\/vimeo\]/ism",'[vimeo]$1[/vimeo]',$Text); 
        $Text = preg_replace("/\[vimeo\]https?:\/\/vimeo.com\/([0-9]+)(.*?)\[\/vimeo\]/ism",'[vimeo]$1[/vimeo]',$Text);