From eeb78d2d29eb8627e87e1bc9c90a892e4cfa8fdf Mon Sep 17 00:00:00 2001 From: nupplaPhil Date: Fri, 27 Dec 2019 22:53:09 +0100 Subject: [PATCH 1/3] Move mod/hcard to src\Module\HoverCard --- mod/hcard.php | 61 ---------------------------- src/Module/HoverCard.php | 85 ++++++++++++++++++++++++++++++++++++++++ static/routes.config.php | 11 +++--- 3 files changed, 91 insertions(+), 66 deletions(-) delete mode 100644 mod/hcard.php create mode 100644 src/Module/HoverCard.php diff --git a/mod/hcard.php b/mod/hcard.php deleted file mode 100644 index 013619bcb..000000000 --- a/mod/hcard.php +++ /dev/null @@ -1,61 +0,0 @@ -argc > 1) { - $which = $a->argv[1]; - } else { - throw new \Friendica\Network\HTTPException\NotFoundException(L10n::t('No profile')); - } - - $profile = 0; - if ((local_user()) && ($a->argc > 2) && ($a->argv[2] === 'view')) { - $which = $a->user['nickname']; - $profile = $a->argv[1]; - } - - Profile::load($a, $which, $profile); - - if (!empty($a->profile['page-flags']) && ($a->profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY)) { - $a->page['htmlhead'] .= ''; - } - if (!empty($a->profile['openidserver'])) { - $a->page['htmlhead'] .= '' . "\r\n"; - } - if (!empty($a->profile['openid'])) { - $delegate = ((strstr($a->profile['openid'], '://')) ? $a->profile['openid'] : 'http://' . $a->profile['openid']); - $a->page['htmlhead'] .= '' . "\r\n"; - } - - if (!$blocked) { - $keywords = $a->profile['pub_keywords'] ?? ''; - $keywords = str_replace([',',' ',',,'], [' ',',',','], $keywords); - if (strlen($keywords)) { - $a->page['htmlhead'] .= '' . "\r\n"; - } - } - - $a->page['htmlhead'] .= '' . "\r\n"; - $a->page['htmlhead'] .= '' . "\r\n"; - $uri = urlencode('acct:' . $a->profile['nickname'] . '@' . $a->getHostName() . (($a->getURLPath()) ? '/' . $a->getURLPath() : '')); - $a->page['htmlhead'] .= '' . "\r\n"; - header('Link: <' . System::baseUrl() . '/xrd/?uri=' . $uri . '>; rel="lrdd"; type="application/xrd+xml"', false); - - $dfrn_pages = ['request', 'confirm', 'notify', 'poll']; - foreach ($dfrn_pages as $dfrn) { - $a->page['htmlhead'] .= "\r\n"; - } -} diff --git a/src/Module/HoverCard.php b/src/Module/HoverCard.php new file mode 100644 index 000000000..0ca74c514 --- /dev/null +++ b/src/Module/HoverCard.php @@ -0,0 +1,85 @@ +get(2) === 'view') { + $nickname = $a->user['nickname']; + $profile = $parameters['profile']; + + // Show the profile hovercard + } elseif ($args->getArgc() < 2) { + $nickname = $parameters['profile']; + $profile = 0; + + } else { + /** @var L10n $l10n */ + $l10n = self::getClass(L10n::class); + throw new NotFoundException($l10n->t('No profile')); + } + + Profile::load($a, $nickname, $profile); + + /** @var Page $page */ + $page = self::getClass(Page::class); + + if (!empty($a->profile['page-flags']) && ($a->profile['page-flags'] == User::PAGE_FLAGS_COMMUNITY)) { + $page['htmlhead'] .= ''; + } + if (!empty($a->profile['openidserver'])) { + $page['htmlhead'] .= '' . "\r\n"; + } + if (!empty($a->profile['openid'])) { + $delegate = ((strstr($a->profile['openid'], '://')) ? $a->profile['openid'] : 'http://' . $a->profile['openid']); + $page['htmlhead'] .= '' . "\r\n"; + } + + /** @var Configuration $config */ + $config = self::getClass(Configuration::class); + // check if blocked + if ($config->get('system', 'block_public') && !Session::isAuthenticated()) { + $keywords = $a->profile['pub_keywords'] ?? ''; + $keywords = str_replace([',', ' ', ',,'], [' ', ',', ','], $keywords); + if (strlen($keywords)) { + $page['htmlhead'] .= '' . "\r\n"; + } + } + + /** @var BaseURL $baseUrl */ + $baseUrl = self::getClass(BaseURL::class); + + $uri = urlencode('acct:' . $a->profile['nickname'] . '@' . $baseUrl->getHostname() . ($baseUrl->getUrlPath() ? '/' . $baseUrl->getUrlPath() : '')); + + $page['htmlhead'] .= '' . "\r\n"; + $page['htmlhead'] .= '' . "\r\n"; + $page['htmlhead'] .= '' . "\r\n"; + header('Link: <' . $baseUrl->get() . '/xrd/?uri=' . $uri . '>; rel="lrdd"; type="application/xrd+xml"', false); + + foreach (['request', 'confirm', 'notify', 'poll'] as $dfrn) { + $page['htmlhead'] .= "get() . "/dfrn_{$dfrn}/{$nickname}\" />\r\n"; + } + } +} diff --git a/static/routes.config.php b/static/routes.config.php index d23b09216..ce2cf60c4 100644 --- a/static/routes.config.php +++ b/static/routes.config.php @@ -139,11 +139,12 @@ return [ '/{group:\d+}/add/{contact:\d+}' => [Module\Group::class, [R::GET, R::POST]], '/{group:\d+}/remove/{contact:\d+}' => [Module\Group::class, [R::GET, R::POST]], ], - '/hashtag' => [Module\Hashtag::class, [R::GET]], - '/home' => [Module\Home::class, [R::GET]], - '/help[/{doc:.+}]' => [Module\Help::class, [R::GET]], - '/inbox[/{nickname}]' => [Module\Inbox::class, [R::GET, R::POST]], - '/invite' => [Module\Invite::class, [R::GET, R::POST]], + '/hashtag' => [Module\Hashtag::class, [R::GET]], + '/help[/{doc:.+}]' => [Module\Help::class, [R::GET]], + '/home' => [Module\Home::class, [R::GET]], + '/hcard/{profile}[/{view}]' => [Module\HoverCard::class, [R::GET]], + '/inbox[/{nickname}]' => [Module\Inbox::class, [R::GET, R::POST]], + '/invite' => [Module\Invite::class, [R::GET, R::POST]], '/install' => [ '[/]' => [Module\Install::class, [R::GET, R::POST]], From 12e223b2ef6eb624a9c05fa1e5eb3e4c4e4d038f Mon Sep 17 00:00:00 2001 From: nupplaPhil Date: Fri, 27 Dec 2019 23:51:17 +0100 Subject: [PATCH 2/3] fix --- src/Module/HoverCard.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Module/HoverCard.php b/src/Module/HoverCard.php index 0ca74c514..4c035d521 100644 --- a/src/Module/HoverCard.php +++ b/src/Module/HoverCard.php @@ -31,7 +31,7 @@ class HoverCard extends BaseModule $profile = $parameters['profile']; // Show the profile hovercard - } elseif ($args->getArgc() < 2) { + } elseif ($args->getArgc() == 2) { $nickname = $parameters['profile']; $profile = 0; From 4d545825f029022590e41a420ad6b286c3ccc9f6 Mon Sep 17 00:00:00 2001 From: nupplaPhil Date: Sat, 28 Dec 2019 15:28:17 +0100 Subject: [PATCH 3/3] optimize usage of arguments --- src/Module/HoverCard.php | 11 +++-------- static/routes.config.php | 12 ++++++------ 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/Module/HoverCard.php b/src/Module/HoverCard.php index 4c035d521..210680922 100644 --- a/src/Module/HoverCard.php +++ b/src/Module/HoverCard.php @@ -20,21 +20,16 @@ class HoverCard extends BaseModule { public static function rawContent(array $parameters = []) { - /** @var Arguments $args */ - $args = self::getClass(Arguments::class); - $a = self::getApp(); - // A logged in user views a profile of a user - if ((local_user()) && $args->get(2) === 'view') { + if ((local_user()) && ($parameters['action'] ?? '') === 'view') { + // A logged in user views a profile of a user $nickname = $a->user['nickname']; $profile = $parameters['profile']; - + } elseif (empty($parameters['action'])) { // Show the profile hovercard - } elseif ($args->getArgc() == 2) { $nickname = $parameters['profile']; $profile = 0; - } else { /** @var L10n $l10n */ $l10n = self::getClass(L10n::class); diff --git a/static/routes.config.php b/static/routes.config.php index ce2cf60c4..f15ec97a2 100644 --- a/static/routes.config.php +++ b/static/routes.config.php @@ -139,12 +139,12 @@ return [ '/{group:\d+}/add/{contact:\d+}' => [Module\Group::class, [R::GET, R::POST]], '/{group:\d+}/remove/{contact:\d+}' => [Module\Group::class, [R::GET, R::POST]], ], - '/hashtag' => [Module\Hashtag::class, [R::GET]], - '/help[/{doc:.+}]' => [Module\Help::class, [R::GET]], - '/home' => [Module\Home::class, [R::GET]], - '/hcard/{profile}[/{view}]' => [Module\HoverCard::class, [R::GET]], - '/inbox[/{nickname}]' => [Module\Inbox::class, [R::GET, R::POST]], - '/invite' => [Module\Invite::class, [R::GET, R::POST]], + '/hashtag' => [Module\Hashtag::class, [R::GET]], + '/help[/{doc:.+}]' => [Module\Help::class, [R::GET]], + '/home' => [Module\Home::class, [R::GET]], + '/hcard/{profile}[/{action}]' => [Module\HoverCard::class, [R::GET]], + '/inbox[/{nickname}]' => [Module\Inbox::class, [R::GET, R::POST]], + '/invite' => [Module\Invite::class, [R::GET, R::POST]], '/install' => [ '[/]' => [Module\Install::class, [R::GET, R::POST]],