X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FBaseSettings.php;h=c1033e730cc6a73a40eea91b87636bd6e1e66a10;hb=d27576059670faf87f80eaae2b4560f85b5310fc;hp=d4652cc9f168f3a9a4d68d471a81eb059694ff6a;hpb=96b9619608f92d07c231ea14492c50b410f04e9f;p=friendica.git diff --git a/src/Module/BaseSettings.php b/src/Module/BaseSettings.php index d4652cc9f1..c1033e730c 100644 --- a/src/Module/BaseSettings.php +++ b/src/Module/BaseSettings.php @@ -1,108 +1,185 @@ . + * + */ namespace Friendica\Module; +use Friendica\App; use Friendica\BaseModule; use Friendica\Content\Feature; +use Friendica\Content\Nav; +use Friendica\Core\L10n; use Friendica\Core\Renderer; -use Friendica\DI; +use Friendica\Core\Session\Capability\IHandleUserSessions; +use Friendica\Network\HTTPException\ForbiddenException; +use Friendica\Util\Profiler; +use Psr\Log\LoggerInterface; class BaseSettings extends BaseModule { - public static function content(array $parameters = []) + /** @var App\Page */ + protected $page; + /** @var IHandleUserSessions */ + protected $session; + + public function __construct(IHandleUserSessions $session, App\Page $page, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = []) { - $a = DI::app(); + parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters); + + $this->page = $page; + $this->session = $session; + + if ($this->session->getSubManagedUserId()) { + throw new ForbiddenException($this->t('Permission denied.')); + } + } + protected function content(array $request = []): string + { + Nav::setSelected('settings'); + + if (!$this->session->getLocalUserId()) { + $this->session->set('return_path', $this->args->getCommand()); + $this->baseUrl->redirect('login'); + } + + $this->createAside(); + + return ''; + } + + public function createAside() + { $tpl = Renderer::getMarkupTemplate('settings/head.tpl'); - DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl, [ - '$ispublic' => DI::l10n()->t('everybody') + $this->page['htmlhead'] .= Renderer::replaceMacros($tpl, [ + '$ispublic' => $this->t('everybody') ]); $tabs = []; $tabs[] = [ - 'label' => DI::l10n()->t('Account'), - 'url' => 'settings', - 'selected' => (($a->argc == 1) && ($a->argv[0] === 'settings') ? 'active' : ''), + 'label' => $this->t('Account'), + 'url' => 'settings', + 'selected' => static::class == Settings\Account::class ? 'active' : '', 'accesskey' => 'o', ]; $tabs[] = [ - 'label' => DI::l10n()->t('Two-factor authentication'), - 'url' => 'settings/2fa', - 'selected' => (($a->argc > 1) && ($a->argv[1] === '2fa') ? 'active' : ''), - 'accesskey' => 'o', + 'label' => $this->t('Two-factor authentication'), + 'url' => 'settings/2fa', + 'selected' => in_array(static::class, [ + Settings\TwoFactor\AppSpecific::class, + Settings\TwoFactor\Index::class, + Settings\TwoFactor\Recovery::class, + Settings\TwoFactor\Trusted::class, + Settings\TwoFactor\Verify::class + ]) ? 'active' : '', + 'accesskey' => '2', ]; $tabs[] = [ - 'label' => DI::l10n()->t('Profile'), - 'url' => 'settings/profile', - 'selected' => (($a->argc > 1) && ($a->argv[1] === 'profile') ? 'active' : ''), + 'label' => $this->t('Profile'), + 'url' => 'settings/profile', + 'selected' => in_array(static::class, [ + Settings\Profile\Index::class, + Settings\Profile\Photo\Crop::class, + Settings\Profile\Photo\Index::class, + ]) ? 'active' : '', 'accesskey' => 'p', ]; if (Feature::get()) { $tabs[] = [ - 'label' => DI::l10n()->t('Additional features'), - 'url' => 'settings/features', - 'selected' => (($a->argc > 1) && ($a->argv[1] === 'features') ? 'active' : ''), + 'label' => $this->t('Additional features'), + 'url' => 'settings/features', + 'selected' => static::class == Settings\Features::class ? 'active' : '', 'accesskey' => 't', ]; } $tabs[] = [ - 'label' => DI::l10n()->t('Display'), - 'url' => 'settings/display', - 'selected' => (($a->argc > 1) && ($a->argv[1] === 'display') ? 'active' : ''), + 'label' => $this->t('Display'), + 'url' => 'settings/display', + 'selected' => static::class == Settings\Display::class ? 'active' : '', 'accesskey' => 'i', ]; $tabs[] = [ - 'label' => DI::l10n()->t('Social Networks'), - 'url' => 'settings/connectors', - 'selected' => (($a->argc > 1) && ($a->argv[1] === 'connectors') ? 'active' : ''), + 'label' => $this->t('Channels'), + 'url' => 'settings/channels', + 'selected' => static::class == Settings\Channels::class ? 'active' : '', + 'accesskey' => '', + ]; + + $tabs[] = [ + 'label' => $this->t('Social Networks'), + 'url' => 'settings/connectors', + 'selected' => static::class == Settings\Connectors::class ? 'active' : '', 'accesskey' => 'w', ]; $tabs[] = [ - 'label' => DI::l10n()->t('Addons'), - 'url' => 'settings/addon', - 'selected' => (($a->argc > 1) && ($a->argv[1] === 'addon') ? 'active' : ''), + 'label' => $this->t('Addons'), + 'url' => 'settings/addons', + 'selected' => static::class == Settings\Addons::class ? 'active' : '', 'accesskey' => 'l', ]; $tabs[] = [ - 'label' => DI::l10n()->t('Delegations'), - 'url' => 'settings/delegation', - 'selected' => (($a->argc > 1) && ($a->argv[1] === 'delegation') ? 'active' : ''), + 'label' => $this->t('Manage Accounts'), + 'url' => 'settings/delegation', + 'selected' => static::class == Settings\Delegation::class ? 'active' : '', 'accesskey' => 'd', ]; $tabs[] = [ - 'label' => DI::l10n()->t('Connected apps'), - 'url' => 'settings/oauth', - 'selected' => (($a->argc > 1) && ($a->argv[1] === 'oauth') ? 'active' : ''), + 'label' => $this->t('Connected apps'), + 'url' => 'settings/oauth', + 'selected' => static::class == Settings\OAuth::class ? 'active' : '', 'accesskey' => 'b', ]; $tabs[] = [ - 'label' => DI::l10n()->t('Export personal data'), - 'url' => 'settings/userexport', - 'selected' => (($a->argc > 1) && ($a->argv[1] === 'userexport') ? 'active' : ''), + 'label' => $this->t('Remote servers'), + 'url' => 'settings/server', + 'selected' => static::class == Settings\Server\Index::class ? 'active' : '', + 'accesskey' => 's', + ]; + + $tabs[] = [ + 'label' => $this->t('Export personal data'), + 'url' => 'settings/userexport', + 'selected' => static::class == Settings\UserExport::class ? 'active' : '', 'accesskey' => 'e', ]; $tabs[] = [ - 'label' => DI::l10n()->t('Remove account'), - 'url' => 'removeme', - 'selected' => (($a->argc == 1) && ($a->argv[0] === 'removeme') ? 'active' : ''), + 'label' => $this->t('Remove account'), + 'url' => 'settings/removeme', + 'selected' => static::class === Settings\RemoveMe::class ? 'active' : '', 'accesskey' => 'r', ]; - - $tabtpl = Renderer::getMarkupTemplate("generic_links_widget.tpl"); - DI::page()['aside'] = Renderer::replaceMacros($tabtpl, [ - '$title' => DI::l10n()->t('Settings'), + $tabtpl = Renderer::getMarkupTemplate('generic_links_widget.tpl'); + $this->page['aside'] = Renderer::replaceMacros($tabtpl, [ + '$title' => $this->t('Settings'), '$class' => 'settings-widget', '$items' => $tabs, ]);