use Friendica\Util\Network;
use Friendica\Util\Strings;
use Friendica\Worker\Delivery;
-use Text_LanguageDetect;
use Friendica\Repository\PermissionSet as RepPermissionSet;
+use LanguageDetection\Language;
class Item
{
$item['plink'] = ($item['plink'] ?? '') ?: DI::baseUrl() . '/display/' . urlencode($item['guid']);
- $item['language'] = self::getLanguage($item);
-
$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);
if (!in_array($item['verb'], self::ACTIVITIES)) {
$item['icid'] = self::insertContent($item);
+ if (empty($item['icid'])) {
+ // This most likely happens when identical posts arrives from different sources at the same time
+ Logger::warning('No content stored, quitting', ['guid' => $item['guid'], 'uri-id' => $item['uri-id'], 'causer-id' => ($item['causer-id'] ?? 0), 'post-type' => $item['post-type'], 'network' => $item['network']]);
+ return 0;
+ }
}
$body = $item['body'];
*/
private static function getLanguage(array $item)
{
+ if (!in_array($item['gravity'], [GRAVITY_PARENT, GRAVITY_COMMENT])) {
+ return '';
+ }
+
$naked_body = BBCode::toPlaintext($item['body'], false);
- $ld = new Text_LanguageDetect();
- $ld->setNameMode(2);
- $languages = $ld->detect($naked_body, 3);
+ $ld = new Language();
+ $languages = $ld->detect($naked_body)->limit(0, 3)->close();
if (is_array($languages)) {
return json_encode($languages);
}
DI::page()['htmlhead'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('videos_head.tpl'));
}
- $url_parts = explode('/', $the_url);
- $id = end($url_parts);
$as .= Renderer::replaceMacros(Renderer::getMarkupTemplate('video_top.tpl'), [
'$video' => [
- 'id' => $id,
+ 'id' => $item['author-id'],
'title' => DI::l10n()->t('View Video'),
'src' => $the_url,
'mime' => $mime,