if ($item['uid'] == $uid) {
self::markForDeletionById($item['id'], PRIORITY_HIGH);
} elseif ($item['uid'] != 0) {
- Logger::notice('Wrong ownership. Not deleting item', ['id' => $item['id']]);
+ Logger::warning('Wrong ownership. Not deleting item', ['id' => $item['id']]);
}
}
DBA::close($items);
if (!empty($item['uid'])) {
$owner = User::getOwnerDataById($item['uid'], false);
if (!$owner) {
- Logger::notice('Missing item user owner data', ['uid' => $item['uid']]);
+ Logger::warning('Missing item user owner data', ['uid' => $item['uid']]);
return false;
}
return 0;
}
+ /**
+ * Fetch the uri-id of the parent for the given uri-id
+ *
+ * @param integer $uriid
+ * @return integer
+ */
+ public static function getParent(int $uriid): int
+ {
+ $thread_parent = Post::selectFirstPost(['thr-parent-id', 'gravity'], ['uri-id' => $uriid]);
+ if (empty($thread_parent)) {
+ return 0;
+ }
+
+ if ($thread_parent['gravity'] == GRAVITY_PARENT) {
+ return $uriid;
+ }
+
+ return self::getParent($thread_parent['thr-parent-id']);
+ }
+
/**
* Fetch top-level parent data for the given item array
*
$item['gravity'] = self::getGravity($item);
- $item['language'] = self::getLanguage($item);
-
$default = ['url' => $item['author-link'], 'name' => $item['author-name'],
'photo' => $item['author-avatar'], 'network' => $item['network']];
$item['author-id'] = ($item['author-id'] ?? 0) ?: Contact::getIdForURL($item['author-link'], 0, null, $default);
// 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
return '';
}
+ $naked_body = self::getDominantLanguage($naked_body);
+
$availableLanguages = DI::l10n()->getAvailableLanguages();
// See https://github.com/friendica/friendica/issues/10511
// Persian is manually added to language detection until a persian translation is provided for the interface, at
return '';
}
+ /**
+ * Check if latin or non latin are dominant in the body and only return the dominant one
+ *
+ * @param string $body
+ * @return string
+ */
+ private static function getDominantLanguage(string $body): string
+ {
+ $latin = '';
+ $non_latin = '';
+ for ($i = 0; $i < mb_strlen($body); $i++) {
+ $character = mb_substr($body, $i, 1);
+ $ord = mb_ord($character);
+
+ // We add the most common characters to both strings.
+ if (($ord <= 64) || ($ord >= 91 && $ord <= 96) || ($ord >= 123 && $ord <= 191) || in_array($ord, [215, 247]) || ($ord >= 697 && $ord <= 735) || ($ord > 65535)) {
+ $latin .= $character;
+ $non_latin .= $character;
+ } elseif ($ord < 768) {
+ $latin .= $character;
+ } else {
+ $non_latin .= $character;
+ }
+ }
+ return (mb_strlen($latin) > mb_strlen($non_latin)) ? $latin : $non_latin;
+ }
+
public static function getLanguageMessage(array $item): string
{
$iso639 = new \Matriphe\ISO639\ISO639;
$item = Post::selectFirst(self::ITEM_FIELDLIST, ['id' => $item_id]);
if (!DBA::isResult($item)) {
- Logger::notice('like: unknown item', ['id' => $item_id]);
+ Logger::warning('Post had not been fetched', ['id' => $item_id]);
return false;
}
$activity = Activity::ANNOUNCE;
break;
default:
- Logger::notice('unknown verb', ['verb' => $verb, 'item' => $item_id]);
+ Logger::warning('unknown verb', ['verb' => $verb, 'item' => $item_id]);
return false;
}
'unseen' => 1,
];
- $signed = Diaspora::createLikeSignature($uid, $new_item);
- if (!empty($signed)) {
- $new_item['diaspora_signed_text'] = json_encode($signed);
+ if (in_array($activity, [Activity::LIKE, Activity::DISLIKE])) {
+ $signed = Diaspora::createLikeSignature($uid, $new_item);
+ if (!empty($signed)) {
+ $new_item['diaspora_signed_text'] = json_encode($signed);
+ }
}
self::insert($new_item, true);