mirror of
https://github.com/friendica/friendica
synced 2024-12-23 12:00:16 +00:00
Merge pull request #11576 from annando/issue-11488
Issue 11488: Don't search for mentions in shared posts
This commit is contained in:
commit
1e68c90fb2
1 changed files with 19 additions and 6 deletions
|
@ -276,7 +276,7 @@ class Tag
|
||||||
public static function getFromBody(string $body, string $tags = null)
|
public static function getFromBody(string $body, string $tags = null)
|
||||||
{
|
{
|
||||||
if (is_null($tags)) {
|
if (is_null($tags)) {
|
||||||
$tags = self::TAG_CHARACTER[self::HASHTAG] . self::TAG_CHARACTER[self::MENTION] . self::TAG_CHARACTER[self::EXCLUSIVE_MENTION];
|
$tags = self::TAG_CHARACTER[self::HASHTAG] . self::TAG_CHARACTER[self::MENTION] . self::TAG_CHARACTER[self::EXCLUSIVE_MENTION];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!preg_match_all("/([" . $tags . "])\[url\=([^\[\]]*)\]([^\[\]]*)\[\/url\]/ism", $body, $result, PREG_SET_ORDER)) {
|
if (!preg_match_all("/([" . $tags . "])\[url\=([^\[\]]*)\]([^\[\]]*)\[\/url\]/ism", $body, $result, PREG_SET_ORDER)) {
|
||||||
|
@ -298,16 +298,29 @@ class Tag
|
||||||
{
|
{
|
||||||
Logger::info('Check for tags', ['uri-id' => $uriid, 'hash' => $tags, 'callstack' => System::callstack()]);
|
Logger::info('Check for tags', ['uri-id' => $uriid, 'hash' => $tags, 'callstack' => System::callstack()]);
|
||||||
|
|
||||||
$result = self::getFromBody($body, $tags);
|
if (is_null($tags)) {
|
||||||
if (empty($result)) {
|
$tags = self::TAG_CHARACTER[self::HASHTAG] . self::TAG_CHARACTER[self::MENTION] . self::TAG_CHARACTER[self::EXCLUSIVE_MENTION];
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::info('Found tags', ['uri-id' => $uriid, 'hash' => $tags, 'result' => $result]);
|
// Only remove the shared data from "real" reshares
|
||||||
|
$shared = BBCode::fetchShareAttributes($body);
|
||||||
|
if (!empty($shared['guid'])) {
|
||||||
|
if (preg_match("/\s*\[share .*?\](.*?)\[\/share\]\s*/ism", $body, $matches)) {
|
||||||
|
$share_body = $matches[1];
|
||||||
|
}
|
||||||
|
$body = preg_replace("/\s*\[share .*?\].*?\[\/share\]\s*/ism", '', $body);
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($result as $tag) {
|
foreach (self::getFromBody($body, $tags) as $tag) {
|
||||||
self::storeByHash($uriid, $tag[1], $tag[3], $tag[2], $probing);
|
self::storeByHash($uriid, $tag[1], $tag[3], $tag[2], $probing);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Search for hashtags in the shared body (but only if hashtags are wanted)
|
||||||
|
if (!empty($share_body) && (strpos($tags, self::TAG_CHARACTER[self::HASHTAG]) !== false)) {
|
||||||
|
foreach (self::getFromBody($share_body, self::TAG_CHARACTER[self::HASHTAG]) as $tag) {
|
||||||
|
self::storeByHash($uriid, $tag[1], $tag[3], $tag[2], $probing);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue