// Check for hashtags in the body and repair or add hashtag links
$item['body'] = self::setHashtags($item['body']);
- $item['language'] = self::getLanguage($item);
-
$notify_type = Delivery::POST;
// Filling item related side tables
}
}
+ $item['language'] = self::getLanguage($item);
+
$inserted = Post::insert($item['uri-id'], $item);
if ($item['gravity'] == self::GRAVITY_PARENT) {
return '';
}
- $languages = self::getLanguageArray(trim($item['title'] . "\n" . $item['body']), 3, $item['uri-id'], $item['author-id']);
+ $languages = self::getLanguageArray($item['title'] . ' ' . ($item['content-warning'] ?? '') . ' ' . $item['body'], 3, $item['uri-id'], $item['author-id']);
if (empty($languages)) {
return '';
}
$body .= ' ' . $item['title'] . ' ' . $item['content-warning'] . ' ' . $item['body'];
- $body = preg_replace("~\[url\=.*\]https?:.*\[\/url\]~", '', $body);
-
- $body = Post\Media::addAttachmentsToBody($item['uri-id'], $body, [Post\Media::IMAGE]);
- $text = BBCode::toPlaintext($body, false);
- $text = preg_replace(Strings::autoLinkRegEx(), '', $text);
-
- do {
- $oldtext = $text;
- $text = str_replace([' ', "\n", "\r"], ' ', $text);
- } while ($oldtext != $text);
-
- return $text;
+ return BBCode::toSearchText($body, $item['uri-id']);
}
private static function getMediaType(int $uri_id): int
$attributed_to = JsonLD::fetchElement($activity['as:object'], 'as:attributedTo', '@id');
$authorid = Contact::getIdForURL($attributed_to);
- $body = HTML::toBBCode(JsonLD::fetchElement($activity['as:object'], 'as:content', '@value') ?? '');
+ $content = JsonLD::fetchElement($activity['as:object'], 'as:name', '@value') ?? '';
+ $content .= ' ' . JsonLD::fetchElement($activity['as:object'], 'as:summary', '@value') ?? '';
+ $content .= ' ' . HTML::toBBCode(JsonLD::fetchElement($activity['as:object'], 'as:content', '@value') ?? '');
+
+ $attachments = JsonLD::fetchElementArray($activity['as:object'], 'as:attachment') ?? [];
+ foreach ($attachments as $media) {
+ if (!empty($media['as:summary'])) {
+ $content .= ' ' . JsonLD::fetchElement($media, 'as:summary', '@value');
+ }
+ if (!empty($media['as:name'])) {
+ $content .= ' ' . JsonLD::fetchElement($media, 'as:name', '@value');
+ }
+ }
$messageTags = [];
$tags = Receiver::processTags(JsonLD::fetchElementArray($activity['as:object'], 'as:tag') ?? []);
}
}
- return Relay::isSolicitedPost($messageTags, $body, $authorid, $id, Protocol::ACTIVITYPUB, $activity['thread-completion'] ?? 0);
+ return Relay::isSolicitedPost($messageTags, $content, $authorid, $id, Protocol::ACTIVITYPUB, $activity['thread-completion'] ?? 0);
}
/**
}
}
- if (!self::isWantedLanguage($body)) {
+ if (!self::isWantedLanguage($body, 0, $authorid)) {
Logger::info('Unwanted or Undetected language found - rejected', ['network' => $network, 'url' => $url, 'causer' => $causer, 'tags' => $tags]);
return false;
}
* Detect the language of a post and decide if the post should be accepted
*
* @param string $body
+ * @param int $uri_id
+ * @param int $author_id
* @return boolean
*/
- public static function isWantedLanguage(string $body)
+ public static function isWantedLanguage(string $body, int $uri_id = 0, int $author_id = 0)
{
$languages = [];
- foreach (Item::getLanguageArray($body, 10) as $language => $reliability) {
+ foreach (Item::getLanguageArray($body, 10, $uri_id, $author_id) as $language => $reliability) {
if ($reliability > 0) {
$languages[] = $language;
}