50 public function render(array $backendUser =
null,
int $size = 32,
bool $showIcon =
false)
52 if (!is_array($backendUser)) {
56 $cacheId =
'avatar_' . md5(
57 $backendUser[
'uid'] .
'/' .
68 $view->assignMultiple([
69 'image' => $this->
getImgTag($backendUser, $size),
70 'showIcon' => $showIcon,
71 'backendUser' => $backendUser
73 $avatar = $view->render();
87 public function getImgTag(array $backendUser =
null, $size = 32)
89 if (!is_array($backendUser)) {
94 if ($backendUser !==
null) {
95 $avatarImage = $this->
getImage($backendUser, $size);
99 $avatarImage = GeneralUtility::makeInstance(
106 $imageTag =
'<img src="' . htmlspecialchars($avatarImage->getUrl(
true)) .
'" ' .
107 'width="' . (int)$avatarImage->getWidth() .
'" ' .
108 'height="' . (int)$avatarImage->getHeight() .
'" />';
120 public function getImage(array $backendUser, $size)
122 foreach ($this->avatarProviders as $provider) {
123 $avatarImage = $provider->getImage($backendUser, $size);
124 if (!empty($avatarImage)) {
138 $providers =
$GLOBALS[
'TYPO3_CONF_VARS'][
'EXTCONF'][
'backend'][
'avatarProviders'] ?? [];
139 if (empty($providers)) {
142 foreach ($providers as $identifier => $configuration) {
143 if (empty($configuration) || !is_array($configuration)) {
144 throw new \RuntimeException(
145 'Missing configuration for avatar provider "' . $identifier .
'".',
149 if (!is_string($configuration[
'provider']) || empty($configuration[
'provider']) || !class_exists($configuration[
'provider']) || !is_subclass_of(
150 $configuration[
'provider'],
151 AvatarProviderInterface::class
153 throw new \RuntimeException(
154 'The avatar provider "' . $identifier .
'" defines an invalid provider. Ensure the class exists and implements the "' . AvatarProviderInterface::class .
'".',
160 $orderedProviders = GeneralUtility::makeInstance(DependencyOrderingService::class)->orderByDependencies($providers);
163 foreach ($orderedProviders as $configuration) {
164 $this->avatarProviders[] = GeneralUtility::makeInstance($configuration[
'provider']);
186 $view = GeneralUtility::makeInstance(StandaloneView::class);
187 $view->setLayoutRootPaths([GeneralUtility::getFileAbsFileName(
'EXT:backend/Resources/Private/Layouts')]);
188 $view->setPartialRootPaths([GeneralUtility::getFileAbsFileName(
'EXT:backend/Resources/Private/Partials')]);
189 $view->setTemplateRootPaths([GeneralUtility::getFileAbsFileName(
'EXT:backend/Resources/Private/Templates')]);
191 if ($filename ===
null) {
192 $filename =
'Main.html';
195 $view->setTemplatePathAndFilename(GeneralUtility::getFileAbsFileName(
'EXT:backend/Resources/Private/Templates/Avatar/' . $filename));
197 $view->getRequest()->setControllerExtensionName(
'Backend');
206 return GeneralUtility::makeInstance(CacheManager::class)->getCache(
'cache_runtime');