2 namespace TYPO3\CMS\Extensionmanager\Report;
62 $this->objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\ObjectManager::class);
63 $this->repositoryRepository = $this->objectManager->get(\TYPO3\CMS\Extensionmanager\Domain\Repository\RepositoryRepository::class);
64 $this->listUtility = $this->objectManager->get(\TYPO3\CMS\Extensionmanager\Utility\ListUtility::class);
65 $this->languageService = $this->objectManager->get(\TYPO3\CMS\Lang\LanguageService::class);
66 $this->languageService->includeLLFile(
'EXT:extensionmanager/Resources/Private/Language/locallang.xlf');
77 $status[
'mainRepositoryStatus'] = $this->getMainRepositoryStatus();
79 $extensionStatus = $this->getSecurityStatusOfExtensions();
80 $status[
'extensionsSecurityStatusInstalled'] = $extensionStatus->loaded;
81 $status[
'extensionsSecurityStatusNotInstalled'] = $extensionStatus->existing;
82 $status[
'extensionsOutdatedStatusInstalled'] = $extensionStatus->loadedoutdated;
83 $status[
'extensionsOutdatedStatusNotInstalled'] = $extensionStatus->existingoutdated;
93 protected function getMainRepositoryStatus()
96 $mainRepository = $this->repositoryRepository->findOneTypo3OrgRepository();
98 if (is_null($mainRepository) ===
true) {
99 $value = $this->languageService->getLL(
'report.status.mainRepository.notFound.value');
100 $message = $this->languageService->getLL(
'report.status.mainRepository.notFound.message');
101 $severity = \TYPO3\CMS\Reports\Status::ERROR;
102 }
elseif ($mainRepository->getLastUpdate()->getTimestamp() <
$GLOBALS[
'EXEC_TIME'] - 24 * 60 * 60 * 7) {
103 $value = $this->languageService->getLL(
'report.status.mainRepository.notUpToDate.value');
104 $message = $this->languageService->getLL(
'report.status.mainRepository.notUpToDate.message');
105 $severity = \TYPO3\CMS\Reports\Status::NOTICE;
107 $value = $this->languageService->getLL(
'report.status.mainRepository.upToDate.value');
109 $severity = \TYPO3\CMS\Reports\Status::OK;
113 $status = $this->objectManager->get(
114 \TYPO3\CMS\Reports\Status::class,
115 $this->languageService->getLL(
'report.status.mainRepository.title'),
129 protected function getSecurityStatusOfExtensions()
131 $extensionInformation = $this->listUtility->getAvailableAndInstalledExtensionsWithAdditionalInformation();
132 $loadedInsecure = array();
133 $existingInsecure = array();
134 $loadedOutdated = array();
135 $existingOutdated = array();
136 foreach ($extensionInformation as $extensionKey => $information) {
138 array_key_exists(
'terObject', $information)
139 && $information[
'terObject'] instanceof \TYPO3\CMS\Extensionmanager\Domain\Model\Extension
142 $terObject = $information[
'terObject'];
143 $insecureStatus = $terObject->getReviewState();
144 if ($insecureStatus === -1) {
146 array_key_exists(
'installed', $information)
147 && $information[
'installed'] ===
true
149 $loadedInsecure[] = array(
150 'extensionKey' => $extensionKey,
151 'version' => $terObject->getVersion(),
154 $existingInsecure[] = array(
155 'extensionKey' => $extensionKey,
156 'version' => $terObject->getVersion(),
159 }
elseif ($insecureStatus === -2) {
161 array_key_exists(
'installed', $information)
162 && $information[
'installed'] ===
true
164 $loadedOutdated[] = array(
165 'extensionKey' => $extensionKey,
166 'version' => $terObject->getVersion(),
169 $existingOutdated[] = array(
170 'extensionKey' => $extensionKey,
171 'version' => $terObject->getVersion(),
178 $result = new \stdClass();
180 if (empty($loadedInsecure)) {
181 $value = $this->languageService->getLL(
'report.status.loadedExtensions.noInsecureExtensionLoaded.value');
183 $severity = \TYPO3\CMS\Reports\Status::OK;
186 $this->languageService->getLL(
'report.status.loadedExtensions.insecureExtensionLoaded.value'),
187 count($loadedInsecure)
189 $extensionList = array();
190 foreach ($loadedInsecure as $insecureExtension) {
191 $extensionList[] = sprintf(
192 $this->languageService->getLL(
'report.status.loadedExtensions.insecureExtensionLoaded.message.extension'),
193 $insecureExtension[
'extensionKey'],
194 $insecureExtension[
'version']
198 $this->languageService->getLL(
'report.status.loadedExtensions.insecureExtensionLoaded.message'),
199 implode(
'', $extensionList)
201 $severity = \TYPO3\CMS\Reports\Status::ERROR;
203 $result->loaded = $this->objectManager->get(
204 \TYPO3\CMS\Reports\Status::class,
205 $this->languageService->getLL(
'report.status.loadedExtensions.title'),
211 if (empty($existingInsecure)) {
212 $value = $this->languageService->getLL(
'report.status.existingExtensions.noInsecureExtensionExists.value');
214 $severity = \TYPO3\CMS\Reports\Status::OK;
217 $this->languageService->getLL(
'report.status.existingExtensions.insecureExtensionExists.value'),
218 count($existingInsecure)
220 $extensionList = array();
221 foreach ($existingInsecure as $insecureExtension) {
222 $extensionList[] = sprintf(
223 $this->languageService->getLL(
'report.status.existingExtensions.insecureExtensionExists.message.extension'),
224 $insecureExtension[
'extensionKey'],
225 $insecureExtension[
'version']
229 $this->languageService->getLL(
'report.status.existingExtensions.insecureExtensionExists.message'),
230 implode(
'', $extensionList)
232 $severity = \TYPO3\CMS\Reports\Status::WARNING;
234 $result->existing = $this->objectManager->get(
235 \TYPO3\CMS\Reports\Status::class,
236 $this->languageService->getLL(
'report.status.existingExtensions.title'),
242 if (empty($loadedOutdated)) {
243 $value = $this->languageService->getLL(
'report.status.loadedOutdatedExtensions.noOutdatedExtensionLoaded.value');
245 $severity = \TYPO3\CMS\Reports\Status::OK;
248 $this->languageService->getLL(
'report.status.loadedOutdatedExtensions.outdatedExtensionLoaded.value'),
249 count($loadedOutdated)
251 $extensionList = array();
252 foreach ($loadedOutdated as $outdatedExtension) {
253 $extensionList[] = sprintf(
254 $this->languageService->getLL(
'report.status.loadedOutdatedExtensions.outdatedExtensionLoaded.message.extension'),
255 $outdatedExtension[
'extensionKey'],
256 $outdatedExtension[
'version']
260 $this->languageService->getLL(
'report.status.loadedOutdatedExtensions.outdatedExtensionLoaded.message'),
261 implode(
'', $extensionList)
263 $severity = \TYPO3\CMS\Reports\Status::WARNING;
265 $result->loadedoutdated = $this->objectManager->get(
266 \TYPO3\CMS\Reports\Status::class,
267 $this->languageService->getLL(
'report.status.loadedOutdatedExtensions.title'),
273 if (empty($existingOutdated)) {
274 $value = $this->languageService->getLL(
'report.status.existingOutdatedExtensions.noOutdatedExtensionExists.value');
276 $severity = \TYPO3\CMS\Reports\Status::OK;
279 $this->languageService->getLL(
'report.status.existingOutdatedExtensions.outdatedExtensionExists.value'),
280 count($existingOutdated)
282 $extensionList = array();
283 foreach ($existingOutdated as $outdatedExtension) {
284 $extensionList[] = sprintf(
285 $this->languageService->getLL(
'report.status.existingOutdatedExtensions.outdatedExtensionExists.message.extension'),
286 $outdatedExtension[
'extensionKey'],
287 $outdatedExtension[
'version']
291 $this->languageService->getLL(
'report.status.existingOutdatedExtensions.outdatedExtensionExists.message'),
292 implode(
'', $extensionList)
294 $severity = \TYPO3\CMS\Reports\Status::WARNING;
296 $result->existingoutdated = $this->objectManager->get(
297 \TYPO3\CMS\Reports\Status::class,
298 $this->languageService->getLL(
'report.status.existingOutdatedExtensions.title'),