getStatusInternal(false); } public function getLabel(): string { return 'system'; } /** * Returns the detailed status of an extension or (sub)system * * @return Status[] */ public function getDetailedStatus() { return $this->getStatusInternal(true); } /** * @param bool $verbose * @return Status[] */ protected function getStatusInternal($verbose) { $statusMessageQueue = new FlashMessageQueue('install'); foreach (GeneralUtility::makeInstance(Check::class)->getStatus() as $message) { $statusMessageQueue->enqueue($message); } foreach (GeneralUtility::makeInstance(SetupCheck::class)->getStatus() as $message) { $statusMessageQueue->enqueue($message); } foreach (GeneralUtility::makeInstance(DatabaseCheck::class)->getStatus() as $message) { $statusMessageQueue->enqueue($message); } $reportStatusTypes = [ 'error' => [], 'warning' => [], 'ok' => [], 'information' => [], 'notice' => [], ]; foreach ($statusMessageQueue->toArray() as $message) { switch ($message->getSeverity()) { case ContextualFeedbackSeverity::ERROR: $reportStatusTypes['error'][] = $message; break; case ContextualFeedbackSeverity::WARNING: $reportStatusTypes['warning'][] = $message; break; case ContextualFeedbackSeverity::OK: $reportStatusTypes['ok'][] = $message; break; case ContextualFeedbackSeverity::INFO: $reportStatusTypes['information'][] = $message; break; case ContextualFeedbackSeverity::NOTICE: $reportStatusTypes['notice'][] = $message; break; } } $statusArray = []; foreach ($reportStatusTypes as $type => $statusObjects) { $value = count($statusObjects); $message = ''; if ($verbose) { foreach ($statusObjects as $statusObject) { $message .= '### ' . $statusObject->getTitle() . ': ' . $statusObject->getSeverity()->name . CRLF; } } if ($value > 0) { $pathToXliff = 'LLL:EXT:install/Resources/Private/Language/Report/locallang.xlf'; // Map information type to enums which is used in \TYPO3\CMS\Core\Type\ContextualFeedbackSeverity if ($type === 'information') { $type = 'info'; } if (!$verbose) { $message = $this->getLanguageService()->sL($pathToXliff . ':environment.status.message.' . $type); } $severity = constant('\TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::' . strtoupper($type)); $statusArray[] = new Status( $this->getLanguageService()->sL($pathToXliff . ':environment.status.title'), sprintf($this->getLanguageService()->sL($pathToXliff . ':environment.status.value'), $value), $message, $severity ); } } return $statusArray; } protected function getLanguageService(): ?LanguageService { return $GLOBALS['LANG'] ?? null; } }