‪TYPO3CMS  ‪main
AddLiveSearchResultActionsListener.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
27 use TYPO3\CMS\Core\Imaging\IconSize;
30 
37 {
39 
40  public function ‪__construct(
41  protected readonly ‪IconFactory $iconFactory,
42  protected readonly ‪LanguageServiceFactory $languageServiceFactory
43  ) {
44  $this->languageService = $this->languageServiceFactory->createFromUserPreferences($this->‪getBackendUser());
45  }
46 
47  #[AsEventListener('typo3/cms-backend/add-live-search-result-actions-listener')]
48  public function ‪__invoke(‪ModifyResultItemInLiveSearchEvent $event): void
49  {
50  $resultItem = $event->‪getResultItem();
51  if ($resultItem->getProviderClassName() !== DatabaseRecordProvider::class) {
52  return;
53  }
54 
55  if (($resultItem->getExtraData()['table'] ?? null) === 'be_users') {
56  $this->‪addSwitchUserAction($resultItem);
57  }
58  }
59 
60  protected function ‪addSwitchUserAction(‪ResultItem $resultItem): void
61  {
62  $row = $resultItem->‪getInternalData()['row'];
63  $backendUserIsActive =
64  (int)$row['disable'] === 0
65  && ($row['starttime'] === 0 && $row['endtime'] === 0 || $row['starttime'] <= time() && ($row['starttime'] === 0 && $row['endtime'] > time()));
66  $currentUser = $this->‪getBackendUser();
67 
68  if (
69  $backendUserIsActive
70  && $currentUser->isAdmin()
71  && $currentUser->getOriginalUserIdWhenInSwitchUserMode() === null
72  && (int)$currentUser->getUserId() !== (int)$resultItem->‪getExtraData()['uid']
73  ) {
74  $switchUserAction = (new ‪ResultItemAction('switch_backend_user'))
75  ->setLabel($this->languageService->sL('LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:switchBackMode'))
76  ->setIcon($this->iconFactory->getIcon('actions-system-backend-user-switch', IconSize::SMALL))
77  ->setUrl('#');
78  $resultItem->‪addAction($switchUserAction);
79  }
80  }
81 
83  {
84  return ‪$GLOBALS['BE_USER'];
85  }
86 }
‪TYPO3\CMS\Core\Localization\LanguageServiceFactory
Definition: LanguageServiceFactory.php:25
‪TYPO3\CMS\Backend\Search\EventListener\AddLiveSearchResultActionsListener\addSwitchUserAction
‪addSwitchUserAction(ResultItem $resultItem)
Definition: AddLiveSearchResultActionsListener.php:60
‪TYPO3\CMS\Backend\Search\EventListener\AddLiveSearchResultActionsListener\$languageService
‪LanguageService $languageService
Definition: AddLiveSearchResultActionsListener.php:38
‪TYPO3\CMS\Core\Attribute\AsEventListener
Definition: AsEventListener.php:25
‪TYPO3\CMS\Backend\Search\EventListener\AddLiveSearchResultActionsListener\__invoke
‪__invoke(ModifyResultItemInLiveSearchEvent $event)
Definition: AddLiveSearchResultActionsListener.php:48
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:34
‪TYPO3\CMS\Backend\Search\EventListener
Definition: AddLiveSearchResultActionsListener.php:18
‪TYPO3\CMS\Backend\Search\EventListener\AddLiveSearchResultActionsListener
Definition: AddLiveSearchResultActionsListener.php:37
‪TYPO3\CMS\Backend\Search\Event\ModifyResultItemInLiveSearchEvent\getResultItem
‪getResultItem()
Definition: ModifyResultItemInLiveSearchEvent.php:29
‪TYPO3\CMS\Backend\Search\LiveSearch\ResultItem\getExtraData
‪getExtraData()
Definition: ResultItem.php:84
‪TYPO3\CMS\Backend\Search\LiveSearch\DatabaseRecordProvider
Definition: DatabaseRecordProvider.php:53
‪TYPO3\CMS\Backend\Search\LiveSearch\ResultItem\getInternalData
‪getInternalData()
Definition: ResultItem.php:95
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Backend\Search\Event\ModifyResultItemInLiveSearchEvent
Definition: ModifyResultItemInLiveSearchEvent.php:26
‪TYPO3\CMS\Core\Localization\LanguageService
Definition: LanguageService.php:46
‪TYPO3\CMS\Backend\Search\LiveSearch\ResultItem
Definition: ResultItem.php:28
‪TYPO3\CMS\Backend\Search\EventListener\AddLiveSearchResultActionsListener\getBackendUser
‪getBackendUser()
Definition: AddLiveSearchResultActionsListener.php:82
‪TYPO3\CMS\Backend\Search\EventListener\AddLiveSearchResultActionsListener\__construct
‪__construct(protected readonly IconFactory $iconFactory, protected readonly LanguageServiceFactory $languageServiceFactory)
Definition: AddLiveSearchResultActionsListener.php:40
‪TYPO3\CMS\Backend\Search\LiveSearch\ResultItem\addAction
‪addAction(ResultItemAction $action)
Definition: ResultItem.php:77
‪TYPO3\CMS\Backend\Search\LiveSearch\ResultItemAction
Definition: ResultItemAction.php:28