]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Delegation.php
Use rawContent for Special Options to avoid a protected options() method
[friendica.git] / src / Module / Delegation.php
index 77baefeaa5871321adfd47418476c4c1ad0872a8..c14573c8b330c9a76e55384ac6e31d6e44938aa1 100644 (file)
@@ -1,30 +1,50 @@
 <?php
+/**
+ * @copyright Copyright (C) 2010-2022, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
 
 namespace Friendica\Module;
 
 use Friendica\BaseModule;
 use Friendica\Core\Hook;
-use Friendica\Core\L10n;
 use Friendica\Core\Renderer;
 use Friendica\Core\Session;
 use Friendica\Database\DBA;
-use Friendica\Model\Contact;
+use Friendica\DI;
+use Friendica\Model\Notification;
 use Friendica\Model\User;
 use Friendica\Network\HTTPException\ForbiddenException;
+use Friendica\Util\Proxy;
 
 /**
  * Switches current user between delegates/parent user
  */
 class Delegation extends BaseModule
 {
-       public static function post()
+       protected function post(array $request = [])
        {
                if (!local_user()) {
                        return;
                }
 
                $uid = local_user();
-               $orig_record = self::getApp()->user;
+               $orig_record = User::getById(DI::app()->getLoggedInUserId());
 
                if (Session::get('submanage')) {
                        $user = User::getById(Session::get('submanage'));
@@ -79,7 +99,7 @@ class Delegation extends BaseModule
 
                Session::clear();
 
-               Session::setAuthenticatedForUser(self::getApp(), $user, true, true);
+               DI::auth()->setForUser(DI::app(), $user, true, true);
 
                if ($limited_id) {
                        Session::set('submanage', $original_id);
@@ -88,47 +108,44 @@ class Delegation extends BaseModule
                $ret = [];
                Hook::callAll('home_init', $ret);
 
-               self::getApp()->internalRedirect('profile/' . self::getApp()->user['nickname']);
-               // NOTREACHED
+               notice($this->t('You are now logged in as %s', $user['username']));
+
+               DI::baseUrl()->redirect('network');
        }
 
-       public static function content()
+       protected function content(array $request = []): string
        {
                if (!local_user()) {
-                       throw new ForbiddenException(L10n::t('Permission denied.'));
+                       throw new ForbiddenException(DI::l10n()->t('Permission denied.'));
                }
 
-               $identities = self::getApp()->identities;
+               $identities = User::identities(DI::session()->get('submanage', local_user()));
 
                //getting additinal information for each identity
                foreach ($identities as $key => $identity) {
-                       $thumb = Contact::selectFirst(['thumb'], ['uid' => $identity['uid'], 'self' => true]);
-                       if (!DBA::isResult($thumb)) {
-                               continue;
-                       }
-
-                       $identities[$key]['thumb'] = $thumb['thumb'];
+                       $identities[$key]['thumb'] = User::getAvatarUrl($identity, Proxy::SIZE_THUMB);
 
-                       $identities[$key]['selected'] = ($identity['nickname'] === self::getApp()->user['nickname']);
+                       $identities[$key]['selected'] = ($identity['nickname'] === DI::app()->getLoggedInUserNickname());
 
-                       $condition = ["`uid` = ? AND `msg` != '' AND NOT (`type` IN (?, ?)) AND NOT `seen`", $identity['uid'], NOTIFY_INTRO, NOTIFY_MAIL];
+                       $condition = ["`msg` != '' AND NOT (`type` IN (?, ?)) AND NOT `seen`", Notification\Type::INTRO, Notification\Type::MAIL];
                        $params = ['distinct' => true, 'expression' => 'parent'];
-                       $notifications = DBA::count('notify', $condition, $params);
+                       $notifications = DI::notify()->countForUser($identity['uid'], $condition, $params);
 
                        $params = ['distinct' => true, 'expression' => 'convid'];
                        $notifications += DBA::count('mail', ['uid' => $identity['uid'], 'seen' => false], $params);
 
-                       $notifications += DBA::count('intro', ['blocked' => false, 'ignore' => false, 'uid' => $identity['uid']]);
+                       $notifications += DI::intro()->countActiveForUser($identity['uid']);
 
                        $identities[$key]['notifications'] = $notifications;
                }
 
                $o = Renderer::replaceMacros(Renderer::getMarkupTemplate('delegation.tpl'), [
-                       '$title'      => L10n::t('Manage Identities and/or Pages'),
-                       '$desc'       => L10n::t('Toggle between different identities or community/group pages which share your account details or which you have been granted "manage" permissions'),
-                       '$choose'     => L10n::t('Select an identity to manage: '),
+                       '$title'      => DI::l10n()->t('Switch between your accounts'),
+                       '$settings_label' => DI::l10n()->t('Manage your accounts'),
+                       '$desc'       => DI::l10n()->t('Toggle between different identities or community/group pages which share your account details or which you have been granted "manage" permissions'),
+                       '$choose'     => DI::l10n()->t('Select an identity to manage: '),
                        '$identities' => $identities,
-                       '$submit'     => L10n::t('Submit'),
+                       '$submit'     => DI::l10n()->t('Submit'),
                ]);
 
                return $o;