eventDispatcher->dispatch($event); $view = $this->moduleTemplateFactory->create($request); $view->setLayout(ModuleLayout::NORMAL); $view->assignMultiple([ 'typo3Info' => $this->typo3Information, 'typo3Version' => $this->version, 'donationUrl' => $this->typo3Information::URL_DONATE, 'trademarkUrl' => $this->typo3Information::URL_TRADEMARK, 'loadedExtensions' => $this->getLoadedExtensions(), 'messages' => $event->getMessages(), 'modules' => $this->moduleProvider->getModules($this->getBackendUser()), ]); return $view->renderResponse('About/Index'); } /** * Fetches a list of all active (loaded) extensions in the current system */ protected function getLoadedExtensions(): array { $extensions = []; foreach ($this->packageManager->getActivePackages() as $package) { // Skip system extensions if ($package->getPackageMetaData()->isFrameworkType()) { continue; } $extensions[] = [ 'key' => $package->getPackageKey(), 'title' => $package->getPackageMetaData()->getTitle(), 'authors' => $package->getValueFromComposerManifest('authors'), ]; } return $extensions; } protected function getBackendUser(): BackendUserAuthentication { return $GLOBALS['BE_USER']; } }