From 6a23b17c959e306ca7ef913fa94cc5eaf62b6fef Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 6 Aug 2021 18:49:17 +0000 Subject: [PATCH 1/4] Respect the postopts values for scheduled posts --- mod/item.php | 16 ++++++----- src/Model/Item.php | 26 ++++++++---------- src/Model/Post/Delayed.php | 41 ++++++++++++++++------------ src/Module/Api/Mastodon/Statuses.php | 2 +- src/Protocol/Feed.php | 2 +- src/Worker/DelayedPublish.php | 16 +++++------ 6 files changed, 54 insertions(+), 49 deletions(-) diff --git a/mod/item.php b/mod/item.php index 2a365f3da..809d6a18c 100644 --- a/mod/item.php +++ b/mod/item.php @@ -681,7 +681,11 @@ function item_post(App $a) { $o = conversation($a, [array_merge($contact_record, $datarray)], 'search', false, true); System::jsonExit(['preview' => $o]); - } elseif (!empty($_REQUEST['scheduled_at'])) { + } + + Hook::callAll('post_local',$datarray); + + if (!empty($_REQUEST['scheduled_at'])) { $scheduled_at = DateTimeFormat::convert($_REQUEST['scheduled_at'], 'UTC', $a->getTimezone()); if ($scheduled_at > DateTimeFormat::utcNow()) { unset($datarray['created']); @@ -692,16 +696,12 @@ function item_post(App $a) { unset($datarray['edit']); unset($datarray['self']); unset($datarray['api_source']); - - Post\Delayed::add($datarray['uri'], $datarray, PRIORITY_HIGH, false, $scheduled_at); + + Post\Delayed::add($datarray['uri'], $datarray, PRIORITY_HIGH, Post\Delayed::PREPARED_NO_HOOK, $scheduled_at); item_post_return(DI::baseUrl(), $api_source, $return_path); } } - $datarray['uri-id'] = ItemURI::getIdByURI($datarray['uri']); - - Hook::callAll('post_local',$datarray); - if (!empty($datarray['cancel'])) { Logger::info('mod_item: post cancelled by addon.'); if ($return_path) { @@ -716,6 +716,8 @@ function item_post(App $a) { System::jsonExit($json); } + $datarray['uri-id'] = ItemURI::getIdByURI($datarray['uri']); + if ($orig_post) { // Fill the cache field // This could be done in Item::update as well - but we have to check for the existance of some fields. diff --git a/src/Model/Item.php b/src/Model/Item.php index 3e0faddf7..441808ea9 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -706,7 +706,7 @@ class Item return GRAVITY_UNKNOWN; // Should not happen } - public static function insert($item, $notify = false, $dontcache = false) + public static function insert(array $item, bool $notify = false, bool $post_local = true) { $orig_item = $item; @@ -931,7 +931,7 @@ class Item $item["private"] = self::PRIVATE; } - if ($notify) { + if ($notify && $post_local) { $item['edit'] = false; $item['parent'] = $parent_id; @@ -953,7 +953,7 @@ class Item unset($_SESSION['authenticated']); unset($_SESSION['uid']); } - } else { + } elseif (!$notify) { Hook::callAll('post_remote', $item); } @@ -1141,15 +1141,13 @@ class Item return 0; } - if (!$dontcache) { - if ($notify) { - if (!\Friendica\Content\Feature::isEnabled($posted_item['uid'], 'explicit_mentions') && ($posted_item['gravity'] == GRAVITY_COMMENT)) { - Tag::createImplicitMentions($posted_item['uri-id'], $posted_item['thr-parent-id']); - } - Hook::callAll('post_local_end', $posted_item); - } else { - Hook::callAll('post_remote_end', $posted_item); + if ($notify) { + if (!\Friendica\Content\Feature::isEnabled($posted_item['uid'], 'explicit_mentions') && ($posted_item['gravity'] == GRAVITY_COMMENT)) { + Tag::createImplicitMentions($posted_item['uri-id'], $posted_item['thr-parent-id']); } + Hook::callAll('post_local_end', $posted_item); + } else { + Hook::callAll('post_remote_end', $posted_item); } if ($posted_item['gravity'] === GRAVITY_PARENT) { @@ -1465,7 +1463,7 @@ class Item } } - $distributed = self::insert($item, $notify, true); + $distributed = self::insert($item, $notify); if (!$distributed) { Logger::info("Distributed item wasn't stored", ['uri-id' => $item['uri-id'], 'user' => $uid]); @@ -1534,7 +1532,7 @@ class Item $item['contact-id'] = $item['author-id']; } - $public_shadow = self::insert($item, false, true); + $public_shadow = self::insert($item); Logger::info('Stored public shadow', ['thread' => $itemid, 'id' => $public_shadow]); } @@ -1593,7 +1591,7 @@ class Item unset($item['post-reason']); $item['contact-id'] = Contact::getIdForURL($item['author-link']); - $public_shadow = self::insert($item, false, true); + $public_shadow = self::insert($item); Logger::info('Stored public shadow', ['uri-id' => $item['uri-id'], 'id' => $public_shadow]); diff --git a/src/Model/Post/Delayed.php b/src/Model/Post/Delayed.php index 669c365cd..24b9989a4 100644 --- a/src/Model/Post/Delayed.php +++ b/src/Model/Post/Delayed.php @@ -33,19 +33,23 @@ use Friendica\Util\DateTimeFormat; class Delayed { + const PREPARED = 0; + const UNPREPARED = 1; + const PREPARED_NO_HOOK = 2; + /** * Insert a new delayed post * - * @param string $uri - * @param array $item - * @param integer $notify - * @param bool $unprepared - * @param string $delayed - * @param array $taglist - * @param array $attachments - * @return int ID of the created delayed post entry + * @param string $uri + * @param array $item + * @param int $notify + * @param int $preparation_mode + * @param string $delayed + * @param array $taglist + * @param array $attachments + * @return int ID of the created delayed post entry */ - public static function add(string $uri, array $item, int $notify = 0, bool $unprepared = false, string $delayed = '', array $taglist = [], array $attachments = []) + public static function add(string $uri, array $item, int $notify = 0, int $preparation_mode = self::PREPARED, string $delayed = '', array $taglist = [], array $attachments = []) { if (empty($item['uid']) || self::exists($uri, $item['uid'])) { Logger::notice('No uid or already found'); @@ -63,7 +67,7 @@ class Delayed Logger::notice('Adding post for delayed publishing', ['uid' => $item['uid'], 'delayed' => $delayed, 'uri' => $uri]); - $wid = Worker::add(['priority' => PRIORITY_HIGH, 'delayed' => $delayed], 'DelayedPublish', $item, $notify, $taglist, $attachments, $unprepared, $uri); + $wid = Worker::add(['priority' => PRIORITY_HIGH, 'delayed' => $delayed], 'DelayedPublish', $item, $notify, $taglist, $attachments, $preparation_mode, $uri); if (!$wid) { return 0; } @@ -168,21 +172,21 @@ class Delayed /** * Publish a delayed post * - * @param array $item - * @param integer $notify - * @param array $taglist - * @param array $attachments - * @param bool $unprepared + * @param array $item + * @param int $notify + * @param array $taglist + * @param array $attachments + * @param int $preparation_mode * @param string $uri * @return bool */ - public static function publish(array $item, int $notify = 0, array $taglist = [], array $attachments = [], bool $unprepared = false, string $uri = '') + public static function publish(array $item, int $notify = 0, array $taglist = [], array $attachments = [], int $preparation_mode = self::PREPARED, string $uri = '') { if (!empty($attachments)) { $item['attachments'] = $attachments; } - if ($unprepared) { + if ($preparation_mode == self::UNPREPARED) { $_SESSION['authenticated'] = true; $_SESSION['uid'] = $item['uid']; @@ -209,7 +213,8 @@ class Delayed return $id; } - $id = Item::insert($item, $notify); + + $id = Item::insert($item, $notify, $preparation_mode == self::PREPARED); Logger::notice('Post stored', ['id' => $id, 'uid' => $item['uid'], 'cid' => $item['contact-id']]); diff --git a/src/Module/Api/Mastodon/Statuses.php b/src/Module/Api/Mastodon/Statuses.php index cd6bbda3f..6ae076733 100644 --- a/src/Module/Api/Mastodon/Statuses.php +++ b/src/Module/Api/Mastodon/Statuses.php @@ -186,7 +186,7 @@ class Statuses extends BaseApi if (!empty($request['scheduled_at'])) { $item['guid'] = Item::guid($item, true); $item['uri'] = Item::newURI($item['uid'], $item['guid']); - $id = Post\Delayed::add($item['uri'], $item, PRIORITY_HIGH, false, $request['scheduled_at']); + $id = Post\Delayed::add($item['uri'], $item, PRIORITY_HIGH, Post\Delayed::PREPARED, $request['scheduled_at']); if (empty($id)) { DI::mstdnError()->InternalError(); } diff --git a/src/Protocol/Feed.php b/src/Protocol/Feed.php index 69ca1bfce..0801498f2 100644 --- a/src/Protocol/Feed.php +++ b/src/Protocol/Feed.php @@ -601,7 +601,7 @@ class Feed } $publish_at = date(DateTimeFormat::MYSQL, $publish_time); - if (Post\Delayed::add($posting['item']['uri'], $posting['item'], $posting['notify'], false, $publish_at, $posting['taglist'], $posting['attachments'])) { + if (Post\Delayed::add($posting['item']['uri'], $posting['item'], $posting['notify'], Post\Delayed::PREPARED, $publish_at, $posting['taglist'], $posting['attachments'])) { DI::pConfig()->set($item['uid'], 'system', 'last_publish', $publish_time); } } diff --git a/src/Worker/DelayedPublish.php b/src/Worker/DelayedPublish.php index 3707cf53b..cd2bb1ff0 100644 --- a/src/Worker/DelayedPublish.php +++ b/src/Worker/DelayedPublish.php @@ -29,17 +29,17 @@ class DelayedPublish /** * Publish a post, used for delayed postings * - * @param array $item - * @param integer $notify - * @param array $taglist - * @param array $attachments - * @param bool $unprepared + * @param array $item + * @param int $notify + * @param array $taglist + * @param array $attachments + * @param int $preparation_mode * @param string $uri * @return void */ - public static function execute(array $item, int $notify = 0, array $taglist = [], array $attachments = [], bool $unprepared = false, string $uri = '') + public static function execute(array $item, int $notify = 0, array $taglist = [], array $attachments = [], int $preparation_mode = Post\Delayed::PREPARED, string $uri = '') { - $id = Post\Delayed::publish($item, $notify, $taglist, $attachments, $unprepared, $uri); - Logger::notice('Post published', ['id' => $id, 'uid' => $item['uid'], 'notify' => $notify, 'unprepared' => $unprepared]); + $id = Post\Delayed::publish($item, $notify, $taglist, $attachments, $preparation_mode, $uri); + Logger::notice('Post published', ['id' => $id, 'uid' => $item['uid'], 'notify' => $notify, 'unprepared' => $preparation_mode]); } } From 9664efd66b36ed1737f16c53f75b9cc0dffa0a84 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 7 Aug 2021 20:09:25 +0000 Subject: [PATCH 2/4] Added some description --- src/Model/Post/Delayed.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Model/Post/Delayed.php b/src/Model/Post/Delayed.php index 24b9989a4..0f47264c5 100644 --- a/src/Model/Post/Delayed.php +++ b/src/Model/Post/Delayed.php @@ -33,8 +33,21 @@ use Friendica\Util\DateTimeFormat; class Delayed { + /** + * The content of the post is posted as is. Connector settings are using the default settings. + * This is used for automated scheduled posts via feeds or from the API. + */ const PREPARED = 0; + /** + * The content is posted like a manual post. Means some processing of body will be done. + * Also it is posted with default permissions and default connector settings. + * This is used for mirrored connector posts. + */ const UNPREPARED = 1; + /** + * Like PREPARED, but additionally the connector settings can differ. + * This is used when manually publishing scheduled posts. + */ const PREPARED_NO_HOOK = 2; /** From bee04f86ee716aa9271a262ad6b8ceed26aa4a6e Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 9 Aug 2021 01:39:09 +0000 Subject: [PATCH 3/4] Matrix addresses can be entered in the profile --- database.sql | 11 +- doc/database/db_contact.md | 3 +- doc/database/db_profile.md | 3 +- src/Content/Widget/VCard.php | 1 + src/Model/Contact.php | 10 +- src/Model/Profile.php | 2 + src/Module/Contact.php | 2 + src/Module/NoScrape.php | 2 +- src/Module/Profile/Profile.php | 4 + src/Module/Settings/Profile/Index.php | 5 +- src/Network/Probe.php | 13 +- static/dbstructure.config.php | 8 +- static/dbview.config.php | 3 + view/lang/C/messages.po | 482 +++++++++--------- view/templates/contact_edit.tpl | 1 + view/templates/profile/profile.tpl | 8 + view/templates/profile/vcard.tpl | 7 + view/templates/settings/profile/index.tpl | 6 + view/templates/widget/vcard.tpl | 6 + view/theme/frio/css/style.css | 2 +- view/theme/frio/templates/contact_edit.tpl | 8 + view/theme/frio/templates/profile/vcard.tpl | 11 +- .../frio/templates/settings/profile/index.tpl | 2 + view/theme/frio/templates/widget/vcard.tpl | 9 +- .../theme/quattro/templates/profile/vcard.tpl | 7 + view/theme/vier/templates/contact_edit.tpl | 1 + view/theme/vier/templates/profile/vcard.tpl | 7 + .../vier/templates/settings/profile/index.tpl | 7 + 28 files changed, 375 insertions(+), 256 deletions(-) diff --git a/database.sql b/database.sql index 1c361b676..3c2feb59f 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2021.09-dev (Siberian Iris) --- DB_UPDATE_VERSION 1431 +-- DB_UPDATE_VERSION 1432 -- ------------------------------------------ @@ -126,7 +126,8 @@ CREATE TABLE IF NOT EXISTS `contact` ( `about` text COMMENT '', `keywords` text COMMENT 'public keywords (interests) of the contact', `gender` varchar(32) NOT NULL DEFAULT '' COMMENT 'Deprecated', - `xmpp` varchar(255) NOT NULL DEFAULT '' COMMENT '', + `xmpp` varchar(255) NOT NULL DEFAULT '' COMMENT 'XMPP address', + `matrix` varchar(255) NOT NULL DEFAULT '' COMMENT 'Matrix address', `attag` varchar(255) NOT NULL DEFAULT '' COMMENT '', `avatar` varchar(255) NOT NULL DEFAULT '' COMMENT '', `photo` varchar(255) DEFAULT '' COMMENT 'Link to the profile photo of the contact', @@ -1366,7 +1367,8 @@ CREATE TABLE IF NOT EXISTS `profile` ( `education` text COMMENT 'Deprecated', `contact` text COMMENT 'Deprecated', `homepage` varchar(255) NOT NULL DEFAULT '' COMMENT '', - `xmpp` varchar(255) NOT NULL DEFAULT '' COMMENT '', + `xmpp` varchar(255) NOT NULL DEFAULT '' COMMENT 'XMPP address', + `matrix` varchar(255) NOT NULL DEFAULT '' COMMENT 'Matrix address', `photo` varchar(255) NOT NULL DEFAULT '' COMMENT '', `thumb` varchar(255) NOT NULL DEFAULT '' COMMENT '', `publish` boolean NOT NULL DEFAULT '0' COMMENT 'publish default profile in local directory', @@ -2199,6 +2201,7 @@ CREATE VIEW `owner-view` AS SELECT `contact`.`keywords` AS `keywords`, `contact`.`gender` AS `gender`, `contact`.`xmpp` AS `xmpp`, + `contact`.`matrix` AS `matrix`, `contact`.`attag` AS `attag`, `contact`.`avatar` AS `avatar`, `contact`.`photo` AS `photo`, @@ -2325,6 +2328,7 @@ CREATE VIEW `account-view` AS SELECT `contact`.`about` AS `about`, `contact`.`keywords` AS `keywords`, `contact`.`xmpp` AS `xmpp`, + `contact`.`matrix` AS `matrix`, `contact`.`avatar` AS `avatar`, `contact`.`photo` AS `photo`, `contact`.`thumb` AS `thumb`, @@ -2408,6 +2412,7 @@ CREATE VIEW `account-user-view` AS SELECT `contact`.`about` AS `about`, `contact`.`keywords` AS `keywords`, `contact`.`xmpp` AS `xmpp`, + `contact`.`matrix` AS `matrix`, `contact`.`avatar` AS `avatar`, `contact`.`photo` AS `photo`, `contact`.`thumb` AS `thumb`, diff --git a/doc/database/db_contact.md b/doc/database/db_contact.md index 2d8d292ac..8eeac17ea 100644 --- a/doc/database/db_contact.md +++ b/doc/database/db_contact.md @@ -24,7 +24,8 @@ Fields | about | | text | YES | | NULL | | | keywords | public keywords (interests) of the contact | text | YES | | NULL | | | gender | Deprecated | varchar(32) | NO | | | | -| xmpp | | varchar(255) | NO | | | | +| xmpp | XMPP address | varchar(255) | NO | | | | +| matrix | Matrix address | varchar(255) | NO | | | | | attag | | varchar(255) | NO | | | | | avatar | | varchar(255) | NO | | | | | photo | Link to the profile photo of the contact | varchar(255) | YES | | | | diff --git a/doc/database/db_profile.md b/doc/database/db_profile.md index 4ea3b5600..a8c7f2a21 100644 --- a/doc/database/db_profile.md +++ b/doc/database/db_profile.md @@ -45,7 +45,8 @@ Fields | education | Deprecated | text | YES | | NULL | | | contact | Deprecated | text | YES | | NULL | | | homepage | | varchar(255) | NO | | | | -| xmpp | | varchar(255) | NO | | | | +| xmpp | XMPP address | varchar(255) | NO | | | | +| matrix | Matrix address | varchar(255) | NO | | | | | photo | | varchar(255) | NO | | | | | thumb | | varchar(255) | NO | | | | | publish | publish default profile in local directory | boolean | NO | | 0 | | diff --git a/src/Content/Widget/VCard.php b/src/Content/Widget/VCard.php index ffe4759f5..a44f8f0b4 100644 --- a/src/Content/Widget/VCard.php +++ b/src/Content/Widget/VCard.php @@ -94,6 +94,7 @@ class VCard '$url' => Contact::magicLinkByContact($contact, $contact['url']), '$about' => BBCode::convertForUriId($contact['uri-id'] ?? 0, $contact['about'] ?? ''), '$xmpp' => DI::l10n()->t('XMPP:'), + '$matrix' => DI::l10n()->t('Matrix:'), '$location' => DI::l10n()->t('Location:'), '$network_link' => $network_link, '$network_avatar' => $network_avatar, diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 45a3d424e..609a70718 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -676,7 +676,7 @@ class Contact public static function updateSelfFromUserID($uid, $update_avatar = false) { $fields = ['id', 'name', 'nick', 'location', 'about', 'keywords', 'avatar', 'prvkey', 'pubkey', - 'xmpp', 'contact-type', 'forum', 'prv', 'avatar-date', 'url', 'nurl', 'unsearchable', + 'xmpp', 'matrix', 'contact-type', 'forum', 'prv', 'avatar-date', 'url', 'nurl', 'unsearchable', 'photo', 'thumb', 'micro', 'addr', 'request', 'notify', 'poll', 'confirm', 'poco', 'network']; $self = DBA::selectFirst('contact', $fields, ['uid' => $uid, 'self' => true]); if (!DBA::isResult($self)) { @@ -690,7 +690,7 @@ class Contact } $fields = ['name', 'photo', 'thumb', 'about', 'address', 'locality', 'region', - 'country-name', 'pub_keywords', 'xmpp', 'net-publish']; + 'country-name', 'pub_keywords', 'xmpp', 'matrix', 'net-publish']; $profile = DBA::selectFirst('profile', $fields, ['uid' => $uid]); if (!DBA::isResult($profile)) { return false; @@ -702,7 +702,7 @@ class Contact 'avatar-date' => $self['avatar-date'], 'location' => Profile::formatLocation($profile), 'about' => $profile['about'], 'keywords' => $profile['pub_keywords'], 'contact-type' => $user['account-type'], 'prvkey' => $user['prvkey'], - 'pubkey' => $user['pubkey'], 'xmpp' => $profile['xmpp'], 'network' => Protocol::DFRN]; + 'pubkey' => $user['pubkey'], 'xmpp' => $profile['xmpp'], 'matrix' => $profile['matrix'], 'network' => Protocol::DFRN]; // it seems as if ported accounts can have wrong values, so we make sure that now everything is fine. $fields['url'] = DI::baseUrl() . '/profile/' . $user['nickname']; @@ -2064,11 +2064,11 @@ class Contact */ // These fields aren't updated by this routine: - // 'xmpp', 'sensitive' + // 'sensitive' $fields = ['uid', 'uri-id', 'avatar', 'header', 'name', 'nick', 'location', 'keywords', 'about', 'subscribe', 'manually-approve', 'unsearchable', 'url', 'addr', 'batch', 'notify', 'poll', 'request', 'confirm', 'poco', - 'network', 'alias', 'baseurl', 'gsid', 'forum', 'prv', 'contact-type', 'pubkey', 'last-item']; + 'network', 'alias', 'baseurl', 'gsid', 'forum', 'prv', 'contact-type', 'pubkey', 'last-item', 'xmpp', 'matrix']; $contact = DBA::selectFirst('contact', $fields, ['id' => $id]); if (!DBA::isResult($contact)) { return false; diff --git a/src/Model/Profile.php b/src/Model/Profile.php index 1c75201c9..80775c9e8 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -361,6 +361,7 @@ class Profile $homepage = !empty($profile['homepage']) ? DI::l10n()->t('Homepage:') : false; $about = !empty($profile['about']) ? DI::l10n()->t('About:') : false; $xmpp = !empty($profile['xmpp']) ? DI::l10n()->t('XMPP:') : false; + $matrix = !empty($profile['matrix']) ? DI::l10n()->t('Matrix:') : false; if ((!empty($profile['hidewall']) || $block) && !Session::isAuthenticated()) { $location = $homepage = $about = false; @@ -439,6 +440,7 @@ class Profile $o .= Renderer::replaceMacros($tpl, [ '$profile' => $p, '$xmpp' => $xmpp, + '$matrix' => $matrix, '$follow' => DI::l10n()->t('Follow'), '$follow_link' => $follow_link, '$unfollow' => DI::l10n()->t('Unfollow'), diff --git a/src/Module/Contact.php b/src/Module/Contact.php index 1ca681a1e..b63aa0f5d 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -609,6 +609,8 @@ class Contact extends BaseModule '$location_label' => DI::l10n()->t('Location:'), '$xmpp' => BBCode::convertForUriId($contact['uri-id'] ?? 0, $contact['xmpp']), '$xmpp_label' => DI::l10n()->t('XMPP:'), + '$matrix' => BBCode::convertForUriId($contact['uri-id'] ?? 0, $contact['matrix']), + '$matrix_label' => DI::l10n()->t('Matrix:'), '$about' => BBCode::convertForUriId($contact['uri-id'] ?? 0, $contact['about'], BBCode::EXTERNAL), '$about_label' => DI::l10n()->t('About:'), '$keywords' => $contact['keywords'], diff --git a/src/Module/NoScrape.php b/src/Module/NoScrape.php index 1b97d047f..aa421f3a8 100644 --- a/src/Module/NoScrape.php +++ b/src/Module/NoScrape.php @@ -120,7 +120,7 @@ class NoScrape extends BaseModule $json_info['last-activity'] = date('o-W', $last_active); //These are optional fields. - $profile_fields = ['about', 'locality', 'region', 'postal-code', 'country-name']; + $profile_fields = ['about', 'locality', 'region', 'postal-code', 'country-name', 'xmpp', 'matrix']; foreach ($profile_fields as $field) { if (!empty($profile[$field])) { $json_info["$field"] = $profile[$field]; diff --git a/src/Module/Profile/Profile.php b/src/Module/Profile/Profile.php index a4fc69685..2ef77ff8c 100644 --- a/src/Module/Profile/Profile.php +++ b/src/Module/Profile/Profile.php @@ -177,6 +177,10 @@ class Profile extends BaseProfile $basic_fields += self::buildField('xmpp', DI::l10n()->t('XMPP:'), $profile['xmpp']); } + if ($profile['matrix']) { + $basic_fields += self::buildField('matrix', DI::l10n()->t('Matrix:'), $profile['matrix']); + } + if ($profile['homepage']) { $basic_fields += self::buildField('homepage', DI::l10n()->t('Homepage:'), HTML::toLink($profile['homepage'])); } diff --git a/src/Module/Settings/Profile/Index.php b/src/Module/Settings/Profile/Index.php index 35740a0a7..4f4ddbdb3 100644 --- a/src/Module/Settings/Profile/Index.php +++ b/src/Module/Settings/Profile/Index.php @@ -95,6 +95,7 @@ class Index extends BaseSettings $pub_keywords = self::cleanKeywords(Strings::escapeTags(trim($_POST['pub_keywords']))); $prv_keywords = self::cleanKeywords(Strings::escapeTags(trim($_POST['prv_keywords']))); $xmpp = Strings::escapeTags(trim($_POST['xmpp'])); + $matrix = Strings::escapeTags(trim($_POST['matrix'])); $homepage = Strings::escapeTags(trim($_POST['homepage'])); if ((strpos($homepage, 'http') !== 0) && (strlen($homepage))) { // neither http nor https in URL, add them @@ -123,6 +124,7 @@ class Index extends BaseSettings 'postal-code' => $postal_code, 'country-name' => $country_name, 'xmpp' => $xmpp, + 'matrix' => $matrix, 'homepage' => $homepage, 'pub_keywords' => $pub_keywords, 'prv_keywords' => $prv_keywords, @@ -242,7 +244,8 @@ class Index extends BaseSettings '$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 propagated to your contacts so that they can follow you.')], + '$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.')], + '$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)')], '$prv_keywords' => ['prv_keywords', DI::l10n()->t('Private Keywords:'), $profile['prv_keywords'], DI::l10n()->t('(Used for searching profiles, never shown to others)')], diff --git a/src/Network/Probe.php b/src/Network/Probe.php index c07cc7e60..1a4c47a45 100644 --- a/src/Network/Probe.php +++ b/src/Network/Probe.php @@ -89,8 +89,8 @@ class Probe private static function rearrangeData($data) { $fields = ["name", "nick", "guid", "url", "addr", "alias", "photo", "header", - "account-type", "community", "keywords", "location", "about", "hide", - "batch", "notify", "poll", "request", "confirm", "subscribe", "poco", + "account-type", "community", "keywords", "location", "about", "xmpp", "matrix", + "hide", "batch", "notify", "poll", "request", "confirm", "subscribe", "poco", "following", "followers", "inbox", "outbox", "sharedinbox", "priority", "network", "pubkey", "manually-approve", "baseurl", "gsid"]; @@ -1067,6 +1067,14 @@ class Probe $data["about"] = $json["about"]; } + if (!empty($json["xmpp"])) { + $data["xmpp"] = $json["xmpp"]; + } + + if (!empty($json["matrix"])) { + $data["matrix"] = $json["matrix"]; + } + if (!empty($json["key"])) { $data["pubkey"] = $json["key"]; } @@ -2230,6 +2238,7 @@ class Probe 'header' => $profile['header'] ? Contact::getHeaderUrlForId($profile['id'], $profile['updated']) : '', 'account-type' => $profile['contact-type'], 'community' => ($profile['contact-type'] == User::ACCOUNT_TYPE_COMMUNITY), 'keywords' => $profile['keywords'], 'location' => $profile['location'], 'about' => $profile['about'], + 'xmpp' => $profile['xmpp'], 'matrix' => $profile['matrix'], 'hide' => !$profile['net-publish'], 'batch' => '', 'notify' => $profile['notify'], 'poll' => $profile['poll'], 'request' => $profile['request'], 'confirm' => $profile['confirm'], 'subscribe' => $approfile['generator']['url'] . '/follow?url={uri}', 'poco' => $profile['poco'], diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index d1cc42033..23b64860c 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -55,7 +55,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1431); + define('DB_UPDATE_VERSION', 1432); } return [ @@ -184,7 +184,8 @@ return [ "about" => ["type" => "text", "comment" => ""], "keywords" => ["type" => "text", "comment" => "public keywords (interests) of the contact"], "gender" => ["type" => "varchar(32)", "not null" => "1", "default" => "", "comment" => "Deprecated"], - "xmpp" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], + "xmpp" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "XMPP address"], + "matrix" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "Matrix address"], "attag" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "avatar" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "photo" => ["type" => "varchar(255)", "default" => "", "comment" => "Link to the profile photo of the contact"], @@ -1384,7 +1385,8 @@ return [ "education" => ["type" => "text", "comment" => "Deprecated"], "contact" => ["type" => "text", "comment" => "Deprecated"], "homepage" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], - "xmpp" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], + "xmpp" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "XMPP address"], + "matrix" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => "Matrix address"], "photo" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "thumb" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "publish" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "publish default profile in local directory"], diff --git a/static/dbview.config.php b/static/dbview.config.php index b2b9875c1..c9acd55ba 100644 --- a/static/dbview.config.php +++ b/static/dbview.config.php @@ -713,6 +713,7 @@ "keywords" => ["contact", "keywords"], "gender" => ["contact", "gender"], "xmpp" => ["contact", "xmpp"], + "matrix" => ["contact", "matrix"], "attag" => ["contact", "attag"], "avatar" => ["contact", "avatar"], "photo" => ["contact", "photo"], @@ -837,6 +838,7 @@ "about" => ["contact", "about"], "keywords" => ["contact", "keywords"], "xmpp" => ["contact", "xmpp"], + "matrix" => ["contact", "matrix"], "avatar" => ["contact", "avatar"], "photo" => ["contact", "photo"], "thumb" => ["contact", "thumb"], @@ -918,6 +920,7 @@ "about" => ["contact", "about"], "keywords" => ["contact", "keywords"], "xmpp" => ["contact", "xmpp"], + "matrix" => ["contact", "matrix"], "avatar" => ["contact", "avatar"], "photo" => ["contact", "photo"], "thumb" => ["contact", "thumb"], diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index 6072d4001..1e02c34ff 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-06 05:58+0000\n" +"POT-Creation-Date: 2021-08-09 01:36+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -54,7 +54,7 @@ msgstr "" msgid "%1$s poked %2$s" msgstr "" -#: include/conversation.php:140 src/Model/Item.php:2613 +#: include/conversation.php:140 src/Model/Item.php:2611 msgid "event" msgstr "" @@ -62,7 +62,7 @@ msgstr "" msgid "status" msgstr "" -#: include/conversation.php:148 mod/tagger.php:90 src/Model/Item.php:2615 +#: include/conversation.php:148 mod/tagger.php:90 src/Model/Item.php:2613 msgid "photo" msgstr "" @@ -77,8 +77,8 @@ msgstr "" #: include/conversation.php:466 mod/photos.php:1459 mod/settings.php:576 #: 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:849 -#: src/Module/Contact.php:1151 +#: src/Module/Admin/Users/Index.php:153 src/Module/Contact.php:851 +#: src/Module/Contact.php:1153 msgid "Delete" msgstr "" @@ -104,7 +104,7 @@ msgstr "" msgid "View in context" msgstr "" -#: include/conversation.php:539 include/conversation.php:1129 +#: 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 #: src/Object/Post.php:501 @@ -134,8 +134,8 @@ msgstr "" msgid "Tagged" msgstr "" -#: include/conversation.php:673 include/conversation.php:1012 -#: include/conversation.php:1050 +#: include/conversation.php:673 include/conversation.php:1011 +#: include/conversation.php:1049 #, php-format msgid "%s reshared this." msgstr "" @@ -180,324 +180,324 @@ msgstr "" msgid "Fetched because of %s <%s>" msgstr "" -#: include/conversation.php:843 view/theme/frio/theme.php:323 +#: include/conversation.php:842 view/theme/frio/theme.php:323 msgid "Follow Thread" msgstr "" -#: include/conversation.php:844 src/Model/Contact.php:1047 +#: include/conversation.php:843 src/Model/Contact.php:1047 msgid "View Status" msgstr "" -#: include/conversation.php:845 include/conversation.php:867 +#: include/conversation.php:844 include/conversation.php:866 #: 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:224 +#: src/Module/Settings/Profile/Index.php:226 msgid "View Profile" msgstr "" -#: include/conversation.php:846 src/Model/Contact.php:1049 +#: include/conversation.php:845 src/Model/Contact.php:1049 msgid "View Photos" msgstr "" -#: include/conversation.php:847 src/Model/Contact.php:1040 +#: include/conversation.php:846 src/Model/Contact.php:1040 #: src/Model/Contact.php:1050 msgid "Network Posts" msgstr "" -#: include/conversation.php:848 src/Model/Contact.php:1041 +#: include/conversation.php:847 src/Model/Contact.php:1041 #: src/Model/Contact.php:1051 msgid "View Contact" msgstr "" -#: include/conversation.php:849 src/Model/Contact.php:1053 +#: include/conversation.php:848 src/Model/Contact.php:1053 msgid "Send PM" msgstr "" -#: include/conversation.php:850 src/Module/Admin/Blocklist/Contact.php:84 +#: include/conversation.php:849 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:846 -#: src/Module/Contact.php:1126 +#: src/Module/Contact.php:588 src/Module/Contact.php:848 +#: src/Module/Contact.php:1128 msgid "Block" msgstr "" -#: include/conversation.php:851 src/Module/Contact.php:589 -#: src/Module/Contact.php:847 src/Module/Contact.php:1134 +#: include/conversation.php:850 src/Module/Contact.php:589 +#: src/Module/Contact.php:849 src/Module/Contact.php:1136 #: src/Module/Notifications/Introductions.php:113 #: src/Module/Notifications/Introductions.php:185 #: src/Module/Notifications/Notification.php:59 msgid "Ignore" msgstr "" -#: include/conversation.php:855 src/Object/Post.php:428 +#: include/conversation.php:854 src/Object/Post.php:428 msgid "Languages" msgstr "" -#: include/conversation.php:859 src/Model/Contact.php:1054 +#: include/conversation.php:858 src/Model/Contact.php:1054 msgid "Poke" msgstr "" -#: include/conversation.php:864 mod/follow.php:139 src/Content/Widget.php:76 +#: include/conversation.php:863 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:997 +#: include/conversation.php:996 #, php-format msgid "%s likes this." msgstr "" -#: include/conversation.php:1000 +#: include/conversation.php:999 #, php-format msgid "%s doesn't like this." msgstr "" -#: include/conversation.php:1003 +#: include/conversation.php:1002 #, php-format msgid "%s attends." msgstr "" -#: include/conversation.php:1006 +#: include/conversation.php:1005 #, php-format msgid "%s doesn't attend." msgstr "" -#: include/conversation.php:1009 +#: include/conversation.php:1008 #, php-format msgid "%s attends maybe." msgstr "" -#: include/conversation.php:1018 +#: include/conversation.php:1017 msgid "and" msgstr "" -#: include/conversation.php:1021 +#: include/conversation.php:1020 #, php-format msgid "and %d other people" msgstr "" -#: include/conversation.php:1029 +#: include/conversation.php:1028 #, php-format msgid "%2$d people like this" msgstr "" -#: include/conversation.php:1030 +#: include/conversation.php:1029 #, php-format msgid "%s like this." msgstr "" -#: include/conversation.php:1033 +#: include/conversation.php:1032 #, php-format msgid "%2$d people don't like this" msgstr "" -#: include/conversation.php:1034 +#: include/conversation.php:1033 #, php-format msgid "%s don't like this." msgstr "" -#: include/conversation.php:1037 +#: include/conversation.php:1036 #, php-format msgid "%2$d people attend" msgstr "" -#: include/conversation.php:1038 +#: include/conversation.php:1037 #, php-format msgid "%s attend." msgstr "" -#: include/conversation.php:1041 +#: include/conversation.php:1040 #, php-format msgid "%2$d people don't attend" msgstr "" -#: include/conversation.php:1042 +#: include/conversation.php:1041 #, php-format msgid "%s don't attend." msgstr "" -#: include/conversation.php:1045 +#: include/conversation.php:1044 #, php-format msgid "%2$d people attend maybe" msgstr "" -#: include/conversation.php:1046 +#: include/conversation.php:1045 #, php-format msgid "%s attend maybe." msgstr "" -#: include/conversation.php:1049 +#: include/conversation.php:1048 #, php-format msgid "%2$d people reshared this" msgstr "" -#: include/conversation.php:1081 +#: include/conversation.php:1080 msgid "Visible to everybody" msgstr "" -#: include/conversation.php:1082 src/Module/Item/Compose.php:159 +#: include/conversation.php:1081 src/Module/Item/Compose.php:159 #: src/Object/Post.php:972 msgid "Please enter a image/video/audio/webpage URL:" msgstr "" -#: include/conversation.php:1083 +#: include/conversation.php:1082 msgid "Tag term:" msgstr "" -#: include/conversation.php:1084 src/Module/Filer/SaveTag.php:68 +#: include/conversation.php:1083 src/Module/Filer/SaveTag.php:68 msgid "Save to Folder:" msgstr "" -#: include/conversation.php:1085 +#: include/conversation.php:1084 msgid "Where are you right now?" msgstr "" -#: include/conversation.php:1086 +#: include/conversation.php:1085 msgid "Delete item(s)?" msgstr "" -#: include/conversation.php:1096 +#: include/conversation.php:1095 msgid "New Post" msgstr "" -#: include/conversation.php:1099 +#: include/conversation.php:1098 msgid "Share" msgstr "" -#: include/conversation.php:1100 mod/editpost.php:89 mod/photos.php:1372 +#: include/conversation.php:1099 mod/editpost.php:89 mod/photos.php:1372 #: src/Module/Contact/Poke.php:156 src/Object/Post.php:963 msgid "Loading..." msgstr "" -#: include/conversation.php:1101 mod/editpost.php:90 mod/message.php:201 +#: include/conversation.php:1100 mod/editpost.php:90 mod/message.php:201 #: mod/message.php:365 mod/wallmessage.php:153 msgid "Upload photo" msgstr "" -#: include/conversation.php:1102 mod/editpost.php:91 +#: include/conversation.php:1101 mod/editpost.php:91 msgid "upload photo" msgstr "" -#: include/conversation.php:1103 mod/editpost.php:92 +#: include/conversation.php:1102 mod/editpost.php:92 msgid "Attach file" msgstr "" -#: include/conversation.php:1104 mod/editpost.php:93 +#: include/conversation.php:1103 mod/editpost.php:93 msgid "attach file" msgstr "" -#: include/conversation.php:1105 src/Module/Item/Compose.php:151 +#: include/conversation.php:1104 src/Module/Item/Compose.php:151 #: src/Object/Post.php:964 msgid "Bold" msgstr "" -#: include/conversation.php:1106 src/Module/Item/Compose.php:152 +#: include/conversation.php:1105 src/Module/Item/Compose.php:152 #: src/Object/Post.php:965 msgid "Italic" msgstr "" -#: include/conversation.php:1107 src/Module/Item/Compose.php:153 +#: include/conversation.php:1106 src/Module/Item/Compose.php:153 #: src/Object/Post.php:966 msgid "Underline" msgstr "" -#: include/conversation.php:1108 src/Module/Item/Compose.php:154 +#: include/conversation.php:1107 src/Module/Item/Compose.php:154 #: src/Object/Post.php:967 msgid "Quote" msgstr "" -#: include/conversation.php:1109 src/Module/Item/Compose.php:155 +#: include/conversation.php:1108 src/Module/Item/Compose.php:155 #: src/Object/Post.php:968 msgid "Code" msgstr "" -#: include/conversation.php:1110 src/Module/Item/Compose.php:156 +#: include/conversation.php:1109 src/Module/Item/Compose.php:156 #: src/Object/Post.php:969 msgid "Image" msgstr "" -#: include/conversation.php:1111 src/Module/Item/Compose.php:157 +#: include/conversation.php:1110 src/Module/Item/Compose.php:157 #: src/Object/Post.php:970 msgid "Link" msgstr "" -#: include/conversation.php:1112 src/Module/Item/Compose.php:158 +#: include/conversation.php:1111 src/Module/Item/Compose.php:158 #: src/Object/Post.php:971 msgid "Link or Media" msgstr "" -#: include/conversation.php:1113 +#: include/conversation.php:1112 msgid "Video" msgstr "" -#: include/conversation.php:1114 mod/editpost.php:100 +#: include/conversation.php:1113 mod/editpost.php:100 #: src/Module/Item/Compose.php:161 msgid "Set your location" msgstr "" -#: include/conversation.php:1115 mod/editpost.php:101 +#: include/conversation.php:1114 mod/editpost.php:101 msgid "set location" msgstr "" -#: include/conversation.php:1116 mod/editpost.php:102 +#: include/conversation.php:1115 mod/editpost.php:102 msgid "Clear browser location" msgstr "" -#: include/conversation.php:1117 mod/editpost.php:103 +#: include/conversation.php:1116 mod/editpost.php:103 msgid "clear location" msgstr "" -#: include/conversation.php:1119 mod/editpost.php:117 +#: include/conversation.php:1118 mod/editpost.php:117 #: src/Module/Item/Compose.php:166 msgid "Set title" msgstr "" -#: include/conversation.php:1121 mod/editpost.php:119 +#: include/conversation.php:1120 mod/editpost.php:119 #: src/Module/Item/Compose.php:167 msgid "Categories (comma-separated list)" msgstr "" -#: include/conversation.php:1126 src/Module/Item/Compose.php:172 +#: include/conversation.php:1125 src/Module/Item/Compose.php:172 msgid "Scheduled at" msgstr "" -#: include/conversation.php:1130 mod/editpost.php:105 +#: include/conversation.php:1129 mod/editpost.php:105 msgid "Permission settings" msgstr "" -#: include/conversation.php:1131 mod/editpost.php:133 mod/events.php:583 +#: include/conversation.php:1130 mod/editpost.php:133 mod/events.php:583 #: mod/photos.php:959 mod/photos.php:1325 msgid "Permissions" msgstr "" -#: include/conversation.php:1140 mod/editpost.php:114 +#: include/conversation.php:1139 mod/editpost.php:114 msgid "Public post" msgstr "" -#: include/conversation.php:1144 mod/editpost.php:125 mod/events.php:578 +#: include/conversation.php:1143 mod/editpost.php:125 mod/events.php:578 #: mod/photos.php:1371 mod/photos.php:1427 mod/photos.php:1501 #: src/Module/Item/Compose.php:160 src/Object/Post.php:973 msgid "Preview" msgstr "" -#: include/conversation.php:1147 mod/editpost.php:127 mod/fbrowser.php:105 +#: 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 msgid "Cancel" msgstr "" -#: include/conversation.php:1154 mod/editpost.php:131 -#: src/Content/Widget/VCard.php:106 src/Model/Profile.php:448 +#: include/conversation.php:1153 mod/editpost.php:131 +#: src/Content/Widget/VCard.php:107 src/Model/Profile.php:450 msgid "Message" msgstr "" -#: include/conversation.php:1155 mod/editpost.php:132 +#: include/conversation.php:1154 mod/editpost.php:132 #: src/Module/Settings/TwoFactor/Trusted.php:101 msgid "Browser" msgstr "" -#: include/conversation.php:1157 mod/editpost.php:135 +#: include/conversation.php:1156 mod/editpost.php:135 msgid "Open Compose page" msgstr "" @@ -1061,15 +1061,15 @@ msgid "Adjust for viewer timezone" msgstr "" #: mod/events.php:566 src/Module/Profile/Profile.php:173 -#: src/Module/Settings/Profile/Index.php:237 +#: src/Module/Settings/Profile/Index.php:239 msgid "Description:" msgstr "" -#: mod/events.php:568 src/Content/Widget/VCard.php:97 src/Model/Event.php:86 +#: 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/Module/Directory.php:150 src/Module/Notifications/Introductions.php:166 -#: src/Module/Profile/Profile.php:191 +#: src/Module/Profile/Profile.php:195 msgid "Location:" msgstr "" @@ -1092,19 +1092,19 @@ msgstr "" #: 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:244 -#: src/Module/Settings/Profile/Index.php:221 src/Object/Post.php:962 +#: src/Module/Item/Compose.php:150 src/Module/Profile/Profile.php:248 +#: src/Module/Settings/Profile/Index.php:223 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:245 +#: mod/events.php:581 src/Module/Profile/Profile.php:249 msgid "Basic" msgstr "" -#: mod/events.php:582 src/Module/Admin/Site.php:506 src/Module/Contact.php:916 -#: src/Module/Profile/Profile.php:246 +#: mod/events.php:582 src/Module/Admin/Site.php:506 src/Module/Contact.php:918 +#: src/Module/Profile/Profile.php:250 msgid "Advanced" msgstr "" @@ -1161,9 +1161,9 @@ msgstr "" msgid "Profile URL" msgstr "" -#: mod/follow.php:143 src/Module/Contact.php:615 +#: mod/follow.php:143 src/Module/Contact.php:617 #: src/Module/Notifications/Introductions.php:170 -#: src/Module/Profile/Profile.php:204 +#: src/Module/Profile/Profile.php:208 msgid "Tags:" msgstr "" @@ -1177,7 +1177,7 @@ msgid "Add a personal note:" msgstr "" #: mod/follow.php:164 mod/unfollow.php:109 src/Module/BaseProfile.php:61 -#: src/Module/Contact.php:894 +#: src/Module/Contact.php:896 msgid "Status Messages and Posts" msgstr "" @@ -1740,7 +1740,7 @@ msgid "Rotate CCW (left)" msgstr "" #: mod/photos.php:1367 mod/photos.php:1423 mod/photos.php:1497 -#: src/Module/Contact.php:1057 src/Module/Item/Compose.php:148 +#: src/Module/Contact.php:1059 src/Module/Item/Compose.php:148 #: src/Object/Post.php:959 msgid "This is you" msgstr "" @@ -2782,16 +2782,16 @@ msgid "All contacts" msgstr "" #: src/BaseModule.php:214 src/Content/Widget.php:238 src/Core/ACL.php:183 -#: src/Module/Contact.php:815 src/Module/PermissionTooltip.php:77 +#: src/Module/Contact.php:817 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:816 +#: src/BaseModule.php:219 src/Content/Widget.php:239 src/Module/Contact.php:818 msgid "Following" msgstr "" -#: src/BaseModule.php:224 src/Content/Widget.php:240 src/Module/Contact.php:817 +#: src/BaseModule.php:224 src/Content/Widget.php:240 src/Module/Contact.php:819 msgid "Mutual friends" msgstr "" @@ -3148,7 +3148,7 @@ msgid "Sign in" msgstr "" #: src/Content/Nav.php:191 src/Module/BaseProfile.php:58 -#: src/Module/Contact.php:618 src/Module/Contact.php:883 +#: src/Module/Contact.php:620 src/Module/Contact.php:885 #: src/Module/Settings/TwoFactor/Index.php:112 view/theme/frio/theme.php:226 msgid "Status" msgstr "" @@ -3159,8 +3159,8 @@ 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:620 -#: src/Module/Contact.php:899 src/Module/Profile/Profile.php:238 +#: src/Module/BaseSettings.php:57 src/Module/Contact.php:622 +#: src/Module/Contact.php:901 src/Module/Profile/Profile.php:242 #: src/Module/Welcome.php:57 view/theme/frio/theme.php:227 msgid "Profile" msgstr "" @@ -3246,8 +3246,8 @@ 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:818 -#: src/Module/Contact.php:906 view/theme/frio/theme.php:237 +#: src/Module/BaseProfile.php:131 src/Module/Contact.php:820 +#: src/Module/Contact.php:908 view/theme/frio/theme.php:237 msgid "Contacts" msgstr "" @@ -3404,8 +3404,8 @@ msgid "" "%2$s %3$s" msgstr "" -#: src/Content/Text/BBCode.php:1177 src/Model/Item.php:3141 -#: src/Model/Item.php:3147 src/Model/Item.php:3148 +#: src/Content/Text/BBCode.php:1177 src/Model/Item.php:3139 +#: src/Model/Item.php:3145 src/Model/Item.php:3146 msgid "Link to source" msgstr "" @@ -3437,8 +3437,8 @@ msgstr "" msgid "The end" msgstr "" -#: src/Content/Text/HTML.php:885 src/Content/Widget/VCard.php:102 -#: src/Model/Profile.php:442 +#: src/Content/Text/HTML.php:885 src/Content/Widget/VCard.php:103 +#: src/Model/Profile.php:444 msgid "Follow" msgstr "" @@ -3477,7 +3477,7 @@ msgstr "" msgid "Examples: Robert Morgenstein, Fishing" msgstr "" -#: src/Content/Widget.php:78 src/Module/Contact.php:839 +#: src/Content/Widget.php:78 src/Module/Contact.php:841 #: 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:802 src/Module/Welcome.php:76 +#: src/Module/Contact.php:804 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:754 +#: src/Content/Widget.php:247 src/Module/Contact.php:756 #: src/Module/Group.php:292 msgid "All Contacts" msgstr "" @@ -3619,16 +3619,21 @@ msgstr "" msgid "XMPP:" msgstr "" -#: src/Content/Widget/VCard.php:100 src/Model/Profile.php:454 +#: src/Content/Widget/VCard.php:97 src/Model/Profile.php:364 +#: src/Module/Contact.php:613 src/Module/Profile/Profile.php:181 +msgid "Matrix:" +msgstr "" + +#: src/Content/Widget/VCard.php:101 src/Model/Profile.php:456 #: src/Module/Notifications/Introductions.php:180 msgid "Network:" msgstr "" -#: src/Content/Widget/VCard.php:104 src/Model/Profile.php:444 +#: src/Content/Widget/VCard.php:105 src/Model/Profile.php:446 msgid "Unfollow" msgstr "" -#: src/Core/ACL.php:154 src/Module/Profile/Profile.php:239 +#: src/Core/ACL.php:154 src/Module/Profile/Profile.php:243 msgid "Yourself" msgstr "" @@ -4590,33 +4595,33 @@ msgstr "" msgid "Edit groups" msgstr "" -#: src/Model/Item.php:1667 +#: src/Model/Item.php:1665 #, php-format msgid "Detected languages in this post:\\n%s" msgstr "" -#: src/Model/Item.php:2617 +#: src/Model/Item.php:2615 msgid "activity" msgstr "" -#: src/Model/Item.php:2619 +#: src/Model/Item.php:2617 msgid "comment" msgstr "" -#: src/Model/Item.php:2622 +#: src/Model/Item.php:2620 msgid "post" msgstr "" -#: src/Model/Item.php:2759 +#: src/Model/Item.php:2757 #, php-format msgid "Content warning: %s" msgstr "" -#: src/Model/Item.php:3106 +#: src/Model/Item.php:3104 msgid "bytes" msgstr "" -#: src/Model/Item.php:3135 src/Model/Item.php:3136 +#: src/Model/Item.php:3133 src/Model/Item.php:3134 msgid "View on separate page" msgstr "" @@ -4624,8 +4629,8 @@ msgstr "" msgid "[no subject]" msgstr "" -#: src/Model/Profile.php:346 src/Module/Profile/Profile.php:253 -#: src/Module/Profile/Profile.php:255 +#: src/Model/Profile.php:346 src/Module/Profile/Profile.php:257 +#: src/Module/Profile/Profile.php:259 msgid "Edit profile" msgstr "" @@ -4634,52 +4639,52 @@ msgid "Change profile photo" msgstr "" #: src/Model/Profile.php:361 src/Module/Directory.php:155 -#: src/Module/Profile/Profile.php:181 +#: src/Module/Profile/Profile.php:185 msgid "Homepage:" msgstr "" -#: src/Model/Profile.php:362 src/Module/Contact.php:613 +#: src/Model/Profile.php:362 src/Module/Contact.php:615 #: src/Module/Notifications/Introductions.php:168 msgid "About:" msgstr "" -#: src/Model/Profile.php:446 +#: src/Model/Profile.php:448 msgid "Atom feed" msgstr "" -#: src/Model/Profile.php:484 src/Model/Profile.php:581 +#: src/Model/Profile.php:486 src/Model/Profile.php:583 msgid "g A l F d" msgstr "" -#: src/Model/Profile.php:485 +#: src/Model/Profile.php:487 msgid "F d" msgstr "" -#: src/Model/Profile.php:547 src/Model/Profile.php:632 +#: src/Model/Profile.php:549 src/Model/Profile.php:634 msgid "[today]" msgstr "" -#: src/Model/Profile.php:557 +#: src/Model/Profile.php:559 msgid "Birthday Reminders" msgstr "" -#: src/Model/Profile.php:558 +#: src/Model/Profile.php:560 msgid "Birthdays this week:" msgstr "" -#: src/Model/Profile.php:619 +#: src/Model/Profile.php:621 msgid "[No description]" msgstr "" -#: src/Model/Profile.php:645 +#: src/Model/Profile.php:647 msgid "Event Reminders" msgstr "" -#: src/Model/Profile.php:646 +#: src/Model/Profile.php:648 msgid "Upcoming events the next 7 days:" msgstr "" -#: src/Model/Profile.php:834 +#: src/Model/Profile.php:836 #, php-format msgid "OpenWebAuth: %1$s welcomes %2$s" msgstr "" @@ -5061,8 +5066,8 @@ msgstr "" msgid "List of active accounts" msgstr "" -#: src/Module/Admin/BaseUsers.php:66 src/Module/Contact.php:762 -#: src/Module/Contact.php:822 +#: src/Module/Admin/BaseUsers.php:66 src/Module/Contact.php:764 +#: src/Module/Contact.php:824 msgid "Pending" msgstr "" @@ -5070,8 +5075,8 @@ msgstr "" msgid "List of pending registrations" msgstr "" -#: src/Module/Admin/BaseUsers.php:74 src/Module/Contact.php:770 -#: src/Module/Contact.php:823 +#: src/Module/Admin/BaseUsers.php:74 src/Module/Contact.php:772 +#: src/Module/Contact.php:825 msgid "Blocked" msgstr "" @@ -5128,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:846 -#: src/Module/Contact.php:1126 +#: src/Module/Contact.php:588 src/Module/Contact.php:848 +#: src/Module/Contact.php:1128 msgid "Unblock" msgstr "" @@ -7089,7 +7094,7 @@ msgstr "" msgid "Too Many Requests" msgstr "" -#: src/Module/BaseProfile.php:53 src/Module/Contact.php:902 +#: src/Module/BaseProfile.php:53 src/Module/Contact.php:904 msgid "Profile Details" msgstr "" @@ -7207,7 +7212,7 @@ msgstr "" msgid "Drop contact" msgstr "" -#: src/Module/Contact.php:420 src/Module/Contact.php:842 +#: src/Module/Contact.php:420 src/Module/Contact.php:844 msgid "Do you really want to delete this contact?" msgstr "" @@ -7251,7 +7256,7 @@ msgstr "" msgid "(Update was successful)" msgstr "" -#: src/Module/Contact.php:498 src/Module/Contact.php:1097 +#: src/Module/Contact.php:498 src/Module/Contact.php:1099 msgid "Suggest friends" msgstr "" @@ -7325,7 +7330,7 @@ msgstr "" msgid "Edit contact notes" msgstr "" -#: src/Module/Contact.php:574 src/Module/Contact.php:1065 +#: src/Module/Contact.php:574 src/Module/Contact.php:1067 #, php-format msgid "Visit %s's profile [%s]" msgstr "" @@ -7350,12 +7355,12 @@ msgstr "" msgid "Update public posts" msgstr "" -#: src/Module/Contact.php:586 src/Module/Contact.php:1107 +#: src/Module/Contact.php:586 src/Module/Contact.php:1109 msgid "Update now" msgstr "" -#: src/Module/Contact.php:589 src/Module/Contact.php:847 -#: src/Module/Contact.php:1134 +#: src/Module/Contact.php:589 src/Module/Contact.php:849 +#: src/Module/Contact.php:1136 msgid "Unignore" msgstr "" @@ -7402,139 +7407,139 @@ msgid "" "when \"Fetch information and keywords\" is selected" msgstr "" -#: src/Module/Contact.php:616 src/Module/Settings/TwoFactor/Index.php:132 +#: src/Module/Contact.php:618 src/Module/Settings/TwoFactor/Index.php:132 msgid "Actions" msgstr "" -#: src/Module/Contact.php:623 +#: src/Module/Contact.php:625 msgid "Mirror postings from this contact" msgstr "" -#: src/Module/Contact.php:625 +#: src/Module/Contact.php:627 msgid "" "Mark this contact as remote_self, this will cause friendica to repost new " "entries from this contact." msgstr "" -#: src/Module/Contact.php:757 +#: src/Module/Contact.php:759 msgid "Show all contacts" msgstr "" -#: src/Module/Contact.php:765 +#: src/Module/Contact.php:767 msgid "Only show pending contacts" msgstr "" -#: src/Module/Contact.php:773 +#: src/Module/Contact.php:775 msgid "Only show blocked contacts" msgstr "" -#: src/Module/Contact.php:778 src/Module/Contact.php:825 +#: src/Module/Contact.php:780 src/Module/Contact.php:827 #: src/Object/Post.php:308 msgid "Ignored" msgstr "" -#: src/Module/Contact.php:781 +#: src/Module/Contact.php:783 msgid "Only show ignored contacts" msgstr "" -#: src/Module/Contact.php:786 src/Module/Contact.php:826 +#: src/Module/Contact.php:788 src/Module/Contact.php:828 msgid "Archived" msgstr "" -#: src/Module/Contact.php:789 +#: src/Module/Contact.php:791 msgid "Only show archived contacts" msgstr "" -#: src/Module/Contact.php:794 src/Module/Contact.php:824 +#: src/Module/Contact.php:796 src/Module/Contact.php:826 msgid "Hidden" msgstr "" -#: src/Module/Contact.php:797 +#: src/Module/Contact.php:799 msgid "Only show hidden contacts" msgstr "" -#: src/Module/Contact.php:805 +#: src/Module/Contact.php:807 msgid "Organize your contact groups" msgstr "" -#: src/Module/Contact.php:837 +#: src/Module/Contact.php:839 msgid "Search your contacts" msgstr "" -#: src/Module/Contact.php:838 src/Module/Search/Index.php:194 +#: src/Module/Contact.php:840 src/Module/Search/Index.php:194 #, php-format msgid "Results for: %s" msgstr "" -#: src/Module/Contact.php:845 +#: src/Module/Contact.php:847 msgid "Update" msgstr "" -#: src/Module/Contact.php:848 src/Module/Contact.php:1143 +#: src/Module/Contact.php:850 src/Module/Contact.php:1145 msgid "Archive" msgstr "" -#: src/Module/Contact.php:848 src/Module/Contact.php:1143 +#: src/Module/Contact.php:850 src/Module/Contact.php:1145 msgid "Unarchive" msgstr "" -#: src/Module/Contact.php:851 +#: src/Module/Contact.php:853 msgid "Batch Actions" msgstr "" -#: src/Module/Contact.php:886 +#: src/Module/Contact.php:888 msgid "Conversations started by this contact" msgstr "" -#: src/Module/Contact.php:891 +#: src/Module/Contact.php:893 msgid "Posts and Comments" msgstr "" -#: src/Module/Contact.php:909 +#: src/Module/Contact.php:911 msgid "View all known contacts" msgstr "" -#: src/Module/Contact.php:919 +#: src/Module/Contact.php:921 msgid "Advanced Contact Settings" msgstr "" -#: src/Module/Contact.php:1024 +#: src/Module/Contact.php:1026 msgid "Mutual Friendship" msgstr "" -#: src/Module/Contact.php:1028 +#: src/Module/Contact.php:1030 msgid "is a fan of yours" msgstr "" -#: src/Module/Contact.php:1032 +#: src/Module/Contact.php:1034 msgid "you are a fan of" msgstr "" -#: src/Module/Contact.php:1050 +#: src/Module/Contact.php:1052 msgid "Pending outgoing contact request" msgstr "" -#: src/Module/Contact.php:1052 +#: src/Module/Contact.php:1054 msgid "Pending incoming contact request" msgstr "" -#: src/Module/Contact.php:1117 +#: src/Module/Contact.php:1119 msgid "Refetch contact data" msgstr "" -#: src/Module/Contact.php:1128 +#: src/Module/Contact.php:1130 msgid "Toggle Blocked status" msgstr "" -#: src/Module/Contact.php:1136 +#: src/Module/Contact.php:1138 msgid "Toggle Ignored status" msgstr "" -#: src/Module/Contact.php:1145 +#: src/Module/Contact.php:1147 msgid "Toggle Archive status" msgstr "" -#: src/Module/Contact.php:1153 +#: src/Module/Contact.php:1155 msgid "Delete contact" msgstr "" @@ -7750,7 +7755,7 @@ msgid "Sort by post received date" msgstr "" #: src/Module/Conversation/Network.php:259 -#: src/Module/Settings/Profile/Index.php:226 +#: src/Module/Settings/Profile/Index.php:228 msgid "Personal" msgstr "" @@ -7974,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:142 +#: src/Module/Settings/Profile/Index.php:144 msgid "You must be logged in to use this module" msgstr "" @@ -8741,12 +8746,12 @@ msgstr "" msgid "Birthday:" msgstr "" -#: src/Module/Profile/Profile.php:168 src/Module/Settings/Profile/Index.php:244 +#: src/Module/Profile/Profile.php:168 src/Module/Settings/Profile/Index.php:246 #: src/Util/Temporal.php:165 msgid "Age: " msgstr "" -#: src/Module/Profile/Profile.php:168 src/Module/Settings/Profile/Index.php:244 +#: src/Module/Profile/Profile.php:168 src/Module/Settings/Profile/Index.php:246 #: src/Util/Temporal.php:165 #, php-format msgid "%d year old" @@ -8754,32 +8759,32 @@ msgid_plural "%d years old" msgstr[0] "" msgstr[1] "" -#: src/Module/Profile/Profile.php:231 +#: src/Module/Profile/Profile.php:235 msgid "Forums:" msgstr "" -#: src/Module/Profile/Profile.php:243 +#: src/Module/Profile/Profile.php:247 msgid "View profile as:" msgstr "" -#: src/Module/Profile/Profile.php:260 +#: src/Module/Profile/Profile.php:264 msgid "View as" msgstr "" -#: src/Module/Profile/Profile.php:323 src/Module/Profile/Profile.php:326 +#: src/Module/Profile/Profile.php:327 src/Module/Profile/Profile.php:330 #: 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:324 src/Module/Profile/Status.php:66 +#: src/Module/Profile/Profile.php:328 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:325 src/Module/Profile/Status.php:67 +#: src/Module/Profile/Profile.php:329 src/Module/Profile/Status.php:67 #: src/Protocol/Feed.php:953 src/Protocol/OStatus.php:1263 #, php-format msgid "%s's comments" @@ -9327,122 +9332,129 @@ msgstr "" msgid "Profile Name is required." msgstr "" -#: src/Module/Settings/Profile/Index.php:134 +#: src/Module/Settings/Profile/Index.php:136 msgid "Profile couldn't be updated." msgstr "" -#: src/Module/Settings/Profile/Index.php:171 -#: src/Module/Settings/Profile/Index.php:191 +#: src/Module/Settings/Profile/Index.php:173 +#: src/Module/Settings/Profile/Index.php:193 msgid "Label:" msgstr "" -#: src/Module/Settings/Profile/Index.php:172 -#: src/Module/Settings/Profile/Index.php:192 +#: src/Module/Settings/Profile/Index.php:174 +#: src/Module/Settings/Profile/Index.php:194 msgid "Value:" msgstr "" -#: src/Module/Settings/Profile/Index.php:182 -#: src/Module/Settings/Profile/Index.php:202 +#: src/Module/Settings/Profile/Index.php:184 +#: src/Module/Settings/Profile/Index.php:204 msgid "Field Permissions" msgstr "" -#: src/Module/Settings/Profile/Index.php:183 -#: src/Module/Settings/Profile/Index.php:203 +#: src/Module/Settings/Profile/Index.php:185 +#: src/Module/Settings/Profile/Index.php:205 msgid "(click to open/close)" msgstr "" -#: src/Module/Settings/Profile/Index.php:189 +#: src/Module/Settings/Profile/Index.php:191 msgid "Add a new profile field" msgstr "" -#: src/Module/Settings/Profile/Index.php:219 +#: src/Module/Settings/Profile/Index.php:221 msgid "Profile Actions" msgstr "" -#: src/Module/Settings/Profile/Index.php:220 +#: src/Module/Settings/Profile/Index.php:222 msgid "Edit Profile Details" msgstr "" -#: src/Module/Settings/Profile/Index.php:222 +#: src/Module/Settings/Profile/Index.php:224 msgid "Change Profile Photo" msgstr "" -#: src/Module/Settings/Profile/Index.php:227 +#: src/Module/Settings/Profile/Index.php:229 msgid "Profile picture" msgstr "" -#: src/Module/Settings/Profile/Index.php:228 +#: src/Module/Settings/Profile/Index.php:230 msgid "Location" msgstr "" -#: src/Module/Settings/Profile/Index.php:229 src/Util/Temporal.php:93 +#: src/Module/Settings/Profile/Index.php:231 src/Util/Temporal.php:93 #: src/Util/Temporal.php:95 msgid "Miscellaneous" msgstr "" -#: src/Module/Settings/Profile/Index.php:230 +#: src/Module/Settings/Profile/Index.php:232 msgid "Custom Profile Fields" msgstr "" -#: src/Module/Settings/Profile/Index.php:232 src/Module/Welcome.php:58 +#: src/Module/Settings/Profile/Index.php:234 src/Module/Welcome.php:58 msgid "Upload Profile Photo" msgstr "" -#: src/Module/Settings/Profile/Index.php:236 +#: src/Module/Settings/Profile/Index.php:238 msgid "Display name:" msgstr "" -#: src/Module/Settings/Profile/Index.php:239 +#: src/Module/Settings/Profile/Index.php:241 msgid "Street Address:" msgstr "" -#: src/Module/Settings/Profile/Index.php:240 +#: src/Module/Settings/Profile/Index.php:242 msgid "Locality/City:" msgstr "" -#: src/Module/Settings/Profile/Index.php:241 +#: src/Module/Settings/Profile/Index.php:243 msgid "Region/State:" msgstr "" -#: src/Module/Settings/Profile/Index.php:242 +#: src/Module/Settings/Profile/Index.php:244 msgid "Postal/Zip Code:" msgstr "" -#: src/Module/Settings/Profile/Index.php:243 +#: src/Module/Settings/Profile/Index.php:245 msgid "Country:" msgstr "" -#: src/Module/Settings/Profile/Index.php:245 +#: src/Module/Settings/Profile/Index.php:247 msgid "XMPP (Jabber) address:" msgstr "" -#: src/Module/Settings/Profile/Index.php:245 +#: src/Module/Settings/Profile/Index.php:247 +msgid "The XMPP address will be published so that people can follow you there." +msgstr "" + +#: src/Module/Settings/Profile/Index.php:248 +msgid "Matrix (Element) address:" +msgstr "" + +#: src/Module/Settings/Profile/Index.php:248 msgid "" -"The XMPP address will be propagated to your contacts so that they can follow " -"you." -msgstr "" - -#: src/Module/Settings/Profile/Index.php:246 -msgid "Homepage URL:" -msgstr "" - -#: src/Module/Settings/Profile/Index.php:247 -msgid "Public Keywords:" -msgstr "" - -#: 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:248 -msgid "Private Keywords:" -msgstr "" - -#: src/Module/Settings/Profile/Index.php:248 -msgid "(Used for searching profiles, never shown to others)" +"The Matrix address will be published so that people can follow you there." msgstr "" #: src/Module/Settings/Profile/Index.php:249 +msgid "Homepage URL:" +msgstr "" + +#: src/Module/Settings/Profile/Index.php:250 +msgid "Public Keywords:" +msgstr "" + +#: src/Module/Settings/Profile/Index.php:250 +msgid "(Used for suggesting potential friends, can be seen by others)" +msgstr "" + +#: src/Module/Settings/Profile/Index.php:251 +msgid "Private Keywords:" +msgstr "" + +#: src/Module/Settings/Profile/Index.php:251 +msgid "(Used for searching profiles, never shown to others)" +msgstr "" + +#: src/Module/Settings/Profile/Index.php:252 #, php-format msgid "" "

Custom fields appear on your profile page.

\n" diff --git a/view/templates/contact_edit.tpl b/view/templates/contact_edit.tpl index 44751eacc..9a5fc6172 100644 --- a/view/templates/contact_edit.tpl +++ b/view/templates/contact_edit.tpl @@ -51,6 +51,7 @@
{{$profileurllabel}}
{{$profileurl}}
{{if $location}}
{{$location_label}}
{{$location nofilter}}
{{/if}} {{if $xmpp}}
{{$xmpp_label}}
{{$xmpp}}
{{/if}} + {{if $matrix}}
{{$matrix_label}}
{{$matrix}}
{{/if}} {{if $keywords}}
{{$keywords_label}}
{{$keywords}}
{{/if}} {{if $about}}
{{$about_label}}
{{$about nofilter}}
{{/if}} {{* End of contact-edit-links *}} diff --git a/view/templates/profile/profile.tpl b/view/templates/profile/profile.tpl index c2cb3ead4..02b4257ff 100644 --- a/view/templates/profile/profile.tpl +++ b/view/templates/profile/profile.tpl @@ -77,6 +77,14 @@ {{/if}} +{{if $basic_fields.matrix}} +
+
+
{{$basic_fields.matrix.label}}
+
{{$basic_fields.matrix.value nofilter}}
+
+{{/if}} + {{if $basic_fields.pub_keywords}}

diff --git a/view/templates/profile/vcard.tpl b/view/templates/profile/vcard.tpl index b989923b7..bc39dcce4 100644 --- a/view/templates/profile/vcard.tpl +++ b/view/templates/profile/vcard.tpl @@ -29,6 +29,13 @@
{{/if}} + {{if $profile.matrix}} +
+
{{$matrix}}
+
{{$profile.matrix}}
+
+ {{/if}} + {{if $profile.upubkey}}{{/if}} {{if $contacts}}{{/if}} diff --git a/view/templates/settings/profile/index.tpl b/view/templates/settings/profile/index.tpl index 7188212c0..d888e0910 100644 --- a/view/templates/settings/profile/index.tpl +++ b/view/templates/settings/profile/index.tpl @@ -80,6 +80,12 @@
{{$xmpp.3}}
+
+ + +
+
{{$matrix.3}}
+
diff --git a/view/templates/widget/vcard.tpl b/view/templates/widget/vcard.tpl index 4eedb9b7a..9e38eebfc 100644 --- a/view/templates/widget/vcard.tpl +++ b/view/templates/widget/vcard.tpl @@ -14,6 +14,12 @@
{{$contact.xmpp}}
{{/if}} + {{if $contact.matrix}} +
+
{{$matrix}}
+
{{$contact.matrix}}
+
+ {{/if}} {{if $contact.location}}
{{$location}}
diff --git a/view/theme/frio/css/style.css b/view/theme/frio/css/style.css index 22126e913..ba15534d5 100644 --- a/view/theme/frio/css/style.css +++ b/view/theme/frio/css/style.css @@ -1167,7 +1167,7 @@ aside .vcard .detail { display: table; padding: 2px 0; } -aside .xmpp { +aside .xmpp, aside .matrix { display: table; } aside .vcard .icon { diff --git a/view/theme/frio/templates/contact_edit.tpl b/view/theme/frio/templates/contact_edit.tpl index 9194127df..4fcfc1fb7 100644 --- a/view/theme/frio/templates/contact_edit.tpl +++ b/view/theme/frio/templates/contact_edit.tpl @@ -96,6 +96,14 @@
{{/if}} + {{if $matrix}} +
+
+
{{$matrix_label}}
+
{{$matrix}}
+
+ {{/if}} + {{if $keywords}}

diff --git a/view/theme/frio/templates/profile/vcard.tpl b/view/theme/frio/templates/profile/vcard.tpl index deecd7543..ba66882e2 100644 --- a/view/theme/frio/templates/profile/vcard.tpl +++ b/view/theme/frio/templates/profile/vcard.tpl @@ -88,11 +88,18 @@ {{if $profile.xmpp}} {{/if}} + {{if $profile.matrix}} + + {{/if}} + {{if $profile.upubkey}}{{/if}} {{if $contacts}}{{/if}} @@ -101,7 +108,7 @@ {{if $homepage}} {{/if}} diff --git a/view/theme/frio/templates/settings/profile/index.tpl b/view/theme/frio/templates/settings/profile/index.tpl index 21387437e..95fcbe4b5 100644 --- a/view/theme/frio/templates/settings/profile/index.tpl +++ b/view/theme/frio/templates/settings/profile/index.tpl @@ -129,6 +129,8 @@ {{include file="field_input.tpl" field=$xmpp}} + {{include file="field_input.tpl" field=$matrix}} + {{include file="field_input.tpl" field=$pub_keywords}} {{include file="field_input.tpl" field=$prv_keywords}} diff --git a/view/theme/frio/templates/widget/vcard.tpl b/view/theme/frio/templates/widget/vcard.tpl index 91c773a75..5c0c8b0a6 100644 --- a/view/theme/frio/templates/widget/vcard.tpl +++ b/view/theme/frio/templates/widget/vcard.tpl @@ -69,11 +69,18 @@ {{if $contact.xmpp}} {{/if}} + {{if $contact.matrix}} + + {{/if}} + {{if $network_link}}
diff --git a/view/theme/quattro/templates/profile/vcard.tpl b/view/theme/quattro/templates/profile/vcard.tpl index b849a4435..dc5b0c7d1 100644 --- a/view/theme/quattro/templates/profile/vcard.tpl +++ b/view/theme/quattro/templates/profile/vcard.tpl @@ -42,6 +42,13 @@ {{/if}} + {{if $profile.matrix}} +
+
{{$matrix}}
+
{{$profile.matrix}}
+
+ {{/if}} + {{if $profile.upubkey}}{{/if}} {{if $homepage}} diff --git a/view/theme/vier/templates/contact_edit.tpl b/view/theme/vier/templates/contact_edit.tpl index 23c510502..94c753c7d 100644 --- a/view/theme/vier/templates/contact_edit.tpl +++ b/view/theme/vier/templates/contact_edit.tpl @@ -52,6 +52,7 @@
{{$profileurllabel}}
{{$profileurl}}
{{if $location}}
{{$location_label}}
{{$location nofilter}}
{{/if}} {{if $xmpp}}
{{$xmpp_label}}
{{$xmpp}}
{{/if}} + {{if $matrix}}
{{$matrix_label}}
{{$matrix}}
{{/if}} {{if $keywords}}
{{$keywords_label}}
{{$keywords}}
{{/if}} {{if $about}}
{{$about_label}}
{{$about nofilter}}
{{/if}}
{{* End of contact-edit-links *}} diff --git a/view/theme/vier/templates/profile/vcard.tpl b/view/theme/vier/templates/profile/vcard.tpl index 13e41fcb5..c15e7940d 100644 --- a/view/theme/vier/templates/profile/vcard.tpl +++ b/view/theme/vier/templates/profile/vcard.tpl @@ -36,6 +36,13 @@ {{/if}} + {{if $profile.matrix}} +
+
{{$matrix}}
+
{{$profile.matrix}}
+
+ {{/if}} + {{if $profile.upubkey}}{{/if}} {{if $contacts}}{{/if}} diff --git a/view/theme/vier/templates/settings/profile/index.tpl b/view/theme/vier/templates/settings/profile/index.tpl index fa9c074eb..842b6aaef 100644 --- a/view/theme/vier/templates/settings/profile/index.tpl +++ b/view/theme/vier/templates/settings/profile/index.tpl @@ -67,6 +67,13 @@
{{$xmpp.3}}
+
+ + +
+
{{$matrix.3}}
+
+
From 51d549639d34d7269f7e334b81db047a05cfd109 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 9 Aug 2021 06:56:41 +0000 Subject: [PATCH 4/4] Fix profile probing via Pleroma --- src/Module/Xrd.php | 11 ++++------- src/Protocol/ActivityPub/Transmitter.php | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/Module/Xrd.php b/src/Module/Xrd.php index d2813cc27..aa7e04ebc 100644 --- a/src/Module/Xrd.php +++ b/src/Module/Xrd.php @@ -47,7 +47,7 @@ class Xrd extends BaseModule } $uri = urldecode(Strings::escapeTags(trim($_GET['uri']))); - if (($_SERVER['HTTP_ACCEPT'] ?? '') == 'application/jrd+json') { + if (strpos($_SERVER['HTTP_ACCEPT'] ?? '', 'application/jrd+json') !== false) { $mode = 'json'; } else { $mode = 'xml'; @@ -58,7 +58,7 @@ class Xrd extends BaseModule } $uri = urldecode(Strings::escapeTags(trim($_GET['resource']))); - if (($_SERVER['HTTP_ACCEPT'] ?? '') == 'application/xrd+xml') { + if (strpos($_SERVER['HTTP_ACCEPT'] ?? '', 'application/xrd+xml') !== false) { $mode = 'xml'; } else { $mode = 'json'; @@ -159,9 +159,6 @@ class Xrd extends BaseModule { $salmon_key = Salmon::salmonKey($owner['spubkey']); - header('Access-Control-Allow-Origin: *'); - header('Content-type: application/json; charset=utf-8'); - $json = [ 'subject' => 'acct:' . $owner['addr'], 'aliases' => [ @@ -235,8 +232,8 @@ class Xrd extends BaseModule ], ]; - echo json_encode($json); - exit(); + header('Access-Control-Allow-Origin: *'); + System::jsonExit($json, 'application/jrd+json; charset=utf-8'); } private static function printXML($alias, $baseURL, $user, $owner, $avatar) diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index 6c78db302..2ca40259d 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -354,7 +354,7 @@ class Transmitter $data['url'] = $owner['url']; $data['manuallyApprovesFollowers'] = in_array($owner['page-flags'], [User::PAGE_FLAGS_NORMAL, User::PAGE_FLAGS_PRVGROUP]); - $data['discoverable'] = $owner['net-publish']; + $data['discoverable'] = (bool)$owner['net-publish']; $data['publicKey'] = ['id' => $owner['url'] . '#main-key', 'owner' => $owner['url'], 'publicKeyPem' => $owner['pubkey']];