[BUGFIX] Supply returnURL to EXT:beuser usergroups
[Packages/TYPO3.CMS.git] / typo3 / sysext / beuser / Classes / ViewHelpers / SwitchUserViewHelper.php
1 <?php
2 namespace TYPO3\CMS\Beuser\ViewHelpers;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16
17 use TYPO3\CMS\Beuser\Domain\Model\BackendUser;
18 use TYPO3\CMS\Core\Imaging\Icon;
19 use TYPO3\CMS\Core\Imaging\IconFactory;
20 use TYPO3\CMS\Core\Utility\GeneralUtility;
21 use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
22 use TYPO3\CMS\Fluid\Core\Rendering\RenderingContextInterface;
23 use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
24 use TYPO3\CMS\Fluid\Core\ViewHelper\Facets\CompilableInterface;
25
26 /**
27 * Displays 'SwitchUser' link with sprite icon to change current backend user to target (non-admin) backendUser
28 * @internal
29 */
30 class SwitchUserViewHelper extends AbstractViewHelper implements CompilableInterface
31 {
32 /**
33 * Render link with sprite icon to change current backend user to target
34 *
35 * @param BackendUser $backendUser Target backendUser to switch active session to
36 * @return string
37 */
38 public function render(BackendUser $backendUser)
39 {
40 return static::renderStatic(
41 array(
42 'backendUser' => $backendUser
43 ),
44 $this->buildRenderChildrenClosure(),
45 $this->renderingContext
46 );
47 }
48 /**
49 * @param array $arguments
50 * @param callable $renderChildrenClosure
51 * @param RenderingContextInterface $renderingContext
52 *
53 * @return string
54 */
55 public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)
56 {
57 $backendUser = $arguments['backendUser'];
58 $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
59 if ($backendUser->getUid() == $GLOBALS['BE_USER']->user['uid'] || !$backendUser->isActive()) {
60 return '<span class="btn btn-default disabled">' . $iconFactory->getIcon('empty-empty', Icon::SIZE_SMALL)->render() . '</span>';
61 }
62 $title = LocalizationUtility::translate('switchBackMode', 'beuser');
63 return '<a class="btn btn-default" href="' .
64 htmlspecialchars(GeneralUtility::linkThisScript(array('SwitchUser' => $backendUser->getUid()))) .
65 '" target="_top" title="' . htmlspecialchars($title) . '">' .
66 $iconFactory->getIcon('actions-system-backend-user-switch', Icon::SIZE_SMALL)->render() . '</a>';
67 }
68 }