X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FItem.php;h=b460d5f79fdf886364acfe50a0c7ddf99a4580e6;hb=fc0acd7b1f4723b9e45badcaae53e466e1a29b85;hp=77ba9e63448d5fa97d4da0366d747c580185557e;hpb=87b1d0a4d74764b8fc49e732e4468a4f5a197551;p=friendica.git diff --git a/src/Model/Item.php b/src/Model/Item.php index 77ba9e6344..b460d5f79f 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -559,10 +559,10 @@ class Item extends BaseObject $fields['permissionset'] = ['allow_cid', 'allow_gid', 'deny_cid', 'deny_gid']; - $fields['author'] = ['url' => 'author-link', 'name' => 'author-name', + $fields['author'] = ['url' => 'author-link', 'name' => 'author-name', 'addr' => 'author-addr', 'thumb' => 'author-avatar', 'nick' => 'author-nick', 'network' => 'author-network']; - $fields['owner'] = ['url' => 'owner-link', 'name' => 'owner-name', + $fields['owner'] = ['url' => 'owner-link', 'name' => 'owner-name', 'addr' => 'owner-addr', 'thumb' => 'owner-avatar', 'nick' => 'owner-nick', 'network' => 'owner-network']; $fields['contact'] = ['url' => 'contact-link', 'name' => 'contact-name', 'thumb' => 'contact-avatar', @@ -2386,7 +2386,6 @@ class Item extends BaseObject public static function setHashtags(&$item) { - $tags = BBCode::getTags($item["body"]); // No hashtags? @@ -2394,23 +2393,23 @@ class Item extends BaseObject return false; } - // This sorting is important when there are hashtags that are part of other hashtags - // Otherwise there could be problems with hashtags like #test and #test2 - rsort($tags); - - $URLSearchString = "^\[\]"; - // What happens in [code], stays in [code]! // escape the # and the [ // hint: we will also get in trouble with #tags, when we want markdown in posts -> ### Headline 3 - $item["body"] = preg_replace_callback("/\[code(.*)\](.*?)\[\/code\]/ism", + $item["body"] = preg_replace_callback("/\[code(.*?)\](.*?)\[\/code\]/ism", function ($match) { // we truly ESCape all # and [ to prevent gettin weird tags in [code] blocks $find = ['#', '[']; $replace = [chr(27).'sharp', chr(27).'leftsquarebracket']; - return ("[code" . str_replace($find, $replace, $match[1]) . "]" . $match[2] . "[/code]"); + return ("[code" . $match[1] . "]" . str_replace($find, $replace, $match[2]) . "[/code]"); }, $item["body"]); - + + // This sorting is important when there are hashtags that are part of other hashtags + // Otherwise there could be problems with hashtags like #test and #test2 + rsort($tags); + + $URLSearchString = "^\[\]"; + // All hashtags should point to the home server if "local_tags" is activated if (Config::get('system', 'local_tags')) { $item["body"] = preg_replace("/#\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", @@ -2441,22 +2440,20 @@ class Item extends BaseObject "#$2", $item["body"]); foreach ($tags as $tag) { - if ((strpos($tag, '#') !== 0) || strpos($tag, '[url=')) { + if ((strpos($tag, '#') !== 0) || strpos($tag, '[url=') || $tag[1] == '#') { continue; } $basetag = str_replace('_',' ',substr($tag,1)); - if($basetag[0] != '#') { - $newtag = '#[url=' . System::baseUrl() . '/search?tag=' . $basetag . ']' . $basetag . '[/url]'; + $newtag = '#[url=' . System::baseUrl() . '/search?tag=' . $basetag . ']' . $basetag . '[/url]'; - $item["body"] = str_replace($tag, $newtag, $item["body"]); + $item["body"] = str_replace($tag, $newtag, $item["body"]); - if (!stristr($item["tag"], "/search?tag=" . $basetag . "]" . $basetag . "[/url]")) { - if (strlen($item["tag"])) { - $item["tag"] = ',' . $item["tag"]; - } - $item["tag"] = $newtag . $item["tag"]; + if (!stristr($item["tag"], "/search?tag=" . $basetag . "]" . $basetag . "[/url]")) { + if (strlen($item["tag"])) { + $item["tag"] = ',' . $item["tag"]; } + $item["tag"] = $newtag . $item["tag"]; } } @@ -2465,12 +2462,12 @@ class Item extends BaseObject // Remember! What happens in [code], stays in [code] // roleback the # and [ - $item["body"] = preg_replace_callback("/\[code(.*)\](.*?)\[\/code\]/ism", + $item["body"] = preg_replace_callback("/\[code(.*?)\](.*?)\[\/code\]/ism", function ($match) { // we truly unESCape all sharp and leftsquarebracket $find = [chr(27).'sharp', chr(27).'leftsquarebracket']; $replace = ['#', '[']; - return ("[code" . str_replace($find, $replace, $match[1]) . "]" . $match[2] . "[/code]"); + return ("[code" . $match[1] . "]" . str_replace($find, $replace, $match[2]) . "[/code]"); }, $item["body"]); }