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.':'; - $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('
    save_timestamp($stamp1, "parser"); - return trim($Text); } ?>