‪TYPO3CMS  9.5
EnvironmentController.php
Go to the documentation of this file.
1 <?php
2 declare(strict_types = 1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
18 use Psr\Http\Message\ResponseInterface;
19 use Psr\Http\Message\ServerRequestInterface;
40 
46 {
53  public function ‪cardsAction(ServerRequestInterface $request): ResponseInterface
54  {
55  $view = $this->‪initializeStandaloneView($request, 'Environment/Cards.html');
56  return new ‪JsonResponse([
57  'success' => true,
58  'html' => $view->render(),
59  ]);
60  }
61 
68  public function ‪systemInformationGetDataAction(ServerRequestInterface $request): ResponseInterface
69  {
70  $view = $this->‪initializeStandaloneView($request, 'Environment/SystemInformation.html');
71  $view->assignMultiple([
72  'systemInformationCgiDetected' => GeneralUtility::isRunningOnCgiServerApi(),
73  'systemInformationDatabaseConnections' => $this->‪getDatabaseConnectionInformation(),
74  'systemInformationOperatingSystem' => ‪Environment::isWindows() ? 'Windows' : 'Unix',
75  ]);
76  return new ‪JsonResponse([
77  'success' => true,
78  'html' => $view->render(),
79  ]);
80  }
81 
88  public function ‪phpInfoGetDataAction(ServerRequestInterface $request): ResponseInterface
89  {
90  $view = $this->‪initializeStandaloneView($request, 'Environment/PhpInfo.html');
91  return new ‪JsonResponse([
92  'success' => true,
93  'html' => $view->render(),
94  ]);
95  }
96 
103  public function ‪environmentCheckGetStatusAction(ServerRequestInterface $request): ResponseInterface
104  {
105  $view = $this->‪initializeStandaloneView($request, 'Environment/EnvironmentCheck.html');
106  $messageQueue = new ‪FlashMessageQueue('install');
107  $checkMessages = (new ‪Check())->getStatus();
108  foreach ($checkMessages as $message) {
109  $messageQueue->enqueue($message);
110  }
111  $setupMessages = (new ‪SetupCheck())->getStatus();
112  foreach ($setupMessages as $message) {
113  $messageQueue->enqueue($message);
114  }
115  $databaseMessages = (new ‪DatabaseCheck())->getStatus();
116  foreach ($databaseMessages as $message) {
117  $messageQueue->enqueue($message);
118  }
119  $serverResponseMessages = (new ‪ServerResponseCheck(false))->getStatus();
120  foreach ($serverResponseMessages as $message) {
121  $messageQueue->enqueue($message);
122  }
123  return new ‪JsonResponse([
124  'success' => true,
125  'status' => [
126  'error' => $messageQueue->getAllMessages(‪FlashMessage::ERROR),
127  'warning' => $messageQueue->getAllMessages(‪FlashMessage::WARNING),
128  'ok' => $messageQueue->getAllMessages(‪FlashMessage::OK),
129  'information' => $messageQueue->getAllMessages(‪FlashMessage::INFO),
130  'notice' => $messageQueue->getAllMessages(‪FlashMessage::NOTICE),
131  ],
132  'html' => $view->render(),
133  ]);
134  }
135 
142  public function ‪folderStructureGetStatusAction(ServerRequestInterface $request): ResponseInterface
143  {
144  $view = $this->‪initializeStandaloneView($request, 'Environment/FolderStructure.html');
145  $folderStructureFactory = GeneralUtility::makeInstance(DefaultFactory::class);
146  $structureFacade = $folderStructureFactory->getStructure();
147 
148  $structureMessages = $structureFacade->getStatus();
149  $errorQueue = new ‪FlashMessageQueue('install');
150  $okQueue = new ‪FlashMessageQueue('install');
151  foreach ($structureMessages as $message) {
152  if ($message->getSeverity() === ‪FlashMessage::ERROR
153  || $message->getSeverity() === ‪FlashMessage::WARNING
154  ) {
155  $errorQueue->enqueue($message);
156  } else {
157  $okQueue->enqueue($message);
158  }
159  }
160 
161  $permissionCheck = GeneralUtility::makeInstance(DefaultPermissionsCheck::class);
162 
163  $view->assign('publicPath', ‪Environment::getPublicPath());
164 
165  return new ‪JsonResponse([
166  'success' => true,
167  'errorStatus' => $errorQueue,
168  'okStatus' => $okQueue,
169  'folderStructureFilePermissionStatus' => $permissionCheck->getMaskStatus('fileCreateMask'),
170  'folderStructureDirectoryPermissionStatus' => $permissionCheck->getMaskStatus('folderCreateMask'),
171  'html' => $view->render(),
172  ]);
173  }
174 
180  public function ‪folderStructureFixAction(): ResponseInterface
181  {
182  $folderStructureFactory = GeneralUtility::makeInstance(DefaultFactory::class);
183  $structureFacade = $folderStructureFactory->getStructure();
184  $fixedStatusObjects = $structureFacade->fix();
185  return new ‪JsonResponse([
186  'success' => true,
187  'fixedStatus' => $fixedStatusObjects,
188  ]);
189  }
190 
197  public function ‪mailTestGetDataAction(ServerRequestInterface $request): ResponseInterface
198  {
199  $view = $this->‪initializeStandaloneView($request, 'Environment/MailTest.html');
200  $formProtection = ‪FormProtectionFactory::get(InstallToolFormProtection::class);
201  $view->assignMultiple([
202  'mailTestToken' => $formProtection->generateToken('installTool', 'mailTest'),
203  'mailTestSenderAddress' => $this->getSenderEmailAddress(),
204  ]);
205  return new ‪JsonResponse([
206  'success' => true,
207  'html' => $view->render(),
208  ]);
209  }
210 
217  public function ‪mailTestAction(ServerRequestInterface $request): ResponseInterface
218  {
219  $messages = new ‪FlashMessageQueue('install');
220  $recipient = $request->getParsedBody()['install']['email'];
221  $delivered = false;
222  if (empty($recipient) || !GeneralUtility::validEmail($recipient)) {
223  $messages->enqueue(new ‪FlashMessage(
224  'Given address is not a valid email address.',
225  'Mail not sent',
227  ));
228  } else {
229  try {
230  $mailMessage = GeneralUtility::makeInstance(MailMessage::class);
231  $mailMessage
232  ->addTo($recipient)
233  ->addFrom($this->‪getSenderEmailAddress(), $this->‪getSenderEmailName())
234  ->setSubject($this->‪getEmailSubject())
235  ->setBody('<html><body>html test content</body></html>', 'text/html')
236  ->addPart('plain test content', 'text/plain')
237  ->send();
238  $messages->enqueue(new ‪FlashMessage(
239  'Recipient: ' . $recipient,
240  'Test mail sent'
241  ));
242  $delivered = true;
243  } catch (\Swift_RfcComplianceException $exception) {
244  $messages->enqueue(new ‪FlashMessage(
245  'Please verify $GLOBALS[\'TYPO3_CONF_VARS\'][\'MAIL\'][\'defaultMailFromAddress\'] is a valid mail address.'
246  . ' Error message: ' . $exception->getMessage(),
247  'RFC compliance problem',
249  ));
250  } catch (\Throwable $throwable) {
251  $messages->enqueue(new ‪FlashMessage(
252  'Please verify $GLOBALS[\'TYPO3_CONF_VARS\'][\'MAIL\'][*] settings are valid.'
253  . ' Error message: ' . $throwable->getMessage(),
254  'Could not deliver mail',
256  ));
257  }
258  }
259  return new ‪JsonResponse([
260  'success' => $delivered,
261  'status' => $messages,
262  ]);
263  }
264 
271  public function ‪imageProcessingGetDataAction(ServerRequestInterface $request): ResponseInterface
272  {
273  $view = $this->‪initializeStandaloneView($request, 'Environment/ImageProcessing.html');
274  $view->assignMultiple([
275  'imageProcessingProcessor' => ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor'] === 'GraphicsMagick' ? 'GraphicsMagick' : 'ImageMagick',
276  'imageProcessingEnabled' => ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_enabled'],
277  'imageProcessingPath' => ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_path'],
278  'imageProcessingVersion' => $this->‪determineImageMagickVersion(),
279  'imageProcessingEffects' => ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_effects'],
280  'imageProcessingGdlibEnabled' => ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['gdlib'],
281  'imageProcessingGdlibPng' => ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['gdlib_png'],
282  'imageProcessingFileFormats' => ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
283  ]);
284  return new ‪JsonResponse([
285  'success' => true,
286  'html' => $view->render(),
287  ]);
288  }
289 
295  public function ‪imageProcessingTrueTypeAction(): ResponseInterface
296  {
297  $image = @imagecreate(200, 50);
298  imagecolorallocate($image, 255, 255, 55);
299  $textColor = imagecolorallocate($image, 233, 14, 91);
300  @imagettftext(
301  $image,
302  20 / 96.0 * 72, // As in compensateFontSizeiBasedOnFreetypeDpi
303  0,
304  10,
305  20,
306  $textColor,
307  ‪ExtensionManagementUtility::extPath('install') . 'Resources/Private/Font/vera.ttf',
308  'Testing true type'
309  );
310  $outputFile = ‪Environment::getPublicPath() . '/typo3temp/assets/images/installTool-' . ‪StringUtility::getUniqueId('createTrueTypeFontTestImage') . '.gif';
311  imagegif($image, $outputFile);
312  $fileExists = file_exists($outputFile);
313  if ($fileExists) {
314  GeneralUtility::fixPermissions($outputFile);
315  }
316  return $this->‪getImageTestResponse([
317  'fileExists' => $fileExists,
318  'outputFile' => $outputFile,
319  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Font.gif',
320  ]);
321  }
322 
328  public function ‪imageProcessingReadJpgAction(): ResponseInterface
329  {
330  return $this->‪convertImageFormatsToJpg('jpg');
331  }
332 
338  public function ‪imageProcessingReadGifAction(): ResponseInterface
339  {
340  return $this->‪convertImageFormatsToJpg('gif');
341  }
342 
348  public function ‪imageProcessingReadPngAction(): ResponseInterface
349  {
350  return $this->‪convertImageFormatsToJpg('png');
351  }
352 
358  public function ‪imageProcessingReadTifAction(): ResponseInterface
359  {
360  return $this->‪convertImageFormatsToJpg('tif');
361  }
362 
368  public function ‪imageProcessingReadPdfAction(): ResponseInterface
369  {
370  return $this->‪convertImageFormatsToJpg('pdf');
371  }
372 
378  public function ‪imageProcessingReadAiAction(): ResponseInterface
379  {
380  return $this->‪convertImageFormatsToJpg('ai');
381  }
382 
388  public function ‪imageProcessingWriteGifAction(): ResponseInterface
389  {
390  if (!$this->‪isImageMagickEnabledAndConfigured()) {
391  return new ‪JsonResponse([
392  'status' => [$this->‪imageMagickDisabledMessage()],
393  ]);
394  }
395  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
396  $inputFile = $imageBasePath . 'TestInput/Test.gif';
397  $imageProcessor = $this->‪initializeImageProcessor();
398  $imageProcessor->imageMagickConvert_forceFileNameBody = ‪StringUtility::getUniqueId('write-gif');
399  $imResult = $imageProcessor->imageMagickConvert($inputFile, 'gif', '300', '', '', '', [], true);
400  $messages = new ‪FlashMessageQueue('install');
401  if ($imResult !== null && is_file($imResult[3])) {
402  if (‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['gif_compress']) {
403  clearstatcache();
404  $previousSize = GeneralUtility::formatSize(filesize($imResult[3]));
405  $methodUsed = ‪GraphicalFunctions::gifCompress($imResult[3], '');
406  clearstatcache();
407  $compressedSize = GeneralUtility::formatSize(filesize($imResult[3]));
408  $messages->enqueue(new ‪FlashMessage(
409  'Method used by compress: ' . $methodUsed . LF
410  . ' Previous filesize: ' . $previousSize . '. Current filesize:' . $compressedSize,
411  'Compressed gif',
413  ));
414  } else {
415  $messages->enqueue(new ‪FlashMessage(
416  '',
417  'Gif compression not enabled by [GFX][gif_compress]',
419  ));
420  }
421  $result = [
422  'status' => $messages,
423  'fileExists' => true,
424  'outputFile' => $imResult[3],
425  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Write-gif.gif',
426  'command' => $imageProcessor->IM_commands,
427  ];
428  } else {
429  $result = [
430  'status' => [$this->‪imageGenerationFailedMessage()],
431  'command' => $imageProcessor->IM_commands,
432  ];
433  }
434  return $this->‪getImageTestResponse($result);
435  }
436 
442  public function ‪imageProcessingWritePngAction(): ResponseInterface
443  {
444  if (!$this->‪isImageMagickEnabledAndConfigured()) {
445  return new ‪JsonResponse([
446  'status' => [$this->‪imageMagickDisabledMessage()],
447  ]);
448  }
449  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
450  $inputFile = $imageBasePath . 'TestInput/Test.png';
451  $imageProcessor = $this->‪initializeImageProcessor();
452  $imageProcessor->imageMagickConvert_forceFileNameBody = ‪StringUtility::getUniqueId('write-png');
453  $imResult = $imageProcessor->imageMagickConvert($inputFile, 'png', '300', '', '', '', [], true);
454  if ($imResult !== null && is_file($imResult[3])) {
455  $result = [
456  'fileExists' => true,
457  'outputFile' => $imResult[3],
458  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Write-png.png',
459  'command' => $imageProcessor->IM_commands,
460  ];
461  } else {
462  $result = [
463  'status' => [$this->‪imageGenerationFailedMessage()],
464  'command' => $imageProcessor->IM_commands,
465  ];
466  }
467  return $this->‪getImageTestResponse($result);
468  }
469 
475  public function ‪imageProcessingGifToGifAction(): ResponseInterface
476  {
477  if (!$this->‪isImageMagickEnabledAndConfigured()) {
478  return new ‪JsonResponse([
479  'status' => [$this->‪imageMagickDisabledMessage()],
480  ]);
481  }
482  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
483  $imageProcessor = $this->‪initializeImageProcessor();
484  $inputFile = $imageBasePath . 'TestInput/Transparent.gif';
485  $imageProcessor->imageMagickConvert_forceFileNameBody = ‪StringUtility::getUniqueId('scale-gif');
486  $imResult = $imageProcessor->imageMagickConvert($inputFile, 'gif', '300', '', '', '', [], true);
487  if ($imResult !== null && file_exists($imResult[3])) {
488  $result = [
489  'fileExists' => true,
490  'outputFile' => $imResult[3],
491  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Scale-gif.gif',
492  'command' => $imageProcessor->IM_commands,
493  ];
494  } else {
495  $result = [
496  'status' => [$this->‪imageGenerationFailedMessage()],
497  'command' => $imageProcessor->IM_commands,
498  ];
499  }
500  return $this->‪getImageTestResponse($result);
501  }
502 
508  public function ‪imageProcessingPngToPngAction(): ResponseInterface
509  {
510  if (!$this->‪isImageMagickEnabledAndConfigured()) {
511  return new ‪JsonResponse([
512  'status' => [$this->‪imageMagickDisabledMessage()],
513  ]);
514  }
515  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
516  $imageProcessor = $this->‪initializeImageProcessor();
517  $inputFile = $imageBasePath . 'TestInput/Transparent.png';
518  $imageProcessor->imageMagickConvert_forceFileNameBody = ‪StringUtility::getUniqueId('scale-png');
519  $imResult = $imageProcessor->imageMagickConvert($inputFile, 'png', '300', '', '', '', [], true);
520  if ($imResult !== null && file_exists($imResult[3])) {
521  $result = [
522  'fileExists' => true,
523  'outputFile' => $imResult[3],
524  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Scale-png.png',
525  'command' => $imageProcessor->IM_commands,
526  ];
527  } else {
528  $result = [
529  'status' => [$this->‪imageGenerationFailedMessage()],
530  'command' => $imageProcessor->IM_commands,
531  ];
532  }
533  return $this->‪getImageTestResponse($result);
534  }
535 
541  public function ‪imageProcessingGifToJpgAction(): ResponseInterface
542  {
543  if (!$this->‪isImageMagickEnabledAndConfigured()) {
544  return new ‪JsonResponse([
545  'status' => [$this->‪imageMagickDisabledMessage()],
546  ]);
547  }
548  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
549  $imageProcessor = $this->‪initializeImageProcessor();
550  $inputFile = $imageBasePath . 'TestInput/Transparent.gif';
551  $imageProcessor->imageMagickConvert_forceFileNameBody = ‪StringUtility::getUniqueId('scale-jpg');
552  $jpegQuality = ‪MathUtility::forceIntegerInRange(‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['jpg_quality'], 10, 100, 85);
553  $imResult = $imageProcessor->imageMagickConvert($inputFile, 'jpg', '300', '', '-quality ' . $jpegQuality . ' -opaque white -background white -flatten', '', [], true);
554  if ($imResult !== null && file_exists($imResult[3])) {
555  $result = [
556  'fileExists' => true,
557  'outputFile' => $imResult[3],
558  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Scale-jpg.jpg',
559  'command' => $imageProcessor->IM_commands,
560  ];
561  } else {
562  $result = [
563  'status' => [$this->‪imageGenerationFailedMessage()],
564  'command' => $imageProcessor->IM_commands,
565  ];
566  }
567  return $this->‪getImageTestResponse($result);
568  }
569 
575  public function ‪imageProcessingCombineGifMaskAction(): ResponseInterface
576  {
577  if (!$this->‪isImageMagickEnabledAndConfigured()) {
578  return new ‪JsonResponse([
579  'status' => [$this->‪imageMagickDisabledMessage()],
580  ]);
581  }
582  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
583  $imageProcessor = $this->‪initializeImageProcessor();
584  $inputFile = $imageBasePath . 'TestInput/BackgroundOrange.gif';
585  $overlayFile = $imageBasePath . 'TestInput/Test.jpg';
586  $maskFile = $imageBasePath . 'TestInput/MaskBlackWhite.gif';
587  $resultFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix
588  . ‪StringUtility::getUniqueId($imageProcessor->alternativeOutputKey . 'combine1') . '.jpg';
589  $imageProcessor->combineExec($inputFile, $overlayFile, $maskFile, $resultFile);
590  $imResult = $imageProcessor->getImageDimensions($resultFile);
591  if ($imResult) {
592  $result = [
593  'fileExists' => true,
594  'outputFile' => $imResult[3],
595  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Combine-1.jpg',
596  'command' => $imageProcessor->IM_commands,
597  ];
598  } else {
599  $result = [
600  'status' => [$this->‪imageGenerationFailedMessage()],
601  'command' => $imageProcessor->IM_commands,
602  ];
603  }
604  return $this->‪getImageTestResponse($result);
605  }
606 
612  public function ‪imageProcessingCombineJpgMaskAction(): ResponseInterface
613  {
614  if (!$this->‪isImageMagickEnabledAndConfigured()) {
615  return new ‪JsonResponse([
616  'status' => [$this->‪imageMagickDisabledMessage()],
617  ]);
618  }
619  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
620  $imageProcessor = $this->‪initializeImageProcessor();
621  $inputFile = $imageBasePath . 'TestInput/BackgroundCombine.jpg';
622  $overlayFile = $imageBasePath . 'TestInput/Test.jpg';
623  $maskFile = $imageBasePath . 'TestInput/MaskCombine.jpg';
624  $resultFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix
625  . ‪StringUtility::getUniqueId($imageProcessor->alternativeOutputKey . 'combine2') . '.jpg';
626  $imageProcessor->combineExec($inputFile, $overlayFile, $maskFile, $resultFile);
627  $imResult = $imageProcessor->getImageDimensions($resultFile);
628  if ($imResult) {
629  $result = [
630  'fileExists' => true,
631  'outputFile' => $imResult[3],
632  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Combine-2.jpg',
633  'command' => $imageProcessor->IM_commands,
634  ];
635  } else {
636  $result = [
637  'status' => [$this->‪imageGenerationFailedMessage()],
638  'command' => $imageProcessor->IM_commands,
639  ];
640  }
641  return $this->‪getImageTestResponse($result);
642  }
643 
649  public function ‪imageProcessingGdlibSimpleAction(): ResponseInterface
650  {
651  $imageProcessor = $this->‪initializeImageProcessor();
652  $gifOrPng = $imageProcessor->gifExtension;
653  $image = imagecreatetruecolor(300, 225);
654  $backgroundColor = imagecolorallocate($image, 0, 0, 0);
655  imagefilledrectangle($image, 0, 0, 300, 225, $backgroundColor);
656  $workArea = [0, 0, 300, 225];
657  $conf = [
658  'dimensions' => '10,50,280,50',
659  'color' => 'olive',
660  ];
661  $imageProcessor->makeBox($image, $conf, $workArea);
662  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('gdSimple') . '.' . $gifOrPng;
663  $imageProcessor->ImageWrite($image, $outputFile);
664  $imResult = $imageProcessor->getImageDimensions($outputFile);
665  $result = [
666  'fileExists' => true,
667  'outputFile' => $imResult[3],
668  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Gdlib-simple.' . $gifOrPng,
669  'command' => $imageProcessor->IM_commands,
670  ];
671  return $this->‪getImageTestResponse($result);
672  }
673 
679  public function ‪imageProcessingGdlibFromFileAction(): ResponseInterface
680  {
681  $imageProcessor = $this->‪initializeImageProcessor();
682  $gifOrPng = $imageProcessor->gifExtension;
683  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
684  $inputFile = $imageBasePath . 'TestInput/Test.' . $gifOrPng;
685  $image = $imageProcessor->imageCreateFromFile($inputFile);
686  $workArea = [0, 0, 400, 300];
687  $conf = [
688  'dimensions' => '10,50,380,50',
689  'color' => 'olive',
690  ];
691  $imageProcessor->makeBox($image, $conf, $workArea);
692  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('gdBox') . '.' . $gifOrPng;
693  $imageProcessor->ImageWrite($image, $outputFile);
694  $imResult = $imageProcessor->getImageDimensions($outputFile);
695  $result = [
696  'fileExists' => true,
697  'outputFile' => $imResult[3],
698  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Gdlib-box.' . $gifOrPng,
699  'command' => $imageProcessor->IM_commands,
700  ];
701  return $this->‪getImageTestResponse($result);
702  }
703 
709  public function ‪imageProcessingGdlibRenderTextAction(): ResponseInterface
710  {
711  $imageProcessor = $this->‪initializeImageProcessor();
712  $gifOrPng = $imageProcessor->gifExtension;
713  $image = imagecreatetruecolor(300, 225);
714  $backgroundColor = imagecolorallocate($image, 128, 128, 150);
715  imagefilledrectangle($image, 0, 0, 300, 225, $backgroundColor);
716  $workArea = [0, 0, 300, 225];
717  $conf = [
718  'iterations' => 1,
719  'angle' => 0,
720  'antiAlias' => 1,
721  'text' => 'HELLO WORLD',
722  'fontColor' => '#003366',
723  'fontSize' => 30,
724  'fontFile' => ‪ExtensionManagementUtility::extPath('install') . 'Resources/Private/Font/vera.ttf',
725  'offset' => '30,80',
726  ];
727  $conf['BBOX'] = $imageProcessor->calcBBox($conf);
728  $imageProcessor->makeText($image, $conf, $workArea);
729  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('gdText') . '.' . $gifOrPng;
730  $imageProcessor->ImageWrite($image, $outputFile);
731  $imResult = $imageProcessor->getImageDimensions($outputFile);
732  $result = [
733  'fileExists' => true,
734  'outputFile' => $imResult[3],
735  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Gdlib-text.' . $gifOrPng,
736  'command' => $imageProcessor->IM_commands,
737  ];
738  return $this->‪getImageTestResponse($result);
739  }
740 
746  public function ‪imageProcessingGdlibNiceTextAction(): ResponseInterface
747  {
748  if (!$this->‪isImageMagickEnabledAndConfigured()) {
749  return new ‪JsonResponse([
750  'status' => [$this->‪imageMagickDisabledMessage()],
751  ]);
752  }
753  $imageProcessor = $this->‪initializeImageProcessor();
754  $gifOrPng = $imageProcessor->gifExtension;
755  $image = imagecreatetruecolor(300, 225);
756  $backgroundColor = imagecolorallocate($image, 128, 128, 150);
757  imagefilledrectangle($image, 0, 0, 300, 225, $backgroundColor);
758  $workArea = [0, 0, 300, 225];
759  $conf = [
760  'iterations' => 1,
761  'angle' => 0,
762  'antiAlias' => 1,
763  'text' => 'HELLO WORLD',
764  'fontColor' => '#003366',
765  'fontSize' => 30,
766  'fontFile' => ‪ExtensionManagementUtility::extPath('install') . 'Resources/Private/Font/vera.ttf',
767  'offset' => '30,80',
768  ];
769  $conf['BBOX'] = $imageProcessor->calcBBox($conf);
770  $imageProcessor->makeText($image, $conf, $workArea);
771  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('gdText') . '.' . $gifOrPng;
772  $imageProcessor->ImageWrite($image, $outputFile);
773  $conf['offset'] = '30,120';
774  $conf['niceText'] = 1;
775  $imageProcessor->makeText($image, $conf, $workArea);
776  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('gdNiceText') . '.' . $gifOrPng;
777  $imageProcessor->ImageWrite($image, $outputFile);
778  $imResult = $imageProcessor->getImageDimensions($outputFile);
779  $result = [
780  'fileExists' => true,
781  'outputFile' => $imResult[3],
782  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Gdlib-niceText.' . $gifOrPng,
783  'command' => $imageProcessor->IM_commands,
784  ];
785  return $this->‪getImageTestResponse($result);
786  }
787 
793  public function ‪imageProcessingGdlibNiceTextShadowAction(): ResponseInterface
794  {
795  if (!$this->‪isImageMagickEnabledAndConfigured()) {
796  return new ‪JsonResponse([
797  'status' => [$this->‪imageMagickDisabledMessage()],
798  ]);
799  }
800  $imageProcessor = $this->‪initializeImageProcessor();
801  $gifOrPng = $imageProcessor->gifExtension;
802  $image = imagecreatetruecolor(300, 225);
803  $backgroundColor = imagecolorallocate($image, 128, 128, 150);
804  imagefilledrectangle($image, 0, 0, 300, 225, $backgroundColor);
805  $workArea = [0, 0, 300, 225];
806  $conf = [
807  'iterations' => 1,
808  'angle' => 0,
809  'antiAlias' => 1,
810  'text' => 'HELLO WORLD',
811  'fontColor' => '#003366',
812  'fontSize' => 30,
813  'fontFile' => ‪ExtensionManagementUtility::extPath('install') . 'Resources/Private/Font/vera.ttf',
814  'offset' => '30,80',
815  ];
816  $conf['BBOX'] = $imageProcessor->calcBBox($conf);
817  $imageProcessor->makeText($image, $conf, $workArea);
818  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('gdText') . '.' . $gifOrPng;
819  $imageProcessor->ImageWrite($image, $outputFile);
820  $conf['offset'] = '30,120';
821  $conf['niceText'] = 1;
822  $imageProcessor->makeText($image, $conf, $workArea);
823  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('gdNiceText') . '.' . $gifOrPng;
824  $imageProcessor->ImageWrite($image, $outputFile);
825  $conf['offset'] = '30,160';
826  $conf['niceText'] = 1;
827  $conf['shadow.'] = [
828  'offset' => '2,2',
829  'blur' => '20',
830  'opacity' => '50',
831  'color' => 'black'
832  ];
833  // Warning: Re-uses $image from above!
834  $imageProcessor->makeShadow($image, $conf['shadow.'], $workArea, $conf);
835  $imageProcessor->makeText($image, $conf, $workArea);
836  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('GDwithText-niceText-shadow') . '.' . $gifOrPng;
837  $imageProcessor->ImageWrite($image, $outputFile);
838  $imResult = $imageProcessor->getImageDimensions($outputFile);
839  $result = [
840  'fileExists' => true,
841  'outputFile' => $imResult[3],
842  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Gdlib-shadow.' . $gifOrPng,
843  'command' => $imageProcessor->IM_commands,
844  ];
845  return $this->‪getImageTestResponse($result);
846  }
847 
854  {
855  $imageProcessor = GeneralUtility::makeInstance(GraphicalFunctions::class);
856  $imageProcessor->dontCheckForExistingTempFile = true;
857  $imageProcessor->filenamePrefix = 'installTool-';
858  $imageProcessor->dontCompress = true;
859  $imageProcessor->alternativeOutputKey = 'typo3InstallTest';
860  return $imageProcessor;
861  }
862 
868  protected function ‪determineImageMagickVersion(): string
869  {
870  $command = ‪CommandUtility::imageMagickCommand('identify', '-version');
871  ‪CommandUtility::exec($command, $result);
872  $string = $result[0];
873  $version = '';
874  if (!empty($string)) {
875  list(, $version) = explode('Magick', $string);
876  list($version) = explode(' ', trim($version));
877  $version = trim($version);
878  }
879  return $version;
880  }
881 
888  protected function ‪convertImageFormatsToJpg(string $inputFormat): ResponseInterface
889  {
890  if (!$this->‪isImageMagickEnabledAndConfigured()) {
891  return new ‪JsonResponse([
892  'status' => [$this->‪imageMagickDisabledMessage()],
893  ]);
894  }
895  if (!GeneralUtility::inList(‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'], $inputFormat)) {
896  return new ‪JsonResponse([
897  'status' => [
898  new ‪FlashMessage(
899  'Handling format ' . $inputFormat . ' must be enabled in TYPO3_CONF_VARS[\'GFX\'][\'imagefile_ext\']',
900  'Skipped test',
902  )
903  ]
904  ]);
905  }
906  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
907  $imageProcessor = $this->‪initializeImageProcessor();
908  $inputFile = $imageBasePath . 'TestInput/Test.' . $inputFormat;
909  $imageProcessor->imageMagickConvert_forceFileNameBody = ‪StringUtility::getUniqueId('read') . '-' . $inputFormat;
910  $imResult = $imageProcessor->imageMagickConvert($inputFile, 'jpg', '300', '', '', '', [], true);
911  $result = [];
912  if ($imResult !== null) {
913  $result = [
914  'fileExists' => file_exists($imResult[3]),
915  'outputFile' => $imResult[3],
916  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Read-' . $inputFormat . '.jpg',
917  'command' => $imageProcessor->IM_commands,
918  ];
919  } else {
920  $result = [
921  'status' => [$this->‪imageGenerationFailedMessage()],
922  'command' => $imageProcessor->IM_commands,
923  ];
924  }
925  return $this->‪getImageTestResponse($result);
926  }
927 
933  protected function ‪getDatabaseConnectionInformation(): array
934  {
935  $connectionInfos = [];
936  $connectionPool = GeneralUtility::makeInstance(ConnectionPool::class);
937  foreach ($connectionPool->getConnectionNames() as $connectionName) {
938  $connection = $connectionPool->getConnectionByName($connectionName);
939  $connectionParameters = $connection->getParams();
940  $connectionInfo = [
941  'connectionName' => $connectionName,
942  'version' => $connection->getServerVersion(),
943  'databaseName' => $connection->getDatabase(),
944  'username' => $connectionParameters['user'],
945  'host' => $connectionParameters['host'],
946  'port' => $connectionParameters['port'],
947  'socket' => $connectionParameters['unix_socket'] ?? '',
948  'numberOfTables' => count($connection->getSchemaManager()->listTableNames()),
949  'numberOfMappedTables' => 0,
950  ];
951  if (isset(‪$GLOBALS['TYPO3_CONF_VARS']['DB']['TableMapping'])
952  && is_array(‪$GLOBALS['TYPO3_CONF_VARS']['DB']['TableMapping'])
953  ) {
954  // Count number of array keys having $connectionName as value
955  $connectionInfo['numberOfMappedTables'] = count(array_intersect(
956  ‪$GLOBALS['TYPO3_CONF_VARS']['DB']['TableMapping'],
957  [$connectionName]
958  ));
959  }
960  $connectionInfos[] = $connectionInfo;
961  }
962  return $connectionInfos;
963  }
964 
972  protected function ‪getSenderEmailAddress(): string
973  {
974  return !empty(‪$GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromAddress'])
975  ? ‪$GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromAddress']
976  : 'no-reply@example.com';
977  }
978 
986  protected function ‪getSenderEmailName(): string
987  {
988  return !empty(‪$GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromName'])
989  ? ‪$GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromName']
990  : 'TYPO3 CMS install tool';
991  }
992 
1000  protected function ‪getEmailSubject(): string
1001  {
1002  $name = !empty(‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'])
1003  ? ' from site "' . ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'] . '"'
1004  : '';
1005  return 'Test TYPO3 CMS mail delivery' . $name;
1006  }
1007 
1014  protected function ‪getImageTestResponse(array $testResult): ResponseInterface
1015  {
1016  $responseData = [
1017  'success' => true,
1018  ];
1019  foreach ($testResult as $resultKey => $value) {
1020  if ($resultKey === 'referenceFile') {
1021  $fileExt = end(explode('.', $testResult['referenceFile']));
1022  $responseData['referenceFile'] = 'data:image/' . $fileExt . ';base64,' . base64_encode(file_get_contents($testResult['referenceFile']));
1023  } elseif ($resultKey === 'outputFile') {
1024  $fileExt = end(explode('.', $testResult['outputFile']));
1025  $responseData['outputFile'] = 'data:image/' . $fileExt . ';base64,' . base64_encode(file_get_contents($testResult['outputFile']));
1026  } else {
1027  $responseData[$resultKey] = $value;
1028  }
1029  }
1030  return new ‪JsonResponse($responseData);
1031  }
1032 
1039  {
1040  return new ‪FlashMessage(
1041  'ImageMagick / GraphicsMagick handling is enabled, but the execute'
1042  . ' command returned an error. Please check your settings, especially'
1043  . ' [\'GFX\'][\'processor_path\'] and [\'GFX\'][\'processor_path_lzw\'] and ensure Ghostscript is installed on your server.',
1044  'Image generation failed',
1046  );
1047  }
1048 
1054  protected function ‪isImageMagickEnabledAndConfigured(): bool
1055  {
1056  $enabled = ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_enabled'];
1057  $path = ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_path'];
1058  return $enabled && $path;
1059  }
1060 
1067  {
1068  return new ‪FlashMessage(
1069  'ImageMagick / GraphicsMagick handling is disabled or not configured correctly.',
1070  'Tests not executed',
1072  );
1073  }
1074 
1081  protected function ‪getImagesPath(): string
1082  {
1083  $imagePath = ‪Environment::getPublicPath() . '/typo3temp/assets/images/';
1084  if (!is_dir($imagePath)) {
1085  GeneralUtility::mkdir_deep($imagePath);
1086  }
1087  return $imagePath;
1088  }
1089 }
‪TYPO3\CMS\Install\Controller\EnvironmentController\environmentCheckGetStatusAction
‪ResponseInterface environmentCheckGetStatusAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:103
‪TYPO3\CMS\Install\Controller\EnvironmentController\folderStructureGetStatusAction
‪ResponseInterface folderStructureGetStatusAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:142
‪TYPO3\CMS\Install\Controller\EnvironmentController\isImageMagickEnabledAndConfigured
‪bool isImageMagickEnabledAndConfigured()
Definition: EnvironmentController.php:1054
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingReadPngAction
‪ResponseInterface imageProcessingReadPngAction()
Definition: EnvironmentController.php:348
‪TYPO3\CMS\Install\Controller\AbstractController\initializeStandaloneView
‪StandaloneView initializeStandaloneView(ServerRequestInterface $request, string $templatePath)
Definition: AbstractController.php:37
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGifToJpgAction
‪ResponseInterface imageProcessingGifToJpgAction()
Definition: EnvironmentController.php:541
‪TYPO3\CMS\Core\FormProtection\FormProtectionFactory\get
‪static TYPO3 CMS Core FormProtection AbstractFormProtection get($classNameOrType='default',... $constructorArguments)
Definition: FormProtectionFactory.php:72
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGdlibRenderTextAction
‪ResponseInterface imageProcessingGdlibRenderTextAction()
Definition: EnvironmentController.php:709
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGdlibSimpleAction
‪ResponseInterface imageProcessingGdlibSimpleAction()
Definition: EnvironmentController.php:649
‪TYPO3\CMS\Install\Controller\EnvironmentController\initializeImageProcessor
‪GraphicalFunctions initializeImageProcessor()
Definition: EnvironmentController.php:853
‪TYPO3\CMS\Core\Core\Environment\getPublicPath
‪static string getPublicPath()
Definition: Environment.php:153
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGdlibNiceTextAction
‪ResponseInterface imageProcessingGdlibNiceTextAction()
Definition: EnvironmentController.php:746
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingReadGifAction
‪ResponseInterface imageProcessingReadGifAction()
Definition: EnvironmentController.php:338
‪TYPO3\CMS\Core\Utility\MathUtility\forceIntegerInRange
‪static int forceIntegerInRange($theInt, $min, $max=2000000000, $defaultValue=0)
Definition: MathUtility.php:31
‪TYPO3\CMS\Core\Mail\MailMessage
Definition: MailMessage.php:23
‪TYPO3\CMS\Install\Controller\EnvironmentController
Definition: EnvironmentController.php:46
‪TYPO3\CMS\Core\Core\Environment\isWindows
‪static bool isWindows()
Definition: Environment.php:266
‪TYPO3\CMS\Install\FolderStructure\DefaultFactory
Definition: DefaultFactory.php:24
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGetDataAction
‪ResponseInterface imageProcessingGetDataAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:271
‪TYPO3\CMS\Install\Controller\EnvironmentController\cardsAction
‪ResponseInterface cardsAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:53
‪TYPO3\CMS\Core\Core\Environment\getFrameworkBasePath
‪static string getFrameworkBasePath()
Definition: Environment.php:234
‪TYPO3\CMS\Core\FormProtection\InstallToolFormProtection
Definition: InstallToolFormProtection.php:60
‪TYPO3\CMS\Install\Controller\EnvironmentController\getImagesPath
‪string getImagesPath()
Definition: EnvironmentController.php:1081
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageMagickDisabledMessage
‪FlashMessage imageMagickDisabledMessage()
Definition: EnvironmentController.php:1066
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGdlibNiceTextShadowAction
‪ResponseInterface imageProcessingGdlibNiceTextShadowAction()
Definition: EnvironmentController.php:793
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility
Definition: ExtensionManagementUtility.php:36
‪TYPO3\CMS\Core\Messaging\AbstractMessage\WARNING
‪const WARNING
Definition: AbstractMessage.php:28
‪TYPO3\CMS\Install\SystemEnvironment\DatabaseCheck
Definition: DatabaseCheck.php:32
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingTrueTypeAction
‪ResponseInterface imageProcessingTrueTypeAction()
Definition: EnvironmentController.php:295
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingReadAiAction
‪ResponseInterface imageProcessingReadAiAction()
Definition: EnvironmentController.php:378
‪TYPO3\CMS\Core\Imaging\GraphicalFunctions
Definition: GraphicalFunctions.php:35
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingReadJpgAction
‪ResponseInterface imageProcessingReadJpgAction()
Definition: EnvironmentController.php:328
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGifToGifAction
‪ResponseInterface imageProcessingGifToGifAction()
Definition: EnvironmentController.php:475
‪TYPO3\CMS\Core\Imaging\GraphicalFunctions\gifCompress
‪static string gifCompress($theFile, $type)
Definition: GraphicalFunctions.php:2542
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingReadTifAction
‪ResponseInterface imageProcessingReadTifAction()
Definition: EnvironmentController.php:358
‪TYPO3\CMS\Core\Utility\CommandUtility\exec
‪static string exec($command, &$output=null, &$returnValue=0)
Definition: CommandUtility.php:80
‪TYPO3\CMS\Install\Controller
Definition: AbstractController.php:3
‪TYPO3\CMS\Install\SystemEnvironment\ServerResponse\ServerResponseCheck
Definition: ServerResponseCheck.php:37
‪TYPO3\CMS\Install\Controller\EnvironmentController\determineImageMagickVersion
‪string determineImageMagickVersion()
Definition: EnvironmentController.php:868
‪TYPO3\CMS\Install\Controller\EnvironmentController\mailTestAction
‪ResponseInterface mailTestAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:217
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingPngToPngAction
‪ResponseInterface imageProcessingPngToPngAction()
Definition: EnvironmentController.php:508
‪TYPO3\CMS\Core\Messaging\AbstractMessage\OK
‪const OK
Definition: AbstractMessage.php:27
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingReadPdfAction
‪ResponseInterface imageProcessingReadPdfAction()
Definition: EnvironmentController.php:368
‪TYPO3\CMS\Install\Controller\EnvironmentController\getImageTestResponse
‪ResponseInterface getImageTestResponse(array $testResult)
Definition: EnvironmentController.php:1014
‪TYPO3\CMS\Install\Controller\EnvironmentController\convertImageFormatsToJpg
‪ResponseInterface convertImageFormatsToJpg(string $inputFormat)
Definition: EnvironmentController.php:888
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingWriteGifAction
‪ResponseInterface imageProcessingWriteGifAction()
Definition: EnvironmentController.php:388
‪TYPO3\CMS\Core\Messaging\AbstractMessage\INFO
‪const INFO
Definition: AbstractMessage.php:26
‪TYPO3\CMS\Core\Utility\StringUtility\getUniqueId
‪static string getUniqueId($prefix='')
Definition: StringUtility.php:91
‪TYPO3\CMS\Core\Messaging\FlashMessage
Definition: FlashMessage.php:22
‪TYPO3\CMS\Core\FormProtection\FormProtectionFactory
Definition: FormProtectionFactory.php:45
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingCombineJpgMaskAction
‪ResponseInterface imageProcessingCombineJpgMaskAction()
Definition: EnvironmentController.php:612
‪TYPO3\CMS\Install\SystemEnvironment\Check
Definition: Check.php:51
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingCombineGifMaskAction
‪ResponseInterface imageProcessingCombineGifMaskAction()
Definition: EnvironmentController.php:575
‪TYPO3\CMS\Core\Http\JsonResponse
Definition: JsonResponse.php:25
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:39
‪TYPO3\CMS\Install\Controller\EnvironmentController\getSenderEmailAddress
‪string getSenderEmailAddress()
Definition: EnvironmentController.php:972
‪TYPO3\CMS\Install\SystemEnvironment\SetupCheck
Definition: SetupCheck.php:35
‪TYPO3\CMS\Core\Utility\MathUtility
Definition: MathUtility.php:21
‪TYPO3\CMS\Install\Controller\EnvironmentController\phpInfoGetDataAction
‪ResponseInterface phpInfoGetDataAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:88
‪TYPO3\CMS\Install\Controller\AbstractController
Definition: AbstractController.php:28
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility\extPath
‪static string extPath($key, $script='')
Definition: ExtensionManagementUtility.php:149
‪TYPO3\CMS\Core\Messaging\AbstractMessage\NOTICE
‪const NOTICE
Definition: AbstractMessage.php:25
‪TYPO3\CMS\Install\Controller\EnvironmentController\folderStructureFixAction
‪ResponseInterface folderStructureFixAction()
Definition: EnvironmentController.php:180
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:44
‪TYPO3\CMS\Install\Controller\EnvironmentController\getEmailSubject
‪string getEmailSubject()
Definition: EnvironmentController.php:1000
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:45
‪TYPO3\CMS\Core\Utility\StringUtility
Definition: StringUtility.php:21
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageGenerationFailedMessage
‪FlashMessage imageGenerationFailedMessage()
Definition: EnvironmentController.php:1038
‪TYPO3\CMS\Core\Utility\CommandUtility
Definition: CommandUtility.php:48
‪TYPO3\CMS\Core\Messaging\FlashMessageQueue
Definition: FlashMessageQueue.php:25
‪TYPO3\CMS\Core\Utility\CommandUtility\imageMagickCommand
‪static string imageMagickCommand($command, $parameters, $path='')
Definition: CommandUtility.php:93
‪TYPO3\CMS\Install\Controller\EnvironmentController\mailTestGetDataAction
‪ResponseInterface mailTestGetDataAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:197
‪TYPO3\CMS\Core\Messaging\AbstractMessage\ERROR
‪const ERROR
Definition: AbstractMessage.php:29
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGdlibFromFileAction
‪ResponseInterface imageProcessingGdlibFromFileAction()
Definition: EnvironmentController.php:679
‪TYPO3\CMS\Install\Controller\EnvironmentController\getSenderEmailName
‪string getSenderEmailName()
Definition: EnvironmentController.php:986
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingWritePngAction
‪ResponseInterface imageProcessingWritePngAction()
Definition: EnvironmentController.php:442
‪TYPO3\CMS\Install\FolderStructure\DefaultPermissionsCheck
Definition: DefaultPermissionsCheck.php:25
‪TYPO3\CMS\Install\Controller\EnvironmentController\getDatabaseConnectionInformation
‪array getDatabaseConnectionInformation()
Definition: EnvironmentController.php:933
‪TYPO3\CMS\Install\Controller\EnvironmentController\systemInformationGetDataAction
‪ResponseInterface systemInformationGetDataAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:68