1
1
Fork 0

Merge pull request #12243 from annando/remote-self

No more automated posts via mod/item.php
This commit is contained in:
Hypolite Petovan 2022-11-23 10:00:06 -05:00 committed by GitHub
commit c356c962f1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 131 additions and 148 deletions

View file

@ -77,8 +77,6 @@ function item_post(App $a) {
Logger::debug('postvars', ['_REQUEST' => $_REQUEST]); Logger::debug('postvars', ['_REQUEST' => $_REQUEST]);
$api_source = $_REQUEST['api_source'] ?? false;
$return_path = $_REQUEST['return'] ?? ''; $return_path = $_REQUEST['return'] ?? '';
$preview = intval($_REQUEST['preview'] ?? 0); $preview = intval($_REQUEST['preview'] ?? 0);
@ -90,7 +88,7 @@ function item_post(App $a) {
if (!$preview && !empty($_REQUEST['post_id_random'])) { if (!$preview && !empty($_REQUEST['post_id_random'])) {
if (!empty($_SESSION['post-random']) && $_SESSION['post-random'] == $_REQUEST['post_id_random']) { if (!empty($_SESSION['post-random']) && $_SESSION['post-random'] == $_REQUEST['post_id_random']) {
Logger::warning('duplicate post'); Logger::warning('duplicate post');
item_post_return(DI::baseUrl(), $api_source, $return_path); item_post_return(DI::baseUrl(), $return_path);
} else { } else {
$_SESSION['post-random'] = $_REQUEST['post_id_random']; $_SESSION['post-random'] = $_REQUEST['post_id_random'];
} }
@ -106,7 +104,7 @@ function item_post(App $a) {
$toplevel_user_id = null; $toplevel_user_id = null;
$objecttype = null; $objecttype = null;
$profile_uid = ($_REQUEST['profile_uid'] ?? 0) ?: DI::userSession()->getLocalUserId(); $profile_uid = DI::userSession()->getLocalUserId();
$posttype = ($_REQUEST['post_type'] ?? '') ?: Item::PT_ARTICLE; $posttype = ($_REQUEST['post_type'] ?? '') ?: Item::PT_ARTICLE;
if ($parent_item_id || $thr_parent_uri) { if ($parent_item_id || $thr_parent_uri) {
@ -177,7 +175,7 @@ function item_post(App $a) {
// Now check that valid personal details have been provided // Now check that valid personal details have been provided
if (!Security::canWriteToUserWall($profile_uid) && !$allow_comment) { if (!Security::canWriteToUserWall($profile_uid) && !$allow_comment) {
Logger::warning('Permission denied.', ['local' => DI::userSession()->getLocalUserId(), 'profile_uid' => $profile_uid, 'toplevel_item_id' => $toplevel_item_id, 'network' => $toplevel_item['network']]); Logger::warning('Permission denied.', ['local' => DI::userSession()->getLocalUserId(), 'toplevel_item_id' => $toplevel_item_id, 'network' => $toplevel_item['network']]);
DI::sysmsg()->addNotice(DI::l10n()->t('Permission denied.')); DI::sysmsg()->addNotice(DI::l10n()->t('Permission denied.'));
if ($return_path) { if ($return_path) {
DI::baseUrl()->redirect($return_path); DI::baseUrl()->redirect($return_path);
@ -322,13 +320,6 @@ function item_post(App $a) {
$pubmail_enabled = ($_REQUEST['pubmail_enable'] ?? false) && !$private; $pubmail_enabled = ($_REQUEST['pubmail_enable'] ?? false) && !$private;
// if using the API, we won't see pubmail_enable - figure out if it should be set
if ($api_source && $profile_uid && $profile_uid == DI::userSession()->getLocalUserId() && !$private) {
if (function_exists('imap_open') && !DI::config()->get('system', 'imap_disabled')) {
$pubmail_enabled = DBA::exists('mailacct', ["`uid` = ? AND `server` != ? AND `pubmail`", DI::userSession()->getLocalUserId(), '']);
}
}
if (!strlen($body)) { if (!strlen($body)) {
if ($preview) { if ($preview) {
System::jsonExit(['preview' => '']); System::jsonExit(['preview' => '']);
@ -579,7 +570,7 @@ function item_post(App $a) {
'parent' => $toplevel_item_id, 'parent' => $toplevel_item_id,
'self' => $self, 'self' => $self,
// This triggers posts via API and the mirror functions // This triggers posts via API and the mirror functions
'api_source' => $api_source, 'api_source' => false,
// This field is for storing the raw conversation data // This field is for storing the raw conversation data
'protocol' => Conversation::PARCEL_DIRECT, 'protocol' => Conversation::PARCEL_DIRECT,
'direction' => Conversation::PUSH, 'direction' => Conversation::PUSH,
@ -634,7 +625,7 @@ function item_post(App $a) {
unset($datarray['api_source']); unset($datarray['api_source']);
Post\Delayed::add($datarray['uri'], $datarray, Worker::PRIORITY_HIGH, Post\Delayed::PREPARED_NO_HOOK, $scheduled_at); Post\Delayed::add($datarray['uri'], $datarray, Worker::PRIORITY_HIGH, Post\Delayed::PREPARED_NO_HOOK, $scheduled_at);
item_post_return(DI::baseUrl(), $api_source, $return_path); item_post_return(DI::baseUrl(), $return_path);
} }
} }
@ -755,20 +746,12 @@ function item_post(App $a) {
Logger::debug('post_complete'); Logger::debug('post_complete');
if ($api_source) { item_post_return(DI::baseUrl(), $return_path);
return $post_id;
}
item_post_return(DI::baseUrl(), $api_source, $return_path);
// NOTREACHED // NOTREACHED
} }
function item_post_return($baseurl, $api_source, $return_path) function item_post_return($baseurl, $return_path)
{ {
if ($api_source) {
return;
}
if ($return_path) { if ($return_path) {
DI::baseUrl()->redirect($return_path); DI::baseUrl()->redirect($return_path);
} }

View file

@ -119,7 +119,6 @@ function oexchange_content(App $a)
$post = []; $post = [];
$post['profile_uid'] = DI::userSession()->getLocalUserId();
$post['return'] = '/oexchange/done'; $post['return'] = '/oexchange/done';
$post['body'] = HTML::toBBCode($s); $post['body'] = HTML::toBBCode($s);

View file

@ -106,7 +106,7 @@ class Contact
*/ */
const MIRROR_DEACTIVATED = 0; const MIRROR_DEACTIVATED = 0;
const MIRROR_FORWARDED = 1; const MIRROR_FORWARDED = 1; // Deprecated, now does the same like MIRROR_OWN_POST
const MIRROR_OWN_POST = 2; const MIRROR_OWN_POST = 2;
const MIRROR_NATIVE_RESHARE = 3; const MIRROR_NATIVE_RESHARE = 3;

View file

@ -815,6 +815,49 @@ class Item
return self::GRAVITY_UNKNOWN; // Should not happen return self::GRAVITY_UNKNOWN; // Should not happen
} }
private static function prepareOriginPost(array $item): array
{
$item['wall'] = 1;
$item['origin'] = 1;
$item['network'] = Protocol::DFRN;
$item['protocol'] = Conversation::PARCEL_DIRECT;
$item['direction'] = Conversation::PUSH;
$owner = User::getOwnerDataById($item['uid']);
if (empty($item['contact-id'])) {
$item['contact-id'] = $owner['id'];
}
if (empty($item['author-link']) && empty($item['author-id'])) {
$item['author-link'] = $owner['url'];
$item['author-name'] = $owner['name'];
$item['author-avatar'] = $owner['thumb'];
}
if (empty($item['owner-link']) && empty($item['owner-id'])) {
$item['owner-link'] = $item['author-link'];
$item['owner-name'] = $item['author-name'];
$item['owner-avatar'] = $item['author-avatar'];
}
// Setting the object type if not defined before
if (empty($item['object-type'])) {
$item['object-type'] = Activity\ObjectType::NOTE; // Default value
$objectdata = BBCode::getAttachedData($item['body']);
if ($objectdata['type'] == 'link') {
$item['object-type'] = Activity\ObjectType::BOOKMARK;
} elseif ($objectdata['type'] == 'video') {
$item['object-type'] = Activity\ObjectType::VIDEO;
} elseif ($objectdata['type'] == 'photo') {
$item['object-type'] = Activity\ObjectType::IMAGE;
}
}
return $item;
}
/** /**
* Inserts item record * Inserts item record
* *
@ -831,11 +874,7 @@ class Item
// If it is a posting where users should get notifications, then define it as wall posting // If it is a posting where users should get notifications, then define it as wall posting
if ($notify) { if ($notify) {
$item['wall'] = 1; $item = self::prepareOriginPost($item);
$item['origin'] = 1;
$item['network'] = Protocol::DFRN;
$item['protocol'] = Conversation::PARCEL_DIRECT;
$item['direction'] = Conversation::PUSH;
if (is_int($notify) && in_array($notify, Worker::PRIORITIES)) { if (is_int($notify) && in_array($notify, Worker::PRIORITIES)) {
$priority = $notify; $priority = $notify;
@ -993,6 +1032,7 @@ class Item
$item['parent-uri'] = $toplevel_parent['uri']; $item['parent-uri'] = $toplevel_parent['uri'];
$item['parent-uri-id'] = $toplevel_parent['uri-id']; $item['parent-uri-id'] = $toplevel_parent['uri-id'];
$item['deleted'] = $toplevel_parent['deleted']; $item['deleted'] = $toplevel_parent['deleted'];
$item['wall'] = $toplevel_parent['wall'];
// Reshares have to keep their permissions to allow forums to work // Reshares have to keep their permissions to allow forums to work
if (!$item['origin'] || ($item['verb'] != Activity::ANNOUNCE)) { if (!$item['origin'] || ($item['verb'] != Activity::ANNOUNCE)) {
@ -2974,7 +3014,7 @@ class Item
$quote_uri_id = $shared['post']['uri-id']; $quote_uri_id = $shared['post']['uri-id'];
$shared_links[] = strtolower($shared['post']['uri']); $shared_links[] = strtolower($shared['post']['uri']);
$item['body'] = BBCode::removeSharedData($item['body']); $item['body'] = BBCode::removeSharedData($item['body']);
} elseif (empty($shared_item['uri-id']) && empty($item['quote-uri-id'])) { } elseif (empty($shared_item['uri-id']) && empty($item['quote-uri-id']) && ($item['network'] != Protocol::DIASPORA)) {
$media = Post\Media::getByURIId($item['uri-id'], [Post\Media::ACTIVITY]); $media = Post\Media::getByURIId($item['uri-id'], [Post\Media::ACTIVITY]);
if (!empty($media)) { if (!empty($media)) {
$shared_item = Post::selectFirst($fields, ['plink' => $media[0]['url'], 'uid' => [$item['uid'], 0]]); $shared_item = Post::selectFirst($fields, ['plink' => $media[0]['url'], 'uid' => [$item['uid'], 0]]);

View file

@ -38,12 +38,6 @@ class Delayed
* This is used for automated scheduled posts via feeds or from the API. * This is used for automated scheduled posts via feeds or from the API.
*/ */
const PREPARED = 0; const PREPARED = 0;
/**
* The content is posted like a manual post. Means some processing of body will be done.
* Also it is posted with default permissions and default connector settings.
* This is used for mirrored connector posts.
*/
const UNPREPARED = 1;
/** /**
* Like PREPARED, but additionally the connector settings can differ. * Like PREPARED, but additionally the connector settings can differ.
* This is used when manually publishing scheduled posts. * This is used when manually publishing scheduled posts.
@ -199,34 +193,6 @@ class Delayed
$item['attachments'] = $attachments; $item['attachments'] = $attachments;
} }
if ($preparation_mode == self::UNPREPARED) {
$_SESSION['authenticated'] = true;
$_SESSION['uid'] = $item['uid'];
$_REQUEST = $item;
$_REQUEST['api_source'] = true;
$_REQUEST['profile_uid'] = $item['uid'];
$_REQUEST['title'] = $item['title'] ?? '';
if (!empty($item['app'])) {
$_REQUEST['source'] = $item['app'];
}
require_once 'mod/item.php';
$id = item_post(DI::app());
if (empty($uri) && !empty($item['extid'])) {
$uri = $item['extid'];
}
Logger::notice('Unprepared post stored', ['id' => $id, 'uid' => $item['uid'], 'uri' => $uri]);
if (self::exists($uri, $item['uid'])) {
self::delete($uri, $item['uid']);
}
return $id;
}
$id = Item::insert($item, $notify, $preparation_mode == self::PREPARED); $id = Item::insert($item, $notify, $preparation_mode == self::PREPARED);
Logger::notice('Post stored', ['id' => $id, 'uid' => $item['uid'], 'cid' => $item['contact-id']]); Logger::notice('Post stored', ['id' => $id, 'uid' => $item['uid'], 'cid' => $item['contact-id']]);

View file

@ -285,7 +285,6 @@ class Profile extends BaseModule
if ($contact['network'] == Protocol::FEED) { if ($contact['network'] == Protocol::FEED) {
$remote_self_options = [ $remote_self_options = [
Contact::MIRROR_DEACTIVATED => $this->t('No mirroring'), Contact::MIRROR_DEACTIVATED => $this->t('No mirroring'),
Contact::MIRROR_FORWARDED => $this->t('Mirror as forwarded posting'),
Contact::MIRROR_OWN_POST => $this->t('Mirror as my own posting') Contact::MIRROR_OWN_POST => $this->t('Mirror as my own posting')
]; ];
} elseif ($contact['network'] == Protocol::ACTIVITYPUB) { } elseif ($contact['network'] == Protocol::ACTIVITYPUB) {

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 2022.12-dev\n" "Project-Id-Version: 2022.12-dev\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-11-20 17:22-0500\n" "POT-Creation-Date: 2022-11-23 14:15+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"
@ -41,11 +41,11 @@ msgstr ""
msgid "Files" msgid "Files"
msgstr "" msgstr ""
#: mod/item.php:131 mod/item.php:135 #: mod/item.php:129 mod/item.php:133
msgid "Unable to locate original post." msgid "Unable to locate original post."
msgstr "" msgstr ""
#: mod/item.php:181 mod/item.php:186 mod/item.php:870 mod/message.php:69 #: mod/item.php:179 mod/item.php:184 mod/item.php:853 mod/message.php:69
#: mod/message.php:114 mod/notes.php:44 mod/photos.php:159 mod/photos.php:884 #: mod/message.php:114 mod/notes.php:44 mod/photos.php:159 mod/photos.php:884
#: src/Module/Attach.php:56 src/Module/BaseApi.php:94 #: src/Module/Attach.php:56 src/Module/BaseApi.php:94
#: src/Module/BaseNotifications.php:98 src/Module/BaseSettings.php:52 #: src/Module/BaseNotifications.php:98 src/Module/BaseSettings.php:52
@ -84,23 +84,23 @@ msgstr ""
msgid "Permission denied." msgid "Permission denied."
msgstr "" msgstr ""
#: mod/item.php:337 mod/item.php:342 #: mod/item.php:328 mod/item.php:333
msgid "Empty post discarded." msgid "Empty post discarded."
msgstr "" msgstr ""
#: mod/item.php:680 #: mod/item.php:671
msgid "Post updated." msgid "Post updated."
msgstr "" msgstr ""
#: mod/item.php:690 mod/item.php:695 #: mod/item.php:681 mod/item.php:686
msgid "Item wasn't stored." msgid "Item wasn't stored."
msgstr "" msgstr ""
#: mod/item.php:706 #: mod/item.php:697
msgid "Item couldn't be fetched." msgid "Item couldn't be fetched."
msgstr "" msgstr ""
#: mod/item.php:846 src/Module/Admin/Themes/Details.php:39 #: mod/item.php:829 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."
@ -327,7 +327,7 @@ msgstr ""
#: mod/photos.php:1018 mod/photos.php:1290 mod/photos.php:1331 #: mod/photos.php:1018 mod/photos.php:1290 mod/photos.php:1331
#: mod/photos.php:1387 mod/photos.php:1461 #: mod/photos.php:1387 mod/photos.php:1461
#: src/Module/Calendar/Event/Form.php:250 src/Module/Contact/Advanced.php:132 #: src/Module/Calendar/Event/Form.php:250 src/Module/Contact/Advanced.php:132
#: src/Module/Contact/Profile.php:328 #: src/Module/Contact/Profile.php:327
#: src/Module/Debug/ActivityPubConversion.php:140 #: src/Module/Debug/ActivityPubConversion.php:140
#: src/Module/Debug/Babel.php:313 src/Module/Debug/Localtime.php:64 #: src/Module/Debug/Babel.php:313 src/Module/Debug/Localtime.php:64
#: src/Module/Debug/Probe.php:54 src/Module/Debug/WebFinger.php:51 #: src/Module/Debug/Probe.php:54 src/Module/Debug/WebFinger.php:51
@ -1554,7 +1554,7 @@ msgstr ""
msgid "show more" msgid "show more"
msgstr "" msgstr ""
#: src/Content/Item.php:294 src/Model/Item.php:2871 #: src/Content/Item.php:294 src/Model/Item.php:2911
msgid "event" msgid "event"
msgstr "" msgstr ""
@ -1563,7 +1563,7 @@ msgstr ""
msgid "status" msgid "status"
msgstr "" msgstr ""
#: src/Content/Item.php:303 src/Model/Item.php:2873 #: src/Content/Item.php:303 src/Model/Item.php:2913
#: src/Module/Post/Tag/Add.php:123 #: src/Module/Post/Tag/Add.php:123
msgid "photo" msgid "photo"
msgstr "" msgstr ""
@ -1606,7 +1606,7 @@ msgid "Send PM"
msgstr "" msgstr ""
#: src/Content/Item.php:393 src/Module/Contact.php:401 #: src/Content/Item.php:393 src/Module/Contact.php:401
#: src/Module/Contact/Profile.php:349 src/Module/Contact/Profile.php:468 #: src/Module/Contact/Profile.php:348 src/Module/Contact/Profile.php:467
#: src/Module/Moderation/Blocklist/Contact.php:116 #: src/Module/Moderation/Blocklist/Contact.php:116
#: src/Module/Moderation/Users/Active.php:137 #: src/Module/Moderation/Users/Active.php:137
#: src/Module/Moderation/Users/Index.php:152 #: src/Module/Moderation/Users/Index.php:152
@ -1614,7 +1614,7 @@ msgid "Block"
msgstr "" msgstr ""
#: src/Content/Item.php:394 src/Module/Contact.php:402 #: src/Content/Item.php:394 src/Module/Contact.php:402
#: src/Module/Contact/Profile.php:350 src/Module/Contact/Profile.php:476 #: src/Module/Contact/Profile.php:349 src/Module/Contact/Profile.php:475
#: src/Module/Notifications/Introductions.php:134 #: src/Module/Notifications/Introductions.php:134
#: src/Module/Notifications/Introductions.php:206 #: src/Module/Notifications/Introductions.php:206
#: src/Module/Notifications/Notification.php:89 #: src/Module/Notifications/Notification.php:89
@ -1665,7 +1665,7 @@ msgid "Sign in"
msgstr "" msgstr ""
#: src/Content/Nav.php:193 src/Module/BaseProfile.php:56 #: src/Content/Nav.php:193 src/Module/BaseProfile.php:56
#: src/Module/Contact.php:436 src/Module/Contact/Profile.php:381 #: src/Module/Contact.php:436 src/Module/Contact/Profile.php:380
#: src/Module/Settings/TwoFactor/Index.php:119 view/theme/frio/theme.php:237 #: src/Module/Settings/TwoFactor/Index.php:119 view/theme/frio/theme.php:237
msgid "Status" msgid "Status"
msgstr "" msgstr ""
@ -1677,7 +1677,7 @@ msgstr ""
#: src/Content/Nav.php:194 src/Module/BaseProfile.php:48 #: src/Content/Nav.php:194 src/Module/BaseProfile.php:48
#: src/Module/BaseSettings.php:100 src/Module/Contact.php:460 #: src/Module/BaseSettings.php:100 src/Module/Contact.php:460
#: src/Module/Contact/Profile.php:383 src/Module/Profile/Profile.php:240 #: src/Module/Contact/Profile.php:382 src/Module/Profile/Profile.php:240
#: src/Module/Welcome.php:57 view/theme/frio/theme.php:238 #: src/Module/Welcome.php:57 view/theme/frio/theme.php:238
msgid "Profile" msgid "Profile"
msgstr "" msgstr ""
@ -1953,8 +1953,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:1245 src/Model/Item.php:3493 #: src/Content/Text/BBCode.php:1245 src/Model/Item.php:3533
#: src/Model/Item.php:3499 src/Model/Item.php:3500 #: src/Model/Item.php:3539 src/Model/Item.php:3540
msgid "Link to source" msgid "Link to source"
msgstr "" msgstr ""
@ -1987,7 +1987,7 @@ msgid "The end"
msgstr "" msgstr ""
#: src/Content/Text/HTML.php:882 src/Content/Widget/VCard.php:109 #: src/Content/Text/HTML.php:882 src/Content/Widget/VCard.php:109
#: src/Model/Profile.php:459 src/Module/Contact/Profile.php:428 #: src/Model/Profile.php:459 src/Module/Contact/Profile.php:427
msgid "Follow" msgid "Follow"
msgstr "" msgstr ""
@ -2173,19 +2173,19 @@ msgid "More Trending Tags"
msgstr "" msgstr ""
#: src/Content/Widget/VCard.php:102 src/Model/Profile.php:378 #: src/Content/Widget/VCard.php:102 src/Model/Profile.php:378
#: src/Module/Contact/Profile.php:372 src/Module/Profile/Profile.php:175 #: src/Module/Contact/Profile.php:371 src/Module/Profile/Profile.php:175
msgid "XMPP:" msgid "XMPP:"
msgstr "" msgstr ""
#: src/Content/Widget/VCard.php:103 src/Model/Profile.php:379 #: src/Content/Widget/VCard.php:103 src/Model/Profile.php:379
#: src/Module/Contact/Profile.php:374 src/Module/Profile/Profile.php:179 #: src/Module/Contact/Profile.php:373 src/Module/Profile/Profile.php:179
msgid "Matrix:" msgid "Matrix:"
msgstr "" msgstr ""
#: src/Content/Widget/VCard.php:104 src/Model/Event.php:82 #: src/Content/Widget/VCard.php:104 src/Model/Event.php:82
#: src/Model/Event.php:109 src/Model/Event.php:471 src/Model/Event.php:992 #: src/Model/Event.php:109 src/Model/Event.php:471 src/Model/Event.php:992
#: src/Model/Profile.php:373 src/Module/Calendar/Event/Form.php:239 #: src/Model/Profile.php:373 src/Module/Calendar/Event/Form.php:239
#: src/Module/Contact/Profile.php:370 src/Module/Directory.php:147 #: src/Module/Contact/Profile.php:369 src/Module/Directory.php:147
#: src/Module/Notifications/Introductions.php:187 #: src/Module/Notifications/Introductions.php:187
#: src/Module/Profile/Profile.php:193 #: src/Module/Profile/Profile.php:193
msgid "Location:" msgid "Location:"
@ -2198,7 +2198,7 @@ msgstr ""
#: src/Content/Widget/VCard.php:111 src/Model/Contact.php:1193 #: src/Content/Widget/VCard.php:111 src/Model/Contact.php:1193
#: src/Model/Contact.php:1204 src/Model/Profile.php:461 #: src/Model/Contact.php:1204 src/Model/Profile.php:461
#: src/Module/Contact/Profile.php:420 #: src/Module/Contact/Profile.php:419
msgid "Unfollow" msgid "Unfollow"
msgstr "" msgstr ""
@ -3113,66 +3113,66 @@ msgstr ""
msgid "Edit groups" msgid "Edit groups"
msgstr "" msgstr ""
#: src/Model/Item.php:1983 #: src/Model/Item.php:2023
#, 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:2875 #: src/Model/Item.php:2915
msgid "activity" msgid "activity"
msgstr "" msgstr ""
#: src/Model/Item.php:2877 #: src/Model/Item.php:2917
msgid "comment" msgid "comment"
msgstr "" msgstr ""
#: src/Model/Item.php:2880 #: src/Model/Item.php:2920
msgid "post" msgid "post"
msgstr "" msgstr ""
#: src/Model/Item.php:3021 #: src/Model/Item.php:3061
#, php-format #, php-format
msgid "Content warning: %s" msgid "Content warning: %s"
msgstr "" msgstr ""
#: src/Model/Item.php:3405 #: src/Model/Item.php:3445
msgid "bytes" msgid "bytes"
msgstr "" msgstr ""
#: src/Model/Item.php:3436 #: src/Model/Item.php:3476
#, 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:3438 #: src/Model/Item.php:3478
#, 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:3443 #: src/Model/Item.php:3483
#, 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:3445 #: src/Model/Item.php:3485
#, 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:3447 #: src/Model/Item.php:3487
#, php-format #, php-format
msgid "Poll end: %s" msgid "Poll end: %s"
msgstr "" msgstr ""
#: src/Model/Item.php:3481 src/Model/Item.php:3482 #: src/Model/Item.php:3521 src/Model/Item.php:3522
msgid "View on separate page" msgid "View on separate page"
msgstr "" msgstr ""
@ -3198,7 +3198,7 @@ msgstr ""
msgid "Homepage:" msgid "Homepage:"
msgstr "" msgstr ""
#: src/Model/Profile.php:377 src/Module/Contact/Profile.php:376 #: src/Model/Profile.php:377 src/Module/Contact/Profile.php:375
#: src/Module/Notifications/Introductions.php:189 #: src/Module/Notifications/Introductions.php:189
msgid "About:" msgid "About:"
msgstr "" msgstr ""
@ -5656,16 +5656,16 @@ msgstr ""
msgid "Update" msgid "Update"
msgstr "" msgstr ""
#: src/Module/Contact.php:401 src/Module/Contact/Profile.php:349 #: src/Module/Contact.php:401 src/Module/Contact/Profile.php:348
#: src/Module/Contact/Profile.php:468 #: src/Module/Contact/Profile.php:467
#: src/Module/Moderation/Blocklist/Contact.php:117 #: src/Module/Moderation/Blocklist/Contact.php:117
#: src/Module/Moderation/Users/Blocked.php:138 #: src/Module/Moderation/Users/Blocked.php:138
#: src/Module/Moderation/Users/Index.php:154 #: src/Module/Moderation/Users/Index.php:154
msgid "Unblock" msgid "Unblock"
msgstr "" msgstr ""
#: src/Module/Contact.php:402 src/Module/Contact/Profile.php:350 #: src/Module/Contact.php:402 src/Module/Contact/Profile.php:349
#: src/Module/Contact/Profile.php:476 #: src/Module/Contact/Profile.php:475
msgid "Unignore" msgid "Unignore"
msgstr "" msgstr ""
@ -5713,7 +5713,7 @@ msgstr ""
msgid "Pending incoming contact request" msgid "Pending incoming contact request"
msgstr "" msgstr ""
#: src/Module/Contact.php:555 src/Module/Contact/Profile.php:335 #: src/Module/Contact.php:555 src/Module/Contact/Profile.php:334
#, php-format #, php-format
msgid "Visit %s's profile [%s]" msgid "Visit %s's profile [%s]"
msgstr "" msgstr ""
@ -5866,7 +5866,7 @@ msgstr ""
msgid "Your Identity Address:" msgid "Your Identity Address:"
msgstr "" msgstr ""
#: src/Module/Contact/Follow.php:170 src/Module/Contact/Profile.php:366 #: src/Module/Contact/Follow.php:170 src/Module/Contact/Profile.php:365
#: src/Module/Contact/Unfollow.php:129 #: src/Module/Contact/Unfollow.php:129
#: src/Module/Moderation/Blocklist/Contact.php:133 #: src/Module/Moderation/Blocklist/Contact.php:133
#: src/Module/Notifications/Introductions.php:129 #: src/Module/Notifications/Introductions.php:129
@ -5874,7 +5874,7 @@ msgstr ""
msgid "Profile URL" msgid "Profile URL"
msgstr "" msgstr ""
#: src/Module/Contact/Follow.php:171 src/Module/Contact/Profile.php:378 #: src/Module/Contact/Follow.php:171 src/Module/Contact/Profile.php:377
#: src/Module/Notifications/Introductions.php:191 #: src/Module/Notifications/Introductions.php:191
#: src/Module/Profile/Profile.php:206 #: src/Module/Profile/Profile.php:206
msgid "Tags:" msgid "Tags:"
@ -5960,7 +5960,7 @@ msgstr ""
msgid "(Update was successful)" msgid "(Update was successful)"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:255 src/Module/Contact/Profile.php:439 #: src/Module/Contact/Profile.php:255 src/Module/Contact/Profile.php:438
msgid "Suggest friends" msgid "Suggest friends"
msgstr "" msgstr ""
@ -5996,144 +5996,140 @@ msgstr ""
msgid "Fetch information and keywords" msgid "Fetch information and keywords"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:287 src/Module/Contact/Profile.php:293 #: src/Module/Contact/Profile.php:287 src/Module/Contact/Profile.php:292
#: src/Module/Contact/Profile.php:298 src/Module/Contact/Profile.php:304 #: src/Module/Contact/Profile.php:297 src/Module/Contact/Profile.php:303
msgid "No mirroring" msgid "No mirroring"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:288 #: src/Module/Contact/Profile.php:288 src/Module/Contact/Profile.php:298
msgid "Mirror as forwarded posting" #: src/Module/Contact/Profile.php:304
msgstr ""
#: src/Module/Contact/Profile.php:289 src/Module/Contact/Profile.php:299
#: src/Module/Contact/Profile.php:305
msgid "Mirror as my own posting" msgid "Mirror as my own posting"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:294 src/Module/Contact/Profile.php:300 #: src/Module/Contact/Profile.php:293 src/Module/Contact/Profile.php:299
msgid "Native reshare" msgid "Native reshare"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:317 #: src/Module/Contact/Profile.php:316
msgid "Contact Information / Notes" msgid "Contact Information / Notes"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:318 #: src/Module/Contact/Profile.php:317
msgid "Contact Settings" msgid "Contact Settings"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:326 #: src/Module/Contact/Profile.php:325
msgid "Contact" msgid "Contact"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:330 #: src/Module/Contact/Profile.php:329
msgid "Their personal note" msgid "Their personal note"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:332 #: src/Module/Contact/Profile.php:331
msgid "Edit contact notes" msgid "Edit contact notes"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:336 #: src/Module/Contact/Profile.php:335
msgid "Block/Unblock contact" msgid "Block/Unblock contact"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:337 #: src/Module/Contact/Profile.php:336
msgid "Ignore contact" msgid "Ignore contact"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:338 #: src/Module/Contact/Profile.php:337
msgid "View conversations" msgid "View conversations"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:343 #: src/Module/Contact/Profile.php:342
msgid "Last update:" msgid "Last update:"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:345 #: src/Module/Contact/Profile.php:344
msgid "Update public posts" msgid "Update public posts"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:347 src/Module/Contact/Profile.php:449 #: src/Module/Contact/Profile.php:346 src/Module/Contact/Profile.php:448
msgid "Update now" msgid "Update now"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:354 #: src/Module/Contact/Profile.php:353
msgid "Currently blocked" msgid "Currently blocked"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:355 #: src/Module/Contact/Profile.php:354
msgid "Currently ignored" msgid "Currently ignored"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:356 #: src/Module/Contact/Profile.php:355
msgid "Currently archived" msgid "Currently archived"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:357 #: src/Module/Contact/Profile.php:356
msgid "Awaiting connection acknowledge" msgid "Awaiting connection acknowledge"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:358 #: src/Module/Contact/Profile.php:357
#: src/Module/Notifications/Introductions.php:192 #: src/Module/Notifications/Introductions.php:192
msgid "Hide this contact from others" msgid "Hide this contact from others"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:358 #: src/Module/Contact/Profile.php:357
msgid "" msgid ""
"Replies/likes to your public posts <strong>may</strong> still be visible" "Replies/likes to your public posts <strong>may</strong> still be visible"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:359 #: src/Module/Contact/Profile.php:358
msgid "Notification for new posts" msgid "Notification for new posts"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:359 #: src/Module/Contact/Profile.php:358
msgid "Send a notification of every new post of this contact" msgid "Send a notification of every new post of this contact"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:361 #: src/Module/Contact/Profile.php:360
msgid "Keyword Deny List" msgid "Keyword Deny List"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:361 #: src/Module/Contact/Profile.php:360
msgid "" msgid ""
"Comma separated list of keywords that should not be converted to hashtags, " "Comma separated list of keywords that should not be converted to hashtags, "
"when \"Fetch information and keywords\" is selected" "when \"Fetch information and keywords\" is selected"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:379 #: src/Module/Contact/Profile.php:378
#: src/Module/Settings/TwoFactor/Index.php:139 #: src/Module/Settings/TwoFactor/Index.php:139
msgid "Actions" msgid "Actions"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:387 #: src/Module/Contact/Profile.php:386
msgid "Mirror postings from this contact" msgid "Mirror postings from this contact"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:389 #: src/Module/Contact/Profile.php:388
msgid "" msgid ""
"Mark this contact as remote_self, this will cause friendica to repost new " "Mark this contact as remote_self, this will cause friendica to repost new "
"entries from this contact." "entries from this contact."
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:459 #: src/Module/Contact/Profile.php:458
msgid "Refetch contact data" msgid "Refetch contact data"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:470 #: src/Module/Contact/Profile.php:469
msgid "Toggle Blocked status" msgid "Toggle Blocked status"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:478 #: src/Module/Contact/Profile.php:477
msgid "Toggle Ignored status" msgid "Toggle Ignored status"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:485 src/Module/Contact/Revoke.php:106 #: src/Module/Contact/Profile.php:484 src/Module/Contact/Revoke.php:106
msgid "Revoke Follow" msgid "Revoke Follow"
msgstr "" msgstr ""
#: src/Module/Contact/Profile.php:487 #: src/Module/Contact/Profile.php:486
msgid "Revoke the follow from this contact" msgid "Revoke the follow from this contact"
msgstr "" msgstr ""