<?php
/**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
use Friendica\App;
use Friendica\Content\Feature;
-use Friendica\Content\ForumManager;
+use Friendica\Content\GroupManager;
use Friendica\Content\Nav;
use Friendica\Content\Text\BBCode;
-use Friendica\Content\Text\HTML;
use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\Hook;
use Friendica\Core\L10n;
use Friendica\Protocol\ActivityPub;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Profiler;
+use Friendica\Util\Strings;
use Friendica\Util\Temporal;
use Psr\Log\LoggerInterface;
$user = $this->database->selectFirst('user', ['uid'], ['nickname' => $this->parameters['nickname'] ?? '', 'account_removed' => false]);
if ($user) {
try {
- $data = ActivityPub\Transmitter::getProfile($user['uid']);
+ $data = ActivityPub\Transmitter::getProfile($user['uid'], ActivityPub::isAcceptedRequester($user['uid']));
header('Access-Control-Allow-Origin: *');
header('Cache-Control: max-age=23200, stale-while-revalidate=23200');
System::jsonExit($data, 'application/activity+json');
}
if ($profile['homepage']) {
- $basic_fields += self::buildField('homepage', $this->t('Homepage:'), HTML::toLink($profile['homepage']));
+ $basic_fields += self::buildField(
+ 'homepage',
+ $this->t('Homepage:'),
+ $this->tryRelMe($profile['homepage']) ?: $profile['homepage']
+ );
}
if (
$custom_fields += self::buildField(
'custom_' . $profile_field->order,
$profile_field->label,
- BBCode::convertForUriId($profile['uri-id'], $profile_field->value),
+ $this->tryRelMe($profile_field->value) ?: BBCode::convertForUriId($profile['uri-id'], $profile_field->value),
'aprofile custom'
);
}
- //show subcribed forum if it is enabled in the usersettings
+ //show subscribed group if it is enabled in the usersettings
if (Feature::isEnabled($profile['uid'], 'forumlist_profile')) {
$custom_fields += self::buildField(
- 'forumlist',
- $this->t('Forums:'),
- ForumManager::profileAdvanced($profile['uid'])
+ 'group_list',
+ $this->t('Groups:'),
+ GroupManager::profileAdvanced($profile['uid'])
);
}
$htmlhead .= '<link rel="alternate" type="application/atom+xml" href="' . $this->baseUrl . '/feed/' . $nickname . '/" title="' . $this->t('%s\'s posts', $profile['name']) . '"/>' . "\n";
$htmlhead .= '<link rel="alternate" type="application/atom+xml" href="' . $this->baseUrl . '/feed/' . $nickname . '/comments" title="' . $this->t('%s\'s comments', $profile['name']) . '"/>' . "\n";
$htmlhead .= '<link rel="alternate" type="application/atom+xml" href="' . $this->baseUrl . '/feed/' . $nickname . '/activity" title="' . $this->t('%s\'s timeline', $profile['name']) . '"/>' . "\n";
- $uri = urlencode('acct:' . $profile['nickname'] . '@' . $this->baseUrl->getHostname() . ($this->baseUrl->getUrlPath() ? '/' . $this->baseUrl->getUrlPath() : ''));
+ $uri = urlencode('acct:' . $profile['nickname'] . '@' . $this->baseUrl->getHost() . ($this->baseUrl->getPath() ? '/' . $this->baseUrl->getPath() : ''));
$htmlhead .= '<link rel="lrdd" type="application/xrd+xml" href="' . $this->baseUrl . '/xrd/?uri=' . $uri . '" />' . "\n";
header('Link: <' . $this->baseUrl . '/xrd/?uri=' . $uri . '>; rel="lrdd"; type="application/xrd+xml"', false);
return $htmlhead;
}
+
+ /**
+ * Check if the input is an HTTP(S) link and returns a rel="me" link if yes, empty string if not
+ *
+ * @param string $input
+ * @return string
+ */
+ private function tryRelMe(string $input): string
+ {
+ if (preg_match(Strings::onlyLinkRegEx(), trim($input))) {
+ return '<a href="' . trim($input) . '" target="_blank" rel="noopener noreferrer me">' . trim($input) . '</a>';
+ }
+
+ return '';
+ }
}