X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fbbcode.php;h=ef791d9e7cfa3024926852211f7f5e020f7f0556;hb=7c0c56d20b97f9005f175388b36128edfcd683b4;hp=639d90cf4b7ee6bf5ecb9325b9bfe00894c6b3fc;hpb=beaca70126d45b472c3d610081d66584f2feca43;p=friendica.git
diff --git a/include/bbcode.php b/include/bbcode.php
index 639d90cf4b..ef791d9e7c 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -42,7 +42,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 = "";
@@ -168,6 +168,8 @@ function bb_remove_share_information($Text, $plaintext = false, $nolink = false)
}
function bb_cleanup_share($shared, $plaintext, $nolink) {
+ $shared[1] = trim($shared[1]);
+
if (!in_array($shared[2], array("type-link", "type-video")))
return($shared[0]);
@@ -178,7 +180,7 @@ function bb_cleanup_share($shared, $plaintext, $nolink) {
return($shared[0]);
if ($nolink)
- return(trim($shared[1]));
+ return($shared[1]);
$title = "";
$link = "";
@@ -189,6 +191,9 @@ function bb_cleanup_share($shared, $plaintext, $nolink) {
if (isset($bookmark[1][0]))
$link = $bookmark[1][0];
+ if (($shared[1] != "") AND (strpos($title, $shared[1]) !== false))
+ $shared[1] = $title;
+
if (($title != "") AND ((strpos($shared[1],$title) !== false) OR
(similar_text($shared[1],$title) / strlen($title)) > 0.9))
$title = "";
@@ -504,9 +509,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]);
@@ -514,7 +517,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]';
@@ -619,6 +622,17 @@ function GetProfileUsername($profile, $username, $compact = false, $getnetwork =
return($username." (".$diaspora.")");
}
+ $red = preg_replace("=https?://(.*)/channel/(.*)=ism", "$2@$1", $profile);
+ if ($red != $profile) {
+ if ($getnetwork)
+ // red is identified as Diaspora - friendica can't connect directly to it
+ return(NETWORK_DIASPORA);
+ elseif ($compact)
+ return($red);
+ else
+ return($username." (".$red.")");
+ }
+
$StatusnetHost = preg_replace("=https?://(.*)/user/(.*)=ism", "$1", $profile);
if ($StatusnetHost != $profile) {
$StatusnetUser = preg_replace("=https?://(.*)/user/(.*)=ism", "$2", $profile);
@@ -653,12 +667,20 @@ function GetProfileUsername($profile, $username, $compact = false, $getnetwork =
return($username);
}
+function bb_DiasporaLinks($match) {
+ $a = get_app();
+
+ return "[url=".$a->get_baseurl()."/display/".$match[1]."]".$match[2]."[/url]";
+}
+
function bb_RemovePictureLinks($match) {
$text = Cache::get($match[1]);
if(is_null($text)){
$a = get_app();
+ $stamp1 = microtime(true);
+
$ch = @curl_init($match[1]);
@curl_setopt($ch, CURLOPT_NOBODY, true);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
@@ -666,6 +688,8 @@ function bb_RemovePictureLinks($match) {
@curl_exec($ch);
$curl_info = @curl_getinfo($ch);
+ $a->save_timestamp($stamp1, "network");
+
if (substr($curl_info["content_type"], 0, 6) == "image/")
$text = "[url=".$match[1]."]".$match[1]."[/url]";
else {
@@ -709,6 +733,8 @@ function bb_CleanPictureLinksSub($match) {
if(is_null($text)){
$a = get_app();
+ $stamp1 = microtime(true);
+
$ch = @curl_init($match[1]);
@curl_setopt($ch, CURLOPT_NOBODY, true);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
@@ -716,6 +742,8 @@ function bb_CleanPictureLinksSub($match) {
@curl_exec($ch);
$curl_info = @curl_getinfo($ch);
+ $a->save_timestamp($stamp1, "network");
+
// if its a link to a picture then embed this picture
if (substr($curl_info["content_type"], 0, 6) == "image/")
$text = "[img]".$match[1]."[/img]";
@@ -757,8 +785,6 @@ function bb_CleanPictureLinks($text) {
function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = false, $forplaintext = false) {
- $stamp1 = microtime(true);
-
$a = get_app();
// Hide all [noparse] contained bbtags by spacefying them
@@ -820,8 +846,10 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
// removing multiplicated newlines
if (get_config("system", "remove_multiplicated_lines")) {
- $search = array("\n\n\n", "\n ", " \n", "[/quote]\n\n", "\n[/quote]", "[/li]\n", "\n[li]", "\n[ul]", "[/ul]\n", "\n\n[share ", "[/attachment]\n");
- $replace = array("\n\n", "\n", "\n", "[/quote]\n", "[/quote]", "[/li]", "[li]", "[ul]", "[/ul]", "\n[share ", "[/attachment]");
+ $search = array("\n\n\n", "\n ", " \n", "[/quote]\n\n", "\n[/quote]", "[/li]\n", "\n[li]", "\n[ul]", "[/ul]\n", "\n\n[share ", "[/attachment]\n",
+ "\n[h1]", "[/h1]\n", "\n[h2]", "[/h2]\n", "\n[h3]", "[/h3]\n", "\n[h4]", "[/h4]\n", "\n[h5]", "[/h5]\n", "\n[h6]", "[/h6]\n");
+ $replace = array("\n\n", "\n", "\n", "[/quote]\n", "[/quote]", "[/li]", "[li]", "[ul]", "[/ul]", "\n[share ", "[/attachment]",
+ "[h1]", "[/h1]", "[h2]", "[/h2]", "[h3]", "[/h3]", "[h4]", "[/h4]", "[h5]", "[/h5]", "[h6]", "[/h6]");
do {
$oldtext = $Text;
$Text = str_replace($search, $replace, $Text);
@@ -869,6 +897,9 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
else
$Text = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism",'[url=$1]$2[/url]',$Text);
+ // Handle Diaspora posts
+ $Text = preg_replace_callback("&\[url=/posts/([^\[\]]*)\](.*)\[\/url\]&Usi", 'bb_DiasporaLinks', $Text);
+
// if the HTML is used to generate plain text, then don't do this search, but replace all URL of that kind to text
if (!$forplaintext)
$Text = preg_replace("/([^\]\='".'"'."]|^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1$2', $Text);
@@ -898,6 +929,14 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
$Text = preg_replace("/\[mail\]([$MAILSearchString]*)\[\/mail\]/", '$1', $Text);
$Text = preg_replace("/\[mail\=([$MAILSearchString]*)\](.*?)\[\/mail\]/", '$2', $Text);
+ // Check for headers
+ $Text = preg_replace("(\[h1\](.*?)\[\/h1\])ism",'$1
',$Text);
+ $Text = preg_replace("(\[h2\](.*?)\[\/h2\])ism",'$1
',$Text);
+ $Text = preg_replace("(\[h3\](.*?)\[\/h3\])ism",'$1
',$Text);
+ $Text = preg_replace("(\[h4\](.*?)\[\/h4\])ism",'$1
',$Text);
+ $Text = preg_replace("(\[h5\](.*?)\[\/h5\])ism",'$1
',$Text);
+ $Text = preg_replace("(\[h6\](.*?)\[\/h6\])ism",'$1
',$Text);
+
// Check for bold text
$Text = preg_replace("(\[b\](.*?)\[\/b\])ism",'$1',$Text);
@@ -1078,8 +1117,8 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
'https://www.youtube.com/watch?v=$1', $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_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);
@@ -1093,7 +1132,6 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
// $Text = preg_replace("/\[youtube\](.*?)\[\/youtube\]/", '', $Text);
-
// oembed tag
$Text = oembed_bbcode2html($Text);
@@ -1163,16 +1201,8 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true, $simplehtml = fal
//$Text = str_replace('
','', $Text);
// $Text = str_replace('
(.*?)<\/a>/is';
- $Text = preg_replace($pattern, '#$2', $Text);
- }
-*/
call_hooks('bbcode',$Text);
- $a->save_timestamp($stamp1, "parser");
-
return trim($Text);
}
?>