X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fbbcode.php;h=ebafc353a4dcb153b759ab3820f6cdf79f17a0c0;hb=d49325d177cf03b97df250ca3cb081421c541049;hp=820a307cb695c06ff02f6c42503c8c677c129fea;hpb=49d52faab5900dfe0ec66d8eec7a51473e7c1344;p=friendica.git
diff --git a/include/bbcode.php b/include/bbcode.php
index 820a307cb6..ebafc353a4 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -4,6 +4,7 @@ require_once('include/event.php');
require_once('include/map.php');
require_once('mod/proxy.php');
require_once('include/Contact.php');
+require_once('include/plaintext.php');
function bb_PictureCacheExt($matches) {
if (strpos($matches[3], "data:image/") === 0)
@@ -33,10 +34,14 @@ function bb_map_location($match) {
function bb_attachment($Text, $simplehtml = false, $tryoembed = true) {
$data = get_attachment_data($Text);
-
if (!$data)
return $Text;
+ if (isset($data["title"])) {
+ $data["title"] = strip_tags($data["title"]);
+ $data["title"] = str_replace(array("http://", "https://"), "", $data["title"]);
+ }
+
if (((strpos($data["text"], "[img=") !== false) OR (strpos($data["text"], "[img]") !== false)) AND ($data["image"] != "")) {
$data["preview"] = $data["image"];
$data["image"] = "";
@@ -73,9 +78,13 @@ function bb_attachment($Text, $simplehtml = false, $tryoembed = true) {
elseif (($data["preview"] != "") AND !strstr(strtolower($oembed), "
', $data["url"], proxy_url($data["preview"]), $data["title"]);
- $text .= $oembed;
+ if (($data["type"] == "photo") AND ($data["url"] != "") AND ($data["image"] != ""))
+ $text .= sprintf('', $data["url"], proxy_url($data["image"]), $data["title"]);
+ else
+ $text .= $oembed;
- $text .= sprintf('
%s', trim($data["description"])); + if (trim($data["description"]) != "") + $text .= sprintf('
%s', trim(bbcode($data["description"]))); } } return $data["text"].$text.$data["after"]; @@ -89,26 +98,32 @@ function bb_remove_share_information($Text, $plaintext = false, $nolink = false) return $Text; if ($nolink) - return $data["text"]; + return $data["text"].$data["after"]; - if ($plaintext) + $title = htmlentities($data["title"], ENT_QUOTES, 'UTF-8', false); + $text = htmlentities($data["text"], ENT_QUOTES, 'UTF-8', false); + if ($plaintext OR (($title != "") AND strstr($text, $title))) + $data["title"] = $data["url"]; + elseif (($text != "") AND strstr($title, $text)) { + $data["text"] = $data["title"]; $data["title"] = $data["url"]; + } if (($data["text"] == "") AND ($data["title"] != "") AND ($data["url"] == "")) - return $data["title"]; + return $data["title"].$data["after"]; // If the link already is included in the post, don't add it again if (($data["url"] != "") AND strpos($data["text"], $data["url"])) - return $data["text"]; + return $data["text"].$data["after"]; $text = $data["text"]; if (($data["url"] != "") AND ($data["title"] != "")) $text .= "\n[url=".$data["url"]."]".$data["title"]."[/url]"; - elseif (($link != "")) + elseif (($data["url"] != "")) $text .= "\n".$data["url"]; - return $text; + return $text."\n".$data["after"]; } function bb_cleanstyle($st) { @@ -131,7 +146,7 @@ function cleancss($input) { if (($char >= "a") and ($char <= "z")) $cleaned .= $char; - if (!(strpos(" #;:0123456789-_", $char) === false)) + if (!(strpos(" #;:0123456789-_.%", $char) === false)) $cleaned .= $char; } @@ -380,36 +395,40 @@ function bb_ShareAttributes($share, $simplehtml) { $itemcache = get_itemcachepath(); - // relative dates only make sense when they aren't cached - if ($itemcache == "") { - preg_match("/posted='(.*?)'/ism", $attributes, $matches); - if ($matches[1] != "") - $posted = $matches[1]; + preg_match("/posted='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $posted = $matches[1]; - preg_match('/posted="(.*?)"/ism', $attributes, $matches); - if ($matches[1] != "") - $posted = $matches[1]; + preg_match('/posted="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $posted = $matches[1]; + // relative dates only make sense when they aren't cached + if ($itemcache == "") $reldate = (($posted) ? " " . relative_date($posted) : ''); - } + + // We only call this so that a previously unknown contact can be added. + // This is important for the function "get_contact_details_by_url". + // This function then can fetch an entry from the contact table. + get_contact($profile, 0); $data = get_contact_details_by_url($profile); - if (isset($data["name"]) AND isset($data["addr"])) + if (isset($data["name"]) AND ($data["name"] != "") AND isset($data["addr"]) AND ($data["addr"] != "")) $userid_compact = $data["name"]." (".$data["addr"].")"; else $userid_compact = GetProfileUsername($profile,$author, true); - if (isset($data["addr"])) + if (isset($data["addr"]) AND ($data["addr"] != "")) $userid = $data["addr"]; else $userid = GetProfileUsername($profile,$author, false); - if (isset($data["name"])) + if (isset($data["name"]) AND ($data["name"] != "")) $author = $data["name"]; - if (isset($data["photo"])) - $avatar = $data["photo"]; + if (isset($data["micro"]) AND ($data["micro"] != "")) + $avatar = $data["micro"]; $preshare = trim($share[1]); @@ -473,13 +492,22 @@ function bb_ShareAttributes($share, $simplehtml) { $text .= "
'.trim($share[3]).""; + $text = trim($share[1])."\n"; + + $avatar = proxy_url($avatar, false, PROXY_SIZE_THUMB); + + $tpl = get_markup_template('shared_content.tpl'); + $text .= replace_macros($tpl, + array( + '$profile' => $profile, + '$avatar' => $avatar, + '$author' => $author, + '$link' => $link, + '$posted' => $posted, + '$reldate' => $reldate, + '$content' => trim($share[3]) + ) + ); break; } return($text); @@ -695,6 +723,13 @@ function bb_CleanPictureLinks($text) { return ($text); } +function bb_highlight($match) { + if(in_array(strtolower($match[1]),['php','css','mysql','sql','abap','diff','html','perl','ruby', + 'vbscript','avrc','dtd','java','xml','cpp','python','javascript','js','sh'])) + return text_highlight($match[2],strtolower($match[1])); + return $match[0]; +} + // BBcode 2 HTML was written by WAY2WEB.net // extended to work with Mistpark/Friendica - Mike Macgirvin @@ -747,6 +782,11 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal if (!$tryoembed) $Text = preg_replace("/\[share(.*?)avatar\s?=\s?'.*?'\s?(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism","\n[share$1$2]$3[/share]",$Text); + // Check for [code] text here, before the linefeeds are messed with. + // The highlighter will unescape and re-escape the content. + if (strpos($Text,'[code=') !== false) { + $Text = preg_replace_callback("/\[code=(.*?)\](.*?)\[\/code\]/ism", 'bb_highlight', $Text); + } // Convert new line chars to html
$1
',$Text); + // Check for bold text $Text = preg_replace("(\[b\](.*?)\[\/b\])ism",'$1',$Text); @@ -1093,6 +1141,7 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal $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); + $Text = preg_replace("/\[event\-id\](.*?)\[\/event\-id\]/ism",'',$Text); }