]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Delegation.php
Issue 13052: The limit parameter now behaves like the Mastodon counterpart
[friendica.git] / src / Module / Delegation.php
index 54f8688818fdc2c5e2030ceaf839c220452f5234..3595ff7f302f77db77be2834a0b252ef7563239c 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -24,7 +24,6 @@ namespace Friendica\Module;
 use Friendica\BaseModule;
 use Friendica\Core\Hook;
 use Friendica\Core\Renderer;
-use Friendica\Core\Session;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Notification;
@@ -37,17 +36,17 @@ use Friendica\Util\Proxy;
  */
 class Delegation extends BaseModule
 {
-       public static function post(array $parameters = [])
+       protected function post(array $request = [])
        {
-               if (!local_user()) {
+               if (!DI::userSession()->getLocalUserId()) {
                        return;
                }
 
-               $uid = local_user();
+               $uid = DI::userSession()->getLocalUserId();
                $orig_record = User::getById(DI::app()->getLoggedInUserId());
 
-               if (Session::get('submanage')) {
-                       $user = User::getById(Session::get('submanage'));
+               if (DI::userSession()->getSubManagedUserId()) {
+                       $user = User::getById(DI::userSession()->getSubManagedUserId());
                        if (DBA::isResult($user)) {
                                $uid = intval($user['uid']);
                                $orig_record = $user;
@@ -97,43 +96,44 @@ class Delegation extends BaseModule
                        return;
                }
 
-               Session::clear();
+               DI::session()->clear();
 
                DI::auth()->setForUser(DI::app(), $user, true, true);
 
                if ($limited_id) {
-                       Session::set('submanage', $original_id);
+                       DI::userSession()->setSubManagedUserId($original_id);
                }
 
                $ret = [];
                Hook::callAll('home_init', $ret);
 
-               DI::baseUrl()->redirect('profile/' . DI::app()->getLoggedInUserNickname());
-               // NOTREACHED
+               DI::sysmsg()->addNotice($this->t('You are now logged in as %s', $user['username']));
+
+               DI::baseUrl()->redirect('network');
        }
 
-       public static function content(array $parameters = [])
+       protected function content(array $request = []): string
        {
-               if (!local_user()) {
+               if (!DI::userSession()->getLocalUserId()) {
                        throw new ForbiddenException(DI::l10n()->t('Permission denied.'));
                }
 
-               $identities = User::identities(DI::session()->get('submanage', local_user()));
+               $identities = User::identities(DI::userSession()->getSubManagedUserId() ?: DI::userSession()->getLocalUserId());
 
-               //getting additinal information for each identity
+               //getting additional information for each identity
                foreach ($identities as $key => $identity) {
-                       $identities[$key]['thumb'] = User::getAvatarUrlForId($identity['uid'], Proxy::SIZE_THUMB);
+                       $identities[$key]['thumb'] = User::getAvatarUrl($identity, Proxy::SIZE_THUMB);
 
                        $identities[$key]['selected'] = ($identity['nickname'] === DI::app()->getLoggedInUserNickname());
 
-                       $condition = ["`uid` = ? AND `msg` != '' AND NOT (`type` IN (?, ?)) AND NOT `seen`", $identity['uid'], Notification\Type::INTRO, Notification\Type::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;
                }