Merge pull request #13881 from annando/valid-object
Ckeck for host differences of fetched activities
This commit is contained in:
commit
98900c33d4
|
@ -1538,6 +1538,11 @@ class Processor
|
||||||
}
|
}
|
||||||
|
|
||||||
$object = HTTPSignature::fetch($url, $uid);
|
$object = HTTPSignature::fetch($url, $uid);
|
||||||
|
|
||||||
|
if (!empty($object)) {
|
||||||
|
$object = self::refetchObjectOnHostDifference($object, $url);
|
||||||
|
}
|
||||||
|
|
||||||
if (empty($object)) {
|
if (empty($object)) {
|
||||||
Logger::notice('Activity was not fetchable, aborting.', ['url' => $url, 'uid' => $uid]);
|
Logger::notice('Activity was not fetchable, aborting.', ['url' => $url, 'uid' => $uid]);
|
||||||
// We perform negative caching.
|
// We perform negative caching.
|
||||||
|
@ -1549,6 +1554,11 @@ class Processor
|
||||||
Logger::notice('Activity has got not id, aborting. ', ['url' => $url, 'object' => $object]);
|
Logger::notice('Activity has got not id, aborting. ', ['url' => $url, 'object' => $object]);
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!self::isValidObject($object, $url)) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
DI::cache()->set($cachekey, $object, Duration::FIVE_MINUTES);
|
DI::cache()->set($cachekey, $object, Duration::FIVE_MINUTES);
|
||||||
|
|
||||||
Logger::debug('Activity was fetched successfully', ['url' => $url, 'uid' => $uid]);
|
Logger::debug('Activity was fetched successfully', ['url' => $url, 'uid' => $uid]);
|
||||||
|
@ -1594,6 +1604,11 @@ class Processor
|
||||||
}
|
}
|
||||||
|
|
||||||
$object = json_decode($body, true);
|
$object = json_decode($body, true);
|
||||||
|
|
||||||
|
if (!empty($object)) {
|
||||||
|
$object = self::refetchObjectOnHostDifference($object, $url);
|
||||||
|
}
|
||||||
|
|
||||||
if (empty($object) || !is_array($object)) {
|
if (empty($object) || !is_array($object)) {
|
||||||
$element = explode(';', $curlResult->getContentType());
|
$element = explode(';', $curlResult->getContentType());
|
||||||
if (!in_array($element[0], ['application/activity+json', 'application/ld+json', 'application/json'])) {
|
if (!in_array($element[0], ['application/activity+json', 'application/ld+json', 'application/json'])) {
|
||||||
|
@ -1604,6 +1619,10 @@ class Processor
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!self::isValidObject($object, $url)) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
$ldobject = JsonLD::compact($object);
|
$ldobject = JsonLD::compact($object);
|
||||||
|
|
||||||
$signer = [];
|
$signer = [];
|
||||||
|
@ -1693,6 +1712,79 @@ class Processor
|
||||||
return $activity['id'];
|
return $activity['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static function refetchObjectOnHostDifference(array $object, string $url): array
|
||||||
|
{
|
||||||
|
$ldobject = JsonLD::compact($object);
|
||||||
|
if (empty($ldobject)) {
|
||||||
|
Logger::info('Invalid object', ['url' => $url]);
|
||||||
|
return $object;
|
||||||
|
}
|
||||||
|
|
||||||
|
$id = JsonLD::fetchElement($ldobject, '@id');
|
||||||
|
if (empty($id)) {
|
||||||
|
Logger::info('No id found in object', ['url' => $url, 'object' => $object]);
|
||||||
|
return $object;
|
||||||
|
}
|
||||||
|
|
||||||
|
$url_host = parse_url($url, PHP_URL_HOST);
|
||||||
|
$id_host = parse_url($id, PHP_URL_HOST);
|
||||||
|
|
||||||
|
if ($id_host == $url_host) {
|
||||||
|
return $object;
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger::notice('Refetch activity because of a host mismatch between requested and received id', ['url-host' => $url_host, 'id-host' => $id_host, 'url' => $url, 'id' => $id]);
|
||||||
|
return HTTPSignature::fetch($id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function isValidObject(array $object): bool
|
||||||
|
{
|
||||||
|
$ldobject = JsonLD::compact($object);
|
||||||
|
if (empty($ldobject)) {
|
||||||
|
Logger::info('Invalid object');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$id = JsonLD::fetchElement($ldobject, '@id');
|
||||||
|
if (empty($id)) {
|
||||||
|
Logger::info('No id found in object');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$type = JsonLD::fetchElement($ldobject, '@type');
|
||||||
|
$object_id = JsonLD::fetchElement($ldobject, 'as:object', '@id');
|
||||||
|
$object_type = JsonLD::fetchElement($ldobject, 'as:object', '@type');
|
||||||
|
$actor = JsonLD::fetchElement($ldobject, 'as:actor', '@id');
|
||||||
|
$attributed_to = JsonLD::fetchElement($ldobject, 'as:attributedTo', '@id');
|
||||||
|
|
||||||
|
$id_host = parse_url($id, PHP_URL_HOST);
|
||||||
|
|
||||||
|
if (!empty($actor) && !in_array($type, Receiver::CONTENT_TYPES) && !empty($object_id)) {
|
||||||
|
$actor_host = parse_url($actor, PHP_URL_HOST);
|
||||||
|
if ($actor_host != $id_host) {
|
||||||
|
Logger::notice('Host mismatch between received id and actor', ['id-host' => $id_host, 'actor-host' => $actor_host, 'id' => $id, 'type' => $type, 'object-id' => $object_id, 'object_type' => $object_type, 'actor' => $actor, 'attributed_to' => $attributed_to]);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!empty($object_type)) {
|
||||||
|
$object_attributed_to = JsonLD::fetchElement($ldobject['as:object'], 'as:attributedTo', '@id');
|
||||||
|
$attributed_to_host = parse_url($object_attributed_to, PHP_URL_HOST);
|
||||||
|
$object_id_host = parse_url($object_id, PHP_URL_HOST);
|
||||||
|
if (!empty($attributed_to_host) && ($attributed_to_host != $object_id_host)) {
|
||||||
|
Logger::notice('Host mismatch between received object id and attributed actor', ['id-object-host' => $object_id_host, 'attributed-host' => $attributed_to_host, 'id' => $id, 'type' => $type, 'object-id' => $object_id, 'object_type' => $object_type, 'actor' => $actor, 'object_attributed_to' => $object_attributed_to]);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} elseif (!empty($attributed_to)) {
|
||||||
|
$attributed_to_host = parse_url($attributed_to, PHP_URL_HOST);
|
||||||
|
if ($attributed_to_host != $id_host) {
|
||||||
|
Logger::notice('Host mismatch between received id and attributed actor', ['id-host' => $id_host, 'attributed-host' => $attributed_to_host, 'id' => $id, 'type' => $type, 'object-id' => $object_id, 'object_type' => $object_type, 'actor' => $actor, 'attributed_to' => $attributed_to]);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private static function getActivityForObject(array $object, string $actor): array
|
private static function getActivityForObject(array $object, string $actor): array
|
||||||
{
|
{
|
||||||
if (!empty($object['published'])) {
|
if (!empty($object['published'])) {
|
||||||
|
|
|
@ -26,6 +26,7 @@ use Friendica\Core\Logger;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Friendica\Core\System;
|
use Friendica\Core\System;
|
||||||
use Friendica\DI;
|
use Friendica\DI;
|
||||||
|
use Friendica\Protocol\ActivityPub;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class contain methods to work with JsonLD data
|
* This class contain methods to work with JsonLD data
|
||||||
|
@ -179,6 +180,10 @@ class JsonLD
|
||||||
|
|
||||||
$orig_json = $json;
|
$orig_json = $json;
|
||||||
|
|
||||||
|
if (empty($json['@context'])) {
|
||||||
|
$json['@context'] = ActivityPub::CONTEXT;
|
||||||
|
}
|
||||||
|
|
||||||
// Preparation for adding possibly missing content to the context
|
// Preparation for adding possibly missing content to the context
|
||||||
if (!empty($json['@context']) && is_string($json['@context'])) {
|
if (!empty($json['@context']) && is_string($json['@context'])) {
|
||||||
$json['@context'] = [$json['@context']];
|
$json['@context'] = [$json['@context']];
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: 2024.03-dev\n"
|
"Project-Id-Version: 2024.03-dev\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-02-04 06:55+0000\n"
|
"POT-Creation-Date: 2024-02-10 11:45+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -38,13 +38,13 @@ msgstr ""
|
||||||
msgid "Empty post discarded."
|
msgid "Empty post discarded."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mod/item.php:432 src/Module/Admin/Themes/Details.php:39
|
#: mod/item.php:433 src/Module/Admin/Themes/Details.php:39
|
||||||
#: src/Module/Admin/Themes/Index.php:59 src/Module/Debug/ItemBody.php:42
|
#: src/Module/Admin/Themes/Index.php:59 src/Module/Debug/ItemBody.php:42
|
||||||
#: src/Module/Debug/ItemBody.php:57 src/Module/Item/Feed.php:80
|
#: src/Module/Debug/ItemBody.php:57 src/Module/Item/Feed.php:80
|
||||||
msgid "Item not found."
|
msgid "Item not found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: mod/item.php:456 mod/message.php:67 mod/message.php:113 mod/notes.php:45
|
#: mod/item.php:457 mod/message.php:67 mod/message.php:113 mod/notes.php:45
|
||||||
#: mod/photos.php:152 mod/photos.php:670 src/Model/Event.php:520
|
#: mod/photos.php:152 mod/photos.php:670 src/Model/Event.php:520
|
||||||
#: src/Module/Attach.php:55 src/Module/BaseApi.php:103
|
#: src/Module/Attach.php:55 src/Module/BaseApi.php:103
|
||||||
#: src/Module/BaseNotifications.php:98 src/Module/BaseSettings.php:50
|
#: src/Module/BaseNotifications.php:98 src/Module/BaseSettings.php:50
|
||||||
|
@ -68,7 +68,7 @@ msgstr ""
|
||||||
#: src/Module/Search/Directory.php:37 src/Module/Settings/Account.php:50
|
#: src/Module/Search/Directory.php:37 src/Module/Settings/Account.php:50
|
||||||
#: src/Module/Settings/Account.php:386 src/Module/Settings/Channels.php:62
|
#: src/Module/Settings/Account.php:386 src/Module/Settings/Channels.php:62
|
||||||
#: src/Module/Settings/Channels.php:135 src/Module/Settings/Delegation.php:90
|
#: src/Module/Settings/Channels.php:135 src/Module/Settings/Delegation.php:90
|
||||||
#: src/Module/Settings/Display.php:90 src/Module/Settings/Display.php:197
|
#: src/Module/Settings/Display.php:90 src/Module/Settings/Display.php:199
|
||||||
#: src/Module/Settings/Profile/Photo/Crop.php:165
|
#: src/Module/Settings/Profile/Photo/Crop.php:165
|
||||||
#: src/Module/Settings/Profile/Photo/Index.php:112
|
#: src/Module/Settings/Profile/Photo/Index.php:112
|
||||||
#: src/Module/Settings/RemoveMe.php:119 src/Module/Settings/UserExport.php:80
|
#: src/Module/Settings/RemoveMe.php:119 src/Module/Settings/UserExport.php:80
|
||||||
|
@ -1781,7 +1781,7 @@ msgstr ""
|
||||||
msgid "Create new group"
|
msgid "Create new group"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Item.php:332 src/Model/Item.php:3250
|
#: src/Content/Item.php:332 src/Model/Item.php:3254
|
||||||
msgid "event"
|
msgid "event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1789,7 +1789,7 @@ msgstr ""
|
||||||
msgid "status"
|
msgid "status"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Item.php:341 src/Model/Item.php:3252
|
#: src/Content/Item.php:341 src/Model/Item.php:3256
|
||||||
#: src/Module/Post/Tag/Add.php:123
|
#: src/Module/Post/Tag/Add.php:123
|
||||||
msgid "photo"
|
msgid "photo"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1947,7 +1947,7 @@ msgstr ""
|
||||||
#: src/Content/Nav.php:233 src/Content/Nav.php:293
|
#: src/Content/Nav.php:233 src/Content/Nav.php:293
|
||||||
#: src/Module/BaseProfile.php:85 src/Module/BaseProfile.php:88
|
#: src/Module/BaseProfile.php:85 src/Module/BaseProfile.php:88
|
||||||
#: src/Module/BaseProfile.php:96 src/Module/BaseProfile.php:99
|
#: src/Module/BaseProfile.php:96 src/Module/BaseProfile.php:99
|
||||||
#: src/Module/Settings/Display.php:316 view/theme/frio/theme.php:236
|
#: src/Module/Settings/Display.php:319 view/theme/frio/theme.php:236
|
||||||
#: view/theme/frio/theme.php:240
|
#: view/theme/frio/theme.php:240
|
||||||
msgid "Calendar"
|
msgid "Calendar"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -2201,8 +2201,8 @@ msgid ""
|
||||||
"<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
|
"<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Content/Text/BBCode.php:1005 src/Model/Item.php:3983
|
#: src/Content/Text/BBCode.php:1005 src/Model/Item.php:3993
|
||||||
#: src/Model/Item.php:3989 src/Model/Item.php:3990
|
#: src/Model/Item.php:3999 src/Model/Item.php:4000
|
||||||
msgid "Link to source"
|
msgid "Link to source"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2388,7 +2388,7 @@ msgstr ""
|
||||||
|
|
||||||
#: src/Content/Widget.php:592 src/Module/Admin/Site.php:472
|
#: src/Content/Widget.php:592 src/Module/Admin/Site.php:472
|
||||||
#: src/Module/BaseSettings.php:125 src/Module/Settings/Channels.php:219
|
#: src/Module/BaseSettings.php:125 src/Module/Settings/Channels.php:219
|
||||||
#: src/Module/Settings/Display.php:315
|
#: src/Module/Settings/Display.php:318
|
||||||
msgid "Channels"
|
msgid "Channels"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2869,7 +2869,7 @@ msgstr ""
|
||||||
msgid "Could not connect to database."
|
msgid "Could not connect to database."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:444 src/Model/Item.php:2294
|
#: src/Core/L10n.php:444 src/Model/Item.php:2298
|
||||||
msgid "Undetermined"
|
msgid "Undetermined"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2879,37 +2879,37 @@ msgid "%s (%s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:499 src/Model/Event.php:430
|
#: src/Core/L10n.php:499 src/Model/Event.php:430
|
||||||
#: src/Module/Settings/Display.php:284
|
#: src/Module/Settings/Display.php:287
|
||||||
msgid "Monday"
|
msgid "Monday"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:499 src/Model/Event.php:431
|
#: src/Core/L10n.php:499 src/Model/Event.php:431
|
||||||
#: src/Module/Settings/Display.php:285
|
#: src/Module/Settings/Display.php:288
|
||||||
msgid "Tuesday"
|
msgid "Tuesday"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:499 src/Model/Event.php:432
|
#: src/Core/L10n.php:499 src/Model/Event.php:432
|
||||||
#: src/Module/Settings/Display.php:286
|
#: src/Module/Settings/Display.php:289
|
||||||
msgid "Wednesday"
|
msgid "Wednesday"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:499 src/Model/Event.php:433
|
#: src/Core/L10n.php:499 src/Model/Event.php:433
|
||||||
#: src/Module/Settings/Display.php:287
|
#: src/Module/Settings/Display.php:290
|
||||||
msgid "Thursday"
|
msgid "Thursday"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:499 src/Model/Event.php:434
|
#: src/Core/L10n.php:499 src/Model/Event.php:434
|
||||||
#: src/Module/Settings/Display.php:288
|
#: src/Module/Settings/Display.php:291
|
||||||
msgid "Friday"
|
msgid "Friday"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:499 src/Model/Event.php:435
|
#: src/Core/L10n.php:499 src/Model/Event.php:435
|
||||||
#: src/Module/Settings/Display.php:289
|
#: src/Module/Settings/Display.php:292
|
||||||
msgid "Saturday"
|
msgid "Saturday"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Core/L10n.php:499 src/Model/Event.php:429
|
#: src/Core/L10n.php:499 src/Model/Event.php:429
|
||||||
#: src/Module/Settings/Display.php:283
|
#: src/Module/Settings/Display.php:286
|
||||||
msgid "Sunday"
|
msgid "Sunday"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -3358,17 +3358,17 @@ msgid "today"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Event.php:463 src/Module/Calendar/Show.php:129
|
#: src/Model/Event.php:463 src/Module/Calendar/Show.php:129
|
||||||
#: src/Module/Settings/Display.php:294 src/Util/Temporal.php:353
|
#: src/Module/Settings/Display.php:297 src/Util/Temporal.php:353
|
||||||
msgid "month"
|
msgid "month"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Event.php:464 src/Module/Calendar/Show.php:130
|
#: src/Model/Event.php:464 src/Module/Calendar/Show.php:130
|
||||||
#: src/Module/Settings/Display.php:295 src/Util/Temporal.php:354
|
#: src/Module/Settings/Display.php:298 src/Util/Temporal.php:354
|
||||||
msgid "week"
|
msgid "week"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Event.php:465 src/Module/Calendar/Show.php:131
|
#: src/Model/Event.php:465 src/Module/Calendar/Show.php:131
|
||||||
#: src/Module/Settings/Display.php:296 src/Util/Temporal.php:355
|
#: src/Module/Settings/Display.php:299 src/Util/Temporal.php:355
|
||||||
msgid "day"
|
msgid "day"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -3431,91 +3431,91 @@ msgstr ""
|
||||||
msgid "Happy Birthday %s"
|
msgid "Happy Birthday %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:2301
|
#: src/Model/Item.php:2305
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s (%s - %s): %s"
|
msgid "%s (%s - %s): %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:2303
|
#: src/Model/Item.php:2307
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s (%s): %s"
|
msgid "%s (%s): %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:2306
|
#: src/Model/Item.php:2310
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Detected languages in this post:\\n%s"
|
msgid "Detected languages in this post:\\n%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3254
|
#: src/Model/Item.php:3258
|
||||||
msgid "activity"
|
msgid "activity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3256
|
#: src/Model/Item.php:3260
|
||||||
msgid "comment"
|
msgid "comment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3259 src/Module/Post/Tag/Add.php:123
|
#: src/Model/Item.php:3263 src/Module/Post/Tag/Add.php:123
|
||||||
msgid "post"
|
msgid "post"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3429
|
#: src/Model/Item.php:3434
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s is blocked"
|
msgid "%s is blocked"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3431
|
#: src/Model/Item.php:3436
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s is ignored"
|
msgid "%s is ignored"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3433
|
#: src/Model/Item.php:3438
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Content from %s is collapsed"
|
msgid "Content from %s is collapsed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3437
|
#: src/Model/Item.php:3442
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Content warning: %s"
|
msgid "Content warning: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3890
|
#: src/Model/Item.php:3900
|
||||||
msgid "bytes"
|
msgid "bytes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3921
|
#: src/Model/Item.php:3931
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%2$s (%3$d%%, %1$d vote)"
|
msgid "%2$s (%3$d%%, %1$d vote)"
|
||||||
msgid_plural "%2$s (%3$d%%, %1$d votes)"
|
msgid_plural "%2$s (%3$d%%, %1$d votes)"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3923
|
#: src/Model/Item.php:3933
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%2$s (%1$d vote)"
|
msgid "%2$s (%1$d vote)"
|
||||||
msgid_plural "%2$s (%1$d votes)"
|
msgid_plural "%2$s (%1$d votes)"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3928
|
#: src/Model/Item.php:3938
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d voter. Poll end: %s"
|
msgid "%d voter. Poll end: %s"
|
||||||
msgid_plural "%d voters. Poll end: %s"
|
msgid_plural "%d voters. Poll end: %s"
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3930
|
#: src/Model/Item.php:3940
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%d voter."
|
msgid "%d voter."
|
||||||
msgid_plural "%d voters."
|
msgid_plural "%d voters."
|
||||||
msgstr[0] ""
|
msgstr[0] ""
|
||||||
msgstr[1] ""
|
msgstr[1] ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3932
|
#: src/Model/Item.php:3942
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Poll end: %s"
|
msgid "Poll end: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Model/Item.php:3966 src/Model/Item.php:3967
|
#: src/Model/Item.php:3976 src/Model/Item.php:3977
|
||||||
msgid "View on separate page"
|
msgid "View on separate page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -3953,7 +3953,7 @@ msgid "Disable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Addons/Details.php:91
|
#: src/Module/Admin/Addons/Details.php:91
|
||||||
#: src/Module/Admin/Themes/Details.php:49 src/Module/Settings/Display.php:340
|
#: src/Module/Admin/Themes/Details.php:49 src/Module/Settings/Display.php:344
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -4003,7 +4003,7 @@ msgstr ""
|
||||||
#: src/Module/Settings/Account.php:551 src/Module/Settings/Addons.php:78
|
#: src/Module/Settings/Account.php:551 src/Module/Settings/Addons.php:78
|
||||||
#: src/Module/Settings/Connectors.php:160
|
#: src/Module/Settings/Connectors.php:160
|
||||||
#: src/Module/Settings/Connectors.php:246
|
#: src/Module/Settings/Connectors.php:246
|
||||||
#: src/Module/Settings/Delegation.php:193 src/Module/Settings/Display.php:309
|
#: src/Module/Settings/Delegation.php:193 src/Module/Settings/Display.php:312
|
||||||
#: src/Module/Settings/Features.php:76
|
#: src/Module/Settings/Features.php:76
|
||||||
msgid "Save Settings"
|
msgid "Save Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -4364,11 +4364,11 @@ msgstr ""
|
||||||
msgid "%s is no valid input for maximum image size"
|
msgid "%s is no valid input for maximum image size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:370 src/Module/Settings/Display.php:215
|
#: src/Module/Admin/Site.php:370 src/Module/Settings/Display.php:217
|
||||||
msgid "No special theme for mobile devices"
|
msgid "No special theme for mobile devices"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Admin/Site.php:387 src/Module/Settings/Display.php:225
|
#: src/Module/Admin/Site.php:387 src/Module/Settings/Display.php:227
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s - (Experimental)"
|
msgid "%s - (Experimental)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -6235,7 +6235,7 @@ msgstr ""
|
||||||
msgid "Create New Event"
|
msgid "Create New Event"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Calendar/Show.php:132 src/Module/Settings/Display.php:297
|
#: src/Module/Calendar/Show.php:132 src/Module/Settings/Display.php:300
|
||||||
msgid "list"
|
msgid "list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -9014,12 +9014,12 @@ msgstr ""
|
||||||
msgid "The Photo with id %s is not available."
|
msgid "The Photo with id %s is not available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Photo.php:192
|
#: src/Module/Photo.php:194
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Invalid external resource with url %s."
|
msgid "Invalid external resource with url %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Photo.php:194
|
#: src/Module/Photo.php:196
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Invalid photo with id %s."
|
msgid "Invalid photo with id %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -10177,12 +10177,12 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Channels.php:184 src/Module/Settings/Channels.php:205
|
#: src/Module/Settings/Channels.php:184 src/Module/Settings/Channels.php:205
|
||||||
#: src/Module/Settings/Display.php:338
|
#: src/Module/Settings/Display.php:342
|
||||||
msgid "Label"
|
msgid "Label"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Channels.php:185 src/Module/Settings/Channels.php:206
|
#: src/Module/Settings/Channels.php:185 src/Module/Settings/Channels.php:206
|
||||||
#: src/Module/Settings/Display.php:339
|
#: src/Module/Settings/Display.php:343
|
||||||
#: src/Module/Settings/TwoFactor/AppSpecific.php:137
|
#: src/Module/Settings/TwoFactor/AppSpecific.php:137
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -10578,180 +10578,189 @@ msgstr ""
|
||||||
msgid "No entries."
|
msgid "No entries."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:183
|
#: src/Module/Settings/Display.php:185
|
||||||
msgid "The theme you chose isn't available."
|
msgid "The theme you chose isn't available."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:223
|
#: src/Module/Settings/Display.php:225
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "%s - (Unsupported)"
|
msgid "%s - (Unsupported)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:260
|
#: src/Module/Settings/Display.php:263
|
||||||
msgid "No preview"
|
msgid "No preview"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:261
|
#: src/Module/Settings/Display.php:264
|
||||||
msgid "No image"
|
msgid "No image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:262
|
#: src/Module/Settings/Display.php:265
|
||||||
msgid "Small Image"
|
msgid "Small Image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:263
|
#: src/Module/Settings/Display.php:266
|
||||||
msgid "Large Image"
|
msgid "Large Image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:308
|
#: src/Module/Settings/Display.php:311
|
||||||
msgid "Display Settings"
|
msgid "Display Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:310
|
#: src/Module/Settings/Display.php:313
|
||||||
msgid "General Theme Settings"
|
msgid "General Theme Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:311
|
#: src/Module/Settings/Display.php:314
|
||||||
msgid "Custom Theme Settings"
|
msgid "Custom Theme Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:312
|
#: src/Module/Settings/Display.php:315
|
||||||
msgid "Content Settings"
|
msgid "Content Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:313 view/theme/duepuntozero/config.php:86
|
#: src/Module/Settings/Display.php:316 view/theme/duepuntozero/config.php:86
|
||||||
#: view/theme/frio/config.php:172 view/theme/quattro/config.php:88
|
#: view/theme/frio/config.php:172 view/theme/quattro/config.php:88
|
||||||
#: view/theme/vier/config.php:136
|
#: view/theme/vier/config.php:136
|
||||||
msgid "Theme settings"
|
msgid "Theme settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:314
|
#: src/Module/Settings/Display.php:317
|
||||||
msgid "Timelines"
|
msgid "Timelines"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:321
|
#: src/Module/Settings/Display.php:324
|
||||||
msgid "Display Theme:"
|
msgid "Display Theme:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:322
|
#: src/Module/Settings/Display.php:325
|
||||||
msgid "Mobile Theme:"
|
msgid "Mobile Theme:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:325
|
#: src/Module/Settings/Display.php:328
|
||||||
msgid "Number of items to display per page:"
|
msgid "Number of items to display per page:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:325 src/Module/Settings/Display.php:326
|
#: src/Module/Settings/Display.php:328 src/Module/Settings/Display.php:329
|
||||||
msgid "Maximum of 100 items"
|
msgid "Maximum of 100 items"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:326
|
#: src/Module/Settings/Display.php:329
|
||||||
msgid "Number of items to display per page when viewed from mobile device:"
|
msgid "Number of items to display per page when viewed from mobile device:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:327
|
#: src/Module/Settings/Display.php:330
|
||||||
msgid "Update browser every xx seconds"
|
msgid "Update browser every xx seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:327
|
#: src/Module/Settings/Display.php:330
|
||||||
msgid "Minimum of 10 seconds. Enter -1 to disable it."
|
msgid "Minimum of 10 seconds. Enter -1 to disable it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:328
|
#: src/Module/Settings/Display.php:331
|
||||||
msgid "Display emoticons"
|
msgid "Display emoticons"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:328
|
#: src/Module/Settings/Display.php:331
|
||||||
msgid "When enabled, emoticons are replaced with matching symbols."
|
msgid "When enabled, emoticons are replaced with matching symbols."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:329
|
#: src/Module/Settings/Display.php:332
|
||||||
msgid "Infinite scroll"
|
msgid "Infinite scroll"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:329
|
#: src/Module/Settings/Display.php:332
|
||||||
msgid "Automatic fetch new items when reaching the page end."
|
msgid "Automatic fetch new items when reaching the page end."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:330
|
#: src/Module/Settings/Display.php:333
|
||||||
msgid "Enable Smart Threading"
|
msgid "Enable Smart Threading"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:330
|
#: src/Module/Settings/Display.php:333
|
||||||
msgid "Enable the automatic suppression of extraneous thread indentation."
|
msgid "Enable the automatic suppression of extraneous thread indentation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:331
|
#: src/Module/Settings/Display.php:334
|
||||||
msgid "Display the Dislike feature"
|
msgid "Display the Dislike feature"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:331
|
#: src/Module/Settings/Display.php:334
|
||||||
msgid "Display the Dislike button and dislike reactions on posts and comments."
|
msgid "Display the Dislike button and dislike reactions on posts and comments."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:332
|
#: src/Module/Settings/Display.php:335
|
||||||
msgid "Display the resharer"
|
msgid "Display the resharer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:332
|
#: src/Module/Settings/Display.php:335
|
||||||
msgid "Display the first resharer as icon and text on a reshared item."
|
msgid "Display the first resharer as icon and text on a reshared item."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:333
|
#: src/Module/Settings/Display.php:336
|
||||||
|
msgid "Display sensitive content"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Module/Settings/Display.php:336
|
||||||
|
msgid ""
|
||||||
|
"If enabled, pictures in posts marked as \"sensitive\" will not be blurred."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/Module/Settings/Display.php:337
|
||||||
msgid "Stay local"
|
msgid "Stay local"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:333
|
#: src/Module/Settings/Display.php:337
|
||||||
msgid "Don't go to a remote system when following a contact link."
|
msgid "Don't go to a remote system when following a contact link."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:334
|
#: src/Module/Settings/Display.php:338
|
||||||
msgid "Show the post deletion checkbox"
|
msgid "Show the post deletion checkbox"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:334
|
#: src/Module/Settings/Display.php:338
|
||||||
msgid "Display the checkbox for the post deletion on the network page."
|
msgid "Display the checkbox for the post deletion on the network page."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:335
|
#: src/Module/Settings/Display.php:339
|
||||||
msgid "DIsplay the event list"
|
msgid "DIsplay the event list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:335
|
#: src/Module/Settings/Display.php:339
|
||||||
msgid "Display the birthday reminder and event list on the network page."
|
msgid "Display the birthday reminder and event list on the network page."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:336
|
#: src/Module/Settings/Display.php:340
|
||||||
msgid "Link preview mode"
|
msgid "Link preview mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:336
|
#: src/Module/Settings/Display.php:340
|
||||||
msgid "Appearance of the link preview that is added to each post with a link."
|
msgid "Appearance of the link preview that is added to each post with a link."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:341
|
#: src/Module/Settings/Display.php:345
|
||||||
msgid "Bookmark"
|
msgid "Bookmark"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:343
|
#: src/Module/Settings/Display.php:347
|
||||||
msgid ""
|
msgid ""
|
||||||
"Enable timelines that you want to see in the channels widget. Bookmark "
|
"Enable timelines that you want to see in the channels widget. Bookmark "
|
||||||
"timelines that you want to see in the top menu."
|
"timelines that you want to see in the top menu."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:345
|
#: src/Module/Settings/Display.php:349
|
||||||
msgid "Channel languages:"
|
msgid "Channel languages:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:345
|
#: src/Module/Settings/Display.php:349
|
||||||
msgid "Select all languages that you want to see in your channels."
|
msgid "Select all languages that you want to see in your channels."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:347
|
#: src/Module/Settings/Display.php:351
|
||||||
msgid "Beginning of week:"
|
msgid "Beginning of week:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/Module/Settings/Display.php:348
|
#: src/Module/Settings/Display.php:352
|
||||||
msgid "Default calendar view:"
|
msgid "Default calendar view:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user