diff --git a/boot.php b/boot.php
index ecf59eb2fc..7ee023b68a 100644
--- a/boot.php
+++ b/boot.php
@@ -379,7 +379,7 @@ function is_site_admin()
$adminlist = explode(',', str_replace(' ', '', $admin_email));
- return local_user() && $admin_email && in_array($a->user['email'] ?? '', $adminlist);
+ return local_user() && $admin_email && DBA::exists('user', ['uid' => $a->getLoggedInUserId(), 'email' => $adminlist]);
}
/**
diff --git a/include/api.php b/include/api.php
index c6f67109a3..e0cac831e5 100644
--- a/include/api.php
+++ b/include/api.php
@@ -258,7 +258,7 @@ function api_login(App $a)
$_SESSION["allow_api"] = true;
- Hook::callAll('logged_in', $a->user);
+ Hook::callAll('logged_in', $record);
}
/**
@@ -322,7 +322,7 @@ function api_call(App $a, App\Arguments $args = null)
if (!empty($info['auth']) && api_user() === false) {
api_login($a);
- Logger::info(API_LOG_PREFIX . 'username {username}', ['module' => 'api', 'action' => 'call', 'username' => $a->user['username']]);
+ Logger::info(API_LOG_PREFIX . 'nickname {nickname}', ['module' => 'api', 'action' => 'call', 'nickname' => $a->getLoggedInUserNickname()]);
}
Logger::debug(API_LOG_PREFIX . 'parameters', ['module' => 'api', 'action' => 'call', 'parameters' => $_REQUEST]);
diff --git a/include/conversation.php b/include/conversation.php
index db2d33b47d..684532345f 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -22,6 +22,7 @@
use Friendica\App;
use Friendica\Content\ContactSelector;
use Friendica\Content\Feature;
+use Friendica\Core\ACL;
use Friendica\Core\Hook;
use Friendica\Core\Logger;
use Friendica\Core\Protocol;
@@ -34,6 +35,7 @@ use Friendica\Model\Contact;
use Friendica\Model\Item;
use Friendica\Model\Post;
use Friendica\Model\Tag;
+use Friendica\Model\User;
use Friendica\Model\Verb;
use Friendica\Object\Post as PostObject;
use Friendica\Object\Thread;
@@ -1064,11 +1066,24 @@ function format_activity(array $links, $verb, $id) {
return $o;
}
-function status_editor(App $a, $x, $notes_cid = 0, $popup = false)
+function status_editor(App $a, array $x = [], $notes_cid = 0, $popup = false)
{
DI::profiler()->startRecording('rendering');
$o = '';
+ $user = User::getById($a->getLoggedInUserId(), ['uid', 'nickname', 'allow_location', 'default-location']);
+
+ $x['allow_location'] = $x['allow_location'] ?? $user['allow_location'];
+ $x['default_location'] = $x['default_location'] ?? $user['default-location'];
+ $x['nickname'] = $x['nickname'] ?? $user['nickname'];
+ $x['lockstate'] = $x['lockstate'] ?? ACL::getLockstateForUserId($user['uid']) ? 'lock' : 'unlock';
+ $x['acl'] = $x['acl'] ?? ACL::getFullSelectorHTML(DI::page(), $user['uid'], true);
+ $x['bang'] = $x['bang'] ?? '';
+ $x['visitor'] = $x['visitor'] ?? 'block';
+ $x['is_owner'] = $x['is_owner'] ?? true;
+ $x['profile_uid'] = $x['profile_uid'] ?? local_user();
+
+
$geotag = !empty($x['allow_location']) ? Renderer::replaceMacros(Renderer::getMarkupTemplate('jot_geotag.tpl'), []) : '';
$tpl = Renderer::getMarkupTemplate('jot-header.tpl');
diff --git a/mod/api.php b/mod/api.php
index decbe40e9b..0a801a8a1e 100644
--- a/mod/api.php
+++ b/mod/api.php
@@ -26,12 +26,7 @@ require_once __DIR__ . '/../include/api.php';
function api_post(App $a)
{
- if (!local_user()) {
- notice(DI::l10n()->t('Permission denied.'));
- return;
- }
-
- if (count($a->user) && !empty($a->user['uid']) && $a->user['uid'] != local_user()) {
+ if (!$a->isLoggedIn()) {
notice(DI::l10n()->t('Permission denied.'));
return;
}
diff --git a/mod/cal.php b/mod/cal.php
index 20488842a4..ac12d69b91 100644
--- a/mod/cal.php
+++ b/mod/cal.php
@@ -127,7 +127,7 @@ function cal_content(App $a)
$sql_extra = " AND `event`.`cid` = 0 " . $sql_perms;
// get the tab navigation bar
- $tabs = BaseProfile::getTabsHTML($a, 'cal', false, $owner);
+ $tabs = BaseProfile::getTabsHTML($a, 'cal', false, $owner['nickname'], $owner['hide-friends']);
// The view mode part is similiar to /mod/events.php
if ($mode == 'view') {
diff --git a/mod/display.php b/mod/display.php
index befef97530..5e24bd4b43 100644
--- a/mod/display.php
+++ b/mod/display.php
@@ -22,7 +22,6 @@
use Friendica\App;
use Friendica\Content\Text\BBCode;
use Friendica\Content\Widget;
-use Friendica\Core\ACL;
use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Core\Renderer;
@@ -63,7 +62,7 @@ function display_init(App $a)
if (local_user()) {
$item = Post::selectFirstForUser(local_user(), $fields, ['guid' => DI::args()->getArgv()[1], 'uid' => local_user()]);
if (DBA::isResult($item)) {
- $nick = $a->user['nickname'];
+ $nick = $a->getLoggedInUserNickname();
}
}
@@ -273,18 +272,7 @@ function display_content(App $a, $update = false, $update_uid = 0)
// We need the editor here to be able to reshare an item.
if ($is_owner && !$update) {
- $x = [
- 'is_owner' => true,
- 'allow_location' => $a->user['allow_location'],
- 'default_location' => $a->user['default-location'],
- 'nickname' => $a->user['nickname'],
- 'lockstate' => (is_array($a->user) && (strlen($a->user['allow_cid']) || strlen($a->user['allow_gid']) || strlen($a->user['deny_cid']) || strlen($a->user['deny_gid'])) ? 'lock' : 'unlock'),
- 'acl' => ACL::getFullSelectorHTML(DI::page(), $a->user, true),
- 'bang' => '',
- 'visitor' => 'block',
- 'profile_uid' => local_user(),
- ];
- $o .= status_editor($a, $x, 0, true);
+ $o .= status_editor($a, [], 0, true);
}
$sql_extra = Item::getPermissionsSQLByUserId($page_uid);
diff --git a/mod/editpost.php b/mod/editpost.php
index 848e1ce862..cc72dbd3c2 100644
--- a/mod/editpost.php
+++ b/mod/editpost.php
@@ -27,6 +27,7 @@ use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Contact;
use Friendica\Model\Post;
+use Friendica\Model\User;
use Friendica\Util\Crypto;
function editpost_content(App $a)
@@ -55,6 +56,8 @@ function editpost_content(App $a)
return;
}
+ $user = User::getById(local_user());
+
$geotag = '';
$o .= Renderer::replaceMacros(Renderer::getMarkupTemplate("section_title.tpl"), [
@@ -65,7 +68,7 @@ function editpost_content(App $a)
DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl, [
'$ispublic' => ' ', // DI::l10n()->t('Visible to everybody'),
'$geotag' => $geotag,
- '$nickname' => $a->user['nickname'],
+ '$nickname' => $a->getLoggedInUserNickname(),
'$is_mobile' => DI::mode()->isMobile(),
]);
@@ -107,7 +110,7 @@ function editpost_content(App $a)
'$posttype' => $item['post-type'],
'$content' => undo_post_tagging($item['body']),
'$post_id' => $post_id,
- '$defloc' => $a->user['default-location'],
+ '$defloc' => $user['default-location'],
'$visitor' => 'none',
'$pvisit' => 'none',
'$emailcc' => DI::l10n()->t('CC: email addresses'),
diff --git a/mod/events.php b/mod/events.php
index f20d173dc7..ebb7d3f114 100644
--- a/mod/events.php
+++ b/mod/events.php
@@ -280,7 +280,7 @@ function events_content(App $a)
$tabs = '';
// tabs
if ($a->getThemeInfoValue('events_in_profile')) {
- $tabs = BaseProfile::getTabsHTML($a, 'events', true, $a->user);
+ $tabs = BaseProfile::getTabsHTML($a, 'events', true, $a->getLoggedInUserNickname(), false);
}
$mode = 'view';
@@ -513,7 +513,7 @@ function events_content(App $a)
$fminute = !empty($orig_event) ? DateTimeFormat::convert($fdt, $tz, 'UTC', 'i') : '00';
if (!$cid && in_array($mode, ['new', 'copy'])) {
- $acl = ACL::getFullSelectorHTML(DI::page(), $a->user, false, ACL::getDefaultUserPermissions($orig_event));
+ $acl = ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId(), false, ACL::getDefaultUserPermissions($orig_event));
} else {
$acl = '';
}
diff --git a/mod/fbrowser.php b/mod/fbrowser.php
index e8b356d08f..53aa255a2e 100644
--- a/mod/fbrowser.php
+++ b/mod/fbrowser.php
@@ -88,7 +88,7 @@ function fbrowser_content(App $a)
}
return [
- DI::baseUrl() . '/photos/' . $a->user['nickname'] . '/image/' . $rr['resource-id'],
+ DI::baseUrl() . '/photos/' . $a->getLoggedInUserNickname() . '/image/' . $rr['resource-id'],
$filename_e,
DI::baseUrl() . '/photo/' . $rr['resource-id'] . '-' . $scale . '.'. $ext
];
@@ -103,7 +103,7 @@ function fbrowser_content(App $a)
'$folders' => $albums,
'$files' => $files,
'$cancel' => DI::l10n()->t('Cancel'),
- '$nickname' => $a->user['nickname'],
+ '$nickname' => $a->getLoggedInUserNickname(),
'$upload' => DI::l10n()->t('Upload')
]);
@@ -132,7 +132,7 @@ function fbrowser_content(App $a)
'$folders' => false,
'$files' => $files,
'$cancel' => DI::l10n()->t('Cancel'),
- '$nickname' => $a->user['nickname'],
+ '$nickname' => $a->getLoggedInUserNickname(),
'$upload' => DI::l10n()->t('Upload')
]);
}
diff --git a/mod/follow.php b/mod/follow.php
index 86f7267126..075e58d091 100644
--- a/mod/follow.php
+++ b/mod/follow.php
@@ -175,7 +175,7 @@ function follow_process(App $a, string $url)
{
$return_path = 'follow?url=' . urlencode($url);
- $result = Contact::createFromProbe($a->user, $url, true);
+ $result = Contact::createFromProbeForUser($a->getLoggedInUserId(), $url);
if ($result['success'] == false) {
// Possibly it is a remote item and not an account
diff --git a/mod/item.php b/mod/item.php
index 809d6a18c2..7693b28c6f 100644
--- a/mod/item.php
+++ b/mod/item.php
@@ -55,7 +55,6 @@ use Friendica\Model\User;
use Friendica\Network\HTTPException;
use Friendica\Object\EMail\ItemCCEMail;
use Friendica\Protocol\Activity;
-use Friendica\Protocol\Diaspora;
use Friendica\Security\Security;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\ParseUrl;
diff --git a/mod/message.php b/mod/message.php
index a18a5f9df3..2f4fe0c1aa 100644
--- a/mod/message.php
+++ b/mod/message.php
@@ -112,7 +112,7 @@ function message_content(App $a)
return Login::form();
}
- $myprofile = DI::baseUrl() . '/profile/' . $a->user['nickname'];
+ $myprofile = DI::baseUrl() . '/profile/' . $a->getLoggedInUserNickname();
$tpl = Renderer::getMarkupTemplate('mail_head.tpl');
if (DI::args()->getArgc() > 1 && DI::args()->getArgv()[1] == 'new') {
@@ -179,7 +179,7 @@ function message_content(App $a)
$tpl = Renderer::getMarkupTemplate('msg-header.tpl');
DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl, [
'$baseurl' => DI::baseUrl()->get(true),
- '$nickname' => $a->user['nickname'],
+ '$nickname' => $a->getLoggedInUserNickname(),
'$linkurl' => DI::l10n()->t('Please enter a link URL:')
]);
@@ -292,7 +292,7 @@ function message_content(App $a)
$tpl = Renderer::getMarkupTemplate('msg-header.tpl');
DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl, [
'$baseurl' => DI::baseUrl()->get(true),
- '$nickname' => $a->user['nickname'],
+ '$nickname' => $a->getLoggedInUserNickname(),
'$linkurl' => DI::l10n()->t('Please enter a link URL:')
]);
@@ -431,7 +431,7 @@ function render_messages(array $msg, $t)
$tpl = Renderer::getMarkupTemplate($t);
$rslt = '';
- $myprofile = DI::baseUrl() . '/profile/' . $a->user['nickname'];
+ $myprofile = DI::baseUrl() . '/profile/' . $a->getLoggedInUserNickname();
foreach ($msg as $rr) {
if ($rr['unknown']) {
diff --git a/mod/notes.php b/mod/notes.php
index 945d0c935d..11ec8a0352 100644
--- a/mod/notes.php
+++ b/mod/notes.php
@@ -45,21 +45,14 @@ function notes_content(App $a, $update = false)
return;
}
- $o = BaseProfile::getTabsHTML($a, 'notes', true, $a->user);
+ $o = BaseProfile::getTabsHTML($a, 'notes', true, $a->getLoggedInUserNickname(), false);
if (!$update) {
$o .= '
' . DI::l10n()->t('Personal Notes') . '
';
$x = [
- 'is_owner' => true,
- 'allow_location' => (($a->user['allow_location']) ? true : false),
- 'default_location' => $a->user['default-location'],
- 'nickname' => $a->user['nickname'],
'lockstate' => 'lock',
'acl' => \Friendica\Core\ACL::getSelfOnlyHTML(local_user(), DI::l10n()->t('Personal notes are visible only by yourself.')),
- 'bang' => '',
- 'visitor' => 'block',
- 'profile_uid' => local_user(),
'button' => DI::l10n()->t('Save'),
'acl_data' => '',
];
diff --git a/mod/ostatus_subscribe.php b/mod/ostatus_subscribe.php
index 9ff5c20521..57f8b9a738 100644
--- a/mod/ostatus_subscribe.php
+++ b/mod/ostatus_subscribe.php
@@ -111,7 +111,7 @@ function ostatus_subscribe_content(App $a)
$probed = Contact::getByURL($url);
if (in_array($probed['network'], Protocol::FEDERATED)) {
- $result = Contact::createFromProbe($a->user, $probed['url']);
+ $result = Contact::createFromProbeForUser($a->getLoggedInUserId(), $probed['url']);
if ($result['success']) {
$o .= ' - ' . DI::l10n()->t('success');
} else {
diff --git a/mod/photos.php b/mod/photos.php
index 9e1fa9cede..4512921074 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -38,6 +38,7 @@ use Friendica\Model\Contact;
use Friendica\Model\Item;
use Friendica\Model\Photo;
use Friendica\Model\Post;
+use Friendica\Model\Profile;
use Friendica\Model\Tag;
use Friendica\Model\User;
use Friendica\Module\BaseProfile;
@@ -223,7 +224,7 @@ function photos_post(App $a)
// Update the photo albums cache
Photo::clearAlbumCache($page_owner_uid);
- DI::baseUrl()->redirect('photos/' . $a->user['nickname'] . '/album/' . bin2hex($newalbum));
+ DI::baseUrl()->redirect('photos/' . $a->getLoggedInUserNickname() . '/album/' . bin2hex($newalbum));
return; // NOTREACHED
}
@@ -830,6 +831,8 @@ function photos_content(App $a)
return;
}
+ $profile = Profile::getByUID($user['uid']);
+
$phototypes = Images::supportedTypes();
$_SESSION['photo_return'] = DI::args()->getCommand();
@@ -903,7 +906,7 @@ function photos_content(App $a)
// tabs
$is_owner = (local_user() && (local_user() == $owner_uid));
- $o .= BaseProfile::getTabsHTML($a, 'photos', $is_owner, $user);
+ $o .= BaseProfile::getTabsHTML($a, 'photos', $is_owner, $user['nickname'], $profile['hide-friends']);
// Display upload form
if ($datatype === 'upload') {
@@ -945,7 +948,7 @@ function photos_content(App $a)
$tpl = Renderer::getMarkupTemplate('photos_upload.tpl');
- $aclselect_e = ($visitor ? '' : ACL::getFullSelectorHTML(DI::page(), $a->user));
+ $aclselect_e = ($visitor ? '' : ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId()));
$o .= Renderer::replaceMacros($tpl,[
'$pagename' => DI::l10n()->t('Upload Photos'),
@@ -958,12 +961,7 @@ function photos_content(App $a)
'$albumselect' => $albumselect,
'$permissions' => DI::l10n()->t('Permissions'),
'$aclselect' => $aclselect_e,
- '$lockstate' => is_array($a->user)
- && (strlen($a->user['allow_cid'])
- || strlen($a->user['allow_gid'])
- || strlen($a->user['deny_cid'])
- || strlen($a->user['deny_gid'])
- ) ? 'lock' : 'unlock',
+ '$lockstate' => ACL::getLockstateForUserId($a->getLoggedInUserId()) ? 'lock' : 'unlock',
'$alt_uploader' => $ret['addon_text'],
'$default_upload_box' => ($ret['default_upload'] ? $default_upload_box : ''),
'$default_upload_submit' => ($ret['default_upload'] ? $default_upload_submit : ''),
@@ -1309,7 +1307,7 @@ function photos_content(App $a)
$album_e = $ph[0]['album'];
$caption_e = $ph[0]['desc'];
- $aclselect_e = ACL::getFullSelectorHTML(DI::page(), $a->user, false, ACL::getDefaultUserPermissions($ph[0]));
+ $aclselect_e = ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId(), false, ACL::getDefaultUserPermissions($ph[0]));
$edit = Renderer::replaceMacros($edit_tpl, [
'$id' => $ph[0]['id'],
diff --git a/mod/ping.php b/mod/ping.php
index 93c579e0a6..bdd30be3fc 100644
--- a/mod/ping.php
+++ b/mod/ping.php
@@ -193,7 +193,7 @@ function ping_init(App $a)
$intro_count = count($intros1) + count($intros2);
$intros = $intros1 + $intros2;
- $myurl = DI::baseUrl() . '/profile/' . $a->user['nickname'];
+ $myurl = DI::baseUrl() . '/profile/' . $a->getLoggedInUserNickname();
$mails = q(
"SELECT `id`, `from-name`, `from-url`, `from-photo`, `created` FROM `mail`
WHERE `uid` = %d AND `seen` = 0 AND `from-url` != '%s' ",
diff --git a/mod/removeme.php b/mod/removeme.php
index 3c53ba4204..bdc49ab745 100644
--- a/mod/removeme.php
+++ b/mod/removeme.php
@@ -69,8 +69,8 @@ function removeme_post(App $a)
DI::emailer()->send($email);
}
- if (User::getIdFromPasswordAuthentication($a->user, trim($_POST['qxz_password']))) {
- User::remove($a->user['uid']);
+ if (User::getIdFromPasswordAuthentication($a->getLoggedInUserId(), trim($_POST['qxz_password']))) {
+ User::remove($a->getLoggedInUserId());
unset($_SESSION['authenticated']);
unset($_SESSION['uid']);
diff --git a/mod/repair_ostatus.php b/mod/repair_ostatus.php
index 054a19640b..bc6b177f95 100644
--- a/mod/repair_ostatus.php
+++ b/mod/repair_ostatus.php
@@ -70,7 +70,7 @@ function repair_ostatus_content(App $a) {
$o .= "".DI::l10n()->t("Keep this window open until done.")."
";
- Contact::createFromProbe($a->user, $r[0]["url"], true);
+ Contact::createFromProbeForUser($a->getLoggedInUserId(), $r[0]["url"]);
DI::page()['htmlhead'] = '';
diff --git a/mod/settings.php b/mod/settings.php
index 6d165cef04..ce556b8bf1 100644
--- a/mod/settings.php
+++ b/mod/settings.php
@@ -53,7 +53,8 @@ function settings_init(App $a)
function settings_post(App $a)
{
- if (!local_user()) {
+ if (!$a->isLoggedIn()) {
+ notice(DI::l10n()->t('Permission denied.'));
return;
}
@@ -61,11 +62,6 @@ function settings_post(App $a)
return;
}
- if (count($a->user) && !empty($a->user['uid']) && $a->user['uid'] != local_user()) {
- notice(DI::l10n()->t('Permission denied.'));
- return;
- }
-
if ((DI::args()->getArgc() > 1) && (DI::args()->getArgv()[1] == 'addon')) {
BaseModule::checkFormSecurityTokenRedirectOnError('/settings/addon', 'settings_addon');
@@ -73,6 +69,8 @@ function settings_post(App $a)
return;
}
+ $user = User::getById($a->getLoggedInUserId());
+
if ((DI::args()->getArgc() > 1) && (DI::args()->getArgv()[1] == 'connectors')) {
BaseModule::checkFormSecurityTokenRedirectOnError('/settings/connectors', 'settings_connectors');
@@ -108,7 +106,7 @@ function settings_post(App $a)
}
if (strlen($mail_pass)) {
$pass = '';
- openssl_public_encrypt($mail_pass, $pass, $a->user['pubkey']);
+ openssl_public_encrypt($mail_pass, $pass, $user['pubkey']);
DBA::update('mailacct', ['pass' => bin2hex($pass)], ['uid' => local_user()]);
}
$r = q("UPDATE `mailacct` SET `server` = '%s', `port` = %d, `ssltype` = '%s', `user` = '%s',
@@ -134,7 +132,7 @@ function settings_post(App $a)
if (strlen($eacct['server'])) {
$dcrpass = '';
- openssl_private_decrypt(hex2bin($eacct['pass']), $dcrpass, $a->user['prvkey']);
+ openssl_private_decrypt(hex2bin($eacct['pass']), $dcrpass, $user['prvkey']);
$mbox = Email::connect($mb, $mail_user, $dcrpass);
unset($dcrpass);
if (!$mbox) {
@@ -309,7 +307,7 @@ function settings_post(App $a)
$err = '';
- if ($username != $a->user['username']) {
+ if ($username != $user['username']) {
if (strlen($username) > 40) {
$err .= DI::l10n()->t('Please use a shorter name.');
}
@@ -318,11 +316,11 @@ function settings_post(App $a)
}
}
- if ($email != $a->user['email']) {
+ if ($email != $user['email']) {
// check for the correct password
if (!User::authenticate(intval(local_user()), $_POST['mpassword'])) {
$err .= DI::l10n()->t('Wrong Password.');
- $email = $a->user['email'];
+ $email = $user['email'];
}
// check the email is valid
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
@@ -333,7 +331,7 @@ function settings_post(App $a)
$adminlist = explode(",", str_replace(" ", "", strtolower(DI::config()->get('config', 'admin_email'))));
if (in_array(strtolower($email), $adminlist)) {
$err .= DI::l10n()->t('Cannot change to that email.');
- $email = $a->user['email'];
+ $email = $user['email'];
}
}
}
@@ -343,7 +341,7 @@ function settings_post(App $a)
return;
}
- if (($timezone != $a->user['timezone']) && strlen($timezone)) {
+ if (($timezone != $user['timezone']) && strlen($timezone)) {
date_default_timezone_set($timezone);
}
@@ -592,18 +590,20 @@ function settings_content(App $a)
return;
}
- $username = $a->user['username'];
- $email = $a->user['email'];
- $nickname = $a->user['nickname'];
- $timezone = $a->user['timezone'];
- $language = $a->user['language'];
- $notify = $a->user['notify-flags'];
- $defloc = $a->user['default-location'];
- $openid = $a->user['openid'];
- $maxreq = $a->user['maxreq'];
- $expire = ((intval($a->user['expire'])) ? $a->user['expire'] : '');
- $unkmail = $a->user['unkmail'];
- $cntunkmail = $a->user['cntunkmail'];
+ $user = User::getById($a->getLoggedInUserId());
+
+ $username = $user['username'];
+ $email = $user['email'];
+ $nickname = $a->getLoggedInUserNickname();
+ $timezone = $user['timezone'];
+ $language = $user['language'];
+ $notify = $user['notify-flags'];
+ $defloc = $user['default-location'];
+ $openid = $user['openid'];
+ $maxreq = $user['maxreq'];
+ $expire = ((intval($user['expire'])) ? $user['expire'] : '');
+ $unkmail = $user['unkmail'];
+ $cntunkmail = $user['cntunkmail'];
$expire_items = DI::pConfig()->get(local_user(), 'expire', 'items', true);
$expire_notes = DI::pConfig()->get(local_user(), 'expire', 'notes', true);
@@ -611,15 +611,15 @@ function settings_content(App $a)
$expire_photos = DI::pConfig()->get(local_user(), 'expire', 'photos', false);
$expire_network_only = DI::pConfig()->get(local_user(), 'expire', 'network_only', false);
- if (!strlen($a->user['timezone'])) {
+ if (!strlen($user['timezone'])) {
$timezone = date_default_timezone_get();
}
// Set the account type to "Community" when the page is a community page but the account type doesn't fit
// This is only happening on the first visit after the update
- if (in_array($a->user['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP]) &&
- ($a->user['account-type'] != User::ACCOUNT_TYPE_COMMUNITY))
- $a->user['account-type'] = User::ACCOUNT_TYPE_COMMUNITY;
+ if (in_array($user['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP]) &&
+ ($user['account-type'] != User::ACCOUNT_TYPE_COMMUNITY))
+ $user['account-type'] = User::ACCOUNT_TYPE_COMMUNITY;
$pageset_tpl = Renderer::getMarkupTemplate('settings/pagetypes.tpl');
@@ -627,7 +627,7 @@ function settings_content(App $a)
'$account_types' => DI::l10n()->t("Account Types"),
'$user' => DI::l10n()->t("Personal Page Subtypes"),
'$community' => DI::l10n()->t("Community Forum Subtypes"),
- '$account_type' => $a->user['account-type'],
+ '$account_type' => $user['account-type'],
'$type_person' => User::ACCOUNT_TYPE_PERSON,
'$type_organisation' => User::ACCOUNT_TYPE_ORGANISATION,
'$type_news' => User::ACCOUNT_TYPE_NEWS,
@@ -635,39 +635,39 @@ function settings_content(App $a)
'$account_person' => ['account-type', DI::l10n()->t('Personal Page'), User::ACCOUNT_TYPE_PERSON,
DI::l10n()->t('Account for a personal profile.'),
- ($a->user['account-type'] == User::ACCOUNT_TYPE_PERSON)],
+ ($user['account-type'] == User::ACCOUNT_TYPE_PERSON)],
'$account_organisation' => ['account-type', DI::l10n()->t('Organisation Page'), User::ACCOUNT_TYPE_ORGANISATION,
DI::l10n()->t('Account for an organisation that automatically approves contact requests as "Followers".'),
- ($a->user['account-type'] == User::ACCOUNT_TYPE_ORGANISATION)],
+ ($user['account-type'] == User::ACCOUNT_TYPE_ORGANISATION)],
'$account_news' => ['account-type', DI::l10n()->t('News Page'), User::ACCOUNT_TYPE_NEWS,
DI::l10n()->t('Account for a news reflector that automatically approves contact requests as "Followers".'),
- ($a->user['account-type'] == User::ACCOUNT_TYPE_NEWS)],
+ ($user['account-type'] == User::ACCOUNT_TYPE_NEWS)],
'$account_community' => ['account-type', DI::l10n()->t('Community Forum'), User::ACCOUNT_TYPE_COMMUNITY,
DI::l10n()->t('Account for community discussions.'),
- ($a->user['account-type'] == User::ACCOUNT_TYPE_COMMUNITY)],
+ ($user['account-type'] == User::ACCOUNT_TYPE_COMMUNITY)],
'$page_normal' => ['page-flags', DI::l10n()->t('Normal Account Page'), User::PAGE_FLAGS_NORMAL,
DI::l10n()->t('Account for a regular personal profile that requires manual approval of "Friends" and "Followers".'),
- ($a->user['page-flags'] == User::PAGE_FLAGS_NORMAL)],
+ ($user['page-flags'] == User::PAGE_FLAGS_NORMAL)],
'$page_soapbox' => ['page-flags', DI::l10n()->t('Soapbox Page'), User::PAGE_FLAGS_SOAPBOX,
DI::l10n()->t('Account for a public profile that automatically approves contact requests as "Followers".'),
- ($a->user['page-flags'] == User::PAGE_FLAGS_SOAPBOX)],
+ ($user['page-flags'] == User::PAGE_FLAGS_SOAPBOX)],
'$page_community' => ['page-flags', DI::l10n()->t('Public Forum'), User::PAGE_FLAGS_COMMUNITY,
DI::l10n()->t('Automatically approves all contact requests.'),
- ($a->user['page-flags'] == User::PAGE_FLAGS_COMMUNITY)],
+ ($user['page-flags'] == User::PAGE_FLAGS_COMMUNITY)],
'$page_freelove' => ['page-flags', DI::l10n()->t('Automatic Friend Page'), User::PAGE_FLAGS_FREELOVE,
DI::l10n()->t('Account for a popular profile that automatically approves contact requests as "Friends".'),
- ($a->user['page-flags'] == User::PAGE_FLAGS_FREELOVE)],
+ ($user['page-flags'] == User::PAGE_FLAGS_FREELOVE)],
'$page_prvgroup' => ['page-flags', DI::l10n()->t('Private Forum [Experimental]'), User::PAGE_FLAGS_PRVGROUP,
DI::l10n()->t('Requires manual approval of contact requests.'),
- ($a->user['page-flags'] == User::PAGE_FLAGS_PRVGROUP)],
+ ($user['page-flags'] == User::PAGE_FLAGS_PRVGROUP)],
]);
@@ -731,7 +731,7 @@ function settings_content(App $a)
'$timezone' => ['timezone_select' , DI::l10n()->t('Your Timezone:'), Temporal::getTimezoneSelect($timezone), ''],
'$language' => ['language', DI::l10n()->t('Your Language:'), $language, DI::l10n()->t('Set the language we use to show you friendica interface and to send you emails'), $lang_choices],
'$defloc' => ['defloc', DI::l10n()->t('Default Post Location:'), $defloc, ''],
- '$allowloc' => ['allow_location', DI::l10n()->t('Use Browser Location:'), ($a->user['allow_location'] == 1), ''],
+ '$allowloc' => ['allow_location', DI::l10n()->t('Use Browser Location:'), ($user['allow_location'] == 1), ''],
'$h_prv' => DI::l10n()->t('Security and Privacy Settings'),
'$visibility' => $profile['net-publish'],
@@ -739,16 +739,16 @@ function settings_content(App $a)
'$profile_in_dir' => $profile_in_dir,
'$profile_in_net_dir' => ['profile_in_netdirectory', DI::l10n()->t('Allow your profile to be searchable globally?'), $profile['net-publish'], DI::l10n()->t("Activate this setting if you want others to easily find and follow you. Your profile will be searchable on remote systems. This setting also determines whether Friendica will inform search engines that your profile should be indexed or not.") . $net_pub_desc],
'$hide_friends' => ['hide-friends', DI::l10n()->t('Hide your contact/friend list from viewers of your profile?'), $profile['hide-friends'], DI::l10n()->t('A list of your contacts is displayed on your profile page. Activate this option to disable the display of your contact list.')],
- '$hide_wall' => ['hidewall', DI::l10n()->t('Hide your profile details from anonymous viewers?'), $a->user['hidewall'], DI::l10n()->t('Anonymous visitors will only see your profile picture, your display name and the nickname you are using on your profile page. Your public posts and replies will still be accessible by other means.')],
+ '$hide_wall' => ['hidewall', DI::l10n()->t('Hide your profile details from anonymous viewers?'), $user['hidewall'], DI::l10n()->t('Anonymous visitors will only see your profile picture, your display name and the nickname you are using on your profile page. Your public posts and replies will still be accessible by other means.')],
'$unlisted' => ['unlisted', DI::l10n()->t('Make public posts unlisted'), DI::pConfig()->get(local_user(), 'system', 'unlisted'), DI::l10n()->t('Your public posts will not appear on the community pages or in search results, nor be sent to relay servers. However they can still appear on public feeds on remote servers.')],
'$accessiblephotos' => ['accessible-photos', DI::l10n()->t('Make all posted pictures accessible'), DI::pConfig()->get(local_user(), 'system', 'accessible-photos'), DI::l10n()->t("This option makes every posted picture accessible via the direct link. This is a workaround for the problem that most other networks can't handle permissions on pictures. Non public pictures still won't be visible for the public on your photo albums though.")],
- '$blockwall' => ['blockwall', DI::l10n()->t('Allow friends to post to your profile page?'), (intval($a->user['blockwall']) ? '0' : '1'), DI::l10n()->t('Your contacts may write posts on your profile wall. These posts will be distributed to your contacts')], // array('blockwall', DI::l10n()->t('Allow friends to post to your profile page:'), !$blockwall, ''),
- '$blocktags' => ['blocktags', DI::l10n()->t('Allow friends to tag your posts?'), (intval($a->user['blocktags']) ? '0' : '1'), DI::l10n()->t('Your contacts can add additional tags to your posts.')], // array('blocktags', DI::l10n()->t('Allow friends to tag your posts:'), !$blocktags, ''),
+ '$blockwall' => ['blockwall', DI::l10n()->t('Allow friends to post to your profile page?'), (intval($user['blockwall']) ? '0' : '1'), DI::l10n()->t('Your contacts may write posts on your profile wall. These posts will be distributed to your contacts')], // array('blockwall', DI::l10n()->t('Allow friends to post to your profile page:'), !$blockwall, ''),
+ '$blocktags' => ['blocktags', DI::l10n()->t('Allow friends to tag your posts?'), (intval($user['blocktags']) ? '0' : '1'), DI::l10n()->t('Your contacts can add additional tags to your posts.')], // array('blocktags', DI::l10n()->t('Allow friends to tag your posts:'), !$blocktags, ''),
'$unkmail' => ['unkmail', DI::l10n()->t('Permit unknown people to send you private mail?'), $unkmail, DI::l10n()->t('Friendica network users may send you private messages even if they are not in your contact list.')],
'$cntunkmail' => ['cntunkmail', DI::l10n()->t('Maximum private messages per day from unknown people:'), $cntunkmail , DI::l10n()->t("\x28to prevent spam abuse\x29")],
- '$group_select' => Group::displayGroupSelection(local_user(), $a->user['def_gid']),
+ '$group_select' => Group::displayGroupSelection(local_user(), $user['def_gid']),
'$permissions' => DI::l10n()->t('Default Post Permissions'),
- '$aclselect' => ACL::getFullSelectorHTML(DI::page(), $a->user),
+ '$aclselect' => ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId()),
'$expire' => [
'label' => DI::l10n()->t('Expiration settings'),
diff --git a/mod/videos.php b/mod/videos.php
index e025269693..2bd5eb8c91 100644
--- a/mod/videos.php
+++ b/mod/videos.php
@@ -29,6 +29,7 @@ use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Attach;
use Friendica\Model\Item;
+use Friendica\Model\Profile;
use Friendica\Model\User;
use Friendica\Module\BaseProfile;
use Friendica\Security\Security;
@@ -120,6 +121,7 @@ function videos_content(App $a)
return;
}
+ $profile = Profile::getByUID($user['uid']);
//$phototypes = Photo::supportedTypes();
$_SESSION['video_return'] = DI::args()->getCommand();
@@ -171,7 +173,7 @@ function videos_content(App $a)
// tabs
$_is_owner = (local_user() && (local_user() == $user['uid']));
- $o .= BaseProfile::getTabsHTML($a, 'videos', $_is_owner, $user);
+ $o .= BaseProfile::getTabsHTML($a, 'videos', $_is_owner, $user['nickname'], $profile['hide-friends']);
//
// dispatch request
diff --git a/src/App.php b/src/App.php
index c9aafe14eb..6e9f7c3184 100644
--- a/src/App.php
+++ b/src/App.php
@@ -56,8 +56,6 @@ use Psr\Log\LoggerInterface;
*/
class App
{
- public $user;
-
// Allow themes to control internal parameters
// by changing App values in theme.php
private $theme_info = [
@@ -66,6 +64,8 @@ class App
'events_in_profile' => true
];
+ private $user_id = 0;
+ private $nickname = '';
private $timezone = '';
private $profile_owner = 0;
private $contact_id = 0;
@@ -126,6 +126,51 @@ class App
*/
private $pConfig;
+ /**
+ * Set the user ID
+ *
+ * @param int $user_id
+ * @return void
+ */
+ public function setLoggedInUserId(int $user_id)
+ {
+ $this->user_id = $user_id;
+ }
+
+ /**
+ * Set the nickname
+ *
+ * @param int $user_id
+ * @return void
+ */
+ public function setLoggedInUserNickname(string $nickname)
+ {
+ $this->nickname = $nickname;
+ }
+
+ public function isLoggedIn()
+ {
+ return local_user() && $this->user_id && ($this->user_id == local_user());
+ }
+
+ /**
+ * Fetch the user id
+ * @return int
+ */
+ public function getLoggedInUserId()
+ {
+ return $this->user_id;
+ }
+
+ /**
+ * Fetch the user nick name
+ * @return string
+ */
+ public function getLoggedInUserNickname()
+ {
+ return $this->nickname;
+ }
+
/**
* Set the profile owner ID
*
diff --git a/src/App/Page.php b/src/App/Page.php
index c6e3e723ce..766dd4ebef 100644
--- a/src/App/Page.php
+++ b/src/App/Page.php
@@ -277,8 +277,8 @@ class Page implements ArrayAccess
// If you're just visiting, let javascript take you home
if (!empty($_SESSION['visitor_home'])) {
$homebase = $_SESSION['visitor_home'];
- } elseif (!empty($app->user['nickname'])) {
- $homebase = 'profile/' . $app->user['nickname'];
+ } elseif (!empty($app->getLoggedInUserNickname())) {
+ $homebase = 'profile/' . $app->getLoggedInUserNickname();
}
if (isset($homebase)) {
diff --git a/src/BaseModule.php b/src/BaseModule.php
index cb8f8c790d..d7ca5798de 100644
--- a/src/BaseModule.php
+++ b/src/BaseModule.php
@@ -22,6 +22,7 @@
namespace Friendica;
use Friendica\Core\Logger;
+use Friendica\Model\User;
/**
* All modules in Friendica should extend BaseModule, although not all modules
@@ -135,10 +136,9 @@ abstract class BaseModule
*/
public static function getFormSecurityToken($typename = '')
{
- $a = DI::app();
-
+ $user = User::getById(DI::app()->getLoggedInUserId(), ['guid', 'prvkey']);
$timestamp = time();
- $sec_hash = hash('whirlpool', ($a->user['guid'] ?? '') . ($a->user['prvkey'] ?? '') . session_id() . $timestamp . $typename);
+ $sec_hash = hash('whirlpool', ($user['guid'] ?? '') . ($user['prvkey'] ?? '') . session_id() . $timestamp . $typename);
return $timestamp . '.' . $sec_hash;
}
@@ -163,14 +163,14 @@ abstract class BaseModule
$max_livetime = 10800; // 3 hours
- $a = DI::app();
+ $user = User::getById(DI::app()->getLoggedInUserId(), ['guid', 'prvkey']);
$x = explode('.', $hash);
if (time() > (intval($x[0]) + $max_livetime)) {
return false;
}
- $sec_hash = hash('whirlpool', ($a->user['guid'] ?? '') . ($a->user['prvkey'] ?? '') . session_id() . $x[0] . $typename);
+ $sec_hash = hash('whirlpool', ($user['guid'] ?? '') . ($user['prvkey'] ?? '') . session_id() . $x[0] . $typename);
return ($sec_hash == $x[1]);
}
@@ -183,8 +183,7 @@ abstract class BaseModule
public static function checkFormSecurityTokenRedirectOnError($err_redirect, $typename = '', $formname = 'form_security_token')
{
if (!self::checkFormSecurityToken($typename, $formname)) {
- $a = DI::app();
- Logger::log('checkFormSecurityToken failed: user ' . $a->user['guid'] . ' - form element ' . $typename);
+ Logger::log('checkFormSecurityToken failed: user ' . DI::app()->getLoggedInUserNickname() . ' - form element ' . $typename);
Logger::log('checkFormSecurityToken failed: _REQUEST data: ' . print_r($_REQUEST, true), Logger::DATA);
notice(self::getFormSecurityStandardErrorMessage());
DI::baseUrl()->redirect($err_redirect);
@@ -194,8 +193,7 @@ abstract class BaseModule
public static function checkFormSecurityTokenForbiddenOnError($typename = '', $formname = 'form_security_token')
{
if (!self::checkFormSecurityToken($typename, $formname)) {
- $a = DI::app();
- Logger::log('checkFormSecurityToken failed: user ' . $a->user['guid'] . ' - form element ' . $typename);
+ Logger::log('checkFormSecurityToken failed: user ' . DI::app()->getLoggedInUserNickname() . ' - form element ' . $typename);
Logger::log('checkFormSecurityToken failed: _REQUEST data: ' . print_r($_REQUEST, true), Logger::DATA);
throw new \Friendica\Network\HTTPException\ForbiddenException();
diff --git a/src/Console/Contact.php b/src/Console/Contact.php
index 55fd5024ca..ba65c00251 100644
--- a/src/Console/Contact.php
+++ b/src/Console/Contact.php
@@ -164,7 +164,7 @@ HELP;
$network = CliPrompt::prompt();
}
- $result = ContactModel::createFromProbe($user, $url, false, $network);
+ $result = ContactModel::createFromProbeForUser($user['uid'], $url, $network);
if ($result['success']) {
$this->out('User ' . $user['nickname'] . ' now connected to ' . $url . ', contact ID ' . $result['cid']);
diff --git a/src/Content/Nav.php b/src/Content/Nav.php
index 20b3a93258..b9f61dacb2 100644
--- a/src/Content/Nav.php
+++ b/src/Content/Nav.php
@@ -154,7 +154,7 @@ class Nav
* Display the current site location as a navigation aid.
*/
- $myident = ((is_array($a->user) && isset($a->user['nickname'])) ? $a->user['nickname'] . '@' : '');
+ $myident = !empty($a->getLoggedInUserNickname()) ? $a->getLoggedInUserNickname() . '@' : '';
$sitelocation = $myident . substr(DI::baseUrl()->get($ssl_state), strpos(DI::baseUrl()->get($ssl_state), '//') + 2);
@@ -185,25 +185,21 @@ class Nav
$nav['login'] = ['login', DI::l10n()->t('Login'), (DI::module()->getName() == 'login' ? 'selected' : ''), DI::l10n()->t('Sign in')];
}
- if (local_user()) {
- if (!empty($a->user)) {
- // user menu
- $nav['usermenu'][] = ['profile/' . $a->user['nickname'], DI::l10n()->t('Status'), '', DI::l10n()->t('Your posts and conversations')];
- $nav['usermenu'][] = ['profile/' . $a->user['nickname'] . '/profile', DI::l10n()->t('Profile'), '', DI::l10n()->t('Your profile page')];
- $nav['usermenu'][] = ['photos/' . $a->user['nickname'], DI::l10n()->t('Photos'), '', DI::l10n()->t('Your photos')];
- $nav['usermenu'][] = ['videos/' . $a->user['nickname'], DI::l10n()->t('Videos'), '', DI::l10n()->t('Your videos')];
- $nav['usermenu'][] = ['events/', DI::l10n()->t('Events'), '', DI::l10n()->t('Your events')];
- $nav['usermenu'][] = ['notes/', DI::l10n()->t('Personal notes'), '', DI::l10n()->t('Your personal notes')];
+ if ($a->isLoggedIn()) {
+ // user menu
+ $nav['usermenu'][] = ['profile/' . $a->getLoggedInUserNickname(), DI::l10n()->t('Status'), '', DI::l10n()->t('Your posts and conversations')];
+ $nav['usermenu'][] = ['profile/' . $a->getLoggedInUserNickname() . '/profile', DI::l10n()->t('Profile'), '', DI::l10n()->t('Your profile page')];
+ $nav['usermenu'][] = ['photos/' . $a->getLoggedInUserNickname(), DI::l10n()->t('Photos'), '', DI::l10n()->t('Your photos')];
+ $nav['usermenu'][] = ['videos/' . $a->getLoggedInUserNickname(), DI::l10n()->t('Videos'), '', DI::l10n()->t('Your videos')];
+ $nav['usermenu'][] = ['events/', DI::l10n()->t('Events'), '', DI::l10n()->t('Your events')];
+ $nav['usermenu'][] = ['notes/', DI::l10n()->t('Personal notes'), '', DI::l10n()->t('Your personal notes')];
- // user info
- $contact = DBA::selectFirst('contact', ['micro'], ['uid' => $a->user['uid'], 'self' => true]);
- $userinfo = [
- 'icon' => (DBA::isResult($contact) ? DI::baseUrl()->remove($contact['micro']) : Contact::DEFAULT_AVATAR_MICRO),
- 'name' => $a->user['username'],
- ];
- } else {
- DI::logger()->warning('Empty $a->user for local user', ['local_user' => local_user(), '$a' => $a]);
- }
+ // user info
+ $contact = DBA::selectFirst('contact', ['id', 'url', 'avatar', 'micro', 'name', 'nick', 'baseurl', 'updated'], ['uid' => $a->getLoggedInUserId(), 'self' => true]);
+ $userinfo = [
+ 'icon' => Contact::getMicro($contact),
+ 'name' => $contact['name'],
+ ];
}
// "Home" should also take you home from an authenticated remote profile connection
@@ -271,10 +267,10 @@ class Nav
}
// The following nav links are only show to logged in users
- if (local_user() && !empty($a->user)) {
+ if (local_user() && !empty($a->getLoggedInUserNickname())) {
$nav['network'] = ['network', DI::l10n()->t('Network'), '', DI::l10n()->t('Conversations from your friends')];
- $nav['home'] = ['profile/' . $a->user['nickname'], DI::l10n()->t('Home'), '', DI::l10n()->t('Your posts and conversations')];
+ $nav['home'] = ['profile/' . $a->getLoggedInUserNickname(), DI::l10n()->t('Home'), '', DI::l10n()->t('Your posts and conversations')];
// Don't show notifications for public communities
if (Session::get('page_flags', '') != User::PAGE_FLAGS_COMMUNITY) {
diff --git a/src/Core/ACL.php b/src/Core/ACL.php
index 297ea6e744..9453dc6590 100644
--- a/src/Core/ACL.php
+++ b/src/Core/ACL.php
@@ -26,12 +26,24 @@ use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Contact;
use Friendica\Model\Group;
+use Friendica\Model\User;
/**
* Handle ACL management and display
*/
class ACL
{
+ /**
+ * Returns the default lock state for the given user id
+ * @param int $uid
+ * @return bool "true" if the default settings are non public
+ */
+ public static function getLockstateForUserId(int $uid)
+ {
+ $user = User::getById($uid, ['allow_cid', 'allow_gid', 'deny_cid', 'deny_gid']);
+ return !empty($user['allow_cid']) || !empty($user['allow_gid']) || !empty($user['deny_cid']) || !empty($user['deny_gid']);
+ }
+
/**
* Returns a select input tag for private message recipient
*
@@ -210,7 +222,7 @@ class ACL
* Return the full jot ACL selector HTML
*
* @param Page $page
- * @param array $user User array
+ * @param int $uid User ID
* @param bool $for_federation
* @param array $default_permissions Static defaults permission array:
* [
@@ -226,18 +238,20 @@ class ACL
*/
public static function getFullSelectorHTML(
Page $page,
- array $user = null,
+ int $uid = null,
bool $for_federation = false,
array $default_permissions = [],
array $condition = [],
$form_prefix = ''
) {
- if (empty($user['uid'])) {
+ if (empty($uid)) {
return '';
}
static $input_group_id = 0;
+ $user = User::getById($uid);
+
$input_group_id++;
$page->registerFooterScript(Theme::getPathForFile('asset/typeahead.js/dist/typeahead.bundle.js'));
diff --git a/src/Factory/Notification/Introduction.php b/src/Factory/Notification/Introduction.php
index ff9c028af0..2b5aecdb00 100644
--- a/src/Factory/Notification/Introduction.php
+++ b/src/Factory/Notification/Introduction.php
@@ -68,7 +68,7 @@ class Introduction extends BaseFactory
$this->l10n = $l10n;
$this->pConfig = $pConfig;
$this->session = $session;
- $this->nick = $app->user['nickname'] ?? '';
+ $this->nick = $app->getLoggedInUserNickname() ?? '';
}
/**
diff --git a/src/Model/Contact.php b/src/Model/Contact.php
index 609a70718e..53f696444d 100644
--- a/src/Model/Contact.php
+++ b/src/Model/Contact.php
@@ -2311,16 +2311,15 @@ class Contact
*
* Takes a $uid and a url/handle and adds a new contact
*
- * @param array $user The user the contact should be created for
+ * @param int $uid The user id the contact should be created for
* @param string $url The profile URL of the contact
- * @param bool $interactive
* @param string $network
* @return array
* @throws HTTPException\InternalServerErrorException
* @throws HTTPException\NotFoundException
* @throws \ImagickException
*/
- public static function createFromProbe(array $user, $url, $interactive = false, $network = '')
+ public static function createFromProbeForUser(int $uid, $url, $network = '')
{
$result = ['cid' => -1, 'success' => false, 'message' => ''];
@@ -2356,7 +2355,7 @@ class Contact
$ret = $arr['contact'];
} else {
$probed = true;
- $ret = Probe::uri($url, $network, $user['uid']);
+ $ret = Probe::uri($url, $network, $uid);
}
if (($network != '') && ($ret['network'] != $network)) {
@@ -2368,10 +2367,10 @@ class Contact
// the poll url is more reliable than the profile url, as we may have
// indirect links or webfinger links
- $condition = ['uid' => $user['uid'], 'poll' => [$ret['poll'], Strings::normaliseLink($ret['poll'])], 'network' => $ret['network'], 'pending' => false];
+ $condition = ['uid' => $uid, 'poll' => [$ret['poll'], Strings::normaliseLink($ret['poll'])], 'network' => $ret['network'], 'pending' => false];
$contact = DBA::selectFirst('contact', ['id', 'rel'], $condition);
if (!DBA::isResult($contact)) {
- $condition = ['uid' => $user['uid'], 'nurl' => Strings::normaliseLink($ret['url']), 'network' => $ret['network'], 'pending' => false];
+ $condition = ['uid' => $uid, 'nurl' => Strings::normaliseLink($ret['url']), 'network' => $ret['network'], 'pending' => false];
$contact = DBA::selectFirst('contact', ['id', 'rel'], $condition);
}
@@ -2436,7 +2435,7 @@ class Contact
// create contact record
self::insert([
- 'uid' => $user['uid'],
+ 'uid' => $uid,
'created' => DateTimeFormat::utcNow(),
'url' => $ret['url'],
'nurl' => Strings::normaliseLink($ret['url']),
@@ -2464,7 +2463,7 @@ class Contact
]);
}
- $contact = DBA::selectFirst('contact', [], ['url' => $ret['url'], 'network' => $ret['network'], 'uid' => $user['uid']]);
+ $contact = DBA::selectFirst('contact', [], ['url' => $ret['url'], 'network' => $ret['network'], 'uid' => $uid]);
if (!DBA::isResult($contact)) {
$result['message'] .= DI::l10n()->t('Unable to retrieve contact information.') . EOL;
return $result;
@@ -2473,7 +2472,7 @@ class Contact
$contact_id = $contact['id'];
$result['cid'] = $contact_id;
- Group::addMember(User::getDefaultGroup($user['uid'], $contact["network"]), $contact_id);
+ Group::addMember(User::getDefaultGroup($uid, $contact["network"]), $contact_id);
// Update the avatar
self::updateAvatar($contact_id, $ret['photo']);
@@ -2489,7 +2488,7 @@ class Contact
Worker::add(PRIORITY_HIGH, 'UpdateContact', $contact_id);
}
- $owner = User::getOwnerDataById($user['uid']);
+ $owner = User::getOwnerDataById($uid);
if (DBA::isResult($owner)) {
if (in_array($protocol, [Protocol::OSTATUS, Protocol::DFRN])) {
@@ -2518,7 +2517,7 @@ class Contact
return false;
}
- $ret = ActivityPub\Transmitter::sendActivity('Follow', $contact['url'], $user['uid'], $activity_id);
+ $ret = ActivityPub\Transmitter::sendActivity('Follow', $contact['url'], $uid, $activity_id);
Logger::log('Follow returns: ' . $ret);
}
}
@@ -2579,14 +2578,9 @@ class Contact
*/
public static function follow(int $cid, int $uid)
{
- $user = User::getById($uid);
- if (empty($user)) {
- return false;
- }
-
$contact = self::getById($cid, ['url']);
- $result = self::createFromProbe($user, $contact['url'], false);
+ $result = self::createFromProbeForUser($uid, $contact['url']);
return $result['cid'];
}
@@ -2744,7 +2738,7 @@ class Contact
}
} elseif (DBA::isResult($user) && in_array($user['page-flags'], [User::PAGE_FLAGS_SOAPBOX, User::PAGE_FLAGS_FREELOVE, User::PAGE_FLAGS_COMMUNITY])) {
if (($user['page-flags'] == User::PAGE_FLAGS_FREELOVE) && ($network != Protocol::DIASPORA)) {
- self::createFromProbe($importer, $url, false, $network);
+ self::createFromProbeForUser($importer['uid'], $url, $network);
}
$condition = ['uid' => $importer['uid'], 'url' => $url, 'pending' => true];
diff --git a/src/Model/Mail.php b/src/Model/Mail.php
index 307724a262..7eaeb09b5e 100644
--- a/src/Model/Mail.php
+++ b/src/Model/Mail.php
@@ -173,7 +173,7 @@ class Mail
$recip_host = substr($recip_host, 0, strpos($recip_host, '/'));
$recip_handle = (($contact['addr']) ? $contact['addr'] : $contact['nick'] . '@' . $recip_host);
- $sender_handle = $a->user['nickname'] . '@' . substr(DI::baseUrl(), strpos(DI::baseUrl(), '://') + 3);
+ $sender_handle = $a->getLoggedInUserNickname() . '@' . substr(DI::baseUrl(), strpos(DI::baseUrl(), '://') + 3);
$conv_guid = System::createUUID();
$convuri = $recip_handle . ':' . $conv_guid;
diff --git a/src/Model/User.php b/src/Model/User.php
index 55bbb8b841..49423ce9ef 100644
--- a/src/Model/User.php
+++ b/src/Model/User.php
@@ -155,6 +155,8 @@ class User
$system['region'] = '';
$system['country-name'] = '';
$system['net-publish'] = false;
+ $system['picdate'] = '';
+ $system['theme'] = '';
// Ensure that the user contains data
$user = DBA::selectFirst('user', ['prvkey', 'guid'], ['uid' => 0]);
diff --git a/src/Module/BaseApi.php b/src/Module/BaseApi.php
index 9d5c36f423..5b44073f3f 100644
--- a/src/Module/BaseApi.php
+++ b/src/Module/BaseApi.php
@@ -75,9 +75,7 @@ class BaseApi extends BaseModule
{
self::checkAllowedScope(self::SCOPE_WRITE);
- $a = DI::app();
-
- if (!empty($a->user['uid']) && $a->user['uid'] != self::getCurrentUserID()) {
+ if (!DI::app()->isLoggedIn()) {
throw new HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.'));
}
}
@@ -86,9 +84,7 @@ class BaseApi extends BaseModule
{
self::checkAllowedScope(self::SCOPE_WRITE);
- $a = DI::app();
-
- if (!empty($a->user['uid']) && $a->user['uid'] != self::getCurrentUserID()) {
+ if (!DI::app()->isLoggedIn()) {
throw new HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.'));
}
}
@@ -97,9 +93,7 @@ class BaseApi extends BaseModule
{
self::checkAllowedScope(self::SCOPE_WRITE);
- $a = DI::app();
-
- if (!empty($a->user['uid']) && $a->user['uid'] != self::getCurrentUserID()) {
+ if (!DI::app()->isLoggedIn()) {
throw new HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.'));
}
}
@@ -108,9 +102,7 @@ class BaseApi extends BaseModule
{
self::checkAllowedScope(self::SCOPE_WRITE);
- $a = DI::app();
-
- if (!empty($a->user['uid']) && $a->user['uid'] != self::getCurrentUserID()) {
+ if (!DI::app()->isLoggedIn()) {
throw new HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.'));
}
}
diff --git a/src/Module/BaseProfile.php b/src/Module/BaseProfile.php
index 832c8fd2f8..7ab7b8b7ce 100644
--- a/src/Module/BaseProfile.php
+++ b/src/Module/BaseProfile.php
@@ -39,10 +39,8 @@ class BaseProfile extends BaseModule
* @return string
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
- public static function getTabsHTML(App $a, string $current, bool $is_owner, array $profile)
+ public static function getTabsHTML(App $a, string $current, bool $is_owner, string $nickname, bool $hide_friends)
{
- $nickname = $profile['nickname'];
-
$baseProfileUrl = DI::baseUrl() . '/profile/' . $nickname;
$tabs = [
@@ -123,7 +121,7 @@ class BaseProfile extends BaseModule
];
}
- if (empty($profile['hide-friends'])) {
+ if (!$hide_friends) {
$tabs[] = [
'label' => DI::l10n()->t('Contacts'),
'url' => $baseProfileUrl . '/contacts',
diff --git a/src/Module/Bookmarklet.php b/src/Module/Bookmarklet.php
index fab9dbc6c5..d581b81e85 100644
--- a/src/Module/Bookmarklet.php
+++ b/src/Module/Bookmarklet.php
@@ -23,7 +23,6 @@ namespace Friendica\Module;
use Friendica\BaseModule;
use Friendica\Content\PageInfo;
-use Friendica\Core\ACL;
use Friendica\DI;
use Friendica\Module\Security\Login;
use Friendica\Network\HTTPException;
@@ -59,16 +58,6 @@ class Bookmarklet extends BaseModule
$content = "\n" . PageInfo::getFooterFromUrl($_REQUEST['url']);
$x = [
- 'is_owner' => true,
- 'allow_location' => $app->user['allow_location'],
- 'default_location' => $app->user['default-location'],
- 'nickname' => $app->user['nickname'],
- 'lockstate' => ((is_array($app->user) && ((strlen($app->user['allow_cid'])) || (strlen($app->user['allow_gid'])) || (strlen($app->user['deny_cid'])) || (strlen($app->user['deny_gid'])))) ? 'lock' : 'unlock'),
- 'default_perms' => ACL::getDefaultUserPermissions($app->user),
- 'acl' => ACL::getFullSelectorHTML(DI::page(), $app->user, true),
- 'bang' => '',
- 'visitor' => 'block',
- 'profile_uid' => local_user(),
'title' => trim($_REQUEST['title'] ?? '', '*'),
'content' => $content
];
diff --git a/src/Module/Contact.php b/src/Module/Contact.php
index b63aa0f5d7..ae7c77d992 100644
--- a/src/Module/Contact.php
+++ b/src/Module/Contact.php
@@ -27,7 +27,6 @@ use Friendica\Content\Nav;
use Friendica\Content\Pager;
use Friendica\Content\Text\BBCode;
use Friendica\Content\Widget;
-use Friendica\Core\ACL;
use Friendica\Core\Hook;
use Friendica\Core\Protocol;
use Friendica\Core\Renderer;
@@ -169,8 +168,7 @@ class Contact extends BaseModule
}
if ($contact['network'] == Protocol::OSTATUS) {
- $user = Model\User::getById($contact['uid']);
- $result = Model\Contact::createFromProbe($user, $contact['url'], false, $contact['network']);
+ $result = Model\Contact::createFromProbeForUser($contact['uid'], $contact['url'], $contact['network']);
if ($result['success']) {
DBA::update('contact', ['subhub' => 1], ['id' => $contact_id]);
@@ -937,18 +935,7 @@ class Contact extends BaseModule
if (!$update) {
// We need the editor here to be able to reshare an item.
if (local_user()) {
- $x = [
- 'is_owner' => true,
- 'allow_location' => $a->user['allow_location'],
- 'default_location' => $a->user['default-location'],
- 'nickname' => $a->user['nickname'],
- 'lockstate' => (is_array($a->user) && (strlen($a->user['allow_cid']) || strlen($a->user['allow_gid']) || strlen($a->user['deny_cid']) || strlen($a->user['deny_gid'])) ? 'lock' : 'unlock'),
- 'acl' => ACL::getFullSelectorHTML(DI::page(), $a->user, true),
- 'bang' => '',
- 'visitor' => 'block',
- 'profile_uid' => local_user(),
- ];
- $o = status_editor($a, $x, 0, true);
+ $o = status_editor($a, [], 0, true);
}
}
diff --git a/src/Module/Contact/Poke.php b/src/Module/Contact/Poke.php
index 955d4bab0e..d9dd7e27aa 100644
--- a/src/Module/Contact/Poke.php
+++ b/src/Module/Contact/Poke.php
@@ -55,10 +55,11 @@ class Poke extends BaseModule
$private = !empty($_POST['private']) ? Model\Item::PRIVATE : Model\Item::PUBLIC;
- $allow_cid = ($private ? '<' . $contact['id']. '>' : $a->user['allow_cid']);
- $allow_gid = ($private ? '' : $a->user['allow_gid']);
- $deny_cid = ($private ? '' : $a->user['deny_cid']);
- $deny_gid = ($private ? '' : $a->user['deny_gid']);
+ $user = Model\User::getById($a->getLoggedInUserId());
+ $allow_cid = ($private ? '<' . $contact['id']. '>' : $user['allow_cid']);
+ $allow_gid = ($private ? '' : $user['allow_gid']);
+ $deny_cid = ($private ? '' : $user['deny_cid']);
+ $deny_gid = ($private ? '' : $user['deny_gid']);
$actor = Contact::getById($a->getContactId());
diff --git a/src/Module/Conversation/Community.php b/src/Module/Conversation/Community.php
index 18332fe27e..d80c4aae23 100644
--- a/src/Module/Conversation/Community.php
+++ b/src/Module/Conversation/Community.php
@@ -29,7 +29,6 @@ use Friendica\Content\Nav;
use Friendica\Content\Text\HTML;
use Friendica\Content\Widget;
use Friendica\Content\Widget\TrendingTags;
-use Friendica\Core\ACL;
use Friendica\Core\Renderer;
use Friendica\Core\Session;
use Friendica\Database\DBA;
@@ -128,18 +127,7 @@ class Community extends BaseModule
// We need the editor here to be able to reshare an item.
if (Session::isAuthenticated()) {
- $x = [
- 'is_owner' => true,
- 'allow_location' => DI::app()->user['allow_location'],
- 'default_location' => DI::app()->user['default-location'],
- 'nickname' => DI::app()->user['nickname'],
- 'lockstate' => (is_array(DI::app()->user) && (strlen(DI::app()->user['allow_cid']) || strlen(DI::app()->user['allow_gid']) || strlen(DI::app()->user['deny_cid']) || strlen(DI::app()->user['deny_gid'])) ? 'lock' : 'unlock'),
- 'acl' => ACL::getFullSelectorHTML(DI::page(), DI::app()->user, true),
- 'bang' => '',
- 'visitor' => 'block',
- 'profile_uid' => local_user(),
- ];
- $o .= status_editor(DI::app(), $x, 0, true);
+ $o .= status_editor(DI::app(), [], 0, true);
}
}
diff --git a/src/Module/Conversation/Network.php b/src/Module/Conversation/Network.php
index 046c6de8c3..d9f34e3e83 100644
--- a/src/Module/Conversation/Network.php
+++ b/src/Module/Conversation/Network.php
@@ -139,18 +139,9 @@ class Network extends BaseModule
}
$x = [
- 'is_owner' => true,
- 'allow_location' => $a->user['allow_location'],
- 'default_location' => $a->user['default-location'],
- 'nickname' => $a->user['nickname'],
- 'lockstate' => (self::$groupId || self::$forumContactId || self::$network || (is_array($a->user) &&
- (strlen($a->user['allow_cid']) || strlen($a->user['allow_gid']) ||
- strlen($a->user['deny_cid']) || strlen($a->user['deny_gid']))) ? 'lock' : 'unlock'),
- 'default_perms' => ACL::getDefaultUserPermissions($a->user),
- 'acl' => ACL::getFullSelectorHTML(DI::page(), $a->user, true, $default_permissions),
+ 'lockstate' => self::$groupId || self::$forumContactId || self::$network || ACL::getLockstateForUserId($a->getLoggedInUserId()) ? 'lock' : 'unlock',
+ 'acl' => ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId(), true, $default_permissions),
'bang' => ((self::$groupId || self::$forumContactId || self::$network) ? '!' : ''),
- 'visitor' => 'block',
- 'profile_uid' => local_user(),
'content' => $content,
];
diff --git a/src/Module/Delegation.php b/src/Module/Delegation.php
index abcc5679ee..45f7fc57d2 100644
--- a/src/Module/Delegation.php
+++ b/src/Module/Delegation.php
@@ -45,7 +45,7 @@ class Delegation extends BaseModule
}
$uid = local_user();
- $orig_record = DI::app()->user;
+ $orig_record = User::getById(DI::app()->getLoggedInUserId());
if (Session::get('submanage')) {
$user = User::getById(Session::get('submanage'));
@@ -109,7 +109,7 @@ class Delegation extends BaseModule
$ret = [];
Hook::callAll('home_init', $ret);
- DI::baseUrl()->redirect('profile/' . DI::app()->user['nickname']);
+ DI::baseUrl()->redirect('profile/' . DI::app()->getLoggedInUserNickname());
// NOTREACHED
}
@@ -130,7 +130,7 @@ class Delegation extends BaseModule
$identities[$key]['thumb'] = Contact::getAvatarUrlForId($self['id'], Proxy::SIZE_THUMB, $self['updated']);
- $identities[$key]['selected'] = ($identity['nickname'] === DI::app()->user['nickname']);
+ $identities[$key]['selected'] = ($identity['nickname'] === DI::app()->getLoggedInUserNickname());
$condition = ["`uid` = ? AND `msg` != '' AND NOT (`type` IN (?, ?)) AND NOT `seen`", $identity['uid'], Notification\Type::INTRO, Notification\Type::MAIL];
$params = ['distinct' => true, 'expression' => 'parent'];
diff --git a/src/Module/HCard.php b/src/Module/HCard.php
index b8df844367..3310749bc3 100644
--- a/src/Module/HCard.php
+++ b/src/Module/HCard.php
@@ -40,7 +40,7 @@ class HCard extends BaseModule
if ((local_user()) && ($parameters['action'] ?? '') === 'view') {
// A logged in user views a profile of a user
- $nickname = $a->user['nickname'];
+ $nickname = $a->getLoggedInUserNickname();
} elseif (empty($parameters['action'])) {
// Show the profile hCard
$nickname = $parameters['profile'];
diff --git a/src/Module/Home.php b/src/Module/Home.php
index 21d92676cc..9d16e11aa7 100644
--- a/src/Module/Home.php
+++ b/src/Module/Home.php
@@ -42,7 +42,7 @@ class Home extends BaseModule
Hook::callAll('home_init', $ret);
- if (local_user() && ($app->user['nickname'])) {
+ if (local_user() && ($app->getLoggedInUserNickname())) {
DI::baseUrl()->redirect('network');
}
diff --git a/src/Module/Invite.php b/src/Module/Invite.php
index 2c32963d5e..82b8c604a9 100644
--- a/src/Module/Invite.php
+++ b/src/Module/Invite.php
@@ -25,6 +25,7 @@ use Friendica\BaseModule;
use Friendica\Core\Renderer;
use Friendica\DI;
use Friendica\Model;
+use Friendica\Model\User;
use Friendica\Network\HTTPException;
use Friendica\Protocol\Email;
use Friendica\Util\Strings;
@@ -71,6 +72,8 @@ class Invite extends BaseModule
}
}
+ $user = User::getById(local_user());
+
foreach ($recipients as $recipient) {
$recipient = trim($recipient);
@@ -95,7 +98,7 @@ class Invite extends BaseModule
$nmessage = $message;
}
- $additional_headers = 'From: "' . $app->user['email'] . '" <' . DI::emailer()->getSiteEmailAddress() . ">\n"
+ $additional_headers = 'From: "' . $user['email'] . '" <' . DI::emailer()->getSiteEmailAddress() . ">\n"
. 'Content-type: text/plain; charset=UTF-8' . "\n"
. 'Content-transfer-encoding: 8bit';
@@ -168,7 +171,7 @@ class Invite extends BaseModule
DI::l10n()->t('You are cordially invited to join me and other close friends on Friendica - and help us to create a better social web.') . "\r\n" . "\r\n"
. $linkTxt
. "\r\n" . "\r\n" . (($inviteOnly) ? DI::l10n()->t('You will need to supply this invitation code: $invite_code') . "\r\n" . "\r\n" : '') . DI::l10n()->t('Once you have registered, please connect with me via my profile page at:')
- . "\r\n" . "\r\n" . DI::baseUrl()->get() . '/profile/' . $app->user['nickname']
+ . "\r\n" . "\r\n" . DI::baseUrl()->get() . '/profile/' . $app->getLoggedInUserNickname()
. "\r\n" . "\r\n" . DI::l10n()->t('For more information about the Friendica project and why we feel it is important, please visit http://friendi.ca') . "\r\n" . "\r\n",
],
'$submit' => DI::l10n()->t('Submit')
diff --git a/src/Module/Item/Compose.php b/src/Module/Item/Compose.php
index db59bfb480..29fdbea746 100644
--- a/src/Module/Item/Compose.php
+++ b/src/Module/Item/Compose.php
@@ -186,7 +186,7 @@ class Compose extends BaseModule
'$jotplugins' => $jotplugins,
'$rand_num' => Crypto::randomDigits(12),
- '$acl_selector' => ACL::getFullSelectorHTML(DI::page(), $a->user, $doesFederate, [
+ '$acl_selector' => ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId(), $doesFederate, [
'allow_cid' => $contact_allow_list,
'allow_gid' => $group_allow_list,
'deny_cid' => $contact_deny_list,
diff --git a/src/Module/Magic.php b/src/Module/Magic.php
index cbd629fd3c..45fde43f64 100644
--- a/src/Module/Magic.php
+++ b/src/Module/Magic.php
@@ -27,6 +27,7 @@ use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Contact;
+use Friendica\Model\User;
use Friendica\Util\HTTPSignature;
use Friendica\Util\Strings;
@@ -76,52 +77,50 @@ class Magic extends BaseModule
System::externalRedirect($dest);
}
- if (local_user()) {
- $user = $a->user;
+ // OpenWebAuth
+ if (local_user() && $owa) {
+ $user = User::getById(local_user());
- // OpenWebAuth
- if ($owa) {
- // Extract the basepath
- // NOTE: we need another solution because this does only work
- // for friendica contacts :-/ . We should have the basepath
- // of a contact also in the contact table.
- $exp = explode('/profile/', $contact['url']);
- $basepath = $exp[0];
+ // Extract the basepath
+ // NOTE: we need another solution because this does only work
+ // for friendica contacts :-/ . We should have the basepath
+ // of a contact also in the contact table.
+ $exp = explode('/profile/', $contact['url']);
+ $basepath = $exp[0];
- $header = [];
- $header['Accept'] = 'application/x-dfrn+json, application/x-zot+json';
- $header['X-Open-Web-Auth'] = Strings::getRandomHex();
+ $header = [];
+ $header['Accept'] = 'application/x-dfrn+json, application/x-zot+json';
+ $header['X-Open-Web-Auth'] = Strings::getRandomHex();
- // Create a header that is signed with the local users private key.
- $header = HTTPSignature::createSig(
- $header,
- $user['prvkey'],
- 'acct:' . $user['nickname'] . '@' . DI::baseUrl()->getHostname() . (DI::baseUrl()->getUrlPath() ? '/' . DI::baseUrl()->getUrlPath() : '')
- );
+ // Create a header that is signed with the local users private key.
+ $header = HTTPSignature::createSig(
+ $header,
+ $user['prvkey'],
+ 'acct:' . $user['nickname'] . '@' . DI::baseUrl()->getHostname() . (DI::baseUrl()->getUrlPath() ? '/' . DI::baseUrl()->getUrlPath() : '')
+ );
- // Try to get an authentication token from the other instance.
- $curlResult = DI::httpRequest()->get($basepath . '/owa', ['header' => $header]);
+ // Try to get an authentication token from the other instance.
+ $curlResult = DI::httpRequest()->get($basepath . '/owa', ['header' => $header]);
- if ($curlResult->isSuccess()) {
- $j = json_decode($curlResult->getBody(), true);
+ if ($curlResult->isSuccess()) {
+ $j = json_decode($curlResult->getBody(), true);
- if ($j['success']) {
- $token = '';
- if ($j['encrypted_token']) {
- // The token is encrypted. If the local user is really the one the other instance
- // thinks he/she is, the token can be decrypted with the local users public key.
- openssl_private_decrypt(Strings::base64UrlDecode($j['encrypted_token']), $token, $user['prvkey']);
- } else {
- $token = $j['token'];
- }
- $args = (strpbrk($dest, '?&') ? '&' : '?') . 'owt=' . $token;
-
- Logger::info('Redirecting', ['path' => $dest . $args]);
- System::externalRedirect($dest . $args);
+ if ($j['success']) {
+ $token = '';
+ if ($j['encrypted_token']) {
+ // The token is encrypted. If the local user is really the one the other instance
+ // thinks he/she is, the token can be decrypted with the local users public key.
+ openssl_private_decrypt(Strings::base64UrlDecode($j['encrypted_token']), $token, $user['prvkey']);
+ } else {
+ $token = $j['token'];
}
+ $args = (strpbrk($dest, '?&') ? '&' : '?') . 'owt=' . $token;
+
+ Logger::info('Redirecting', ['path' => $dest . $args]);
+ System::externalRedirect($dest . $args);
}
- System::externalRedirect($dest);
}
+ System::externalRedirect($dest);
}
if ($test) {
diff --git a/src/Module/NoScrape.php b/src/Module/NoScrape.php
index aa421f3a8e..f156efb44f 100644
--- a/src/Module/NoScrape.php
+++ b/src/Module/NoScrape.php
@@ -45,7 +45,7 @@ class NoScrape extends BaseModule
$which = $parameters['nick'];
} elseif (local_user() && isset($parameters['profile']) && DI::args()->get(2) == 'view') {
// view infos about a known profile (needs a login)
- $which = $a->user['nickname'];
+ $which = $a->getLoggedInUserNickname();
} else {
System::jsonError(403, 'Authentication required');
}
diff --git a/src/Module/Profile/Common.php b/src/Module/Profile/Common.php
index ad30ab4ac3..7138ac73fd 100644
--- a/src/Module/Profile/Common.php
+++ b/src/Module/Profile/Common.php
@@ -62,7 +62,7 @@ class Common extends BaseProfile
$a->redirect('profile/' . $nickname . '/contacts');
};
- $o = self::getTabsHTML($a, 'contacts', false, $profile);
+ $o = self::getTabsHTML($a, 'contacts', false, $profile['nickname'], $profile['hide-friends']);
$tabs = self::getContactFilterTabs('profile/' . $nickname, 'common', $displayCommonTab);
diff --git a/src/Module/Profile/Contacts.php b/src/Module/Profile/Contacts.php
index 3307694e7f..19dbe4cddb 100644
--- a/src/Module/Profile/Contacts.php
+++ b/src/Module/Profile/Contacts.php
@@ -23,7 +23,6 @@ namespace Friendica\Module\Profile;
use Friendica\Content\Nav;
use Friendica\Content\Pager;
-use Friendica\Content\Widget;
use Friendica\Core\Protocol;
use Friendica\Core\Renderer;
use Friendica\Core\Session;
@@ -59,7 +58,7 @@ class Contacts extends Module\BaseProfile
Nav::setSelected('home');
- $o = self::getTabsHTML($a, 'contacts', $is_owner, $profile);
+ $o = self::getTabsHTML($a, 'contacts', $is_owner, $profile['nickname'], $profile['hide-friends']);
$tabs = self::getContactFilterTabs('profile/' . $nickname, $type, Session::isAuthenticated() && $profile['uid'] != local_user());
diff --git a/src/Module/Profile/Profile.php b/src/Module/Profile/Profile.php
index 2ef77ff8cb..25b6eccc9a 100644
--- a/src/Module/Profile/Profile.php
+++ b/src/Module/Profile/Profile.php
@@ -26,7 +26,6 @@ use Friendica\Content\ForumManager;
use Friendica\Content\Nav;
use Friendica\Content\Text\BBCode;
use Friendica\Content\Text\HTML;
-use Friendica\Content\Widget;
use Friendica\Core\Hook;
use Friendica\Core\Protocol;
use Friendica\Core\Renderer;
@@ -104,7 +103,7 @@ class Profile extends BaseProfile
Nav::setSelected('home');
$is_owner = local_user() == $profile['uid'];
- $o = self::getTabsHTML($a, 'profile', $is_owner, $profile);
+ $o = self::getTabsHTML($a, 'profile', $is_owner, $profile['nickname'], $profile['hide-friends']);
if (!empty($profile['hidewall']) && !$is_owner && !$remote_contact_id) {
notice(DI::l10n()->t('Access to this profile has been restricted.'));
diff --git a/src/Module/Profile/Schedule.php b/src/Module/Profile/Schedule.php
index b27da00c82..e72b1c7a65 100644
--- a/src/Module/Profile/Schedule.php
+++ b/src/Module/Profile/Schedule.php
@@ -58,7 +58,7 @@ class Schedule extends BaseProfile
$a = DI::app();
- $o = self::getTabsHTML($a, 'schedule', true, $a->user);
+ $o = self::getTabsHTML($a, 'schedule', true, $a->getLoggedInUserNickname(), false);
$schedule = [];
$delayed = DBA::select('delayed-post', [], ['uid' => local_user()]);
diff --git a/src/Module/Profile/Status.php b/src/Module/Profile/Status.php
index 30ac5f06ff..c6a9e272a9 100644
--- a/src/Module/Profile/Status.php
+++ b/src/Module/Profile/Status.php
@@ -110,7 +110,7 @@ class Status extends BaseProfile
return '';
}
- $o .= self::getTabsHTML($a, 'status', $is_owner, $profile);
+ $o .= self::getTabsHTML($a, 'status', $is_owner, $profile['nickname'], $profile['hide-friends']);
$o .= Widget::commonFriendsVisitor($profile['uid'], $profile['nickname']);
@@ -125,16 +125,9 @@ class Status extends BaseProfile
$x = [
'is_owner' => $is_owner,
'allow_location' => ($is_owner || $commvisitor) && $profile['allow_location'],
- 'default_location' => $is_owner ? $a->user['default-location'] : '',
+ 'default_location' => $is_owner ? $profile['default-location'] : '',
'nickname' => $profile['nickname'],
- 'lockstate' => is_array($a->user)
- && (strlen($a->user['allow_cid'])
- || strlen($a->user['allow_gid'])
- || strlen($a->user['deny_cid'])
- || strlen($a->user['deny_gid'])
- ) ? 'lock' : 'unlock',
- 'acl' => $is_owner ? ACL::getFullSelectorHTML(DI::page(), $a->user, true) : '',
- 'bang' => '',
+ 'acl' => $is_owner ? ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId(), true) : '',
'visitor' => $is_owner || $commvisitor ? 'block' : 'none',
'profile_uid' => $profile['uid'],
];
diff --git a/src/Module/Security/TwoFactor/Recovery.php b/src/Module/Security/TwoFactor/Recovery.php
index 46eb383b2d..d93146cb6c 100644
--- a/src/Module/Security/TwoFactor/Recovery.php
+++ b/src/Module/Security/TwoFactor/Recovery.php
@@ -25,6 +25,7 @@ use Friendica\BaseModule;
use Friendica\Core\Renderer;
use Friendica\Core\Session;
use Friendica\DI;
+use Friendica\Model\User;
use Friendica\Security\TwoFactor\Model\RecoveryCode;
/**
@@ -59,7 +60,7 @@ class Recovery extends BaseModule
Session::set('2fa', true);
info(DI::l10n()->t('Remaining recovery codes: %d', RecoveryCode::countValidForUser(local_user())));
- DI::auth()->setForUser($a, $a->user, true, true);
+ DI::auth()->setForUser($a, User::getById($a->getLoggedInUserId()), true, true);
} else {
notice(DI::l10n()->t('Invalid code, please retry.'));
}
diff --git a/src/Module/Security/TwoFactor/Verify.php b/src/Module/Security/TwoFactor/Verify.php
index 645aae9e29..22c757b82d 100644
--- a/src/Module/Security/TwoFactor/Verify.php
+++ b/src/Module/Security/TwoFactor/Verify.php
@@ -25,6 +25,7 @@ use Friendica\BaseModule;
use Friendica\Core\Renderer;
use Friendica\Core\Session;
use Friendica\DI;
+use Friendica\Model\User;
use PragmaRX\Google2FA\Google2FA;
use Friendica\Security\TwoFactor;
@@ -70,7 +71,7 @@ class Verify extends BaseModule
}
// Resume normal login workflow
- DI::auth()->setForUser($a, $a->user, true, true);
+ DI::auth()->setForUser($a, User::getById($a->getLoggedInUserId()), true, true);
} else {
self::$errors[] = DI::l10n()->t('Invalid code, please retry.');
}
diff --git a/src/Module/Settings/Delegation.php b/src/Module/Settings/Delegation.php
index 745879ec5e..067304ee8a 100644
--- a/src/Module/Settings/Delegation.php
+++ b/src/Module/Settings/Delegation.php
@@ -38,7 +38,7 @@ class Delegation extends BaseSettings
{
public static function post(array $parameters = [])
{
- if (!local_user() || !empty(DI::app()->user['uid']) && DI::app()->user['uid'] != local_user()) {
+ if (!DI::app()->isLoggedIn()) {
throw new HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.'));
}
diff --git a/src/Module/Settings/Display.php b/src/Module/Settings/Display.php
index 8d3bf77dbc..dd97ffc90d 100644
--- a/src/Module/Settings/Display.php
+++ b/src/Module/Settings/Display.php
@@ -27,6 +27,7 @@ use Friendica\Core\Session;
use Friendica\Core\Theme;
use Friendica\Database\DBA;
use Friendica\DI;
+use Friendica\Model\User;
use Friendica\Module\BaseSettings;
use Friendica\Network\HTTPException;
use Friendica\Util\Strings;
@@ -38,13 +39,15 @@ class Display extends BaseSettings
{
public static function post(array $parameters = [])
{
- if (!local_user() || !empty(DI::app()->user['uid']) && DI::app()->user['uid'] != local_user()) {
+ if (!DI::app()->isLoggedIn()) {
throw new HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.'));
}
self::checkFormSecurityTokenRedirectOnError('/settings/display', 'settings_display');
- $theme = !empty($_POST['theme']) ? Strings::escapeTags(trim($_POST['theme'])) : DI::app()->user['theme'];
+ $user = User::getById(local_user());
+
+ $theme = !empty($_POST['theme']) ? Strings::escapeTags(trim($_POST['theme'])) : $user['theme'];
$mobile_theme = !empty($_POST['mobile_theme']) ? Strings::escapeTags(trim($_POST['mobile_theme'])) : '';
$nosmile = !empty($_POST['nosmile']) ? intval($_POST['nosmile']) : 0;
$first_day_of_week = !empty($_POST['first_day_of_week']) ? intval($_POST['first_day_of_week']) : 0;
@@ -92,7 +95,7 @@ class Display extends BaseSettings
DI::pConfig()->set(local_user(), 'system', 'first_day_of_week' , $first_day_of_week);
if (in_array($theme, Theme::getAllowedList())) {
- if ($theme == DI::app()->user['theme']) {
+ if ($theme == $user['theme']) {
// call theme_post only if theme has not been changed
if (($themeconfigfile = Theme::getConfigFile($theme)) !== null) {
require_once $themeconfigfile;
@@ -128,6 +131,8 @@ class Display extends BaseSettings
$default_mobile_theme = 'none';
}
+ $user = User::getById(local_user());
+
$allowed_themes = Theme::getAllowedList();
$themes = [];
@@ -152,7 +157,7 @@ class Display extends BaseSettings
}
}
- $theme_selected = DI::app()->user['theme'] ?: $default_theme;
+ $theme_selected = $user['theme'] ?: $default_theme;
$mobile_theme_selected = Session::get('mobile-theme', $default_mobile_theme);
$itemspage_network = intval(DI::pConfig()->get(local_user(), 'system', 'itemspage_network'));
diff --git a/src/Module/Settings/Profile/Index.php b/src/Module/Settings/Profile/Index.php
index 4f4ddbdb3e..b5f7ef3500 100644
--- a/src/Module/Settings/Profile/Index.php
+++ b/src/Module/Settings/Profile/Index.php
@@ -25,12 +25,9 @@ use Friendica\Core\ACL;
use Friendica\Core\Hook;
use Friendica\Core\Protocol;
use Friendica\Core\Renderer;
-use Friendica\Core\Session;
use Friendica\Core\Theme;
-use Friendica\Core\Worker;
use Friendica\Database\DBA;
use Friendica\DI;
-use Friendica\Model\Contact;
use Friendica\Model\Profile;
use Friendica\Model\ProfileField;
use Friendica\Model\User;
@@ -149,7 +146,7 @@ class Index extends BaseSettings
$o = '';
- $profile = Profile::getByUID(local_user());
+ $profile = User::getOwnerDataById(local_user());
if (!DBA::isResult($profile)) {
throw new HTTPException\NotFoundException();
}
@@ -174,7 +171,7 @@ class Index extends BaseSettings
'value' => ['profile_field[' . $profileField->id . '][value]', DI::l10n()->t('Value:'), $profileField->value],
'acl' => ACL::getFullSelectorHTML(
DI::page(),
- $a->user,
+ $a->getLoggedInUserId(),
false,
$defaultPermissions,
['network' => Protocol::DFRN],
@@ -194,7 +191,7 @@ class Index extends BaseSettings
'value' => ['profile_field[new][value]', DI::l10n()->t('Value:')],
'acl' => ACL::getFullSelectorHTML(
DI::page(),
- $a->user,
+ $a->getLoggedInUserId(),
false,
['allow_cid' => []],
['network' => Protocol::DFRN],
@@ -209,7 +206,7 @@ class Index extends BaseSettings
'$baseurl' => DI::baseUrl()->get(true),
]);
- $personal_account = !in_array($a->user['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP]);
+ $personal_account = !in_array($profile['page-flags'], [User::PAGE_FLAGS_COMMUNITY, User::PAGE_FLAGS_PRVGROUP]);
$tpl = Renderer::getMarkupTemplate('settings/profile/index.tpl');
$o .= Renderer::replaceMacros($tpl, [
@@ -222,7 +219,7 @@ class Index extends BaseSettings
'$banner' => DI::l10n()->t('Edit Profile Details'),
'$submit' => DI::l10n()->t('Submit'),
'$profpic' => DI::l10n()->t('Change Profile Photo'),
- '$profpiclink' => '/photos/' . $a->user['nickname'],
+ '$profpiclink' => '/photos/' . $profile['nickname'],
'$viewprof' => DI::l10n()->t('View Profile'),
'$lbl_personal_section' => DI::l10n()->t('Personal'),
@@ -234,17 +231,17 @@ class Index extends BaseSettings
'$lbl_profile_photo' => DI::l10n()->t('Upload Profile Photo'),
'$baseurl' => DI::baseUrl()->get(true),
- '$nickname' => $a->user['nickname'],
+ '$nickname' => $profile['nickname'],
'$name' => ['name', DI::l10n()->t('Display name:'), $profile['name']],
'$about' => ['about', DI::l10n()->t('Description:'), $profile['about']],
- '$dob' => Temporal::getDateofBirthField($profile['dob'], $a->user['timezone']),
+ '$dob' => Temporal::getDateofBirthField($profile['dob'], $profile['timezone']),
'$address' => ['address', DI::l10n()->t('Street Address:'), $profile['address']],
'$locality' => ['locality', DI::l10n()->t('Locality/City:'), $profile['locality']],
'$region' => ['region', DI::l10n()->t('Region/State:'), $profile['region']],
'$postal_code' => ['postal_code', DI::l10n()->t('Postal/Zip Code:'), $profile['postal-code']],
'$country_name' => ['country_name', DI::l10n()->t('Country:'), $profile['country-name']],
- '$age' => ((intval($profile['dob'])) ? '(' . DI::l10n()->t('Age: ') . DI::l10n()->tt('%d year old', '%d years old', Temporal::getAgeByTimezone($profile['dob'], $a->user['timezone'])) . ')' : ''),
- '$xmpp' => ['xmpp', DI::l10n()->t('XMPP (Jabber) address:'), $profile['xmpp'], DI::l10n()->t('The XMPP address will be published so that people can follow you there.')],
+ '$age' => ((intval($profile['dob'])) ? '(' . DI::l10n()->t('Age: ') . DI::l10n()->tt('%d year old', '%d years old', Temporal::getAgeByTimezone($profile['dob'], $profile['timezone'])) . ')' : ''),
+ '$xmpp' => ['xmpp', DI::l10n()->t('XMPP (Jabber) address:'), $profile['xmpp'], DI::l10n()->t('The XMPP address will be propagated to your contacts so that they can follow you.')],
'$matrix' => ['matrix', DI::l10n()->t('Matrix (Element) address:'), $profile['matrix'], DI::l10n()->t('The Matrix address will be published so that people can follow you there.')],
'$homepage' => ['homepage', DI::l10n()->t('Homepage URL:'), $profile['homepage']],
'$pub_keywords' => ['pub_keywords', DI::l10n()->t('Public Keywords:'), $profile['pub_keywords'], DI::l10n()->t('(Used for suggesting potential friends, can be seen by others)')],
@@ -254,7 +251,7 @@ class Index extends BaseSettings
Reorder by dragging the field title.
Empty the label field to remove a custom field.
Non-public fields can only be seen by the selected Friendica contacts or the Friendica contacts in the selected groups.
",
- 'profile/' . $a->user['nickname']
+ 'profile/' . $profile['nickname']
),
'$custom_fields' => $custom_fields,
]);
diff --git a/src/Module/Settings/Profile/Photo/Crop.php b/src/Module/Settings/Profile/Photo/Crop.php
index adbf83311a..83722c8661 100644
--- a/src/Module/Settings/Profile/Photo/Crop.php
+++ b/src/Module/Settings/Profile/Photo/Crop.php
@@ -23,7 +23,6 @@ namespace Friendica\Module\Settings\Profile\Photo;
use Friendica\Core\Renderer;
use Friendica\Core\Session;
-use Friendica\Core\Worker;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Contact;
@@ -57,7 +56,7 @@ class Crop extends BaseSettings
$selectionW = intval($_POST['width'] ?? 0);
$selectionH = intval($_POST['height'] ?? 0);
- $path = 'profile/' . DI::app()->user['nickname'];
+ $path = 'profile/' . DI::app()->getLoggedInUserNickname();
$base_image = Photo::selectFirst([], ['resource-id' => $resource_id, 'uid' => local_user(), 'scale' => $scale]);
if (DBA::isResult($base_image)) {
@@ -185,7 +184,7 @@ class Crop extends BaseSettings
info(DI::l10n()->t('Profile picture successfully updated.'));
- DI::baseUrl()->redirect('profile/' . DI::app()->user['nickname']);
+ DI::baseUrl()->redirect('profile/' . DI::app()->getLoggedInUserNickname());
}
$Image = Photo::getImageForPhoto($photos[0]);
diff --git a/src/Module/Settings/Profile/Photo/Index.php b/src/Module/Settings/Profile/Photo/Index.php
index dee562e435..1584fe8f63 100644
--- a/src/Module/Settings/Profile/Photo/Index.php
+++ b/src/Module/Settings/Profile/Photo/Index.php
@@ -21,7 +21,6 @@
namespace Friendica\Module\Settings\Profile\Photo;
-use Friendica\App\Arguments;
use Friendica\Core\Renderer;
use Friendica\Core\Session;
use Friendica\DI;
@@ -134,7 +133,7 @@ class Index extends BaseSettings
DI::l10n()->t('or'),
($newuser) ?
'' . DI::l10n()->t('skip this step') . ''
- : ''
+ : ''
. DI::l10n()->t('select a photo from your photo albums') . ''
),
]);
diff --git a/src/Module/Settings/UserExport.php b/src/Module/Settings/UserExport.php
index 740ec0ec04..03519b1130 100644
--- a/src/Module/Settings/UserExport.php
+++ b/src/Module/Settings/UserExport.php
@@ -21,7 +21,6 @@
namespace Friendica\Module\Settings;
-use Friendica\App;
use Friendica\Core\Hook;
use Friendica\Core\Renderer;
use Friendica\Database\DBA;
@@ -90,7 +89,7 @@ class UserExport extends BaseSettings
*/
public static function rawContent(array $parameters = [])
{
- if (!local_user() || !empty(DI::app()->user['uid']) && DI::app()->user['uid'] != local_user()) {
+ if (!DI::app()->isLoggedIn()) {
throw new HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.'));
}
@@ -98,21 +97,20 @@ class UserExport extends BaseSettings
if ($args->getArgc() == 3) {
// @TODO Replace with router-provided arguments
$action = $args->get(2);
- $user = DI::app()->user;
switch ($action) {
case "backup":
header("Content-type: application/json");
- header('Content-Disposition: attachment; filename="' . $user['nickname'] . '.' . $action . '"');
+ header('Content-Disposition: attachment; filename="' . DI::app()->getLoggedInUserNickname() . '.' . $action . '"');
self::exportAll(local_user());
break;
case "account":
header("Content-type: application/json");
- header('Content-Disposition: attachment; filename="' . $user['nickname'] . '.' . $action . '"');
+ header('Content-Disposition: attachment; filename="' . DI::app()->getLoggedInUserNickname() . '.' . $action . '"');
self::exportAccount(local_user());
break;
case "contact":
header("Content-type: application/csv");
- header('Content-Disposition: attachment; filename="' . $user['nickname'] . '-contacts.csv' . '"');
+ header('Content-Disposition: attachment; filename="' . DI::app()->getLoggedInUserNickname() . '-contacts.csv' . '"');
self::exportContactsAsCSV(local_user());
break;
}
diff --git a/src/Object/EMail/ItemCCEMail.php b/src/Object/EMail/ItemCCEMail.php
index 467cd09abf..199a6bad1a 100644
--- a/src/Object/EMail/ItemCCEMail.php
+++ b/src/Object/EMail/ItemCCEMail.php
@@ -26,6 +26,7 @@ use Friendica\App\BaseURL;
use Friendica\Content\Text\HTML;
use Friendica\Core\L10n;
use Friendica\Model\Item;
+use Friendica\Model\User;
use Friendica\Object\Email;
use Friendica\Protocol\Email as EmailProtocol;
@@ -36,20 +37,22 @@ class ItemCCEMail extends Email
{
public function __construct(App $a, L10n $l10n, BaseURL $baseUrl, array $item, string $toAddress, string $authorThumb)
{
- $disclaimer = '
' . $l10n->t('This message was sent to you by %s, a member of the Friendica social network.', $a->user['username'])
+ $user = User::getById($a->getLoggedInUserId());
+
+ $disclaimer = '
' . $l10n->t('This message was sent to you by %s, a member of the Friendica social network.', $user['username'])
. '
';
- $disclaimer .= $l10n->t('You may visit them online at %s', $baseUrl . '/profile/' . $a->user['nickname']) . EOL;
+ $disclaimer .= $l10n->t('You may visit them online at %s', $baseUrl . '/profile/' . $a->getLoggedInUserNickname()) . EOL;
$disclaimer .= $l10n->t('Please contact the sender by replying to this post if you do not wish to receive these messages.') . EOL;
if (!$item['title'] == '') {
$subject = EmailProtocol::encodeHeader($item['title'], 'UTF-8');
} else {
- $subject = EmailProtocol::encodeHeader('[Friendica]' . ' ' . $l10n->t('%s posted an update.', $a->user['username']), 'UTF-8');
+ $subject = EmailProtocol::encodeHeader('[Friendica]' . ' ' . $l10n->t('%s posted an update.', $user['username']), 'UTF-8');
}
- $link = '
';
+ $link = '
';
$html = Item::prepareBody($item);
$message = '' . $link . $html . $disclaimer . '';;
- parent::__construct($a->user['username'], $a->user['email'], $a->user['email'], $toAddress,
+ parent::__construct($user['username'], $user['email'], $user['email'], $toAddress,
$subject, $message, HTML::toPlaintext($html . $disclaimer));
}
}
diff --git a/src/Object/Post.php b/src/Object/Post.php
index a7071ad794..dcb7ad208b 100644
--- a/src/Object/Post.php
+++ b/src/Object/Post.php
@@ -870,7 +870,7 @@ class Post
return '';
}
- $owner = User::getOwnerDataById($a->user['uid']);
+ $owner = User::getOwnerDataById($a->getLoggedInUserId());
if (!Feature::isEnabled(local_user(), 'explicit_mentions')) {
return '';
diff --git a/src/Security/Authentication.php b/src/Security/Authentication.php
index ebeadcc37b..e894c6ddaf 100644
--- a/src/Security/Authentication.php
+++ b/src/Security/Authentication.php
@@ -39,7 +39,6 @@ use Friendica\Util\Network;
use Friendica\Util\Strings;
use LightOpenID;
use Friendica\Core\L10n;
-use Friendica\Core\Logger;
use Psr\Log\LoggerInterface;
/**
@@ -353,10 +352,11 @@ class Authentication
}
}
- $a->user = $user_record;
+ $a->setLoggedInUserId($user_record['uid']);
+ $a->setLoggedInUserNickname($user_record['nickname']);
if ($login_initial) {
- Hook::callAll('logged_in', $a->user);
+ Hook::callAll('logged_in', $user_record);
if (DI::module()->getName() !== 'home' && $this->session->exists('return_path')) {
$this->baseUrl->redirect($this->session->get('return_path'));
diff --git a/src/Security/BasicAuth.php b/src/Security/BasicAuth.php
index 070c6500d3..f2154ae8a4 100644
--- a/src/Security/BasicAuth.php
+++ b/src/Security/BasicAuth.php
@@ -184,7 +184,7 @@ class BasicAuth
Session::set('allow_api', true);
- Hook::callAll('logged_in', $a->user);
+ Hook::callAll('logged_in', $record);
if (Session::get('allow_api')) {
self::$current_user_id = local_user();
diff --git a/src/Worker/AddContact.php b/src/Worker/AddContact.php
index e61124d777..be9ee34663 100644
--- a/src/Worker/AddContact.php
+++ b/src/Worker/AddContact.php
@@ -23,7 +23,6 @@ namespace Friendica\Worker;
use Friendica\Core\Logger;
use Friendica\Model\Contact;
-use Friendica\Model\User;
class AddContact
{
@@ -41,11 +40,7 @@ class AddContact
return;
}
- $user = User::getById($uid);
- if (empty($user)) {
- return;
- }
- $result = Contact::createFromProbe($user, $url, '', false);
+ $result = Contact::createFromProbeForUser($uid, $url);
Logger::info('Added contact', ['uid' => $uid, 'url' => $url, 'result' => $result]);
}
}
diff --git a/tests/legacy/ApiTest.php b/tests/legacy/ApiTest.php
index 1f761de203..eaf596fb6a 100644
--- a/tests/legacy/ApiTest.php
+++ b/tests/legacy/ApiTest.php
@@ -1949,7 +1949,7 @@ class ApiTest extends FixtureTest
*/
public function testApiStatusesMentions()
{
- $this->app->user = ['nickname' => $this->selfUser['nick']];
+ $this->app->setLoggedInUserNickname($this->selfUser['nick']);
$_REQUEST['max_id'] = 10;
$result = api_statuses_mentions('json');
self::assertEmpty($result['status']);
@@ -2865,7 +2865,7 @@ class ApiTest extends FixtureTest
*/
public function testApiDirectMessagesNewWithScreenName()
{
- $this->app->user = ['nickname' => $this->selfUser['nick']];
+ $this->app->setLoggedInUserNickname($this->selfUser['nick']);
$_POST['text'] = 'message_text';
$_POST['screen_name'] = $this->friendUser['nick'];
$result = api_direct_messages_new('json');
@@ -2881,7 +2881,7 @@ class ApiTest extends FixtureTest
*/
public function testApiDirectMessagesNewWithTitle()
{
- $this->app->user = ['nickname' => $this->selfUser['nick']];
+ $this->app->setLoggedInUserNickname($this->selfUser['nick']);
$_POST['text'] = 'message_text';
$_POST['screen_name'] = $this->friendUser['nick'];
$_REQUEST['title'] = 'message_title';
@@ -2899,7 +2899,7 @@ class ApiTest extends FixtureTest
*/
public function testApiDirectMessagesNewWithRss()
{
- $this->app->user = ['nickname' => $this->selfUser['nick']];
+ $this->app->setLoggedInUserNickname($this->selfUser['nick']);
$_POST['text'] = 'message_text';
$_POST['screen_name'] = $this->friendUser['nick'];
$result = api_direct_messages_new('rss');
diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po
index 1e02c34ff1..44210ae3d6 100644
--- a/view/lang/C/messages.po
+++ b/view/lang/C/messages.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 2021.09-dev\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-08-09 01:36+0000\n"
+"POT-Creation-Date: 2021-08-09 15:40+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,486 +18,486 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
-#: include/api.php:1114 src/Module/BaseApi.php:302
+#: include/api.php:1114 src/Module/BaseApi.php:294
#, php-format
msgid "Daily posting limit of %d post reached. The post was rejected."
msgid_plural "Daily posting limit of %d posts reached. The post was rejected."
msgstr[0] ""
msgstr[1] ""
-#: include/api.php:1128 src/Module/BaseApi.php:318
+#: include/api.php:1128 src/Module/BaseApi.php:310
#, php-format
msgid "Weekly posting limit of %d post reached. The post was rejected."
msgid_plural "Weekly posting limit of %d posts reached. The post was rejected."
msgstr[0] ""
msgstr[1] ""
-#: include/api.php:1142 src/Module/BaseApi.php:334
+#: include/api.php:1142 src/Module/BaseApi.php:326
#, php-format
msgid "Monthly posting limit of %d post reached. The post was rejected."
msgstr ""
-#: include/api.php:4437 mod/photos.php:85 mod/photos.php:194 mod/photos.php:622
-#: mod/photos.php:1033 mod/photos.php:1050 mod/photos.php:1596
-#: src/Model/User.php:1110 src/Model/User.php:1118 src/Model/User.php:1126
-#: src/Module/Settings/Profile/Photo/Crop.php:98
-#: src/Module/Settings/Profile/Photo/Crop.php:114
-#: src/Module/Settings/Profile/Photo/Crop.php:130
-#: src/Module/Settings/Profile/Photo/Crop.php:176
-#: src/Module/Settings/Profile/Photo/Index.php:96
-#: src/Module/Settings/Profile/Photo/Index.php:102
+#: include/api.php:4437 mod/photos.php:86 mod/photos.php:195 mod/photos.php:623
+#: mod/photos.php:1031 mod/photos.php:1048 mod/photos.php:1594
+#: src/Model/User.php:1112 src/Model/User.php:1120 src/Model/User.php:1128
+#: src/Module/Settings/Profile/Photo/Crop.php:97
+#: src/Module/Settings/Profile/Photo/Crop.php:113
+#: src/Module/Settings/Profile/Photo/Crop.php:129
+#: src/Module/Settings/Profile/Photo/Crop.php:175
+#: src/Module/Settings/Profile/Photo/Index.php:95
+#: src/Module/Settings/Profile/Photo/Index.php:101
msgid "Profile Photos"
msgstr ""
-#: include/conversation.php:107
+#: include/conversation.php:109
#, php-format
msgid "%1$s poked %2$s"
msgstr ""
-#: include/conversation.php:140 src/Model/Item.php:2611
+#: include/conversation.php:142 src/Model/Item.php:2611
msgid "event"
msgstr ""
-#: include/conversation.php:143 include/conversation.php:152 mod/tagger.php:90
+#: include/conversation.php:145 include/conversation.php:154 mod/tagger.php:90
msgid "status"
msgstr ""
-#: include/conversation.php:148 mod/tagger.php:90 src/Model/Item.php:2613
+#: include/conversation.php:150 mod/tagger.php:90 src/Model/Item.php:2613
msgid "photo"
msgstr ""
-#: include/conversation.php:162 mod/tagger.php:123
+#: include/conversation.php:164 mod/tagger.php:123
#, php-format
msgid "%1$s tagged %2$s's %3$s with %4$s"
msgstr ""
-#: include/conversation.php:465 mod/photos.php:1458 src/Object/Post.php:226
+#: include/conversation.php:467 mod/photos.php:1456 src/Object/Post.php:226
msgid "Select"
msgstr ""
-#: include/conversation.php:466 mod/photos.php:1459 mod/settings.php:576
+#: include/conversation.php:468 mod/photos.php:1457 mod/settings.php:574
#: src/Module/Admin/Users/Active.php:139 src/Module/Admin/Users/Blocked.php:140
-#: src/Module/Admin/Users/Index.php:153 src/Module/Contact.php:851
-#: src/Module/Contact.php:1153
+#: src/Module/Admin/Users/Index.php:153 src/Module/Contact.php:849
+#: src/Module/Contact.php:1140
msgid "Delete"
msgstr ""
-#: include/conversation.php:501 src/Object/Post.php:453 src/Object/Post.php:454
+#: include/conversation.php:503 src/Object/Post.php:453 src/Object/Post.php:454
#, php-format
msgid "View %s's profile @ %s"
msgstr ""
-#: include/conversation.php:514 src/Object/Post.php:441
+#: include/conversation.php:516 src/Object/Post.php:441
msgid "Categories:"
msgstr ""
-#: include/conversation.php:515 src/Object/Post.php:442
+#: include/conversation.php:517 src/Object/Post.php:442
msgid "Filed under:"
msgstr ""
-#: include/conversation.php:522 src/Object/Post.php:467
+#: include/conversation.php:524 src/Object/Post.php:467
#, php-format
msgid "%s from %s"
msgstr ""
-#: include/conversation.php:537
+#: include/conversation.php:539
msgid "View in context"
msgstr ""
-#: include/conversation.php:539 include/conversation.php:1128
-#: mod/editpost.php:104 mod/message.php:203 mod/message.php:368
-#: mod/photos.php:1523 mod/wallmessage.php:155 src/Module/Item/Compose.php:165
+#: include/conversation.php:541 include/conversation.php:1143
+#: mod/editpost.php:107 mod/message.php:203 mod/message.php:368
+#: mod/photos.php:1521 mod/wallmessage.php:155 src/Module/Item/Compose.php:165
#: src/Object/Post.php:501
msgid "Please wait"
msgstr ""
-#: include/conversation.php:603
+#: include/conversation.php:605
msgid "remove"
msgstr ""
-#: include/conversation.php:607
+#: include/conversation.php:609
msgid "Delete Selected Items"
msgstr ""
-#: include/conversation.php:645 include/conversation.php:648
-#: include/conversation.php:651 include/conversation.php:654
+#: include/conversation.php:647 include/conversation.php:650
+#: include/conversation.php:653 include/conversation.php:656
#, php-format
msgid "You had been addressed (%s)."
msgstr ""
-#: include/conversation.php:657
+#: include/conversation.php:659
#, php-format
msgid "You are following %s."
msgstr ""
-#: include/conversation.php:660
+#: include/conversation.php:662
msgid "Tagged"
msgstr ""
-#: include/conversation.php:673 include/conversation.php:1011
-#: include/conversation.php:1049
+#: include/conversation.php:675 include/conversation.php:1013
+#: include/conversation.php:1051
#, php-format
msgid "%s reshared this."
msgstr ""
-#: include/conversation.php:675
+#: include/conversation.php:677
msgid "Reshared"
msgstr ""
-#: include/conversation.php:675
+#: include/conversation.php:677
#, php-format
msgid "Reshared by %s <%s>"
msgstr ""
-#: include/conversation.php:678
+#: include/conversation.php:680
#, php-format
msgid "%s is participating in this thread."
msgstr ""
-#: include/conversation.php:681
+#: include/conversation.php:683
msgid "Stored"
msgstr ""
-#: include/conversation.php:684
+#: include/conversation.php:686
msgid "Global"
msgstr ""
-#: include/conversation.php:687
+#: include/conversation.php:689
msgid "Relayed"
msgstr ""
-#: include/conversation.php:687
+#: include/conversation.php:689
#, php-format
msgid "Relayed by %s <%s>"
msgstr ""
-#: include/conversation.php:690
+#: include/conversation.php:692
msgid "Fetched"
msgstr ""
-#: include/conversation.php:690
+#: include/conversation.php:692
#, php-format
msgid "Fetched because of %s <%s>"
msgstr ""
-#: include/conversation.php:842 view/theme/frio/theme.php:323
+#: include/conversation.php:844 view/theme/frio/theme.php:323
msgid "Follow Thread"
msgstr ""
-#: include/conversation.php:843 src/Model/Contact.php:1047
+#: include/conversation.php:845 src/Model/Contact.php:1047
msgid "View Status"
msgstr ""
-#: include/conversation.php:844 include/conversation.php:866
+#: include/conversation.php:846 include/conversation.php:868
#: src/Model/Contact.php:973 src/Model/Contact.php:1039
#: src/Model/Contact.php:1048 src/Module/Directory.php:160
-#: src/Module/Settings/Profile/Index.php:226
+#: src/Module/Settings/Profile/Index.php:223
msgid "View Profile"
msgstr ""
-#: include/conversation.php:845 src/Model/Contact.php:1049
+#: include/conversation.php:847 src/Model/Contact.php:1049
msgid "View Photos"
msgstr ""
-#: include/conversation.php:846 src/Model/Contact.php:1040
+#: include/conversation.php:848 src/Model/Contact.php:1040
#: src/Model/Contact.php:1050
msgid "Network Posts"
msgstr ""
-#: include/conversation.php:847 src/Model/Contact.php:1041
+#: include/conversation.php:849 src/Model/Contact.php:1041
#: src/Model/Contact.php:1051
msgid "View Contact"
msgstr ""
-#: include/conversation.php:848 src/Model/Contact.php:1053
+#: include/conversation.php:850 src/Model/Contact.php:1053
msgid "Send PM"
msgstr ""
-#: include/conversation.php:849 src/Module/Admin/Blocklist/Contact.php:84
+#: include/conversation.php:851 src/Module/Admin/Blocklist/Contact.php:84
#: src/Module/Admin/Users/Active.php:140 src/Module/Admin/Users/Index.php:154
-#: src/Module/Contact.php:588 src/Module/Contact.php:848
-#: src/Module/Contact.php:1128
+#: src/Module/Contact.php:586 src/Module/Contact.php:846
+#: src/Module/Contact.php:1115
msgid "Block"
msgstr ""
-#: include/conversation.php:850 src/Module/Contact.php:589
-#: src/Module/Contact.php:849 src/Module/Contact.php:1136
+#: include/conversation.php:852 src/Module/Contact.php:587
+#: src/Module/Contact.php:847 src/Module/Contact.php:1123
#: src/Module/Notifications/Introductions.php:113
#: src/Module/Notifications/Introductions.php:185
#: src/Module/Notifications/Notification.php:59
msgid "Ignore"
msgstr ""
-#: include/conversation.php:854 src/Object/Post.php:428
+#: include/conversation.php:856 src/Object/Post.php:428
msgid "Languages"
msgstr ""
-#: include/conversation.php:858 src/Model/Contact.php:1054
+#: include/conversation.php:860 src/Model/Contact.php:1054
msgid "Poke"
msgstr ""
-#: include/conversation.php:863 mod/follow.php:139 src/Content/Widget.php:76
+#: include/conversation.php:865 mod/follow.php:139 src/Content/Widget.php:76
#: src/Model/Contact.php:1042 src/Model/Contact.php:1055
#: view/theme/vier/theme.php:172
msgid "Connect/Follow"
msgstr ""
-#: include/conversation.php:996
+#: include/conversation.php:998
#, php-format
msgid "%s likes this."
msgstr ""
-#: include/conversation.php:999
+#: include/conversation.php:1001
#, php-format
msgid "%s doesn't like this."
msgstr ""
-#: include/conversation.php:1002
+#: include/conversation.php:1004
#, php-format
msgid "%s attends."
msgstr ""
-#: include/conversation.php:1005
+#: include/conversation.php:1007
#, php-format
msgid "%s doesn't attend."
msgstr ""
-#: include/conversation.php:1008
+#: include/conversation.php:1010
#, php-format
msgid "%s attends maybe."
msgstr ""
-#: include/conversation.php:1017
+#: include/conversation.php:1019
msgid "and"
msgstr ""
-#: include/conversation.php:1020
+#: include/conversation.php:1022
#, php-format
msgid "and %d other people"
msgstr ""
-#: include/conversation.php:1028
+#: include/conversation.php:1030
#, php-format
msgid "%2$d people like this"
msgstr ""
-#: include/conversation.php:1029
+#: include/conversation.php:1031
#, php-format
msgid "%s like this."
msgstr ""
-#: include/conversation.php:1032
+#: include/conversation.php:1034
#, php-format
msgid "%2$d people don't like this"
msgstr ""
-#: include/conversation.php:1033
+#: include/conversation.php:1035
#, php-format
msgid "%s don't like this."
msgstr ""
-#: include/conversation.php:1036
+#: include/conversation.php:1038
#, php-format
msgid "%2$d people attend"
msgstr ""
-#: include/conversation.php:1037
+#: include/conversation.php:1039
#, php-format
msgid "%s attend."
msgstr ""
-#: include/conversation.php:1040
+#: include/conversation.php:1042
#, php-format
msgid "%2$d people don't attend"
msgstr ""
-#: include/conversation.php:1041
+#: include/conversation.php:1043
#, php-format
msgid "%s don't attend."
msgstr ""
-#: include/conversation.php:1044
+#: include/conversation.php:1046
#, php-format
msgid "%2$d people attend maybe"
msgstr ""
-#: include/conversation.php:1045
+#: include/conversation.php:1047
#, php-format
msgid "%s attend maybe."
msgstr ""
-#: include/conversation.php:1048
+#: include/conversation.php:1050
#, php-format
msgid "%2$d people reshared this"
msgstr ""
-#: include/conversation.php:1080
+#: include/conversation.php:1095
msgid "Visible to everybody"
msgstr ""
-#: include/conversation.php:1081 src/Module/Item/Compose.php:159
+#: include/conversation.php:1096 src/Module/Item/Compose.php:159
#: src/Object/Post.php:972
msgid "Please enter a image/video/audio/webpage URL:"
msgstr ""
-#: include/conversation.php:1082
+#: include/conversation.php:1097
msgid "Tag term:"
msgstr ""
-#: include/conversation.php:1083 src/Module/Filer/SaveTag.php:68
+#: include/conversation.php:1098 src/Module/Filer/SaveTag.php:68
msgid "Save to Folder:"
msgstr ""
-#: include/conversation.php:1084
+#: include/conversation.php:1099
msgid "Where are you right now?"
msgstr ""
-#: include/conversation.php:1085
+#: include/conversation.php:1100
msgid "Delete item(s)?"
msgstr ""
-#: include/conversation.php:1095
+#: include/conversation.php:1110
msgid "New Post"
msgstr ""
-#: include/conversation.php:1098
+#: include/conversation.php:1113
msgid "Share"
msgstr ""
-#: include/conversation.php:1099 mod/editpost.php:89 mod/photos.php:1372
-#: src/Module/Contact/Poke.php:156 src/Object/Post.php:963
+#: include/conversation.php:1114 mod/editpost.php:92 mod/photos.php:1370
+#: src/Module/Contact/Poke.php:157 src/Object/Post.php:963
msgid "Loading..."
msgstr ""
-#: include/conversation.php:1100 mod/editpost.php:90 mod/message.php:201
+#: include/conversation.php:1115 mod/editpost.php:93 mod/message.php:201
#: mod/message.php:365 mod/wallmessage.php:153
msgid "Upload photo"
msgstr ""
-#: include/conversation.php:1101 mod/editpost.php:91
+#: include/conversation.php:1116 mod/editpost.php:94
msgid "upload photo"
msgstr ""
-#: include/conversation.php:1102 mod/editpost.php:92
+#: include/conversation.php:1117 mod/editpost.php:95
msgid "Attach file"
msgstr ""
-#: include/conversation.php:1103 mod/editpost.php:93
+#: include/conversation.php:1118 mod/editpost.php:96
msgid "attach file"
msgstr ""
-#: include/conversation.php:1104 src/Module/Item/Compose.php:151
+#: include/conversation.php:1119 src/Module/Item/Compose.php:151
#: src/Object/Post.php:964
msgid "Bold"
msgstr ""
-#: include/conversation.php:1105 src/Module/Item/Compose.php:152
+#: include/conversation.php:1120 src/Module/Item/Compose.php:152
#: src/Object/Post.php:965
msgid "Italic"
msgstr ""
-#: include/conversation.php:1106 src/Module/Item/Compose.php:153
+#: include/conversation.php:1121 src/Module/Item/Compose.php:153
#: src/Object/Post.php:966
msgid "Underline"
msgstr ""
-#: include/conversation.php:1107 src/Module/Item/Compose.php:154
+#: include/conversation.php:1122 src/Module/Item/Compose.php:154
#: src/Object/Post.php:967
msgid "Quote"
msgstr ""
-#: include/conversation.php:1108 src/Module/Item/Compose.php:155
+#: include/conversation.php:1123 src/Module/Item/Compose.php:155
#: src/Object/Post.php:968
msgid "Code"
msgstr ""
-#: include/conversation.php:1109 src/Module/Item/Compose.php:156
+#: include/conversation.php:1124 src/Module/Item/Compose.php:156
#: src/Object/Post.php:969
msgid "Image"
msgstr ""
-#: include/conversation.php:1110 src/Module/Item/Compose.php:157
+#: include/conversation.php:1125 src/Module/Item/Compose.php:157
#: src/Object/Post.php:970
msgid "Link"
msgstr ""
-#: include/conversation.php:1111 src/Module/Item/Compose.php:158
+#: include/conversation.php:1126 src/Module/Item/Compose.php:158
#: src/Object/Post.php:971
msgid "Link or Media"
msgstr ""
-#: include/conversation.php:1112
+#: include/conversation.php:1127
msgid "Video"
msgstr ""
-#: include/conversation.php:1113 mod/editpost.php:100
+#: include/conversation.php:1128 mod/editpost.php:103
#: src/Module/Item/Compose.php:161
msgid "Set your location"
msgstr ""
-#: include/conversation.php:1114 mod/editpost.php:101
+#: include/conversation.php:1129 mod/editpost.php:104
msgid "set location"
msgstr ""
-#: include/conversation.php:1115 mod/editpost.php:102
+#: include/conversation.php:1130 mod/editpost.php:105
msgid "Clear browser location"
msgstr ""
-#: include/conversation.php:1116 mod/editpost.php:103
+#: include/conversation.php:1131 mod/editpost.php:106
msgid "clear location"
msgstr ""
-#: include/conversation.php:1118 mod/editpost.php:117
+#: include/conversation.php:1133 mod/editpost.php:120
#: src/Module/Item/Compose.php:166
msgid "Set title"
msgstr ""
-#: include/conversation.php:1120 mod/editpost.php:119
+#: include/conversation.php:1135 mod/editpost.php:122
#: src/Module/Item/Compose.php:167
msgid "Categories (comma-separated list)"
msgstr ""
-#: include/conversation.php:1125 src/Module/Item/Compose.php:172
+#: include/conversation.php:1140 src/Module/Item/Compose.php:172
msgid "Scheduled at"
msgstr ""
-#: include/conversation.php:1129 mod/editpost.php:105
+#: include/conversation.php:1144 mod/editpost.php:108
msgid "Permission settings"
msgstr ""
-#: include/conversation.php:1130 mod/editpost.php:133 mod/events.php:583
-#: mod/photos.php:959 mod/photos.php:1325
+#: include/conversation.php:1145 mod/editpost.php:136 mod/events.php:583
+#: mod/photos.php:962 mod/photos.php:1323
msgid "Permissions"
msgstr ""
-#: include/conversation.php:1139 mod/editpost.php:114
+#: include/conversation.php:1154 mod/editpost.php:117
msgid "Public post"
msgstr ""
-#: include/conversation.php:1143 mod/editpost.php:125 mod/events.php:578
-#: mod/photos.php:1371 mod/photos.php:1427 mod/photos.php:1501
+#: include/conversation.php:1158 mod/editpost.php:128 mod/events.php:578
+#: mod/photos.php:1369 mod/photos.php:1425 mod/photos.php:1499
#: src/Module/Item/Compose.php:160 src/Object/Post.php:973
msgid "Preview"
msgstr ""
-#: include/conversation.php:1146 mod/editpost.php:127 mod/fbrowser.php:105
-#: mod/fbrowser.php:134 mod/follow.php:145 mod/photos.php:1027
-#: mod/photos.php:1133 mod/tagrm.php:37 mod/tagrm.php:129 mod/unfollow.php:97
-#: src/Module/Contact.php:424 src/Module/RemoteFollow.php:112
+#: include/conversation.php:1161 mod/editpost.php:130 mod/fbrowser.php:105
+#: mod/fbrowser.php:134 mod/follow.php:145 mod/photos.php:1025
+#: mod/photos.php:1131 mod/tagrm.php:37 mod/tagrm.php:129 mod/unfollow.php:97
+#: src/Module/Contact.php:422 src/Module/RemoteFollow.php:112
msgid "Cancel"
msgstr ""
-#: include/conversation.php:1153 mod/editpost.php:131
+#: include/conversation.php:1168 mod/editpost.php:134
#: src/Content/Widget/VCard.php:107 src/Model/Profile.php:450
msgid "Message"
msgstr ""
-#: include/conversation.php:1154 mod/editpost.php:132
+#: include/conversation.php:1169 mod/editpost.php:135
#: src/Module/Settings/TwoFactor/Trusted.php:101
msgid "Browser"
msgstr ""
-#: include/conversation.php:1156 mod/editpost.php:135
+#: include/conversation.php:1171 mod/editpost.php:138
msgid "Open Compose page"
msgstr ""
@@ -826,42 +826,42 @@ msgstr ""
msgid "Please visit %s to approve or reject the request."
msgstr ""
-#: mod/api.php:30 mod/api.php:35 mod/editpost.php:37 mod/events.php:236
-#: mod/follow.php:56 mod/follow.php:131 mod/item.php:185 mod/item.php:190
-#: mod/item.php:935 mod/message.php:69 mod/message.php:111 mod/notes.php:44
-#: mod/ostatus_subscribe.php:32 mod/photos.php:159 mod/photos.php:911
-#: mod/repair_ostatus.php:31 mod/settings.php:47 mod/settings.php:65
-#: mod/settings.php:417 mod/suggest.php:34 mod/uimport.php:32
+#: mod/api.php:30 mod/editpost.php:38 mod/events.php:236 mod/follow.php:56
+#: mod/follow.php:131 mod/item.php:184 mod/item.php:189 mod/item.php:934
+#: mod/message.php:69 mod/message.php:111 mod/notes.php:44
+#: mod/ostatus_subscribe.php:32 mod/photos.php:160 mod/photos.php:914
+#: mod/repair_ostatus.php:31 mod/settings.php:47 mod/settings.php:57
+#: mod/settings.php:415 mod/suggest.php:34 mod/uimport.php:32
#: mod/unfollow.php:35 mod/unfollow.php:50 mod/unfollow.php:82
#: mod/wall_attach.php:78 mod/wall_attach.php:81 mod/wall_upload.php:99
#: mod/wall_upload.php:102 mod/wallmessage.php:35 mod/wallmessage.php:59
#: mod/wallmessage.php:96 mod/wallmessage.php:120 src/Module/Attach.php:55
-#: src/Module/BaseApi.php:81 src/Module/BaseApi.php:92
-#: src/Module/BaseApi.php:103 src/Module/BaseApi.php:114
-#: src/Module/BaseNotifications.php:88 src/Module/Contact.php:342
+#: src/Module/BaseApi.php:79 src/Module/BaseApi.php:88
+#: src/Module/BaseApi.php:97 src/Module/BaseApi.php:106
+#: src/Module/BaseNotifications.php:88 src/Module/Contact.php:340
#: src/Module/Contact/Advanced.php:44 src/Module/Delegation.php:119
#: src/Module/FollowConfirm.php:16 src/Module/FriendSuggest.php:44
-#: src/Module/Group.php:45 src/Module/Group.php:90 src/Module/Invite.php:40
-#: src/Module/Invite.php:127 src/Module/Notifications/Notification.php:47
+#: src/Module/Group.php:45 src/Module/Group.php:90 src/Module/Invite.php:41
+#: src/Module/Invite.php:130 src/Module/Notifications/Notification.php:47
#: src/Module/Notifications/Notification.php:76
-#: src/Module/Profile/Common.php:56 src/Module/Profile/Contacts.php:57
+#: src/Module/Profile/Common.php:56 src/Module/Profile/Contacts.php:56
#: src/Module/Profile/Schedule.php:39 src/Module/Profile/Schedule.php:56
#: src/Module/Register.php:62 src/Module/Register.php:75
#: src/Module/Register.php:193 src/Module/Register.php:232
#: src/Module/Search/Directory.php:38 src/Module/Settings/Delegation.php:42
-#: src/Module/Settings/Delegation.php:70 src/Module/Settings/Display.php:42
-#: src/Module/Settings/Display.php:118
-#: src/Module/Settings/Profile/Photo/Crop.php:155
-#: src/Module/Settings/Profile/Photo/Index.php:113
-#: src/Module/Settings/UserExport.php:59 src/Module/Settings/UserExport.php:94
-#: src/Module/Settings/UserExport.php:201
-#: src/Module/Settings/UserExport.php:221
-#: src/Module/Settings/UserExport.php:286
+#: src/Module/Settings/Delegation.php:70 src/Module/Settings/Display.php:43
+#: src/Module/Settings/Display.php:121
+#: src/Module/Settings/Profile/Photo/Crop.php:154
+#: src/Module/Settings/Profile/Photo/Index.php:112
+#: src/Module/Settings/UserExport.php:58 src/Module/Settings/UserExport.php:93
+#: src/Module/Settings/UserExport.php:199
+#: src/Module/Settings/UserExport.php:219
+#: src/Module/Settings/UserExport.php:284
msgid "Permission denied."
msgstr ""
#: mod/cal.php:44 mod/cal.php:48 mod/follow.php:39 mod/redir.php:34
-#: mod/redir.php:175 src/Module/Conversation/Community.php:194
+#: mod/redir.php:175 src/Module/Conversation/Community.php:182
#: src/Module/Debug/ItemBody.php:37 src/Module/Diaspora/Receive.php:51
#: src/Module/Item/Follow.php:42 src/Module/Item/Ignore.php:41
#: src/Module/Item/Pin.php:42 src/Module/Item/Pin.php:57
@@ -869,24 +869,24 @@ msgstr ""
msgid "Access denied."
msgstr ""
-#: mod/cal.php:61 mod/cal.php:78 mod/photos.php:139 mod/photos.php:820
-#: mod/videos.php:48 mod/videos.php:69 mod/videos.php:110
+#: mod/cal.php:61 mod/cal.php:78 mod/photos.php:140 mod/photos.php:821
+#: mod/videos.php:49 mod/videos.php:70 mod/videos.php:111
#: src/Module/HCard.php:54 src/Module/Profile/Common.php:41
-#: src/Module/Profile/Common.php:52 src/Module/Profile/Contacts.php:41
-#: src/Module/Profile/Contacts.php:51 src/Module/Profile/Status.php:58
+#: src/Module/Profile/Common.php:52 src/Module/Profile/Contacts.php:40
+#: src/Module/Profile/Contacts.php:50 src/Module/Profile/Status.php:58
#: src/Module/Register.php:254
msgid "User not found."
msgstr ""
-#: mod/cal.php:120 mod/display.php:271 src/Module/Profile/Profile.php:95
-#: src/Module/Profile/Profile.php:110 src/Module/Profile/Status.php:109
+#: mod/cal.php:120 mod/display.php:270 src/Module/Profile/Profile.php:94
+#: src/Module/Profile/Profile.php:109 src/Module/Profile/Status.php:109
#: src/Module/Update/Profile.php:56
msgid "Access to this profile has been restricted."
msgstr ""
-#: mod/cal.php:251 mod/events.php:422 src/Content/Nav.php:195
-#: src/Content/Nav.php:262 src/Module/BaseProfile.php:87
-#: src/Module/BaseProfile.php:98 view/theme/frio/theme.php:230
+#: mod/cal.php:251 mod/events.php:422 src/Content/Nav.php:194
+#: src/Content/Nav.php:258 src/Module/BaseProfile.php:85
+#: src/Module/BaseProfile.php:96 view/theme/frio/theme.php:230
#: view/theme/frio/theme.php:234
msgid "Events"
msgstr ""
@@ -926,7 +926,7 @@ msgstr ""
msgid "list"
msgstr ""
-#: mod/cal.php:274 src/Console/User.php:182 src/Model/User.php:672
+#: mod/cal.php:274 src/Console/User.php:182 src/Model/User.php:674
#: src/Module/Admin/Users/Active.php:73 src/Module/Admin/Users/Blocked.php:74
#: src/Module/Admin/Users/Index.php:80 src/Module/Admin/Users/Pending.php:71
#: src/Module/Api/Twitter/ContactEndpoint.php:71
@@ -945,64 +945,64 @@ msgstr ""
msgid "calendar"
msgstr ""
-#: mod/display.php:166 mod/photos.php:824 mod/videos.php:114
-#: src/Module/Conversation/Community.php:188 src/Module/Debug/Probe.php:39
+#: mod/display.php:165 mod/photos.php:825 mod/videos.php:115
+#: src/Module/Conversation/Community.php:176 src/Module/Debug/Probe.php:39
#: src/Module/Debug/WebFinger.php:38 src/Module/Directory.php:49
#: src/Module/Search/Index.php:50 src/Module/Search/Index.php:55
msgid "Public access denied."
msgstr ""
-#: mod/display.php:222 mod/display.php:307
+#: mod/display.php:221 mod/display.php:295
msgid "The requested item doesn't exist or has been deleted."
msgstr ""
-#: mod/display.php:387
+#: mod/display.php:375
msgid "The feed for this item is unavailable."
msgstr ""
-#: mod/editpost.php:44 mod/editpost.php:54
+#: mod/editpost.php:45 mod/editpost.php:55
msgid "Item not found"
msgstr ""
-#: mod/editpost.php:61
+#: mod/editpost.php:64
msgid "Edit post"
msgstr ""
-#: mod/editpost.php:88 mod/notes.php:63 src/Content/Text/HTML.php:885
+#: mod/editpost.php:91 mod/notes.php:56 src/Content/Text/HTML.php:885
#: src/Module/Admin/Storage.php:120 src/Module/Filer/SaveTag.php:69
msgid "Save"
msgstr ""
-#: mod/editpost.php:94 mod/message.php:202 mod/message.php:366
+#: mod/editpost.php:97 mod/message.php:202 mod/message.php:366
#: mod/wallmessage.php:154
msgid "Insert web link"
msgstr ""
-#: mod/editpost.php:95
+#: mod/editpost.php:98
msgid "web link"
msgstr ""
-#: mod/editpost.php:96
+#: mod/editpost.php:99
msgid "Insert video link"
msgstr ""
-#: mod/editpost.php:97
+#: mod/editpost.php:100
msgid "video link"
msgstr ""
-#: mod/editpost.php:98
+#: mod/editpost.php:101
msgid "Insert audio link"
msgstr ""
-#: mod/editpost.php:99
+#: mod/editpost.php:102
msgid "audio link"
msgstr ""
-#: mod/editpost.php:113 src/Core/ACL.php:313
+#: mod/editpost.php:116 src/Core/ACL.php:327
msgid "CC: email addresses"
msgstr ""
-#: mod/editpost.php:120 src/Core/ACL.php:314
+#: mod/editpost.php:123 src/Core/ACL.php:328
msgid "Example: bob@example.com, mary@example.com"
msgstr ""
@@ -1042,7 +1042,7 @@ msgstr ""
#: src/Module/Install.php:279 src/Module/Install.php:284
#: src/Module/Install.php:298 src/Module/Install.php:313
#: src/Module/Install.php:340 src/Module/Register.php:135
-#: src/Module/Security/TwoFactor/Verify.php:99
+#: src/Module/Security/TwoFactor/Verify.php:100
#: src/Module/Settings/TwoFactor/Index.php:133
#: src/Module/Settings/TwoFactor/Verify.php:141
msgid "Required"
@@ -1060,16 +1060,16 @@ msgstr ""
msgid "Adjust for viewer timezone"
msgstr ""
-#: mod/events.php:566 src/Module/Profile/Profile.php:173
-#: src/Module/Settings/Profile/Index.php:239
+#: mod/events.php:566 src/Module/Profile/Profile.php:172
+#: src/Module/Settings/Profile/Index.php:236
msgid "Description:"
msgstr ""
#: mod/events.php:568 src/Content/Widget/VCard.php:98 src/Model/Event.php:86
#: src/Model/Event.php:113 src/Model/Event.php:459 src/Model/Event.php:945
-#: src/Model/Profile.php:358 src/Module/Contact.php:609
+#: src/Model/Profile.php:358 src/Module/Contact.php:607
#: src/Module/Directory.php:150 src/Module/Notifications/Introductions.php:166
-#: src/Module/Profile/Profile.php:195
+#: src/Module/Profile/Profile.php:194
msgid "Location:"
msgstr ""
@@ -1082,29 +1082,29 @@ msgid "Share this event"
msgstr ""
#: mod/events.php:580 mod/message.php:204 mod/message.php:367
-#: mod/photos.php:941 mod/photos.php:1044 mod/photos.php:1329
-#: mod/photos.php:1370 mod/photos.php:1426 mod/photos.php:1500
-#: src/Module/Admin/Item/Source.php:65 src/Module/Contact.php:567
-#: src/Module/Contact/Advanced.php:133 src/Module/Contact/Poke.php:157
+#: mod/photos.php:944 mod/photos.php:1042 mod/photos.php:1327
+#: mod/photos.php:1368 mod/photos.php:1424 mod/photos.php:1498
+#: src/Module/Admin/Item/Source.php:65 src/Module/Contact.php:565
+#: src/Module/Contact/Advanced.php:133 src/Module/Contact/Poke.php:158
#: src/Module/Debug/ActivityPubConversion.php:141
#: src/Module/Debug/Babel.php:313 src/Module/Debug/Localtime.php:64
#: src/Module/Debug/Probe.php:55 src/Module/Debug/WebFinger.php:53
#: src/Module/Delegation.php:153 src/Module/FriendSuggest.php:129
#: src/Module/Install.php:245 src/Module/Install.php:287
-#: src/Module/Install.php:324 src/Module/Invite.php:174
-#: src/Module/Item/Compose.php:150 src/Module/Profile/Profile.php:248
-#: src/Module/Settings/Profile/Index.php:223 src/Object/Post.php:962
+#: src/Module/Install.php:324 src/Module/Invite.php:177
+#: src/Module/Item/Compose.php:150 src/Module/Profile/Profile.php:247
+#: src/Module/Settings/Profile/Index.php:220 src/Object/Post.php:962
#: view/theme/duepuntozero/config.php:69 view/theme/frio/config.php:160
#: view/theme/quattro/config.php:71 view/theme/vier/config.php:119
msgid "Submit"
msgstr ""
-#: mod/events.php:581 src/Module/Profile/Profile.php:249
+#: mod/events.php:581 src/Module/Profile/Profile.php:248
msgid "Basic"
msgstr ""
-#: mod/events.php:582 src/Module/Admin/Site.php:506 src/Module/Contact.php:918
-#: src/Module/Profile/Profile.php:250
+#: mod/events.php:582 src/Module/Admin/Site.php:506 src/Module/Contact.php:916
+#: src/Module/Profile/Profile.php:249
msgid "Advanced"
msgstr ""
@@ -1112,13 +1112,13 @@ msgstr ""
msgid "Failed to remove event"
msgstr ""
-#: mod/fbrowser.php:43 src/Content/Nav.php:193 src/Module/BaseProfile.php:66
+#: mod/fbrowser.php:43 src/Content/Nav.php:192 src/Module/BaseProfile.php:64
#: view/theme/frio/theme.php:228
msgid "Photos"
msgstr ""
#: mod/fbrowser.php:107 mod/fbrowser.php:136
-#: src/Module/Settings/Profile/Photo/Index.php:130
+#: src/Module/Settings/Profile/Photo/Index.php:129
msgid "Upload"
msgstr ""
@@ -1155,15 +1155,15 @@ msgid "Your Identity Address:"
msgstr ""
#: mod/follow.php:142 mod/unfollow.php:100
-#: src/Module/Admin/Blocklist/Contact.php:100 src/Module/Contact.php:605
+#: src/Module/Admin/Blocklist/Contact.php:100 src/Module/Contact.php:603
#: src/Module/Notifications/Introductions.php:108
#: src/Module/Notifications/Introductions.php:177
msgid "Profile URL"
msgstr ""
-#: mod/follow.php:143 src/Module/Contact.php:617
+#: mod/follow.php:143 src/Module/Contact.php:615
#: src/Module/Notifications/Introductions.php:170
-#: src/Module/Profile/Profile.php:208
+#: src/Module/Profile/Profile.php:207
msgid "Tags:"
msgstr ""
@@ -1176,8 +1176,8 @@ msgstr ""
msgid "Add a personal note:"
msgstr ""
-#: mod/follow.php:164 mod/unfollow.php:109 src/Module/BaseProfile.php:61
-#: src/Module/Contact.php:896
+#: mod/follow.php:164 mod/unfollow.php:109 src/Module/BaseProfile.php:59
+#: src/Module/Contact.php:894
msgid "Status Messages and Posts"
msgstr ""
@@ -1185,27 +1185,27 @@ msgstr ""
msgid "The contact could not be added."
msgstr ""
-#: mod/item.php:136 mod/item.php:140
+#: mod/item.php:135 mod/item.php:139
msgid "Unable to locate original post."
msgstr ""
-#: mod/item.php:341 mod/item.php:346
+#: mod/item.php:340 mod/item.php:345
msgid "Empty post discarded."
msgstr ""
-#: mod/item.php:742
+#: mod/item.php:741
msgid "Post updated."
msgstr ""
-#: mod/item.php:752 mod/item.php:757
+#: mod/item.php:751 mod/item.php:756
msgid "Item wasn't stored."
msgstr ""
-#: mod/item.php:768
+#: mod/item.php:767
msgid "Item couldn't be fetched."
msgstr ""
-#: mod/item.php:914 src/Module/Admin/Themes/Details.php:39
+#: mod/item.php:913 src/Module/Admin/Themes/Details.php:39
#: src/Module/Admin/Themes/Index.php:59 src/Module/Debug/ItemBody.php:41
#: src/Module/Debug/ItemBody.php:56
msgid "Item not found."
@@ -1361,7 +1361,7 @@ msgstr ""
msgid "Profile Match"
msgstr ""
-#: mod/message.php:46 mod/message.php:126 src/Content/Nav.php:290
+#: mod/message.php:46 mod/message.php:126 src/Content/Nav.php:286
msgid "New Message"
msgstr ""
@@ -1387,7 +1387,7 @@ msgstr ""
msgid "Discard"
msgstr ""
-#: mod/message.php:133 src/Content/Nav.php:287 view/theme/frio/theme.php:235
+#: mod/message.php:133 src/Content/Nav.php:283 view/theme/frio/theme.php:235
msgid "Messages"
msgstr ""
@@ -1420,7 +1420,7 @@ msgid "Subject:"
msgstr ""
#: mod/message.php:198 mod/message.php:361 mod/wallmessage.php:151
-#: src/Module/Invite.php:167
+#: src/Module/Invite.php:170
msgid "Your message:"
msgstr ""
@@ -1476,11 +1476,11 @@ msgid_plural "%d messages"
msgstr[0] ""
msgstr[1] ""
-#: mod/notes.php:51 src/Module/BaseProfile.php:109
+#: mod/notes.php:51 src/Module/BaseProfile.php:107
msgid "Personal Notes"
msgstr ""
-#: mod/notes.php:59
+#: mod/notes.php:55
msgid "Personal notes are visible only by yourself."
msgstr ""
@@ -1532,245 +1532,245 @@ msgstr ""
msgid "Keep this window open until done."
msgstr ""
-#: mod/photos.php:107 src/Module/BaseProfile.php:69
+#: mod/photos.php:108 src/Module/BaseProfile.php:67
msgid "Photo Albums"
msgstr ""
-#: mod/photos.php:108 mod/photos.php:1625
+#: mod/photos.php:109 mod/photos.php:1623
msgid "Recent Photos"
msgstr ""
-#: mod/photos.php:110 mod/photos.php:1095 mod/photos.php:1627
+#: mod/photos.php:111 mod/photos.php:1093 mod/photos.php:1625
msgid "Upload New Photos"
msgstr ""
-#: mod/photos.php:128 src/Module/BaseSettings.php:37
+#: mod/photos.php:129 src/Module/BaseSettings.php:37
msgid "everybody"
msgstr ""
-#: mod/photos.php:166
+#: mod/photos.php:167
msgid "Contact information unavailable"
msgstr ""
-#: mod/photos.php:205
+#: mod/photos.php:206
msgid "Album not found."
msgstr ""
-#: mod/photos.php:263
+#: mod/photos.php:264
msgid "Album successfully deleted"
msgstr ""
-#: mod/photos.php:265
+#: mod/photos.php:266
msgid "Album was empty."
msgstr ""
-#: mod/photos.php:297
+#: mod/photos.php:298
msgid "Failed to delete the photo."
msgstr ""
-#: mod/photos.php:572
+#: mod/photos.php:573
msgid "a photo"
msgstr ""
-#: mod/photos.php:572
+#: mod/photos.php:573
#, php-format
msgid "%1$s was tagged in %2$s by %3$s"
msgstr ""
-#: mod/photos.php:655 mod/photos.php:658 mod/photos.php:685
-#: mod/wall_upload.php:216 src/Module/Settings/Profile/Photo/Index.php:61
+#: mod/photos.php:656 mod/photos.php:659 mod/photos.php:686
+#: mod/wall_upload.php:216 src/Module/Settings/Profile/Photo/Index.php:60
#, php-format
msgid "Image exceeds size limit of %s"
msgstr ""
-#: mod/photos.php:661
+#: mod/photos.php:662
msgid "Image upload didn't complete, please try again"
msgstr ""
-#: mod/photos.php:664
+#: mod/photos.php:665
msgid "Image file is missing"
msgstr ""
-#: mod/photos.php:669
+#: mod/photos.php:670
msgid ""
"Server can't accept new file upload at this time, please contact your "
"administrator"
msgstr ""
-#: mod/photos.php:693
+#: mod/photos.php:694
msgid "Image file is empty."
msgstr ""
-#: mod/photos.php:708 mod/wall_upload.php:175
-#: src/Module/Settings/Profile/Photo/Index.php:70
+#: mod/photos.php:709 mod/wall_upload.php:175
+#: src/Module/Settings/Profile/Photo/Index.php:69
msgid "Unable to process image."
msgstr ""
-#: mod/photos.php:737 mod/wall_upload.php:241
-#: src/Module/Settings/Profile/Photo/Index.php:97
+#: mod/photos.php:738 mod/wall_upload.php:241
+#: src/Module/Settings/Profile/Photo/Index.php:96
msgid "Image upload failed."
msgstr ""
-#: mod/photos.php:829
+#: mod/photos.php:830
msgid "No photos selected"
msgstr ""
-#: mod/photos.php:896 mod/videos.php:164
+#: mod/photos.php:899 mod/videos.php:166
msgid "Access to this item is restricted."
msgstr ""
-#: mod/photos.php:951
+#: mod/photos.php:954
msgid "Upload Photos"
msgstr ""
-#: mod/photos.php:955 mod/photos.php:1040
+#: mod/photos.php:958 mod/photos.php:1038
msgid "New album name: "
msgstr ""
-#: mod/photos.php:956
+#: mod/photos.php:959
msgid "or select existing album:"
msgstr ""
-#: mod/photos.php:957
+#: mod/photos.php:960
msgid "Do not show a status post for this upload"
msgstr ""
-#: mod/photos.php:1023
+#: mod/photos.php:1021
msgid "Do you really want to delete this photo album and all its photos?"
msgstr ""
-#: mod/photos.php:1024 mod/photos.php:1045
+#: mod/photos.php:1022 mod/photos.php:1043
msgid "Delete Album"
msgstr ""
-#: mod/photos.php:1051
+#: mod/photos.php:1049
msgid "Edit Album"
msgstr ""
-#: mod/photos.php:1052
+#: mod/photos.php:1050
msgid "Drop Album"
msgstr ""
-#: mod/photos.php:1057
+#: mod/photos.php:1055
msgid "Show Newest First"
msgstr ""
-#: mod/photos.php:1059
+#: mod/photos.php:1057
msgid "Show Oldest First"
msgstr ""
-#: mod/photos.php:1080 mod/photos.php:1610
+#: mod/photos.php:1078 mod/photos.php:1608
msgid "View Photo"
msgstr ""
-#: mod/photos.php:1117
+#: mod/photos.php:1115
msgid "Permission denied. Access to this item may be restricted."
msgstr ""
-#: mod/photos.php:1119
+#: mod/photos.php:1117
msgid "Photo not available"
msgstr ""
-#: mod/photos.php:1129
+#: mod/photos.php:1127
msgid "Do you really want to delete this photo?"
msgstr ""
-#: mod/photos.php:1130 mod/photos.php:1330
+#: mod/photos.php:1128 mod/photos.php:1328
msgid "Delete Photo"
msgstr ""
-#: mod/photos.php:1221
+#: mod/photos.php:1219
msgid "View photo"
msgstr ""
-#: mod/photos.php:1223
+#: mod/photos.php:1221
msgid "Edit photo"
msgstr ""
-#: mod/photos.php:1224
+#: mod/photos.php:1222
msgid "Delete photo"
msgstr ""
-#: mod/photos.php:1225
+#: mod/photos.php:1223
msgid "Use as profile photo"
msgstr ""
-#: mod/photos.php:1232
+#: mod/photos.php:1230
msgid "Private Photo"
msgstr ""
-#: mod/photos.php:1238
+#: mod/photos.php:1236
msgid "View Full Size"
msgstr ""
-#: mod/photos.php:1298
+#: mod/photos.php:1296
msgid "Tags: "
msgstr ""
-#: mod/photos.php:1301
+#: mod/photos.php:1299
msgid "[Select tags to remove]"
msgstr ""
-#: mod/photos.php:1316
+#: mod/photos.php:1314
msgid "New album name"
msgstr ""
-#: mod/photos.php:1317
+#: mod/photos.php:1315
msgid "Caption"
msgstr ""
-#: mod/photos.php:1318
+#: mod/photos.php:1316
msgid "Add a Tag"
msgstr ""
-#: mod/photos.php:1318
+#: mod/photos.php:1316
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
msgstr ""
-#: mod/photos.php:1319
+#: mod/photos.php:1317
msgid "Do not rotate"
msgstr ""
-#: mod/photos.php:1320
+#: mod/photos.php:1318
msgid "Rotate CW (right)"
msgstr ""
-#: mod/photos.php:1321
+#: mod/photos.php:1319
msgid "Rotate CCW (left)"
msgstr ""
-#: mod/photos.php:1367 mod/photos.php:1423 mod/photos.php:1497
-#: src/Module/Contact.php:1059 src/Module/Item/Compose.php:148
+#: mod/photos.php:1365 mod/photos.php:1421 mod/photos.php:1495
+#: src/Module/Contact.php:1046 src/Module/Item/Compose.php:148
#: src/Object/Post.php:959
msgid "This is you"
msgstr ""
-#: mod/photos.php:1369 mod/photos.php:1425 mod/photos.php:1499
+#: mod/photos.php:1367 mod/photos.php:1423 mod/photos.php:1497
#: src/Object/Post.php:495 src/Object/Post.php:961
msgid "Comment"
msgstr ""
-#: mod/photos.php:1520 src/Object/Post.php:348
+#: mod/photos.php:1518 src/Object/Post.php:348
msgid "Like"
msgstr ""
-#: mod/photos.php:1521 src/Object/Post.php:348
+#: mod/photos.php:1519 src/Object/Post.php:348
msgid "I like this (toggle)"
msgstr ""
-#: mod/photos.php:1522 src/Object/Post.php:349
+#: mod/photos.php:1520 src/Object/Post.php:349
msgid "Dislike"
msgstr ""
-#: mod/photos.php:1524 src/Object/Post.php:349
+#: mod/photos.php:1522 src/Object/Post.php:349
msgid "I don't like this (toggle)"
msgstr ""
-#: mod/photos.php:1546
+#: mod/photos.php:1544
msgid "Map"
msgstr ""
-#: mod/photos.php:1616 mod/videos.php:241
+#: mod/photos.php:1614 mod/videos.php:243
msgid "View Album"
msgstr ""
@@ -1832,81 +1832,81 @@ msgid "Resubscribing to OStatus contacts"
msgstr ""
#: mod/repair_ostatus.php:50 src/Module/Debug/ActivityPubConversion.php:130
-#: src/Module/Debug/Babel.php:293 src/Module/Security/TwoFactor/Verify.php:96
+#: src/Module/Debug/Babel.php:293 src/Module/Security/TwoFactor/Verify.php:97
msgid "Error"
msgid_plural "Errors"
msgstr[0] ""
msgstr[1] ""
-#: mod/settings.php:142
+#: mod/settings.php:140
msgid "Failed to connect with email account using the settings provided."
msgstr ""
-#: mod/settings.php:171
+#: mod/settings.php:169
msgid "Contact CSV file upload error"
msgstr ""
-#: mod/settings.php:190
+#: mod/settings.php:188
msgid "Importing Contacts done"
msgstr ""
-#: mod/settings.php:203
+#: mod/settings.php:201
msgid "Relocate message has been send to your contacts"
msgstr ""
-#: mod/settings.php:215
+#: mod/settings.php:213
msgid "Passwords do not match."
msgstr ""
-#: mod/settings.php:223 src/Console/User.php:210
+#: mod/settings.php:221 src/Console/User.php:210
msgid "Password update failed. Please try again."
msgstr ""
-#: mod/settings.php:226 src/Console/User.php:213
+#: mod/settings.php:224 src/Console/User.php:213
msgid "Password changed."
msgstr ""
-#: mod/settings.php:229
+#: mod/settings.php:227
msgid "Password unchanged."
msgstr ""
-#: mod/settings.php:314
+#: mod/settings.php:312
msgid "Please use a shorter name."
msgstr ""
-#: mod/settings.php:317
+#: mod/settings.php:315
msgid "Name too short."
msgstr ""
-#: mod/settings.php:324
+#: mod/settings.php:322
msgid "Wrong Password."
msgstr ""
-#: mod/settings.php:329
+#: mod/settings.php:327
msgid "Invalid email."
msgstr ""
-#: mod/settings.php:335
+#: mod/settings.php:333
msgid "Cannot change to that email."
msgstr ""
-#: mod/settings.php:373
+#: mod/settings.php:371
msgid "Private forum has no privacy permissions. Using default privacy group."
msgstr ""
-#: mod/settings.php:376
+#: mod/settings.php:374
msgid "Private forum has no privacy permissions and no default privacy group."
msgstr ""
-#: mod/settings.php:395
+#: mod/settings.php:393
msgid "Settings were not updated."
msgstr ""
-#: mod/settings.php:436
+#: mod/settings.php:434
msgid "Connected Apps"
msgstr ""
-#: mod/settings.php:437 src/Module/Admin/Blocklist/Contact.php:90
+#: mod/settings.php:435 src/Module/Admin/Blocklist/Contact.php:90
#: src/Module/Admin/Users/Active.php:129 src/Module/Admin/Users/Blocked.php:130
#: src/Module/Admin/Users/Create.php:71 src/Module/Admin/Users/Deleted.php:88
#: src/Module/Admin/Users/Index.php:142 src/Module/Admin/Users/Index.php:162
@@ -1914,80 +1914,80 @@ msgstr ""
msgid "Name"
msgstr ""
-#: mod/settings.php:438 src/Content/Nav.php:216
+#: mod/settings.php:436 src/Content/Nav.php:212
msgid "Home Page"
msgstr ""
-#: mod/settings.php:439 src/Module/Admin/Queue.php:78
+#: mod/settings.php:437 src/Module/Admin/Queue.php:78
msgid "Created"
msgstr ""
-#: mod/settings.php:440
+#: mod/settings.php:438
msgid "Remove authorization"
msgstr ""
-#: mod/settings.php:458
+#: mod/settings.php:456
msgid "Addon Settings"
msgstr ""
-#: mod/settings.php:459
+#: mod/settings.php:457
msgid "No Addon settings configured"
msgstr ""
-#: mod/settings.php:480
+#: mod/settings.php:478
msgid "Additional Features"
msgstr ""
-#: mod/settings.php:482 mod/settings.php:578 mod/settings.php:713
+#: mod/settings.php:480 mod/settings.php:576 mod/settings.php:713
#: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:87
#: src/Module/Admin/Logs/Settings.php:82 src/Module/Admin/Site.php:501
#: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:66
-#: src/Module/Settings/Delegation.php:170 src/Module/Settings/Display.php:189
+#: src/Module/Settings/Delegation.php:170 src/Module/Settings/Display.php:194
msgid "Save Settings"
msgstr ""
-#: mod/settings.php:504
+#: mod/settings.php:502
msgid "Diaspora (Socialhome, Hubzilla)"
msgstr ""
-#: mod/settings.php:504 mod/settings.php:505
+#: mod/settings.php:502 mod/settings.php:503
msgid "enabled"
msgstr ""
-#: mod/settings.php:504 mod/settings.php:505
+#: mod/settings.php:502 mod/settings.php:503
msgid "disabled"
msgstr ""
-#: mod/settings.php:504 mod/settings.php:505
+#: mod/settings.php:502 mod/settings.php:503
#, php-format
msgid "Built-in support for %s connectivity is %s"
msgstr ""
-#: mod/settings.php:505
+#: mod/settings.php:503
msgid "OStatus (GNU Social)"
msgstr ""
-#: mod/settings.php:536
+#: mod/settings.php:534
msgid "Email access is disabled on this site."
msgstr ""
-#: mod/settings.php:541 mod/settings.php:576
+#: mod/settings.php:539 mod/settings.php:574
msgid "None"
msgstr ""
-#: mod/settings.php:547 src/Module/BaseSettings.php:80
+#: mod/settings.php:545 src/Module/BaseSettings.php:80
msgid "Social Networks"
msgstr ""
-#: mod/settings.php:552
+#: mod/settings.php:550
msgid "General Social Media Settings"
msgstr ""
-#: mod/settings.php:553
+#: mod/settings.php:551
msgid "Accept only top level posts by contacts you follow"
msgstr ""
-#: mod/settings.php:553
+#: mod/settings.php:551
msgid ""
"The system does an auto completion of threads when a comment arrives. This "
"has got the side effect that you can receive posts that had been started by "
@@ -1996,11 +1996,11 @@ msgid ""
"posts from people you really do follow."
msgstr ""
-#: mod/settings.php:554
+#: mod/settings.php:552
msgid "Disable Content Warning"
msgstr ""
-#: mod/settings.php:554
+#: mod/settings.php:552
msgid ""
"Users on networks like Mastodon or Pleroma are able to set a content warning "
"field which collapse their post by default. This disables the automatic "
@@ -2008,112 +2008,112 @@ msgid ""
"any other content filtering you eventually set up."
msgstr ""
-#: mod/settings.php:555
+#: mod/settings.php:553
msgid "Disable intelligent shortening"
msgstr ""
-#: mod/settings.php:555
+#: mod/settings.php:553
msgid ""
"Normally the system tries to find the best link to add to shortened posts. "
"If this option is enabled then every shortened post will always point to the "
"original friendica post."
msgstr ""
-#: mod/settings.php:556
+#: mod/settings.php:554
msgid "Enable simple text shortening"
msgstr ""
-#: mod/settings.php:556
+#: mod/settings.php:554
msgid ""
"Normally the system shortens posts at the next line feed. If this option is "
"enabled then the system will shorten the text at the maximum character limit."
msgstr ""
-#: mod/settings.php:557
+#: mod/settings.php:555
msgid "Attach the link title"
msgstr ""
-#: mod/settings.php:557
+#: mod/settings.php:555
msgid ""
"When activated, the title of the attached link will be added as a title on "
"posts to Diaspora. This is mostly helpful with \"remote-self\" contacts that "
"share feed content."
msgstr ""
-#: mod/settings.php:558
+#: mod/settings.php:556
msgid "Your legacy ActivityPub/GNU Social account"
msgstr ""
-#: mod/settings.php:558
+#: mod/settings.php:556
msgid ""
"If you enter your old account name from an ActivityPub based system or your "
"GNU Social/Statusnet account name here (in the format user@domain.tld), your "
"contacts will be added automatically. The field will be emptied when done."
msgstr ""
-#: mod/settings.php:561
+#: mod/settings.php:559
msgid "Repair OStatus subscriptions"
msgstr ""
-#: mod/settings.php:565
+#: mod/settings.php:563
msgid "Email/Mailbox Setup"
msgstr ""
-#: mod/settings.php:566
+#: mod/settings.php:564
msgid ""
"If you wish to communicate with email contacts using this service "
"(optional), please specify how to connect to your mailbox."
msgstr ""
-#: mod/settings.php:567
+#: mod/settings.php:565
msgid "Last successful email check:"
msgstr ""
-#: mod/settings.php:569
+#: mod/settings.php:567
msgid "IMAP server name:"
msgstr ""
-#: mod/settings.php:570
+#: mod/settings.php:568
msgid "IMAP port:"
msgstr ""
-#: mod/settings.php:571
+#: mod/settings.php:569
msgid "Security:"
msgstr ""
-#: mod/settings.php:572
+#: mod/settings.php:570
msgid "Email login name:"
msgstr ""
-#: mod/settings.php:573
+#: mod/settings.php:571
msgid "Email password:"
msgstr ""
-#: mod/settings.php:574
+#: mod/settings.php:572
msgid "Reply-to address:"
msgstr ""
-#: mod/settings.php:575
+#: mod/settings.php:573
msgid "Send public posts to all email contacts:"
msgstr ""
-#: mod/settings.php:576
+#: mod/settings.php:574
msgid "Action after import:"
msgstr ""
-#: mod/settings.php:576 src/Content/Nav.php:284
+#: mod/settings.php:574 src/Content/Nav.php:280
msgid "Mark as seen"
msgstr ""
-#: mod/settings.php:576
+#: mod/settings.php:574
msgid "Move to folder"
msgstr ""
-#: mod/settings.php:577
+#: mod/settings.php:575
msgid "Move to folder:"
msgstr ""
-#: mod/settings.php:591
+#: mod/settings.php:589
msgid "Unable to find your profile. Please contact your admin."
msgstr ""
@@ -2293,7 +2293,7 @@ msgstr ""
msgid "Basic Settings"
msgstr ""
-#: mod/settings.php:729 src/Module/Profile/Profile.php:145
+#: mod/settings.php:729 src/Module/Profile/Profile.php:144
msgid "Full Name:"
msgstr ""
@@ -2677,19 +2677,19 @@ msgstr ""
msgid "Disconnect/Unfollow"
msgstr ""
-#: mod/videos.php:119
+#: mod/videos.php:120
msgid "No videos selected"
msgstr ""
-#: mod/videos.php:234
+#: mod/videos.php:236
msgid "View Video"
msgstr ""
-#: mod/videos.php:249
+#: mod/videos.php:251
msgid "Recent Videos"
msgstr ""
-#: mod/videos.php:251
+#: mod/videos.php:253
msgid "Upload New Videos"
msgstr ""
@@ -2740,7 +2740,7 @@ msgid ""
"your site allow private mail from unknown senders."
msgstr ""
-#: src/App.php:407
+#: src/App.php:452
msgid "No system theme config value set."
msgstr ""
@@ -2777,25 +2777,25 @@ msgid ""
"form has been opened for too long (>3 hours) before submitting it."
msgstr ""
-#: src/BaseModule.php:209
+#: src/BaseModule.php:207
msgid "All contacts"
msgstr ""
-#: src/BaseModule.php:214 src/Content/Widget.php:238 src/Core/ACL.php:183
-#: src/Module/Contact.php:817 src/Module/PermissionTooltip.php:77
+#: src/BaseModule.php:212 src/Content/Widget.php:238 src/Core/ACL.php:195
+#: src/Module/Contact.php:815 src/Module/PermissionTooltip.php:77
#: src/Module/PermissionTooltip.php:99
msgid "Followers"
msgstr ""
-#: src/BaseModule.php:219 src/Content/Widget.php:239 src/Module/Contact.php:818
+#: src/BaseModule.php:217 src/Content/Widget.php:239 src/Module/Contact.php:816
msgid "Following"
msgstr ""
-#: src/BaseModule.php:224 src/Content/Widget.php:240 src/Module/Contact.php:819
+#: src/BaseModule.php:222 src/Content/Widget.php:240 src/Module/Contact.php:817
msgid "Mutual friends"
msgstr ""
-#: src/BaseModule.php:232
+#: src/BaseModule.php:230
msgid "Common"
msgstr ""
@@ -3096,7 +3096,7 @@ msgstr ""
msgid "Display membership date in profile"
msgstr ""
-#: src/Content/ForumManager.php:145 src/Content/Nav.php:243
+#: src/Content/ForumManager.php:145 src/Content/Nav.php:239
#: src/Content/Text/HTML.php:906 src/Content/Widget.php:530
msgid "Forums"
msgstr ""
@@ -3138,7 +3138,7 @@ msgstr ""
msgid "End this session"
msgstr ""
-#: src/Content/Nav.php:185 src/Module/Bookmarklet.php:46
+#: src/Content/Nav.php:185 src/Module/Bookmarklet.php:45
#: src/Module/Security/Login.php:146
msgid "Login"
msgstr ""
@@ -3147,66 +3147,66 @@ msgstr ""
msgid "Sign in"
msgstr ""
-#: src/Content/Nav.php:191 src/Module/BaseProfile.php:58
-#: src/Module/Contact.php:620 src/Module/Contact.php:885
+#: src/Content/Nav.php:190 src/Module/BaseProfile.php:56
+#: src/Module/Contact.php:618 src/Module/Contact.php:883
#: src/Module/Settings/TwoFactor/Index.php:112 view/theme/frio/theme.php:226
msgid "Status"
msgstr ""
-#: src/Content/Nav.php:191 src/Content/Nav.php:277
+#: src/Content/Nav.php:190 src/Content/Nav.php:273
#: view/theme/frio/theme.php:226
msgid "Your posts and conversations"
msgstr ""
-#: src/Content/Nav.php:192 src/Module/BaseProfile.php:50
-#: src/Module/BaseSettings.php:57 src/Module/Contact.php:622
-#: src/Module/Contact.php:901 src/Module/Profile/Profile.php:242
+#: src/Content/Nav.php:191 src/Module/BaseProfile.php:48
+#: src/Module/BaseSettings.php:57 src/Module/Contact.php:620
+#: src/Module/Contact.php:899 src/Module/Profile/Profile.php:241
#: src/Module/Welcome.php:57 view/theme/frio/theme.php:227
msgid "Profile"
msgstr ""
-#: src/Content/Nav.php:192 view/theme/frio/theme.php:227
+#: src/Content/Nav.php:191 view/theme/frio/theme.php:227
msgid "Your profile page"
msgstr ""
-#: src/Content/Nav.php:193 view/theme/frio/theme.php:228
+#: src/Content/Nav.php:192 view/theme/frio/theme.php:228
msgid "Your photos"
msgstr ""
-#: src/Content/Nav.php:194 view/theme/frio/theme.php:229
+#: src/Content/Nav.php:193 view/theme/frio/theme.php:229
msgid "Videos"
msgstr ""
-#: src/Content/Nav.php:194 view/theme/frio/theme.php:229
+#: src/Content/Nav.php:193 view/theme/frio/theme.php:229
msgid "Your videos"
msgstr ""
-#: src/Content/Nav.php:195 view/theme/frio/theme.php:230
+#: src/Content/Nav.php:194 view/theme/frio/theme.php:230
msgid "Your events"
msgstr ""
-#: src/Content/Nav.php:196
+#: src/Content/Nav.php:195
msgid "Personal notes"
msgstr ""
-#: src/Content/Nav.php:196
+#: src/Content/Nav.php:195
msgid "Your personal notes"
msgstr ""
-#: src/Content/Nav.php:216 src/Content/Nav.php:277
+#: src/Content/Nav.php:212 src/Content/Nav.php:273
msgid "Home"
msgstr ""
-#: src/Content/Nav.php:220 src/Module/Register.php:155
+#: src/Content/Nav.php:216 src/Module/Register.php:155
#: src/Module/Security/Login.php:106
msgid "Register"
msgstr ""
-#: src/Content/Nav.php:220
+#: src/Content/Nav.php:216
msgid "Create an account"
msgstr ""
-#: src/Content/Nav.php:226 src/Module/Help.php:69
+#: src/Content/Nav.php:222 src/Module/Help.php:69
#: src/Module/Settings/TwoFactor/AppSpecific.php:115
#: src/Module/Settings/TwoFactor/Index.php:111
#: src/Module/Settings/TwoFactor/Recovery.php:93
@@ -3214,158 +3214,158 @@ msgstr ""
msgid "Help"
msgstr ""
-#: src/Content/Nav.php:226
+#: src/Content/Nav.php:222
msgid "Help and documentation"
msgstr ""
-#: src/Content/Nav.php:230
+#: src/Content/Nav.php:226
msgid "Apps"
msgstr ""
-#: src/Content/Nav.php:230
+#: src/Content/Nav.php:226
msgid "Addon applications, utilities, games"
msgstr ""
-#: src/Content/Nav.php:234 src/Content/Text/HTML.php:891
+#: src/Content/Nav.php:230 src/Content/Text/HTML.php:891
#: src/Module/Search/Index.php:99
msgid "Search"
msgstr ""
-#: src/Content/Nav.php:234
+#: src/Content/Nav.php:230
msgid "Search site content"
msgstr ""
-#: src/Content/Nav.php:237 src/Content/Text/HTML.php:900
+#: src/Content/Nav.php:233 src/Content/Text/HTML.php:900
msgid "Full Text"
msgstr ""
-#: src/Content/Nav.php:238 src/Content/Text/HTML.php:901
+#: src/Content/Nav.php:234 src/Content/Text/HTML.php:901
#: src/Content/Widget/TagCloud.php:68
msgid "Tags"
msgstr ""
-#: src/Content/Nav.php:239 src/Content/Nav.php:298
-#: src/Content/Text/HTML.php:902 src/Module/BaseProfile.php:128
-#: src/Module/BaseProfile.php:131 src/Module/Contact.php:820
-#: src/Module/Contact.php:908 view/theme/frio/theme.php:237
+#: src/Content/Nav.php:235 src/Content/Nav.php:294
+#: src/Content/Text/HTML.php:902 src/Module/BaseProfile.php:126
+#: src/Module/BaseProfile.php:129 src/Module/Contact.php:818
+#: src/Module/Contact.php:906 view/theme/frio/theme.php:237
msgid "Contacts"
msgstr ""
-#: src/Content/Nav.php:258
+#: src/Content/Nav.php:254
msgid "Community"
msgstr ""
-#: src/Content/Nav.php:258
+#: src/Content/Nav.php:254
msgid "Conversations on this and other servers"
msgstr ""
-#: src/Content/Nav.php:262 src/Module/BaseProfile.php:90
-#: src/Module/BaseProfile.php:101 view/theme/frio/theme.php:234
+#: src/Content/Nav.php:258 src/Module/BaseProfile.php:88
+#: src/Module/BaseProfile.php:99 view/theme/frio/theme.php:234
msgid "Events and Calendar"
msgstr ""
-#: src/Content/Nav.php:265
+#: src/Content/Nav.php:261
msgid "Directory"
msgstr ""
-#: src/Content/Nav.php:265
+#: src/Content/Nav.php:261
msgid "People directory"
msgstr ""
-#: src/Content/Nav.php:267 src/Module/BaseAdmin.php:85
+#: src/Content/Nav.php:263 src/Module/BaseAdmin.php:85
msgid "Information"
msgstr ""
-#: src/Content/Nav.php:267
+#: src/Content/Nav.php:263
msgid "Information about this friendica instance"
msgstr ""
-#: src/Content/Nav.php:270 src/Module/Admin/Tos.php:59
+#: src/Content/Nav.php:266 src/Module/Admin/Tos.php:59
#: src/Module/BaseAdmin.php:96 src/Module/Register.php:163
#: src/Module/Tos.php:84
msgid "Terms of Service"
msgstr ""
-#: src/Content/Nav.php:270
+#: src/Content/Nav.php:266
msgid "Terms of Service of this Friendica instance"
msgstr ""
-#: src/Content/Nav.php:275 view/theme/frio/theme.php:233
+#: src/Content/Nav.php:271 view/theme/frio/theme.php:233
msgid "Network"
msgstr ""
-#: src/Content/Nav.php:275 view/theme/frio/theme.php:233
+#: src/Content/Nav.php:271 view/theme/frio/theme.php:233
msgid "Conversations from your friends"
msgstr ""
-#: src/Content/Nav.php:281
+#: src/Content/Nav.php:277
msgid "Introductions"
msgstr ""
-#: src/Content/Nav.php:281
+#: src/Content/Nav.php:277
msgid "Friend Requests"
msgstr ""
-#: src/Content/Nav.php:282 src/Module/BaseNotifications.php:139
+#: src/Content/Nav.php:278 src/Module/BaseNotifications.php:139
#: src/Module/Notifications/Introductions.php:54
msgid "Notifications"
msgstr ""
-#: src/Content/Nav.php:283
+#: src/Content/Nav.php:279
msgid "See all notifications"
msgstr ""
-#: src/Content/Nav.php:284
+#: src/Content/Nav.php:280
msgid "Mark all system notifications seen"
msgstr ""
-#: src/Content/Nav.php:287 view/theme/frio/theme.php:235
+#: src/Content/Nav.php:283 view/theme/frio/theme.php:235
msgid "Private mail"
msgstr ""
-#: src/Content/Nav.php:288
+#: src/Content/Nav.php:284
msgid "Inbox"
msgstr ""
-#: src/Content/Nav.php:289
+#: src/Content/Nav.php:285
msgid "Outbox"
msgstr ""
-#: src/Content/Nav.php:293
+#: src/Content/Nav.php:289
msgid "Accounts"
msgstr ""
-#: src/Content/Nav.php:293
+#: src/Content/Nav.php:289
msgid "Manage other pages"
msgstr ""
-#: src/Content/Nav.php:296 src/Module/Admin/Addons/Details.php:114
+#: src/Content/Nav.php:292 src/Module/Admin/Addons/Details.php:114
#: src/Module/Admin/Themes/Details.php:93 src/Module/BaseSettings.php:124
#: src/Module/Welcome.php:52 view/theme/frio/theme.php:236
msgid "Settings"
msgstr ""
-#: src/Content/Nav.php:296 view/theme/frio/theme.php:236
+#: src/Content/Nav.php:292 view/theme/frio/theme.php:236
msgid "Account settings"
msgstr ""
-#: src/Content/Nav.php:298 view/theme/frio/theme.php:237
+#: src/Content/Nav.php:294 view/theme/frio/theme.php:237
msgid "Manage/edit friends and contacts"
msgstr ""
-#: src/Content/Nav.php:303 src/Module/BaseAdmin.php:126
+#: src/Content/Nav.php:299 src/Module/BaseAdmin.php:126
msgid "Admin"
msgstr ""
-#: src/Content/Nav.php:303
+#: src/Content/Nav.php:299
msgid "Site setup and configuration"
msgstr ""
-#: src/Content/Nav.php:306
+#: src/Content/Nav.php:302
msgid "Navigation"
msgstr ""
-#: src/Content/Nav.php:306
+#: src/Content/Nav.php:302
msgid "Site map"
msgstr ""
@@ -3477,7 +3477,7 @@ msgstr ""
msgid "Examples: Robert Morgenstein, Fishing"
msgstr ""
-#: src/Content/Widget.php:78 src/Module/Contact.php:841
+#: src/Content/Widget.php:78 src/Module/Contact.php:839
#: src/Module/Directory.php:99 view/theme/vier/theme.php:174
msgid "Find"
msgstr ""
@@ -3504,7 +3504,7 @@ msgid "Local Directory"
msgstr ""
#: src/Content/Widget.php:214 src/Model/Group.php:535
-#: src/Module/Contact.php:804 src/Module/Welcome.php:76
+#: src/Module/Contact.php:802 src/Module/Welcome.php:76
msgid "Groups"
msgstr ""
@@ -3516,7 +3516,7 @@ msgstr ""
msgid "Relationships"
msgstr ""
-#: src/Content/Widget.php:247 src/Module/Contact.php:756
+#: src/Content/Widget.php:247 src/Module/Contact.php:754
#: src/Module/Group.php:292
msgid "All Contacts"
msgstr ""
@@ -3615,12 +3615,12 @@ msgid "More Trending Tags"
msgstr ""
#: src/Content/Widget/VCard.php:96 src/Model/Profile.php:363
-#: src/Module/Contact.php:611 src/Module/Profile/Profile.php:177
+#: src/Module/Contact.php:609 src/Module/Profile/Profile.php:176
msgid "XMPP:"
msgstr ""
#: src/Content/Widget/VCard.php:97 src/Model/Profile.php:364
-#: src/Module/Contact.php:613 src/Module/Profile/Profile.php:181
+#: src/Module/Contact.php:611 src/Module/Profile/Profile.php:180
msgid "Matrix:"
msgstr ""
@@ -3633,49 +3633,49 @@ msgstr ""
msgid "Unfollow"
msgstr ""
-#: src/Core/ACL.php:154 src/Module/Profile/Profile.php:243
+#: src/Core/ACL.php:166 src/Module/Profile/Profile.php:242
msgid "Yourself"
msgstr ""
-#: src/Core/ACL.php:190 src/Module/PermissionTooltip.php:83
+#: src/Core/ACL.php:202 src/Module/PermissionTooltip.php:83
#: src/Module/PermissionTooltip.php:105
msgid "Mutuals"
msgstr ""
-#: src/Core/ACL.php:280
+#: src/Core/ACL.php:294
msgid "Post to Email"
msgstr ""
-#: src/Core/ACL.php:307
+#: src/Core/ACL.php:321
msgid "Public"
msgstr ""
-#: src/Core/ACL.php:308
+#: src/Core/ACL.php:322
msgid ""
"This content will be shown to all your followers and can be seen in the "
"community pages and by anyone with its link."
msgstr ""
-#: src/Core/ACL.php:309
+#: src/Core/ACL.php:323
msgid "Limited/Private"
msgstr ""
-#: src/Core/ACL.php:310
+#: src/Core/ACL.php:324
msgid ""
"This content will be shown only to the people in the first box, to the "
"exception of the people mentioned in the second box. It won't appear "
"anywhere public."
msgstr ""
-#: src/Core/ACL.php:311
+#: src/Core/ACL.php:325
msgid "Show to:"
msgstr ""
-#: src/Core/ACL.php:312
+#: src/Core/ACL.php:326
msgid "Except to:"
msgstr ""
-#: src/Core/ACL.php:315
+#: src/Core/ACL.php:329
msgid "Connectors"
msgstr ""
@@ -3966,7 +3966,7 @@ msgid "Could not connect to database."
msgstr ""
#: src/Core/L10n.php:377 src/Model/Event.php:418
-#: src/Module/Settings/Display.php:178
+#: src/Module/Settings/Display.php:183
msgid "Monday"
msgstr ""
@@ -3991,7 +3991,7 @@ msgid "Saturday"
msgstr ""
#: src/Core/L10n.php:377 src/Model/Event.php:417
-#: src/Module/Settings/Display.php:178
+#: src/Module/Settings/Display.php:183
msgid "Sunday"
msgstr ""
@@ -4422,63 +4422,63 @@ msgstr ""
msgid "Forum"
msgstr ""
-#: src/Model/Contact.php:2331
+#: src/Model/Contact.php:2330
msgid "Disallowed profile URL."
msgstr ""
-#: src/Model/Contact.php:2336 src/Module/Friendica.php:81
+#: src/Model/Contact.php:2335 src/Module/Friendica.php:81
msgid "Blocked domain"
msgstr ""
-#: src/Model/Contact.php:2341
+#: src/Model/Contact.php:2340
msgid "Connect URL missing."
msgstr ""
-#: src/Model/Contact.php:2350
+#: src/Model/Contact.php:2349
msgid ""
"The contact could not be added. Please check the relevant network "
"credentials in your Settings -> Social Networks page."
msgstr ""
-#: src/Model/Contact.php:2387
+#: src/Model/Contact.php:2386
msgid "The profile address specified does not provide adequate information."
msgstr ""
-#: src/Model/Contact.php:2389
+#: src/Model/Contact.php:2388
msgid "No compatible communication protocols or feeds were discovered."
msgstr ""
-#: src/Model/Contact.php:2392
+#: src/Model/Contact.php:2391
msgid "An author or name was not found."
msgstr ""
-#: src/Model/Contact.php:2395
+#: src/Model/Contact.php:2394
msgid "No browser URL could be matched to this address."
msgstr ""
-#: src/Model/Contact.php:2398
+#: src/Model/Contact.php:2397
msgid ""
"Unable to match @-style Identity Address with a known protocol or email "
"contact."
msgstr ""
-#: src/Model/Contact.php:2399
+#: src/Model/Contact.php:2398
msgid "Use mailto: in front of address to force email check."
msgstr ""
-#: src/Model/Contact.php:2405
+#: src/Model/Contact.php:2404
msgid ""
"The profile address specified belongs to a network which has been disabled "
"on this site."
msgstr ""
-#: src/Model/Contact.php:2410
+#: src/Model/Contact.php:2409
msgid ""
"Limited profile. This person will be unable to receive direct/personal "
"notifications from you."
msgstr ""
-#: src/Model/Contact.php:2469
+#: src/Model/Contact.php:2468
msgid "Unable to retrieve contact information."
msgstr ""
@@ -4629,8 +4629,8 @@ msgstr ""
msgid "[no subject]"
msgstr ""
-#: src/Model/Profile.php:346 src/Module/Profile/Profile.php:257
-#: src/Module/Profile/Profile.php:259
+#: src/Model/Profile.php:346 src/Module/Profile/Profile.php:256
+#: src/Module/Profile/Profile.php:258
msgid "Edit profile"
msgstr ""
@@ -4639,11 +4639,11 @@ msgid "Change profile photo"
msgstr ""
#: src/Model/Profile.php:361 src/Module/Directory.php:155
-#: src/Module/Profile/Profile.php:185
+#: src/Module/Profile/Profile.php:184
msgid "Homepage:"
msgstr ""
-#: src/Model/Profile.php:362 src/Module/Contact.php:615
+#: src/Model/Profile.php:362 src/Module/Contact.php:613
#: src/Module/Notifications/Introductions.php:168
msgid "About:"
msgstr ""
@@ -4725,138 +4725,138 @@ msgstr ""
msgid "Enter a valid existing folder"
msgstr ""
-#: src/Model/User.php:200 src/Model/User.php:996
+#: src/Model/User.php:202 src/Model/User.php:998
msgid "SERIOUS ERROR: Generation of security keys failed."
msgstr ""
-#: src/Model/User.php:581 src/Model/User.php:614
+#: src/Model/User.php:583 src/Model/User.php:616
msgid "Login failed"
msgstr ""
-#: src/Model/User.php:646
+#: src/Model/User.php:648
msgid "Not enough information to authenticate"
msgstr ""
-#: src/Model/User.php:741
+#: src/Model/User.php:743
msgid "Password can't be empty"
msgstr ""
-#: src/Model/User.php:760
+#: src/Model/User.php:762
msgid "Empty passwords are not allowed."
msgstr ""
-#: src/Model/User.php:764
+#: src/Model/User.php:766
msgid ""
"The new password has been exposed in a public data dump, please choose "
"another."
msgstr ""
-#: src/Model/User.php:770
+#: src/Model/User.php:772
msgid ""
"The password can't contain accentuated letters, white spaces or colons (:)"
msgstr ""
-#: src/Model/User.php:876
+#: src/Model/User.php:878
msgid "Passwords do not match. Password unchanged."
msgstr ""
-#: src/Model/User.php:883
+#: src/Model/User.php:885
msgid "An invitation is required."
msgstr ""
-#: src/Model/User.php:887
+#: src/Model/User.php:889
msgid "Invitation could not be verified."
msgstr ""
-#: src/Model/User.php:895
+#: src/Model/User.php:897
msgid "Invalid OpenID url"
msgstr ""
-#: src/Model/User.php:908 src/Security/Authentication.php:224
+#: src/Model/User.php:910 src/Security/Authentication.php:223
msgid ""
"We encountered a problem while logging in with the OpenID you provided. "
"Please check the correct spelling of the ID."
msgstr ""
-#: src/Model/User.php:908 src/Security/Authentication.php:224
+#: src/Model/User.php:910 src/Security/Authentication.php:223
msgid "The error message was:"
msgstr ""
-#: src/Model/User.php:914
+#: src/Model/User.php:916
msgid "Please enter the required information."
msgstr ""
-#: src/Model/User.php:928
+#: src/Model/User.php:930
#, php-format
msgid ""
"system.username_min_length (%s) and system.username_max_length (%s) are "
"excluding each other, swapping values."
msgstr ""
-#: src/Model/User.php:935
+#: src/Model/User.php:937
#, php-format
msgid "Username should be at least %s character."
msgid_plural "Username should be at least %s characters."
msgstr[0] ""
msgstr[1] ""
-#: src/Model/User.php:939
+#: src/Model/User.php:941
#, php-format
msgid "Username should be at most %s character."
msgid_plural "Username should be at most %s characters."
msgstr[0] ""
msgstr[1] ""
-#: src/Model/User.php:947
+#: src/Model/User.php:949
msgid "That doesn't appear to be your full (First Last) name."
msgstr ""
-#: src/Model/User.php:952
+#: src/Model/User.php:954
msgid "Your email domain is not among those allowed on this site."
msgstr ""
-#: src/Model/User.php:956
+#: src/Model/User.php:958
msgid "Not a valid email address."
msgstr ""
-#: src/Model/User.php:959
+#: src/Model/User.php:961
msgid "The nickname was blocked from registration by the nodes admin."
msgstr ""
-#: src/Model/User.php:963 src/Model/User.php:971
+#: src/Model/User.php:965 src/Model/User.php:973
msgid "Cannot use that email."
msgstr ""
-#: src/Model/User.php:978
+#: src/Model/User.php:980
msgid "Your nickname can only contain a-z, 0-9 and _."
msgstr ""
-#: src/Model/User.php:986 src/Model/User.php:1043
+#: src/Model/User.php:988 src/Model/User.php:1045
msgid "Nickname is already registered. Please choose another."
msgstr ""
-#: src/Model/User.php:1030 src/Model/User.php:1034
+#: src/Model/User.php:1032 src/Model/User.php:1036
msgid "An error occurred during registration. Please try again."
msgstr ""
-#: src/Model/User.php:1057
+#: src/Model/User.php:1059
msgid "An error occurred creating your default profile. Please try again."
msgstr ""
-#: src/Model/User.php:1064
+#: src/Model/User.php:1066
msgid "An error occurred creating your self contact. Please try again."
msgstr ""
-#: src/Model/User.php:1069
+#: src/Model/User.php:1071
msgid "Friends"
msgstr ""
-#: src/Model/User.php:1073
+#: src/Model/User.php:1075
msgid ""
"An error occurred creating your default contact group. Please try again."
msgstr ""
-#: src/Model/User.php:1302
+#: src/Model/User.php:1304
#, php-format
msgid ""
"\n"
@@ -4864,7 +4864,7 @@ msgid ""
"\t\t\tthe administrator of %2$s has set up an account for you."
msgstr ""
-#: src/Model/User.php:1305
+#: src/Model/User.php:1307
#, php-format
msgid ""
"\n"
@@ -4901,12 +4901,12 @@ msgid ""
"\t\tThank you and welcome to %4$s."
msgstr ""
-#: src/Model/User.php:1338 src/Model/User.php:1445
+#: src/Model/User.php:1340 src/Model/User.php:1447
#, php-format
msgid "Registration details for %s"
msgstr ""
-#: src/Model/User.php:1358
+#: src/Model/User.php:1360
#, php-format
msgid ""
"\n"
@@ -4922,12 +4922,12 @@ msgid ""
"\t\t"
msgstr ""
-#: src/Model/User.php:1377
+#: src/Model/User.php:1379
#, php-format
msgid "Registration at %s"
msgstr ""
-#: src/Model/User.php:1401
+#: src/Model/User.php:1403
#, php-format
msgid ""
"\n"
@@ -4936,7 +4936,7 @@ msgid ""
"\t\t\t"
msgstr ""
-#: src/Model/User.php:1409
+#: src/Model/User.php:1411
#, php-format
msgid ""
"\n"
@@ -5066,8 +5066,8 @@ msgstr ""
msgid "List of active accounts"
msgstr ""
-#: src/Module/Admin/BaseUsers.php:66 src/Module/Contact.php:764
-#: src/Module/Contact.php:824
+#: src/Module/Admin/BaseUsers.php:66 src/Module/Contact.php:762
+#: src/Module/Contact.php:822
msgid "Pending"
msgstr ""
@@ -5075,8 +5075,8 @@ msgstr ""
msgid "List of pending registrations"
msgstr ""
-#: src/Module/Admin/BaseUsers.php:74 src/Module/Contact.php:772
-#: src/Module/Contact.php:825
+#: src/Module/Admin/BaseUsers.php:74 src/Module/Contact.php:770
+#: src/Module/Contact.php:823
msgid "Blocked"
msgstr ""
@@ -5133,8 +5133,8 @@ msgstr ""
#: src/Module/Admin/Blocklist/Contact.php:85
#: src/Module/Admin/Users/Blocked.php:142 src/Module/Admin/Users/Index.php:156
-#: src/Module/Contact.php:588 src/Module/Contact.php:848
-#: src/Module/Contact.php:1128
+#: src/Module/Contact.php:586 src/Module/Contact.php:846
+#: src/Module/Contact.php:1115
msgid "Unblock"
msgstr ""
@@ -5558,11 +5558,11 @@ msgstr ""
msgid "Relocation started. Could take a while to complete."
msgstr ""
-#: src/Module/Admin/Site.php:403 src/Module/Settings/Display.php:134
+#: src/Module/Admin/Site.php:403 src/Module/Settings/Display.php:139
msgid "No special theme for mobile devices"
msgstr ""
-#: src/Module/Admin/Site.php:420 src/Module/Settings/Display.php:144
+#: src/Module/Admin/Site.php:420 src/Module/Settings/Display.php:149
#, php-format
msgid "%s - (Experimental)"
msgstr ""
@@ -6376,7 +6376,7 @@ msgid "Encryption layer between nodes."
msgstr ""
#: src/Module/Admin/Site.php:604 src/Module/Admin/Site.php:610
-#: src/Module/Contact.php:517 src/Module/Settings/TwoFactor/Index.php:118
+#: src/Module/Contact.php:515 src/Module/Settings/TwoFactor/Index.php:118
msgid "Disabled"
msgstr ""
@@ -6973,7 +6973,7 @@ msgstr ""
msgid "Posts from %s can't be unshared"
msgstr ""
-#: src/Module/Api/Twitter/ContactEndpoint.php:63 src/Module/Contact.php:357
+#: src/Module/Api/Twitter/ContactEndpoint.php:63 src/Module/Contact.php:355
msgid "Contact not found"
msgstr ""
@@ -7079,38 +7079,38 @@ msgstr ""
msgid "User registrations waiting for confirmation"
msgstr ""
-#: src/Module/BaseApi.php:128
+#: src/Module/BaseApi.php:120
#, php-format
msgid "API endpoint %s %s is not implemented"
msgstr ""
-#: src/Module/BaseApi.php:129
+#: src/Module/BaseApi.php:121
msgid ""
"The API endpoint is currently not implemented but might be in the future."
msgstr ""
-#: src/Module/BaseApi.php:301 src/Module/BaseApi.php:317
-#: src/Module/BaseApi.php:333
+#: src/Module/BaseApi.php:293 src/Module/BaseApi.php:309
+#: src/Module/BaseApi.php:325
msgid "Too Many Requests"
msgstr ""
-#: src/Module/BaseProfile.php:53 src/Module/Contact.php:904
+#: src/Module/BaseProfile.php:51 src/Module/Contact.php:902
msgid "Profile Details"
msgstr ""
-#: src/Module/BaseProfile.php:112
+#: src/Module/BaseProfile.php:110
msgid "Only You Can See This"
msgstr ""
-#: src/Module/BaseProfile.php:117 src/Module/Profile/Schedule.php:82
+#: src/Module/BaseProfile.php:115 src/Module/Profile/Schedule.php:82
msgid "Scheduled Posts"
msgstr ""
-#: src/Module/BaseProfile.php:120
+#: src/Module/BaseProfile.php:118
msgid "Posts that are scheduled for publishing"
msgstr ""
-#: src/Module/BaseProfile.php:139 src/Module/BaseProfile.php:142
+#: src/Module/BaseProfile.php:137 src/Module/BaseProfile.php:140
msgid "Tips for New Members"
msgstr ""
@@ -7128,7 +7128,7 @@ msgstr ""
msgid "Account"
msgstr ""
-#: src/Module/BaseSettings.php:50 src/Module/Security/TwoFactor/Verify.php:94
+#: src/Module/BaseSettings.php:50 src/Module/Security/TwoFactor/Verify.php:95
#: src/Module/Settings/TwoFactor/Index.php:110
msgid "Two-factor authentication"
msgstr ""
@@ -7145,7 +7145,7 @@ msgstr ""
msgid "Connected apps"
msgstr ""
-#: src/Module/BaseSettings.php:108 src/Module/Settings/UserExport.php:77
+#: src/Module/BaseSettings.php:108 src/Module/Settings/UserExport.php:76
msgid "Export personal data"
msgstr ""
@@ -7153,393 +7153,393 @@ msgstr ""
msgid "Remove account"
msgstr ""
-#: src/Module/Bookmarklet.php:56
+#: src/Module/Bookmarklet.php:55
msgid "This page is missing a url parameter."
msgstr ""
-#: src/Module/Bookmarklet.php:78
+#: src/Module/Bookmarklet.php:67
msgid "The post was created"
msgstr ""
-#: src/Module/Contact.php:94
+#: src/Module/Contact.php:93
#, php-format
msgid "%d contact edited."
msgid_plural "%d contacts edited."
msgstr[0] ""
msgstr[1] ""
-#: src/Module/Contact.php:121
+#: src/Module/Contact.php:120
msgid "Could not access contact record."
msgstr ""
-#: src/Module/Contact.php:157
+#: src/Module/Contact.php:156
msgid "Failed to update contact record."
msgstr ""
-#: src/Module/Contact.php:374
+#: src/Module/Contact.php:372
msgid "You can't block yourself"
msgstr ""
-#: src/Module/Contact.php:380
+#: src/Module/Contact.php:378
msgid "Contact has been blocked"
msgstr ""
-#: src/Module/Contact.php:380
+#: src/Module/Contact.php:378
msgid "Contact has been unblocked"
msgstr ""
-#: src/Module/Contact.php:388
+#: src/Module/Contact.php:386
msgid "You can't ignore yourself"
msgstr ""
-#: src/Module/Contact.php:394
+#: src/Module/Contact.php:392
msgid "Contact has been ignored"
msgstr ""
-#: src/Module/Contact.php:394
+#: src/Module/Contact.php:392
msgid "Contact has been unignored"
msgstr ""
-#: src/Module/Contact.php:404
+#: src/Module/Contact.php:402
msgid "Contact has been archived"
msgstr ""
-#: src/Module/Contact.php:404
+#: src/Module/Contact.php:402
msgid "Contact has been unarchived"
msgstr ""
-#: src/Module/Contact.php:417
+#: src/Module/Contact.php:415
msgid "Drop contact"
msgstr ""
-#: src/Module/Contact.php:420 src/Module/Contact.php:844
+#: src/Module/Contact.php:418 src/Module/Contact.php:842
msgid "Do you really want to delete this contact?"
msgstr ""
-#: src/Module/Contact.php:421 src/Module/Notifications/Introductions.php:123
+#: src/Module/Contact.php:419 src/Module/Notifications/Introductions.php:123
#: src/Module/OAuth/Acknowledge.php:47 src/Module/Register.php:115
msgid "Yes"
msgstr ""
-#: src/Module/Contact.php:433
+#: src/Module/Contact.php:431
msgid "Contact has been removed."
msgstr ""
-#: src/Module/Contact.php:459
+#: src/Module/Contact.php:457
#, php-format
msgid "You are mutual friends with %s"
msgstr ""
-#: src/Module/Contact.php:463
+#: src/Module/Contact.php:461
#, php-format
msgid "You are sharing with %s"
msgstr ""
-#: src/Module/Contact.php:467
+#: src/Module/Contact.php:465
#, php-format
msgid "%s is sharing with you"
msgstr ""
-#: src/Module/Contact.php:491
+#: src/Module/Contact.php:489
msgid "Private communications are not available for this contact."
msgstr ""
-#: src/Module/Contact.php:493
+#: src/Module/Contact.php:491
msgid "Never"
msgstr ""
-#: src/Module/Contact.php:496
+#: src/Module/Contact.php:494
msgid "(Update was not successful)"
msgstr ""
-#: src/Module/Contact.php:496
+#: src/Module/Contact.php:494
msgid "(Update was successful)"
msgstr ""
-#: src/Module/Contact.php:498 src/Module/Contact.php:1099
+#: src/Module/Contact.php:496 src/Module/Contact.php:1086
msgid "Suggest friends"
msgstr ""
-#: src/Module/Contact.php:502
+#: src/Module/Contact.php:500
#, php-format
msgid "Network type: %s"
msgstr ""
-#: src/Module/Contact.php:507
+#: src/Module/Contact.php:505
msgid "Communications lost with this contact!"
msgstr ""
-#: src/Module/Contact.php:513
+#: src/Module/Contact.php:511
msgid "Fetch further information for feeds"
msgstr ""
-#: src/Module/Contact.php:515
+#: src/Module/Contact.php:513
msgid ""
"Fetch information like preview pictures, title and teaser from the feed "
"item. You can activate this if the feed doesn't contain much text. Keywords "
"are taken from the meta header in the feed item and are posted as hash tags."
msgstr ""
-#: src/Module/Contact.php:518
+#: src/Module/Contact.php:516
msgid "Fetch information"
msgstr ""
-#: src/Module/Contact.php:519
+#: src/Module/Contact.php:517
msgid "Fetch keywords"
msgstr ""
-#: src/Module/Contact.php:520
+#: src/Module/Contact.php:518
msgid "Fetch information and keywords"
msgstr ""
-#: src/Module/Contact.php:532 src/Module/Contact.php:536
-#: src/Module/Contact.php:539 src/Module/Contact.php:543
+#: src/Module/Contact.php:530 src/Module/Contact.php:534
+#: src/Module/Contact.php:537 src/Module/Contact.php:541
msgid "No mirroring"
msgstr ""
-#: src/Module/Contact.php:533
+#: src/Module/Contact.php:531
msgid "Mirror as forwarded posting"
msgstr ""
-#: src/Module/Contact.php:534 src/Module/Contact.php:540
-#: src/Module/Contact.php:544
+#: src/Module/Contact.php:532 src/Module/Contact.php:538
+#: src/Module/Contact.php:542
msgid "Mirror as my own posting"
msgstr ""
-#: src/Module/Contact.php:537 src/Module/Contact.php:541
+#: src/Module/Contact.php:535 src/Module/Contact.php:539
msgid "Native reshare"
msgstr ""
-#: src/Module/Contact.php:556
+#: src/Module/Contact.php:554
msgid "Contact Information / Notes"
msgstr ""
-#: src/Module/Contact.php:557
+#: src/Module/Contact.php:555
msgid "Contact Settings"
msgstr ""
-#: src/Module/Contact.php:565
+#: src/Module/Contact.php:563
msgid "Contact"
msgstr ""
-#: src/Module/Contact.php:569
+#: src/Module/Contact.php:567
msgid "Their personal note"
msgstr ""
-#: src/Module/Contact.php:571
+#: src/Module/Contact.php:569
msgid "Edit contact notes"
msgstr ""
-#: src/Module/Contact.php:574 src/Module/Contact.php:1067
+#: src/Module/Contact.php:572 src/Module/Contact.php:1054
#, php-format
msgid "Visit %s's profile [%s]"
msgstr ""
-#: src/Module/Contact.php:575
+#: src/Module/Contact.php:573
msgid "Block/Unblock contact"
msgstr ""
-#: src/Module/Contact.php:576
+#: src/Module/Contact.php:574
msgid "Ignore contact"
msgstr ""
-#: src/Module/Contact.php:577
+#: src/Module/Contact.php:575
msgid "View conversations"
msgstr ""
-#: src/Module/Contact.php:582
+#: src/Module/Contact.php:580
msgid "Last update:"
msgstr ""
-#: src/Module/Contact.php:584
+#: src/Module/Contact.php:582
msgid "Update public posts"
msgstr ""
-#: src/Module/Contact.php:586 src/Module/Contact.php:1109
+#: src/Module/Contact.php:584 src/Module/Contact.php:1096
msgid "Update now"
msgstr ""
-#: src/Module/Contact.php:589 src/Module/Contact.php:849
-#: src/Module/Contact.php:1136
+#: src/Module/Contact.php:587 src/Module/Contact.php:847
+#: src/Module/Contact.php:1123
msgid "Unignore"
msgstr ""
-#: src/Module/Contact.php:593
+#: src/Module/Contact.php:591
msgid "Currently blocked"
msgstr ""
-#: src/Module/Contact.php:594
+#: src/Module/Contact.php:592
msgid "Currently ignored"
msgstr ""
-#: src/Module/Contact.php:595
+#: src/Module/Contact.php:593
msgid "Currently archived"
msgstr ""
-#: src/Module/Contact.php:596
+#: src/Module/Contact.php:594
msgid "Awaiting connection acknowledge"
msgstr ""
-#: src/Module/Contact.php:597 src/Module/Notifications/Introductions.php:171
+#: src/Module/Contact.php:595 src/Module/Notifications/Introductions.php:171
msgid "Hide this contact from others"
msgstr ""
-#: src/Module/Contact.php:597
+#: src/Module/Contact.php:595
msgid ""
"Replies/likes to your public posts may still be visible"
msgstr ""
-#: src/Module/Contact.php:598
+#: src/Module/Contact.php:596
msgid "Notification for new posts"
msgstr ""
-#: src/Module/Contact.php:598
+#: src/Module/Contact.php:596
msgid "Send a notification of every new post of this contact"
msgstr ""
-#: src/Module/Contact.php:600
+#: src/Module/Contact.php:598
msgid "Keyword Deny List"
msgstr ""
-#: src/Module/Contact.php:600
+#: src/Module/Contact.php:598
msgid ""
"Comma separated list of keywords that should not be converted to hashtags, "
"when \"Fetch information and keywords\" is selected"
msgstr ""
-#: src/Module/Contact.php:618 src/Module/Settings/TwoFactor/Index.php:132
+#: src/Module/Contact.php:616 src/Module/Settings/TwoFactor/Index.php:132
msgid "Actions"
msgstr ""
-#: src/Module/Contact.php:625
+#: src/Module/Contact.php:623
msgid "Mirror postings from this contact"
msgstr ""
-#: src/Module/Contact.php:627
+#: src/Module/Contact.php:625
msgid ""
"Mark this contact as remote_self, this will cause friendica to repost new "
"entries from this contact."
msgstr ""
-#: src/Module/Contact.php:759
+#: src/Module/Contact.php:757
msgid "Show all contacts"
msgstr ""
-#: src/Module/Contact.php:767
+#: src/Module/Contact.php:765
msgid "Only show pending contacts"
msgstr ""
-#: src/Module/Contact.php:775
+#: src/Module/Contact.php:773
msgid "Only show blocked contacts"
msgstr ""
-#: src/Module/Contact.php:780 src/Module/Contact.php:827
+#: src/Module/Contact.php:778 src/Module/Contact.php:825
#: src/Object/Post.php:308
msgid "Ignored"
msgstr ""
-#: src/Module/Contact.php:783
+#: src/Module/Contact.php:781
msgid "Only show ignored contacts"
msgstr ""
-#: src/Module/Contact.php:788 src/Module/Contact.php:828
+#: src/Module/Contact.php:786 src/Module/Contact.php:826
msgid "Archived"
msgstr ""
-#: src/Module/Contact.php:791
+#: src/Module/Contact.php:789
msgid "Only show archived contacts"
msgstr ""
-#: src/Module/Contact.php:796 src/Module/Contact.php:826
+#: src/Module/Contact.php:794 src/Module/Contact.php:824
msgid "Hidden"
msgstr ""
-#: src/Module/Contact.php:799
+#: src/Module/Contact.php:797
msgid "Only show hidden contacts"
msgstr ""
-#: src/Module/Contact.php:807
+#: src/Module/Contact.php:805
msgid "Organize your contact groups"
msgstr ""
-#: src/Module/Contact.php:839
+#: src/Module/Contact.php:837
msgid "Search your contacts"
msgstr ""
-#: src/Module/Contact.php:840 src/Module/Search/Index.php:194
+#: src/Module/Contact.php:838 src/Module/Search/Index.php:194
#, php-format
msgid "Results for: %s"
msgstr ""
-#: src/Module/Contact.php:847
+#: src/Module/Contact.php:845
msgid "Update"
msgstr ""
-#: src/Module/Contact.php:850 src/Module/Contact.php:1145
+#: src/Module/Contact.php:848 src/Module/Contact.php:1132
msgid "Archive"
msgstr ""
-#: src/Module/Contact.php:850 src/Module/Contact.php:1145
+#: src/Module/Contact.php:848 src/Module/Contact.php:1132
msgid "Unarchive"
msgstr ""
-#: src/Module/Contact.php:853
+#: src/Module/Contact.php:851
msgid "Batch Actions"
msgstr ""
-#: src/Module/Contact.php:888
+#: src/Module/Contact.php:886
msgid "Conversations started by this contact"
msgstr ""
-#: src/Module/Contact.php:893
+#: src/Module/Contact.php:891
msgid "Posts and Comments"
msgstr ""
-#: src/Module/Contact.php:911
+#: src/Module/Contact.php:909
msgid "View all known contacts"
msgstr ""
-#: src/Module/Contact.php:921
+#: src/Module/Contact.php:919
msgid "Advanced Contact Settings"
msgstr ""
-#: src/Module/Contact.php:1026
+#: src/Module/Contact.php:1013
msgid "Mutual Friendship"
msgstr ""
-#: src/Module/Contact.php:1030
+#: src/Module/Contact.php:1017
msgid "is a fan of yours"
msgstr ""
-#: src/Module/Contact.php:1034
+#: src/Module/Contact.php:1021
msgid "you are a fan of"
msgstr ""
-#: src/Module/Contact.php:1052
+#: src/Module/Contact.php:1039
msgid "Pending outgoing contact request"
msgstr ""
-#: src/Module/Contact.php:1054
+#: src/Module/Contact.php:1041
msgid "Pending incoming contact request"
msgstr ""
-#: src/Module/Contact.php:1119
+#: src/Module/Contact.php:1106
msgid "Refetch contact data"
msgstr ""
-#: src/Module/Contact.php:1130
+#: src/Module/Contact.php:1117
msgid "Toggle Blocked status"
msgstr ""
-#: src/Module/Contact.php:1138
+#: src/Module/Contact.php:1125
msgid "Toggle Ignored status"
msgstr ""
-#: src/Module/Contact.php:1147
+#: src/Module/Contact.php:1134
msgid "Toggle Archive status"
msgstr ""
-#: src/Module/Contact.php:1155
+#: src/Module/Contact.php:1142
msgid "Delete contact"
msgstr ""
@@ -7599,7 +7599,7 @@ msgstr ""
msgid "New photo from this URL"
msgstr ""
-#: src/Module/Contact/Contacts.php:31 src/Module/Conversation/Network.php:177
+#: src/Module/Contact/Contacts.php:31 src/Module/Conversation/Network.php:168
msgid "Invalid contact."
msgstr ""
@@ -7611,28 +7611,28 @@ msgstr ""
msgid "No common contacts."
msgstr ""
-#: src/Module/Contact/Contacts.php:80 src/Module/Profile/Contacts.php:97
+#: src/Module/Contact/Contacts.php:80 src/Module/Profile/Contacts.php:96
#, php-format
msgid "Follower (%s)"
msgid_plural "Followers (%s)"
msgstr[0] ""
msgstr[1] ""
-#: src/Module/Contact/Contacts.php:84 src/Module/Profile/Contacts.php:100
+#: src/Module/Contact/Contacts.php:84 src/Module/Profile/Contacts.php:99
#, php-format
msgid "Following (%s)"
msgid_plural "Following (%s)"
msgstr[0] ""
msgstr[1] ""
-#: src/Module/Contact/Contacts.php:88 src/Module/Profile/Contacts.php:103
+#: src/Module/Contact/Contacts.php:88 src/Module/Profile/Contacts.php:102
#, php-format
msgid "Mutual friend (%s)"
msgid_plural "Mutual friends (%s)"
msgstr[0] ""
msgstr[1] ""
-#: src/Module/Contact/Contacts.php:90 src/Module/Profile/Contacts.php:105
+#: src/Module/Contact/Contacts.php:90 src/Module/Profile/Contacts.php:104
#, php-format
msgid "These contacts both follow and are followed by %s."
msgstr ""
@@ -7651,123 +7651,123 @@ msgid ""
"contacts (follow, comment or likes on public posts)."
msgstr ""
-#: src/Module/Contact/Contacts.php:104 src/Module/Profile/Contacts.php:111
+#: src/Module/Contact/Contacts.php:104 src/Module/Profile/Contacts.php:110
#, php-format
msgid "Contact (%s)"
msgid_plural "Contacts (%s)"
msgstr[0] ""
msgstr[1] ""
-#: src/Module/Contact/Poke.php:115
+#: src/Module/Contact/Poke.php:116
msgid "Error while sending poke, please retry."
msgstr ""
-#: src/Module/Contact/Poke.php:128 src/Module/Search/Acl.php:55
+#: src/Module/Contact/Poke.php:129 src/Module/Search/Acl.php:55
msgid "You must be logged in to use this module."
msgstr ""
-#: src/Module/Contact/Poke.php:151
+#: src/Module/Contact/Poke.php:152
msgid "Poke/Prod"
msgstr ""
-#: src/Module/Contact/Poke.php:152
+#: src/Module/Contact/Poke.php:153
msgid "poke, prod or do other things to somebody"
msgstr ""
-#: src/Module/Contact/Poke.php:154
+#: src/Module/Contact/Poke.php:155
msgid "Choose what you wish to do to recipient"
msgstr ""
-#: src/Module/Contact/Poke.php:155
+#: src/Module/Contact/Poke.php:156
msgid "Make this post private"
msgstr ""
-#: src/Module/Conversation/Community.php:69
+#: src/Module/Conversation/Community.php:68
msgid "Local Community"
msgstr ""
-#: src/Module/Conversation/Community.php:72
+#: src/Module/Conversation/Community.php:71
msgid "Posts from local users on this server"
msgstr ""
-#: src/Module/Conversation/Community.php:80
+#: src/Module/Conversation/Community.php:79
msgid "Global Community"
msgstr ""
-#: src/Module/Conversation/Community.php:83
+#: src/Module/Conversation/Community.php:82
msgid "Posts from users of the whole federated network"
msgstr ""
-#: src/Module/Conversation/Community.php:116
+#: src/Module/Conversation/Community.php:115
msgid "Own Contacts"
msgstr ""
-#: src/Module/Conversation/Community.php:120
+#: src/Module/Conversation/Community.php:119
msgid "Include"
msgstr ""
-#: src/Module/Conversation/Community.php:121
+#: src/Module/Conversation/Community.php:120
msgid "Hide"
msgstr ""
-#: src/Module/Conversation/Community.php:149 src/Module/Search/Index.php:139
+#: src/Module/Conversation/Community.php:137 src/Module/Search/Index.php:139
#: src/Module/Search/Index.php:181
msgid "No results."
msgstr ""
-#: src/Module/Conversation/Community.php:174
+#: src/Module/Conversation/Community.php:162
msgid ""
"This community stream shows all public posts received by this node. They may "
"not reflect the opinions of this node’s users."
msgstr ""
-#: src/Module/Conversation/Community.php:212
+#: src/Module/Conversation/Community.php:200
msgid "Community option not available."
msgstr ""
-#: src/Module/Conversation/Community.php:228
+#: src/Module/Conversation/Community.php:216
msgid "Not available."
msgstr ""
-#: src/Module/Conversation/Network.php:163
+#: src/Module/Conversation/Network.php:154
msgid "No such group"
msgstr ""
-#: src/Module/Conversation/Network.php:167
+#: src/Module/Conversation/Network.php:158
#, php-format
msgid "Group: %s"
msgstr ""
-#: src/Module/Conversation/Network.php:243
+#: src/Module/Conversation/Network.php:234
msgid "Latest Activity"
msgstr ""
-#: src/Module/Conversation/Network.php:246
+#: src/Module/Conversation/Network.php:237
msgid "Sort by latest activity"
msgstr ""
-#: src/Module/Conversation/Network.php:251
+#: src/Module/Conversation/Network.php:242
msgid "Latest Posts"
msgstr ""
-#: src/Module/Conversation/Network.php:254
+#: src/Module/Conversation/Network.php:245
msgid "Sort by post received date"
msgstr ""
-#: src/Module/Conversation/Network.php:259
-#: src/Module/Settings/Profile/Index.php:228
+#: src/Module/Conversation/Network.php:250
+#: src/Module/Settings/Profile/Index.php:225
msgid "Personal"
msgstr ""
-#: src/Module/Conversation/Network.php:262
+#: src/Module/Conversation/Network.php:253
msgid "Posts that mention or involve you"
msgstr ""
-#: src/Module/Conversation/Network.php:267 src/Object/Post.php:334
+#: src/Module/Conversation/Network.php:258 src/Object/Post.php:334
msgid "Starred"
msgstr ""
-#: src/Module/Conversation/Network.php:270
+#: src/Module/Conversation/Network.php:261
msgid "Favourite Posts"
msgstr ""
@@ -7979,7 +7979,7 @@ msgid "Twitter Source / Tweet URL (requires API key)"
msgstr ""
#: src/Module/Debug/Feed.php:38 src/Module/Filer/SaveTag.php:40
-#: src/Module/Settings/Profile/Index.php:144
+#: src/Module/Settings/Profile/Index.php:141
msgid "You must be logged in to use this module"
msgstr ""
@@ -8407,40 +8407,40 @@ msgid ""
"administrator email. This will allow you to enter the site admin panel."
msgstr ""
-#: src/Module/Invite.php:55
+#: src/Module/Invite.php:56
msgid "Total invitation limit exceeded."
msgstr ""
-#: src/Module/Invite.php:78
+#: src/Module/Invite.php:81
#, php-format
msgid "%s : Not a valid email address."
msgstr ""
-#: src/Module/Invite.php:104
+#: src/Module/Invite.php:107
msgid "Please join us on Friendica"
msgstr ""
-#: src/Module/Invite.php:113
+#: src/Module/Invite.php:116
msgid "Invitation limit exceeded. Please contact your site administrator."
msgstr ""
-#: src/Module/Invite.php:117
+#: src/Module/Invite.php:120
#, php-format
msgid "%s : Message delivery failed."
msgstr ""
-#: src/Module/Invite.php:121
+#: src/Module/Invite.php:124
#, php-format
msgid "%d message sent."
msgid_plural "%d messages sent."
msgstr[0] ""
msgstr[1] ""
-#: src/Module/Invite.php:139
+#: src/Module/Invite.php:142
msgid "You have no more invitations available"
msgstr ""
-#: src/Module/Invite.php:146
+#: src/Module/Invite.php:149
#, php-format
msgid ""
"Visit %s for a list of public sites that you can join. Friendica members on "
@@ -8448,14 +8448,14 @@ msgid ""
"other social networks."
msgstr ""
-#: src/Module/Invite.php:148
+#: src/Module/Invite.php:151
#, php-format
msgid ""
"To accept this invitation, please visit and register at %s or any other "
"public Friendica website."
msgstr ""
-#: src/Module/Invite.php:149
+#: src/Module/Invite.php:152
#, php-format
msgid ""
"Friendica sites all inter-connect to create a huge privacy-enhanced social "
@@ -8464,48 +8464,48 @@ msgid ""
"sites you can join."
msgstr ""
-#: src/Module/Invite.php:153
+#: src/Module/Invite.php:156
msgid ""
"Our apologies. This system is not currently configured to connect with other "
"public sites or invite members."
msgstr ""
-#: src/Module/Invite.php:156
+#: src/Module/Invite.php:159
msgid ""
"Friendica sites all inter-connect to create a huge privacy-enhanced social "
"web that is owned and controlled by its members. They can also connect with "
"many traditional social networks."
msgstr ""
-#: src/Module/Invite.php:155
+#: src/Module/Invite.php:158
#, php-format
msgid "To accept this invitation, please visit and register at %s."
msgstr ""
-#: src/Module/Invite.php:163
+#: src/Module/Invite.php:166
msgid "Send invitations"
msgstr ""
-#: src/Module/Invite.php:164
+#: src/Module/Invite.php:167
msgid "Enter email addresses, one per line:"
msgstr ""
-#: src/Module/Invite.php:168
+#: src/Module/Invite.php:171
msgid ""
"You are cordially invited to join me and other close friends on Friendica - "
"and help us to create a better social web."
msgstr ""
-#: src/Module/Invite.php:170
+#: src/Module/Invite.php:173
msgid "You will need to supply this invitation code: $invite_code"
msgstr ""
-#: src/Module/Invite.php:170
+#: src/Module/Invite.php:173
msgid ""
"Once you have registered, please connect with me via my profile page at:"
msgstr ""
-#: src/Module/Invite.php:172
+#: src/Module/Invite.php:175
msgid ""
"For more information about the Friendica project and why we feel it is "
"important, please visit http://friendi.ca"
@@ -8715,43 +8715,43 @@ msgstr ""
msgid "Invalid photo with id %s."
msgstr ""
-#: src/Module/Profile/Contacts.php:121
+#: src/Module/Profile/Contacts.php:120
msgid "No contacts."
msgstr ""
-#: src/Module/Profile/Profile.php:83
+#: src/Module/Profile/Profile.php:82
msgid "Profile not found."
msgstr ""
-#: src/Module/Profile/Profile.php:136
+#: src/Module/Profile/Profile.php:135
#, php-format
msgid ""
"You're currently viewing your profile as %s Cancel"
msgstr ""
-#: src/Module/Profile/Profile.php:150
+#: src/Module/Profile/Profile.php:149
msgid "Member since:"
msgstr ""
-#: src/Module/Profile/Profile.php:156
+#: src/Module/Profile/Profile.php:155
msgid "j F, Y"
msgstr ""
-#: src/Module/Profile/Profile.php:157
+#: src/Module/Profile/Profile.php:156
msgid "j F"
msgstr ""
-#: src/Module/Profile/Profile.php:165 src/Util/Temporal.php:163
+#: src/Module/Profile/Profile.php:164 src/Util/Temporal.php:163
msgid "Birthday:"
msgstr ""
-#: src/Module/Profile/Profile.php:168 src/Module/Settings/Profile/Index.php:246
+#: src/Module/Profile/Profile.php:167 src/Module/Settings/Profile/Index.php:243
#: src/Util/Temporal.php:165
msgid "Age: "
msgstr ""
-#: src/Module/Profile/Profile.php:168 src/Module/Settings/Profile/Index.php:246
+#: src/Module/Profile/Profile.php:167 src/Module/Settings/Profile/Index.php:243
#: src/Util/Temporal.php:165
#, php-format
msgid "%d year old"
@@ -8759,32 +8759,32 @@ msgid_plural "%d years old"
msgstr[0] ""
msgstr[1] ""
-#: src/Module/Profile/Profile.php:235
+#: src/Module/Profile/Profile.php:234
msgid "Forums:"
msgstr ""
-#: src/Module/Profile/Profile.php:247
+#: src/Module/Profile/Profile.php:246
msgid "View profile as:"
msgstr ""
-#: src/Module/Profile/Profile.php:264
+#: src/Module/Profile/Profile.php:263
msgid "View as"
msgstr ""
-#: src/Module/Profile/Profile.php:327 src/Module/Profile/Profile.php:330
+#: src/Module/Profile/Profile.php:326 src/Module/Profile/Profile.php:329
#: src/Module/Profile/Status.php:65 src/Module/Profile/Status.php:68
#: src/Protocol/Feed.php:946 src/Protocol/OStatus.php:1256
#, php-format
msgid "%s's timeline"
msgstr ""
-#: src/Module/Profile/Profile.php:328 src/Module/Profile/Status.php:66
+#: src/Module/Profile/Profile.php:327 src/Module/Profile/Status.php:66
#: src/Protocol/Feed.php:950 src/Protocol/OStatus.php:1260
#, php-format
msgid "%s's posts"
msgstr ""
-#: src/Module/Profile/Profile.php:329 src/Module/Profile/Status.php:67
+#: src/Module/Profile/Profile.php:328 src/Module/Profile/Status.php:67
#: src/Protocol/Feed.php:953 src/Protocol/OStatus.php:1263
#, php-format
msgid "%s's comments"
@@ -9068,58 +9068,58 @@ msgid ""
"account to add the OpenID to it."
msgstr ""
-#: src/Module/Security/TwoFactor/Recovery.php:60
+#: src/Module/Security/TwoFactor/Recovery.php:61
#, php-format
msgid "Remaining recovery codes: %d"
msgstr ""
-#: src/Module/Security/TwoFactor/Recovery.php:64
-#: src/Module/Security/TwoFactor/Verify.php:75
+#: src/Module/Security/TwoFactor/Recovery.php:65
+#: src/Module/Security/TwoFactor/Verify.php:76
#: src/Module/Settings/TwoFactor/Verify.php:82
msgid "Invalid code, please retry."
msgstr ""
-#: src/Module/Security/TwoFactor/Recovery.php:83
+#: src/Module/Security/TwoFactor/Recovery.php:84
msgid "Two-factor recovery"
msgstr ""
-#: src/Module/Security/TwoFactor/Recovery.php:84
+#: src/Module/Security/TwoFactor/Recovery.php:85
msgid ""
"You can enter one of your one-time recovery codes in case you lost access "
"to your mobile device.
"
msgstr ""
-#: src/Module/Security/TwoFactor/Recovery.php:85
-#: src/Module/Security/TwoFactor/Verify.php:98
+#: src/Module/Security/TwoFactor/Recovery.php:86
+#: src/Module/Security/TwoFactor/Verify.php:99
#, php-format
msgid ""
"Don’t have your phone? Enter a two-factor recovery code"
msgstr ""
-#: src/Module/Security/TwoFactor/Recovery.php:86
+#: src/Module/Security/TwoFactor/Recovery.php:87
msgid "Please enter a recovery code"
msgstr ""
-#: src/Module/Security/TwoFactor/Recovery.php:87
+#: src/Module/Security/TwoFactor/Recovery.php:88
msgid "Submit recovery code and complete login"
msgstr ""
-#: src/Module/Security/TwoFactor/Verify.php:95
+#: src/Module/Security/TwoFactor/Verify.php:96
msgid ""
"Open the two-factor authentication app on your device to get an "
"authentication code and verify your identity.
"
msgstr ""
-#: src/Module/Security/TwoFactor/Verify.php:99
+#: src/Module/Security/TwoFactor/Verify.php:100
#: src/Module/Settings/TwoFactor/Verify.php:141
msgid "Please enter a code from your authentication app"
msgstr ""
-#: src/Module/Security/TwoFactor/Verify.php:100
+#: src/Module/Security/TwoFactor/Verify.php:101
msgid "This is my two-factor authenticator app device"
msgstr ""
-#: src/Module/Security/TwoFactor/Verify.php:101
+#: src/Module/Security/TwoFactor/Verify.php:102
msgid "Verify code and complete login"
msgstr ""
@@ -9200,261 +9200,263 @@ msgstr ""
msgid "No entries."
msgstr ""
-#: src/Module/Settings/Display.php:105
+#: src/Module/Settings/Display.php:108
msgid "The theme you chose isn't available."
msgstr ""
-#: src/Module/Settings/Display.php:142
+#: src/Module/Settings/Display.php:147
#, php-format
msgid "%s - (Unsupported)"
msgstr ""
-#: src/Module/Settings/Display.php:188
+#: src/Module/Settings/Display.php:193
msgid "Display Settings"
msgstr ""
-#: src/Module/Settings/Display.php:190
+#: src/Module/Settings/Display.php:195
msgid "General Theme Settings"
msgstr ""
-#: src/Module/Settings/Display.php:191
+#: src/Module/Settings/Display.php:196
msgid "Custom Theme Settings"
msgstr ""
-#: src/Module/Settings/Display.php:192
+#: src/Module/Settings/Display.php:197
msgid "Content Settings"
msgstr ""
-#: src/Module/Settings/Display.php:193 view/theme/duepuntozero/config.php:70
+#: src/Module/Settings/Display.php:198 view/theme/duepuntozero/config.php:70
#: view/theme/frio/config.php:161 view/theme/quattro/config.php:72
#: view/theme/vier/config.php:120
msgid "Theme settings"
msgstr ""
-#: src/Module/Settings/Display.php:194
+#: src/Module/Settings/Display.php:199
msgid "Calendar"
msgstr ""
-#: src/Module/Settings/Display.php:200
+#: src/Module/Settings/Display.php:205
msgid "Display Theme:"
msgstr ""
-#: src/Module/Settings/Display.php:201
+#: src/Module/Settings/Display.php:206
msgid "Mobile Theme:"
msgstr ""
-#: src/Module/Settings/Display.php:204
+#: src/Module/Settings/Display.php:209
msgid "Number of items to display per page:"
msgstr ""
-#: src/Module/Settings/Display.php:204 src/Module/Settings/Display.php:205
+#: src/Module/Settings/Display.php:209 src/Module/Settings/Display.php:210
msgid "Maximum of 100 items"
msgstr ""
-#: src/Module/Settings/Display.php:205
+#: src/Module/Settings/Display.php:210
msgid "Number of items to display per page when viewed from mobile device:"
msgstr ""
-#: src/Module/Settings/Display.php:206
+#: src/Module/Settings/Display.php:211
msgid "Update browser every xx seconds"
msgstr ""
-#: src/Module/Settings/Display.php:206
+#: src/Module/Settings/Display.php:211
msgid "Minimum of 10 seconds. Enter -1 to disable it."
msgstr ""
-#: src/Module/Settings/Display.php:207
+#: src/Module/Settings/Display.php:212
msgid "Automatic updates only at the top of the post stream pages"
msgstr ""
-#: src/Module/Settings/Display.php:207
+#: src/Module/Settings/Display.php:212
msgid ""
"Auto update may add new posts at the top of the post stream pages, which can "
"affect the scroll position and perturb normal reading if it happens anywhere "
"else the top of the page."
msgstr ""
-#: src/Module/Settings/Display.php:208
+#: src/Module/Settings/Display.php:213
msgid "Don't show emoticons"
msgstr ""
-#: src/Module/Settings/Display.php:208
+#: src/Module/Settings/Display.php:213
msgid ""
"Normally emoticons are replaced with matching symbols. This setting disables "
"this behaviour."
msgstr ""
-#: src/Module/Settings/Display.php:209
+#: src/Module/Settings/Display.php:214
msgid "Infinite scroll"
msgstr ""
-#: src/Module/Settings/Display.php:209
+#: src/Module/Settings/Display.php:214
msgid "Automatic fetch new items when reaching the page end."
msgstr ""
-#: src/Module/Settings/Display.php:210
+#: src/Module/Settings/Display.php:215
msgid "Disable Smart Threading"
msgstr ""
-#: src/Module/Settings/Display.php:210
+#: src/Module/Settings/Display.php:215
msgid "Disable the automatic suppression of extraneous thread indentation."
msgstr ""
-#: src/Module/Settings/Display.php:211
+#: src/Module/Settings/Display.php:216
msgid "Hide the Dislike feature"
msgstr ""
-#: src/Module/Settings/Display.php:211
+#: src/Module/Settings/Display.php:216
msgid "Hides the Dislike button and dislike reactions on posts and comments."
msgstr ""
-#: src/Module/Settings/Display.php:212
+#: src/Module/Settings/Display.php:217
msgid "Display the resharer"
msgstr ""
-#: src/Module/Settings/Display.php:212
+#: src/Module/Settings/Display.php:217
msgid "Display the first resharer as icon and text on a reshared item."
msgstr ""
-#: src/Module/Settings/Display.php:213
+#: src/Module/Settings/Display.php:218
msgid "Stay local"
msgstr ""
-#: src/Module/Settings/Display.php:213
+#: src/Module/Settings/Display.php:218
msgid "Don't go to a remote system when following a contact link."
msgstr ""
-#: src/Module/Settings/Display.php:215
+#: src/Module/Settings/Display.php:220
msgid "Beginning of week:"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:85
+#: src/Module/Settings/Profile/Index.php:82
msgid "Profile Name is required."
msgstr ""
-#: src/Module/Settings/Profile/Index.php:136
+#: src/Module/Settings/Profile/Index.php:133
msgid "Profile couldn't be updated."
msgstr ""
-#: src/Module/Settings/Profile/Index.php:173
-#: src/Module/Settings/Profile/Index.php:193
+#: src/Module/Settings/Profile/Index.php:170
+#: src/Module/Settings/Profile/Index.php:190
msgid "Label:"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:174
-#: src/Module/Settings/Profile/Index.php:194
+#: src/Module/Settings/Profile/Index.php:171
+#: src/Module/Settings/Profile/Index.php:191
msgid "Value:"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:184
-#: src/Module/Settings/Profile/Index.php:204
+#: src/Module/Settings/Profile/Index.php:181
+#: src/Module/Settings/Profile/Index.php:201
msgid "Field Permissions"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:185
-#: src/Module/Settings/Profile/Index.php:205
+#: src/Module/Settings/Profile/Index.php:182
+#: src/Module/Settings/Profile/Index.php:202
msgid "(click to open/close)"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:191
+#: src/Module/Settings/Profile/Index.php:188
msgid "Add a new profile field"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:221
+#: src/Module/Settings/Profile/Index.php:218
msgid "Profile Actions"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:222
+#: src/Module/Settings/Profile/Index.php:219
msgid "Edit Profile Details"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:224
+#: src/Module/Settings/Profile/Index.php:221
msgid "Change Profile Photo"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:229
+#: src/Module/Settings/Profile/Index.php:226
msgid "Profile picture"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:230
+#: src/Module/Settings/Profile/Index.php:227
msgid "Location"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:231 src/Util/Temporal.php:93
+#: src/Module/Settings/Profile/Index.php:228 src/Util/Temporal.php:93
#: src/Util/Temporal.php:95
msgid "Miscellaneous"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:232
+#: src/Module/Settings/Profile/Index.php:229
msgid "Custom Profile Fields"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:234 src/Module/Welcome.php:58
+#: src/Module/Settings/Profile/Index.php:231 src/Module/Welcome.php:58
msgid "Upload Profile Photo"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:238
+#: src/Module/Settings/Profile/Index.php:235
msgid "Display name:"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:241
+#: src/Module/Settings/Profile/Index.php:238
msgid "Street Address:"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:242
+#: src/Module/Settings/Profile/Index.php:239
msgid "Locality/City:"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:243
+#: src/Module/Settings/Profile/Index.php:240
msgid "Region/State:"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:244
+#: src/Module/Settings/Profile/Index.php:241
msgid "Postal/Zip Code:"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:245
+#: src/Module/Settings/Profile/Index.php:242
msgid "Country:"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:247
+#: src/Module/Settings/Profile/Index.php:244
msgid "XMPP (Jabber) address:"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:247
-msgid "The XMPP address will be published so that people can follow you there."
+#: src/Module/Settings/Profile/Index.php:244
+msgid ""
+"The XMPP address will be propagated to your contacts so that they can follow "
+"you."
msgstr ""
-#: src/Module/Settings/Profile/Index.php:248
+#: src/Module/Settings/Profile/Index.php:245
msgid "Matrix (Element) address:"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:248
+#: src/Module/Settings/Profile/Index.php:245
msgid ""
"The Matrix address will be published so that people can follow you there."
msgstr ""
-#: src/Module/Settings/Profile/Index.php:249
+#: src/Module/Settings/Profile/Index.php:246
msgid "Homepage URL:"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:250
+#: src/Module/Settings/Profile/Index.php:247
msgid "Public Keywords:"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:250
+#: src/Module/Settings/Profile/Index.php:247
msgid "(Used for suggesting potential friends, can be seen by others)"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:251
+#: src/Module/Settings/Profile/Index.php:248
msgid "Private Keywords:"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:251
+#: src/Module/Settings/Profile/Index.php:248
msgid "(Used for searching profiles, never shown to others)"
msgstr ""
-#: src/Module/Settings/Profile/Index.php:252
+#: src/Module/Settings/Profile/Index.php:249
#, php-format
msgid ""
"Custom fields appear on your profile page.
\n"
@@ -9465,74 +9467,74 @@ msgid ""
"contacts or the Friendica contacts in the selected groups."
msgstr ""
-#: src/Module/Settings/Profile/Photo/Crop.php:103
-#: src/Module/Settings/Profile/Photo/Crop.php:119
-#: src/Module/Settings/Profile/Photo/Crop.php:135
-#: src/Module/Settings/Profile/Photo/Index.php:103
+#: src/Module/Settings/Profile/Photo/Crop.php:102
+#: src/Module/Settings/Profile/Photo/Crop.php:118
+#: src/Module/Settings/Profile/Photo/Crop.php:134
+#: src/Module/Settings/Profile/Photo/Index.php:102
#, php-format
msgid "Image size reduction [%s] failed."
msgstr ""
-#: src/Module/Settings/Profile/Photo/Crop.php:140
+#: src/Module/Settings/Profile/Photo/Crop.php:139
msgid ""
"Shift-reload the page or clear browser cache if the new photo does not "
"display immediately."
msgstr ""
-#: src/Module/Settings/Profile/Photo/Crop.php:145
+#: src/Module/Settings/Profile/Photo/Crop.php:144
msgid "Unable to process image"
msgstr ""
-#: src/Module/Settings/Profile/Photo/Crop.php:164
+#: src/Module/Settings/Profile/Photo/Crop.php:163
msgid "Photo not found."
msgstr ""
-#: src/Module/Settings/Profile/Photo/Crop.php:186
+#: src/Module/Settings/Profile/Photo/Crop.php:185
msgid "Profile picture successfully updated."
msgstr ""
-#: src/Module/Settings/Profile/Photo/Crop.php:209
-#: src/Module/Settings/Profile/Photo/Crop.php:213
+#: src/Module/Settings/Profile/Photo/Crop.php:208
+#: src/Module/Settings/Profile/Photo/Crop.php:212
msgid "Crop Image"
msgstr ""
-#: src/Module/Settings/Profile/Photo/Crop.php:210
+#: src/Module/Settings/Profile/Photo/Crop.php:209
msgid "Please adjust the image cropping for optimum viewing."
msgstr ""
-#: src/Module/Settings/Profile/Photo/Crop.php:212
+#: src/Module/Settings/Profile/Photo/Crop.php:211
msgid "Use Image As Is"
msgstr ""
-#: src/Module/Settings/Profile/Photo/Index.php:47
+#: src/Module/Settings/Profile/Photo/Index.php:46
msgid "Missing uploaded image."
msgstr ""
-#: src/Module/Settings/Profile/Photo/Index.php:126
+#: src/Module/Settings/Profile/Photo/Index.php:125
msgid "Profile Picture Settings"
msgstr ""
-#: src/Module/Settings/Profile/Photo/Index.php:127
+#: src/Module/Settings/Profile/Photo/Index.php:126
msgid "Current Profile Picture"
msgstr ""
-#: src/Module/Settings/Profile/Photo/Index.php:128
+#: src/Module/Settings/Profile/Photo/Index.php:127
msgid "Upload Profile Picture"
msgstr ""
-#: src/Module/Settings/Profile/Photo/Index.php:129
+#: src/Module/Settings/Profile/Photo/Index.php:128
msgid "Upload Picture:"
msgstr ""
-#: src/Module/Settings/Profile/Photo/Index.php:134
+#: src/Module/Settings/Profile/Photo/Index.php:133
msgid "or"
msgstr ""
-#: src/Module/Settings/Profile/Photo/Index.php:136
+#: src/Module/Settings/Profile/Photo/Index.php:135
msgid "skip this step"
msgstr ""
-#: src/Module/Settings/Profile/Photo/Index.php:138
+#: src/Module/Settings/Profile/Photo/Index.php:137
msgid "select a photo from your photo albums"
msgstr ""
@@ -9825,32 +9827,32 @@ msgstr ""
msgid "Verify code and enable two-factor authentication"
msgstr ""
-#: src/Module/Settings/UserExport.php:69
+#: src/Module/Settings/UserExport.php:68
msgid "Export account"
msgstr ""
-#: src/Module/Settings/UserExport.php:69
+#: src/Module/Settings/UserExport.php:68
msgid ""
"Export your account info and contacts. Use this to make a backup of your "
"account and/or to move it to another server."
msgstr ""
-#: src/Module/Settings/UserExport.php:70
+#: src/Module/Settings/UserExport.php:69
msgid "Export all"
msgstr ""
-#: src/Module/Settings/UserExport.php:70
+#: src/Module/Settings/UserExport.php:69
msgid ""
"Export your account info, contacts and all your items as json. Could be a "
"very big file, and could take a lot of time. Use this to make a full backup "
"of your account (photos are not exported)"
msgstr ""
-#: src/Module/Settings/UserExport.php:71
+#: src/Module/Settings/UserExport.php:70
msgid "Export Contacts to CSV"
msgstr ""
-#: src/Module/Settings/UserExport.php:71
+#: src/Module/Settings/UserExport.php:70
msgid ""
"Export the list of the accounts you are following as CSV file. Compatible to "
"e.g. Mastodon."
@@ -10113,24 +10115,24 @@ msgid ""
"features and resources."
msgstr ""
-#: src/Object/EMail/ItemCCEMail.php:39
+#: src/Object/EMail/ItemCCEMail.php:42
#, php-format
msgid ""
"This message was sent to you by %s, a member of the Friendica social network."
msgstr ""
-#: src/Object/EMail/ItemCCEMail.php:41
+#: src/Object/EMail/ItemCCEMail.php:44
#, php-format
msgid "You may visit them online at %s"
msgstr ""
-#: src/Object/EMail/ItemCCEMail.php:42
+#: src/Object/EMail/ItemCCEMail.php:45
msgid ""
"Please contact the sender by replying to this post if you do not wish to "
"receive these messages."
msgstr ""
-#: src/Object/EMail/ItemCCEMail.php:46
+#: src/Object/EMail/ItemCCEMail.php:49
#, php-format
msgid "%s posted an update."
msgstr ""
@@ -10431,20 +10433,20 @@ msgstr ""
msgid "Contact information and Social Networks"
msgstr ""
-#: src/Security/Authentication.php:210
+#: src/Security/Authentication.php:209
msgid "Login failed."
msgstr ""
-#: src/Security/Authentication.php:251
+#: src/Security/Authentication.php:250
msgid "Login failed. Please check your credentials."
msgstr ""
-#: src/Security/Authentication.php:350
+#: src/Security/Authentication.php:349
#, php-format
msgid "Welcome %s"
msgstr ""
-#: src/Security/Authentication.php:351
+#: src/Security/Authentication.php:350
msgid "Please upload a profile photo."
msgstr ""
diff --git a/view/theme/frio/theme.php b/view/theme/frio/theme.php
index 2f6542d308..5304d3fd46 100644
--- a/view/theme/frio/theme.php
+++ b/view/theme/frio/theme.php
@@ -200,9 +200,9 @@ function frio_remote_nav(App $a, array &$nav_info)
// since $userinfo isn't available for the hook we write it to the nav array
// this isn't optimal because the contact query will be done now twice
- $fields = ['id', 'url', 'avatar', 'micro', 'name', 'nick', 'baseurl'];
- if (local_user() && !empty($a->user['uid'])) {
- $remoteUser = Contact::selectFirst($fields, ['uid' => $a->user['uid'], 'self' => true]);
+ $fields = ['id', 'url', 'avatar', 'micro', 'name', 'nick', 'baseurl', 'updated'];
+ if ($a->isLoggedIn()) {
+ $remoteUser = Contact::selectFirst($fields, ['uid' => $a->getLoggedInUserId(), 'self' => true]);
} elseif (!local_user() && remote_user()) {
$remoteUser = Contact::getById(remote_user(), $fields);
$nav_info['nav']['remote'] = DI::l10n()->t('Guest');
diff --git a/view/theme/vier/theme.php b/view/theme/vier/theme.php
index d28c8a325a..e357f2c043 100644
--- a/view/theme/vier/theme.php
+++ b/view/theme/vier/theme.php
@@ -27,7 +27,7 @@ function vier_init(App $a)
$args = DI::args();
- if ($args->get(0) === 'profile' && $args->get(1) === ($a->user['nickname'] ?? '') || $args->get(0) === 'network' && local_user()
+ if ($args->get(0) === 'profile' && $args->get(1) === ($a->getLoggedInUserNickname() ?? '') || $args->get(0) === 'network' && local_user()
) {
vier_community_info();