$this->getMissingPhpModulesOfExtensions(), ]; return $statuses; } public function getLabel(): string { return 'system'; } /** * Reports whether extensions need additional PHP modules different from standard core requirements * * @return \TYPO3\CMS\Reports\Status A status of missing PHP modules */ protected function getMissingPhpModulesOfExtensions() { $modules = []; if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install/mod/class.tx_install.php']['requiredPhpModules'] ?? null)) { foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install/mod/class.tx_install.php']['requiredPhpModules'] as $className) { $hookObject = GeneralUtility::makeInstance($className); $modules = $hookObject->setRequiredPhpModules($modules, $this); } } $missingPhpModules = []; foreach ($modules as $module) { if (is_array($module)) { $detectedSubmodules = false; foreach ($module as $submodule) { if (extension_loaded($submodule)) { $detectedSubmodules = true; } } if ($detectedSubmodules === false) { $missingPhpModules[] = sprintf($this->getLanguageService()->sL('LLL:EXT:reports/Resources/Private/Language/locallang_reports.xlf:status_phpModulesGroup'), '(' . implode(', ', $module) . ')'); } } elseif (!extension_loaded($module)) { $missingPhpModules[] = $module; } } if (!empty($missingPhpModules)) { $value = $this->getLanguageService()->sL('LLL:EXT:reports/Resources/Private/Language/locallang_reports.xlf:status_phpModulesMissing'); $message = sprintf($this->getLanguageService()->sL('LLL:EXT:reports/Resources/Private/Language/locallang_reports.xlf:status_phpModulesList'), implode(', ', $missingPhpModules)); $message .= ' ' . $this->getLanguageService()->sL('LLL:EXT:reports/Resources/Private/Language/locallang_reports.xlf:status_phpModulesInfo'); $severity = ContextualFeedbackSeverity::ERROR; } else { $value = $this->getLanguageService()->sL('LLL:EXT:reports/Resources/Private/Language/locallang_reports.xlf:status_phpModulesPresent'); $message = ''; $severity = ContextualFeedbackSeverity::OK; } return new ReportStatus($this->getLanguageService()->sL('LLL:EXT:reports/Resources/Private/Language/locallang_reports.xlf:status_phpModules'), $value, $message, $severity); } protected function getLanguageService(): LanguageService { return $GLOBALS['LANG']; } }