X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fbbcode.php;h=e872d859c53bec8e599715e775ccea8d34d1d8a3;hb=166519fc4db8eec57ce17c4ab7b094d2252b65e1;hp=3cf67af692d58c35cb3fb2a2b65dc4231e093ff8;hpb=dd21750d901c95a270543741ce1b7f7551300d4f;p=friendica.git
diff --git a/include/bbcode.php b/include/bbcode.php
index 3cf67af692..e872d859c5 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -1,10 +1,21 @@
' . generate_map(str_replace('/',' ',$match[1])) . '', $match[0]);
+}
+function bb_map_location($match) {
+ // the extra space in the following line is intentional
+ return str_replace($match[0],'
' . generate_named_map($match[1]) . '
', $match[0]);
+}
+
+function bb_attachment($Text, $simplehtml = false, $tryoembed = true) {
$Text = preg_replace_callback("/(.*?)\[attachment(.*?)\](.*?)\[\/attachment\]/ism",
- function ($match) use ($plaintext){
+ function ($match) use ($simplehtml, $tryoembed){
$attributes = $match[2];
@@ -42,7 +53,7 @@ function bb_attachment($Text, $plaintext = false, $tryoembed = true) {
$title = $matches[1];
//$title = htmlentities($title, ENT_QUOTES, 'UTF-8', false);
- $title = bbcode(html_entity_decode($title), false, false, true);
+ $title = bbcode(html_entity_decode($title, ENT_QUOTES, 'UTF-8'), false, false, true);
$title = str_replace(array("[", "]"), array("[", "]"), $title);
$image = "";
@@ -72,7 +83,10 @@ function bb_attachment($Text, $plaintext = false, $tryoembed = true) {
$image = "";
}
- if ($plaintext)
+ if ($simplehtml == 7)
+ $text = sprintf('%s',
+ $url, $title, $title);
+ elseif (($simplehtml != 4) AND ($simplehtml != 0))
$text = sprintf('%s
', $url, $title);
else {
$text = sprintf('', $type);
@@ -83,14 +97,18 @@ function bb_attachment($Text, $plaintext = false, $tryoembed = true) {
else
$oembed = $bookmark[0];
- if (($image != "") AND !strstr(strtolower($oembed), "![]()
![%s](%s)
', $url, $image, $title);
- elseif (($preview != "") AND !strstr(strtolower($oembed), "![]()
![%s](%s)
', $url, $preview, $title);
+ if (strstr(strtolower($oembed), "', trim($match[3]));
+ $text .= sprintf('%s
', trim($match[3]));
+ }
}
return($match[1].$text);
@@ -509,9 +527,7 @@ function bb_ShareAttributes($share, $simplehtml) {
$text = $preshare.html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8').' '.$userid_compact.":
".$share[3];
break;
case 3: // Diaspora
- $headline = '";
+ $headline .= ''.html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8').$userid.':
';
$text = trim($share[1]);
@@ -519,7 +535,7 @@ function bb_ShareAttributes($share, $simplehtml) {
$text .= "
";
if (substr(normalise_link($link), 0, 19) != "http://twitter.com/") {
- $text .= $headline.''.trim($share[3])."
";
+ $text .= $headline.''.trim($share[3])."
";
if ($link != "")
$text .= '
[l]';
@@ -815,7 +831,6 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
$ev = bbtoevent($Text);
-
// Replace any html brackets with HTML Entities to prevent executing HTML or script
// Don't use strip_tags here because it breaks [url] search by replacing & with amp
@@ -859,7 +874,7 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
}
// Handle attached links or videos
- $Text = bb_attachment($Text, ($simplehtml != 4) AND ($simplehtml != 0), $tryoembed);
+ $Text = bb_attachment($Text, $simplehtml, $tryoembed);
$Text = str_replace(array("\r","\n"), array('
','
'), $Text);
@@ -872,8 +887,17 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
$MAILSearchString = $URLSearchString;
// Remove all hashtag addresses
- if (!$tryoembed OR $simplehtml)
+ if ((!$tryoembed OR $simplehtml) AND !in_array($simplehtml, array(3, 7)))
$Text = preg_replace("/([#@])\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '$1$3', $Text);
+ elseif ($simplehtml == 3)
+ $Text = preg_replace("/([@])\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism",
+ '$1$3',
+ $Text);
+ elseif ($simplehtml == 7)
+ $Text = preg_replace("/([@])\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism",
+ '$1$3',
+ $Text);
+
// Bookmarks in red - will be converted to bookmarks in friendica
$Text = preg_replace("/#\^\[url\]([$URLSearchString]*)\[\/url\]/ism", '[bookmark=$1]$1[/bookmark]', $Text);
@@ -924,13 +948,26 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
// we may need to restrict this further if it picks up too many strays
// link acct:user@host to a webfinger profile redirector
- $Text = preg_replace('/acct:(.*?)@(.*?)([ ,])/', 'acct:' . "$1@$2$3" . '',$Text);
// Perform MAIL Search
$Text = preg_replace("/\[mail\]([$MAILSearchString]*)\[\/mail\]/", '$1', $Text);
$Text = preg_replace("/\[mail\=([$MAILSearchString]*)\](.*?)\[\/mail\]/", '$2', $Text);
+ // leave open the posibility of [map=something]
+ // this is replaced in prepare_body() which has knowledge of the item location
+
+ if (strpos($Text,'[/map]') !== false) {
+ $Text = preg_replace_callback("/\[map\](.*?)\[\/map\]/ism", 'bb_map_location', $Text);
+ }
+ if (strpos($Text,'[map=') !== false) {
+ $Text = preg_replace_callback("/\[map=(.*?)\]/ism", 'bb_map_coords', $Text);
+ }
+ if (strpos($Text,'[map]') !== false) {
+ $Text = preg_replace("/\[map\]/", '', $Text);
+ }
+
// Check for headers
$Text = preg_replace("(\[h1\](.*?)\[\/h1\])ism",'$1
',$Text);
$Text = preg_replace("(\[h2\](.*?)\[\/h2\])ism",'$1
',$Text);
@@ -978,8 +1015,8 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
$endlessloop = 0;
while ((((strpos($Text, "[/list]") !== false) && (strpos($Text, "[list") !== false)) ||
- ((strpos($Text, "[/ol]") !== false) && (strpos($Text, "[ol]") !== false)) ||
- ((strpos($Text, "[/ul]") !== false) && (strpos($Text, "[ul]") !== false)) ||
+ ((strpos($Text, "[/ol]") !== false) && (strpos($Text, "[ol]") !== false)) ||
+ ((strpos($Text, "[/ul]") !== false) && (strpos($Text, "[ul]") !== false)) ||
((strpos($Text, "[/li]") !== false) && (strpos($Text, "[li]") !== false))) && (++$endlessloop < 20)) {
$Text = preg_replace("/\[list\](.*?)\[\/list\]/ism", '' ,$Text);
$Text = preg_replace("/\[list=\](.*?)\[\/list\]/ism", '' ,$Text);
@@ -1123,7 +1160,7 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
$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?:\/\/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);
if ($tryoembed)
@@ -1150,13 +1187,13 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
$Text = preg_replace("/\[event\-summary\](.*?)\[\/event\-summary\]/ism",'',$Text);
$Text = preg_replace("/\[event\-description\](.*?)\[\/event\-description\]/ism",'',$Text);
- $Text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/ism",$sub,$Text);
+ $Text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/ism",$sub,$Text);
$Text = preg_replace("/\[event\-finish\](.*?)\[\/event\-finish\]/ism",'',$Text);
$Text = preg_replace("/\[event\-location\](.*?)\[\/event\-location\]/ism",'',$Text);
$Text = preg_replace("/\[event\-adjust\](.*?)\[\/event\-adjust\]/ism",'',$Text);
}
- // Unhide all [noparse] contained bbtags unspacefying them
+ // Unhide all [noparse] contained bbtags unspacefying them
// and triming the [noparse] tag.
$Text = preg_replace_callback("/\[noparse\](.*?)\[\/noparse\]/ism", 'bb_unspacefy_and_trim',$Text);