X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fbbcode.php;h=8545b2ff8253c9b29c9b71d87b8003a383623e3b;hb=6ff5c23d50095e5407bf69f8a4ec2220c5d2d408;hp=571809c3b5d10d94fdd57e6ee4d7adaee255dbe1;hpb=016b6428a091e4d9067962e2d8931e7e51254621;p=friendica.git diff --git a/include/bbcode.php b/include/bbcode.php index 571809c3b5..8545b2ff82 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -1,21 +1,49 @@ ' . 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 ($simplehtml, $tryoembed){ + + $attributes = $match[2]; $type = ""; preg_match("/type='(.*?)'/ism", $attributes, $matches); if ($matches[1] != "") - $type = $matches[1]; + $type = strtolower($matches[1]); preg_match('/type="(.*?)"/ism', $attributes, $matches); if ($matches[1] != "") - $type = $matches[1]; + $type = strtolower($matches[1]); if ($type == "") return($match[0]); @@ -41,26 +69,51 @@ function bb_attachment($Text, $plaintext = false, $tryoembed = true) { if ($matches[1] != "") $title = $matches[1]; - $image = ""; - preg_match("/image='(.*?)'/ism", $attributes, $matches); - if ($matches[1] != "") - $image = $matches[1]; + //$title = htmlentities($title, ENT_QUOTES, 'UTF-8', false); + $title = bbcode(html_entity_decode($title, ENT_QUOTES, 'UTF-8'), false, false, true); + $title = str_replace(array("[", "]"), array("[", "]"), $title); - preg_match('/image="(.*?)"/ism', $attributes, $matches); - if ($matches[1] != "") - $image = $matches[1]; + $image = ""; + if ($type != "video") { + preg_match("/image='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $image = $matches[1]; + + preg_match('/image="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $image = $matches[1]; + } $preview = ""; - preg_match("/preview='(.*?)'/ism", $attributes, $matches); - if ($matches[1] != "") - $preview = $matches[1]; + if ($type != "video") { + preg_match("/preview='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $preview = $matches[1]; + + preg_match('/preview="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $preview = $matches[1]; + } - preg_match('/preview="(.*?)"/ism', $attributes, $matches); - if ($matches[1] != "") - $preview = $matches[1]; + if (((strpos($match[1], "[img=") !== false) OR (strpos($match[1], "[img]") !== false)) AND ($image != "")) { + $preview = $image; + $image = ""; + } - if ($plaintext) - $text = sprintf('%s', $url, $title); + if ($simplehtml == 7) { + $title2 = $title; + + $test1 = trim(html_entity_decode($match[1],ENT_QUOTES,'UTF-8')); + $test2 = trim(html_entity_decode($title,ENT_QUOTES,'UTF-8')); + + // If the link description is similar to the text above then don't add the link description + if (($title != "") AND ((strpos($test1,$test2) !== false) OR + (similar_text($test1,$test2) / strlen($title)) > 0.9)) + $title2 = $url; + $text = sprintf('%s
', + $url, $title, $title2); + } elseif (($simplehtml != 4) AND ($simplehtml != 0)) + $text = sprintf('%s
', $url, $title); else { $text = sprintf('', $type); @@ -70,49 +123,84 @@ function bb_attachment($Text, $plaintext = false, $tryoembed = true) { else $oembed = $bookmark[0]; - if (($image != "") AND !strstr(strtolower($oembed), "%s', $image, $title); // To-Do: Anführungszeichen in "alt" - elseif (($preview != "") AND !strstr(strtolower($oembed), "%s', $preview, $title); // To-Do: Anführungszeichen in "alt" + if (strstr(strtolower($oembed), "