<?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($parameters)
+ protected function post(array $request = [])
{
- if (!local_user()) {
+ if (!DI::userSession()->getLocalUserId()) {
return;
}
- $uid = local_user();
- $orig_record = self::getApp()->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;
return;
}
- Session::clear();
+ DI::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);
+ DI::userSession()->setSubManagedUserId($original_id);
}
$ret = [];
Hook::callAll('home_init', $ret);
- self::getApp()->internalRedirect('profile/' . self::getApp()->user['nickname']);
- // NOTREACHED
+ DI::sysmsg()->addNotice($this->t('You are now logged in as %s', $user['username']));
+
+ DI::baseUrl()->redirect('network');
}
- public static function content($parameters)
+ protected function content(array $request = []): string
{
- if (!local_user()) {
- throw new ForbiddenException(L10n::t('Permission denied.'));
+ if (!DI::userSession()->getLocalUserId()) {
+ throw new ForbiddenException(DI::l10n()->t('Permission denied.'));
}
- $identities = self::getApp()->identities;
+ $identities = User::identities(DI::userSession()->getSubManagedUserId() ?: DI::userSession()->getLocalUserId());
//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;