From 3a42849759f6705b6da4a592cb668b62e16e8ebf Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 27 Jul 2023 17:02:46 +0200 Subject: [PATCH] Add current user's hovercard to removeme page - Extract Hovercard generation to Content\Widget --- src/Content/Widget/Hovercard.php | 70 ++++++++++++++++++++++++++++ src/Module/Contact/Hovercard.php | 35 +------------- src/Module/Settings/RemoveMe.php | 4 ++ view/templates/settings/removeme.tpl | 2 + 4 files changed, 78 insertions(+), 33 deletions(-) create mode 100644 src/Content/Widget/Hovercard.php diff --git a/src/Content/Widget/Hovercard.php b/src/Content/Widget/Hovercard.php new file mode 100644 index 0000000000..aef8195656 --- /dev/null +++ b/src/Content/Widget/Hovercard.php @@ -0,0 +1,70 @@ +. + * + */ + +namespace Friendica\Content\Widget; + +use Friendica\Core\Renderer; +use Friendica\Database\DBA; +use Friendica\Model\Contact; +use Friendica\Network\HTTPException; +use Friendica\Util\Strings; + +class Hovercard +{ + /** + * @param array $contact + * @param int $localUid Used to show user actions + * @return string + * @throws HTTPException\InternalServerErrorException + * @throws HTTPException\ServiceUnavailableException + * @throws \ImagickException + */ + public static function getHTML(array $contact, int $localUid = 0): string + { + if ($localUid) { + $actions = Contact::photoMenu($contact, $localUid); + } else { + $actions = []; + } + + // Move the contact data to the profile array so we can deliver it to + $tpl = Renderer::getMarkupTemplate('hovercard.tpl'); + return Renderer::replaceMacros($tpl, [ + '$profile' => [ + 'name' => $contact['name'], + 'nick' => $contact['nick'], + 'addr' => $contact['addr'] ?: $contact['url'], + 'thumb' => Contact::getThumb($contact), + 'url' => Contact::magicLinkByContact($contact), + 'nurl' => $contact['nurl'], + 'location' => $contact['location'], + 'about' => $contact['about'], + 'network_link' => Strings::formatNetworkName($contact['network'], $contact['url']), + 'tags' => $contact['keywords'], + 'bd' => $contact['bd'] <= DBA::NULL_DATE ? '' : $contact['bd'], + 'account_type' => Contact::getAccountType($contact['contact-type']), + 'contact_type' => $contact['contact-type'], + 'actions' => $actions, + 'self' => $contact['self'], + ], + ]); + } +} diff --git a/src/Module/Contact/Hovercard.php b/src/Module/Contact/Hovercard.php index 792a3d6bbc..cea5c4b968 100644 --- a/src/Module/Contact/Hovercard.php +++ b/src/Module/Contact/Hovercard.php @@ -23,17 +23,15 @@ namespace Friendica\Module\Contact; use Friendica\App; use Friendica\BaseModule; +use Friendica\Content\Widget; use Friendica\Core\Config\Capability\IManageConfigValues; use Friendica\Core\L10n; -use Friendica\Core\Renderer; use Friendica\Core\Session\Capability\IHandleUserSessions; use Friendica\Core\System; -use Friendica\Database\DBA; use Friendica\Model\Contact; use Friendica\Module\Response; use Friendica\Network\HTTPException; use Friendica\Util\Profiler; -use Friendica\Util\Strings; use Psr\Log\LoggerInterface; /** @@ -88,35 +86,6 @@ class Hovercard extends BaseModule throw new HTTPException\NotFoundException(); } - // Get the photo_menu - the menu if possible contact actions - if ($this->userSession->isAuthenticated()) { - $actions = Contact::photoMenu($contact, $this->userSession->getLocalUserId()); - } else { - $actions = []; - } - - // Move the contact data to the profile array so we can deliver it to - $tpl = Renderer::getMarkupTemplate('hovercard.tpl'); - $o = Renderer::replaceMacros($tpl, [ - '$profile' => [ - 'name' => $contact['name'], - 'nick' => $contact['nick'], - 'addr' => $contact['addr'] ?: $contact['url'], - 'thumb' => Contact::getThumb($contact), - 'url' => Contact::magicLinkByContact($contact), - 'nurl' => $contact['nurl'], - 'location' => $contact['location'], - 'about' => $contact['about'], - 'network_link' => Strings::formatNetworkName($contact['network'], $contact['url']), - 'tags' => $contact['keywords'], - 'bd' => $contact['bd'] <= DBA::NULL_DATE ? '' : $contact['bd'], - 'account_type' => Contact::getAccountType($contact['contact-type']), - 'contact_type' => $contact['contact-type'], - 'actions' => $actions, - 'self' => $contact['self'], - ], - ]); - - $this->httpExit($o); + $this->httpExit(Widget\Hovercard::getHTML($contact, $this->userSession->getLocalUserId())); } } diff --git a/src/Module/Settings/RemoveMe.php b/src/Module/Settings/RemoveMe.php index 1225cc1e2e..99e9daad4c 100644 --- a/src/Module/Settings/RemoveMe.php +++ b/src/Module/Settings/RemoveMe.php @@ -22,6 +22,7 @@ namespace Friendica\Module\Settings; use Friendica\App; +use Friendica\Content\Widget; use Friendica\Core\Config\Capability\IManageConfigValues; use Friendica\Core\L10n; use Friendica\Core\Renderer; @@ -128,6 +129,9 @@ class RemoveMe extends BaseSettings 'title' => DI::l10n()->t('Remove My Account'), 'desc' => DI::l10n()->t('This will completely remove your account. Once this has been done it is not recoverable.'), ], + + '$hovercard' => Widget\Hovercard::getHTML(User::getOwnerDataById($this->session->getLocalUserId())), + '$password' => [$hash, $this->t('Please enter your password for verification:'), null, null, true], ]); } diff --git a/view/templates/settings/removeme.tpl b/view/templates/settings/removeme.tpl index 0532d9c695..066cbc4470 100644 --- a/view/templates/settings/removeme.tpl +++ b/view/templates/settings/removeme.tpl @@ -4,6 +4,8 @@
{{$l10n.desc nofilter}}
+ {{$hovercard nofilter}} +
{{include file="field_password.tpl" field=$password}}