‪TYPO3CMS  10.4
EnvironmentController.php
Go to the documentation of this file.
1 <?php
2 
3 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 
19 
20 use Psr\Http\Message\ResponseInterface;
21 use Psr\Http\Message\ServerRequestInterface;
22 use Symfony\Component\Mime\Address;
23 use Symfony\Component\Mime\Exception\RfcComplianceException;
47 
53 {
54  private const ‪IMAGE_FILE_EXT = ['gif', 'jpg', 'png', 'tif', 'ai', 'pdf'];
55 
59  private ‪$lateBootService;
60 
61  public function ‪__construct(
63  ) {
64  $this->lateBootService = ‪$lateBootService;
65  }
66 
73  public function ‪cardsAction(ServerRequestInterface $request): ResponseInterface
74  {
75  $view = $this->‪initializeStandaloneView($request, 'Environment/Cards.html');
76  return new ‪JsonResponse([
77  'success' => true,
78  'html' => $view->render(),
79  ]);
80  }
81 
88  public function ‪systemInformationGetDataAction(ServerRequestInterface $request): ResponseInterface
89  {
90  $view = $this->‪initializeStandaloneView($request, 'Environment/SystemInformation.html');
91  $view->assignMultiple([
92  'systemInformationCgiDetected' => ‪Environment::isRunningOnCgiServer(),
93  'systemInformationDatabaseConnections' => $this->‪getDatabaseConnectionInformation(),
94  'systemInformationOperatingSystem' => ‪Environment::isWindows() ? 'Windows' : 'Unix',
95  'systemInformationApplicationContext' => $this->‪getApplicationContextInformation(),
96  'phpVersion' => PHP_VERSION,
97  ]);
98  return new JsonResponse([
99  'success' => true,
100  'html' => $view->render(),
101  ]);
102  }
103 
110  public function ‪phpInfoGetDataAction(ServerRequestInterface $request): ResponseInterface
111  {
112  $view = $this->‪initializeStandaloneView($request, 'Environment/PhpInfo.html');
113  return new JsonResponse([
114  'success' => true,
115  'html' => $view->render(),
116  ]);
117  }
118 
125  public function ‪environmentCheckGetStatusAction(ServerRequestInterface $request): ResponseInterface
126  {
127  $view = $this->‪initializeStandaloneView($request, 'Environment/EnvironmentCheck.html');
128  $messageQueue = new FlashMessageQueue('install');
129  $checkMessages = (new Check())->getStatus();
130  foreach ($checkMessages as $message) {
131  $messageQueue->enqueue($message);
132  }
133  $setupMessages = (new SetupCheck())->getStatus();
134  foreach ($setupMessages as $message) {
135  $messageQueue->enqueue($message);
136  }
137  $databaseMessages = (new DatabaseCheck())->getStatus();
138  foreach ($databaseMessages as $message) {
139  $messageQueue->enqueue($message);
140  }
141  $serverResponseMessages = (new ServerResponseCheck(false))->getStatus();
142  foreach ($serverResponseMessages as $message) {
143  $messageQueue->enqueue($message);
144  }
145  return new JsonResponse([
146  'success' => true,
147  'status' => [
148  'error' => $messageQueue->getAllMessages(‪FlashMessage::ERROR),
149  'warning' => $messageQueue->getAllMessages(‪FlashMessage::WARNING),
150  'ok' => $messageQueue->getAllMessages(‪FlashMessage::OK),
151  'information' => $messageQueue->getAllMessages(‪FlashMessage::INFO),
152  'notice' => $messageQueue->getAllMessages(‪FlashMessage::NOTICE),
153  ],
154  'html' => $view->render(),
155  'buttons' => [
156  [
157  'btnClass' => 'btn-default t3js-environmentCheck-execute',
158  'text' => 'Run tests again',
159  ],
160  ],
161  ]);
162  }
163 
170  public function ‪folderStructureGetStatusAction(ServerRequestInterface $request): ResponseInterface
171  {
172  $view = $this->‪initializeStandaloneView($request, 'Environment/FolderStructure.html');
173  $folderStructureFactory = GeneralUtility::makeInstance(DefaultFactory::class);
174  $structureFacade = $folderStructureFactory->getStructure();
175 
176  $structureMessages = $structureFacade->getStatus();
177  $errorQueue = new FlashMessageQueue('install');
178  $okQueue = new FlashMessageQueue('install');
179  foreach ($structureMessages as $message) {
180  if ($message->getSeverity() === ‪FlashMessage::ERROR
181  || $message->getSeverity() === ‪FlashMessage::WARNING
182  ) {
183  $errorQueue->enqueue($message);
184  } else {
185  $okQueue->enqueue($message);
186  }
187  }
188 
189  $permissionCheck = GeneralUtility::makeInstance(DefaultPermissionsCheck::class);
190 
191  $view->assign('publicPath', ‪Environment::getPublicPath());
192 
193  $buttons = [];
194  if ($errorQueue->count() > 0) {
195  $buttons[] = [
196  'btnClass' => 'btn-default t3js-folderStructure-errors-fix',
197  'text' => 'Try to fix file and folder permissions',
198  ];
199  }
200 
201  return new JsonResponse([
202  'success' => true,
203  'errorStatus' => $errorQueue,
204  'okStatus' => $okQueue,
205  'folderStructureFilePermissionStatus' => $permissionCheck->getMaskStatus('fileCreateMask'),
206  'folderStructureDirectoryPermissionStatus' => $permissionCheck->getMaskStatus('folderCreateMask'),
207  'html' => $view->render(),
208  'buttons' => $buttons,
209  ]);
210  }
211 
217  public function ‪folderStructureFixAction(): ResponseInterface
218  {
219  $folderStructureFactory = GeneralUtility::makeInstance(DefaultFactory::class);
220  $structureFacade = $folderStructureFactory->getStructure();
221  $fixedStatusObjects = $structureFacade->fix();
222  return new JsonResponse([
223  'success' => true,
224  'fixedStatus' => $fixedStatusObjects,
225  ]);
226  }
227 
234  public function ‪mailTestGetDataAction(ServerRequestInterface $request): ResponseInterface
235  {
236  $view = $this->‪initializeStandaloneView($request, 'Environment/MailTest.html');
237  $formProtection = ‪FormProtectionFactory::get(InstallToolFormProtection::class);
238  $view->assignMultiple([
239  'mailTestToken' => $formProtection->generateToken('installTool', 'mailTest'),
240  'mailTestSenderAddress' => $this->getSenderEmailAddress(),
241  ]);
242  return new JsonResponse([
243  'success' => true,
244  'html' => $view->render(),
245  'buttons' => [
246  [
247  'btnClass' => 'btn-default t3js-mailTest-execute',
248  'text' => 'Send test mail',
249  ],
250  ],
251  ]);
252  }
253 
260  public function ‪mailTestAction(ServerRequestInterface $request): ResponseInterface
261  {
262  $container = $this->lateBootService->getContainer();
263  $backup = $this->lateBootService->makeCurrent($container);
264  $messages = new FlashMessageQueue('install');
265  $recipient = $request->getParsedBody()['install']['email'];
266  if (empty($recipient) || !GeneralUtility::validEmail($recipient)) {
267  $messages->enqueue(new FlashMessage(
268  'Given address is not a valid email address.',
269  'Mail not sent',
271  ));
272  } else {
273  try {
274  $variables = [
275  'headline' => 'TYPO3 Test Mail',
276  'introduction' => 'Hey TYPO3 Administrator',
277  'content' => 'Seems like your favorite TYPO3 installation can send out emails!'
278  ];
279  $mailMessage = GeneralUtility::makeInstance(FluidEmail::class);
280  $mailMessage
281  ->to($recipient)
282  ->from(new Address($this->‪getSenderEmailAddress(), $this->‪getSenderEmailName()))
283  ->subject($this->‪getEmailSubject())
284  ->setRequest($request)
285  ->assignMultiple($variables);
286 
287  GeneralUtility::makeInstance(Mailer::class)->send($mailMessage);
288  $messages->enqueue(new FlashMessage(
289  'Recipient: ' . $recipient,
290  'Test mail sent'
291  ));
292  } catch (RfcComplianceException $exception) {
293  $messages->enqueue(new FlashMessage(
294  'Please verify $GLOBALS[\'TYPO3_CONF_VARS\'][\'MAIL\'][\'defaultMailFromAddress\'] is a valid mail address.'
295  . ' Error message: ' . $exception->getMessage(),
296  'RFC compliance problem',
298  ));
299  } catch (\Throwable $throwable) {
300  $messages->enqueue(new FlashMessage(
301  'Please verify $GLOBALS[\'TYPO3_CONF_VARS\'][\'MAIL\'][*] settings are valid.'
302  . ' Error message: ' . $throwable->getMessage(),
303  'Could not deliver mail',
305  ));
306  }
307  }
308  $this->lateBootService->makeCurrent(null, $backup);
309  return new JsonResponse([
310  'success' => true,
311  'status' => $messages,
312  ]);
313  }
314 
321  public function ‪imageProcessingGetDataAction(ServerRequestInterface $request): ResponseInterface
322  {
323  $view = $this->‪initializeStandaloneView($request, 'Environment/ImageProcessing.html');
324  $view->assignMultiple([
325  'imageProcessingProcessor' => ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor'] === 'GraphicsMagick' ? 'GraphicsMagick' : 'ImageMagick',
326  'imageProcessingEnabled' => ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_enabled'],
327  'imageProcessingPath' => ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_path'],
328  'imageProcessingVersion' => $this->‪determineImageMagickVersion(),
329  'imageProcessingEffects' => ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_effects'],
330  'imageProcessingGdlibEnabled' => ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['gdlib'],
331  'imageProcessingGdlibPng' => ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['gdlib_png'],
332  'imageProcessingFileFormats' => ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'],
333  ]);
334  return new JsonResponse([
335  'success' => true,
336  'html' => $view->render(),
337  'buttons' => [
338  [
339  'btnClass' => 'btn-default disabled t3js-imageProcessing-execute',
340  'text' => 'Run image tests again',
341  ],
342  ],
343  ]);
344  }
345 
351  public function ‪imageProcessingTrueTypeAction(): ResponseInterface
352  {
353  $image = @imagecreate(200, 50);
354  imagecolorallocate($image, 255, 255, 55);
355  $textColor = imagecolorallocate($image, 233, 14, 91);
356  @imagettftext(
357  $image,
358  20 / 96.0 * 72, // As in compensateFontSizeBasedOnFreetypeDpi
359  0,
360  10,
361  20,
362  $textColor,
363  ‪ExtensionManagementUtility::extPath('install') . 'Resources/Private/Font/vera.ttf',
364  'Testing true type'
365  );
366  $outputFile = ‪Environment::getPublicPath() . '/typo3temp/assets/images/installTool-' . ‪StringUtility::getUniqueId('createTrueTypeFontTestImage') . '.gif';
367  imagegif($image, $outputFile);
368  $fileExists = file_exists($outputFile);
369  if ($fileExists) {
371  }
372  return $this->‪getImageTestResponse([
373  'fileExists' => $fileExists,
374  'outputFile' => $outputFile,
375  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Font.gif',
376  ]);
377  }
378 
384  public function ‪imageProcessingReadJpgAction(): ResponseInterface
385  {
386  return $this->‪convertImageFormatsToJpg('jpg');
387  }
388 
394  public function ‪imageProcessingReadGifAction(): ResponseInterface
395  {
396  return $this->‪convertImageFormatsToJpg('gif');
397  }
398 
404  public function ‪imageProcessingReadPngAction(): ResponseInterface
405  {
406  return $this->‪convertImageFormatsToJpg('png');
407  }
408 
414  public function ‪imageProcessingReadTifAction(): ResponseInterface
415  {
416  return $this->‪convertImageFormatsToJpg('tif');
417  }
418 
424  public function ‪imageProcessingReadPdfAction(): ResponseInterface
425  {
426  return $this->‪convertImageFormatsToJpg('pdf');
427  }
428 
434  public function ‪imageProcessingReadAiAction(): ResponseInterface
435  {
436  return $this->‪convertImageFormatsToJpg('ai');
437  }
438 
444  public function ‪imageProcessingWriteGifAction(): ResponseInterface
445  {
446  if (!$this->‪isImageMagickEnabledAndConfigured()) {
447  return new JsonResponse([
448  'status' => [$this->‪imageMagickDisabledMessage()],
449  ]);
450  }
451  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
452  $inputFile = $imageBasePath . 'TestInput/Test.gif';
453  $imageProcessor = $this->‪initializeImageProcessor();
454  $imageProcessor->imageMagickConvert_forceFileNameBody = ‪StringUtility::getUniqueId('write-gif');
455  $imResult = $imageProcessor->imageMagickConvert($inputFile, 'gif', '300', '', '', '', [], true);
456  $messages = new FlashMessageQueue('install');
457  if ($imResult !== null && is_file($imResult[3])) {
458  if (‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['gif_compress']) {
459  clearstatcache();
460  $previousSize = GeneralUtility::formatSize((int)filesize($imResult[3]));
461  $methodUsed = ‪GraphicalFunctions::gifCompress($imResult[3], '');
462  clearstatcache();
463  $compressedSize = GeneralUtility::formatSize((int)filesize($imResult[3]));
464  $messages->enqueue(new FlashMessage(
465  'Method used by compress: ' . $methodUsed . LF
466  . ' Previous filesize: ' . $previousSize . '. Current filesize:' . $compressedSize,
467  'Compressed gif',
469  ));
470  } else {
471  $messages->enqueue(new FlashMessage(
472  '',
473  'Gif compression not enabled by [GFX][gif_compress]',
475  ));
476  }
477  $result = [
478  'status' => $messages,
479  'fileExists' => true,
480  'outputFile' => $imResult[3],
481  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Write-gif.gif',
482  'command' => $imageProcessor->IM_commands,
483  ];
484  } else {
485  $result = [
486  'status' => [$this->‪imageGenerationFailedMessage()],
487  'command' => $imageProcessor->IM_commands,
488  ];
489  }
490  return $this->‪getImageTestResponse($result);
491  }
492 
498  public function ‪imageProcessingWritePngAction(): ResponseInterface
499  {
500  if (!$this->‪isImageMagickEnabledAndConfigured()) {
501  return new JsonResponse([
502  'status' => [$this->‪imageMagickDisabledMessage()],
503  ]);
504  }
505  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
506  $inputFile = $imageBasePath . 'TestInput/Test.png';
507  $imageProcessor = $this->‪initializeImageProcessor();
508  $imageProcessor->imageMagickConvert_forceFileNameBody = ‪StringUtility::getUniqueId('write-png');
509  $imResult = $imageProcessor->imageMagickConvert($inputFile, 'png', '300', '', '', '', [], true);
510  if ($imResult !== null && is_file($imResult[3])) {
511  $result = [
512  'fileExists' => true,
513  'outputFile' => $imResult[3],
514  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Write-png.png',
515  'command' => $imageProcessor->IM_commands,
516  ];
517  } else {
518  $result = [
519  'status' => [$this->‪imageGenerationFailedMessage()],
520  'command' => $imageProcessor->IM_commands,
521  ];
522  }
523  return $this->‪getImageTestResponse($result);
524  }
525 
531  public function ‪imageProcessingGifToGifAction(): ResponseInterface
532  {
533  if (!$this->‪isImageMagickEnabledAndConfigured()) {
534  return new JsonResponse([
535  'status' => [$this->‪imageMagickDisabledMessage()],
536  ]);
537  }
538  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
539  $imageProcessor = $this->‪initializeImageProcessor();
540  $inputFile = $imageBasePath . 'TestInput/Transparent.gif';
541  $imageProcessor->imageMagickConvert_forceFileNameBody = ‪StringUtility::getUniqueId('scale-gif');
542  $imResult = $imageProcessor->imageMagickConvert($inputFile, 'gif', '300', '', '', '', [], true);
543  if ($imResult !== null && file_exists($imResult[3])) {
544  $result = [
545  'fileExists' => true,
546  'outputFile' => $imResult[3],
547  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Scale-gif.gif',
548  'command' => $imageProcessor->IM_commands,
549  ];
550  } else {
551  $result = [
552  'status' => [$this->‪imageGenerationFailedMessage()],
553  'command' => $imageProcessor->IM_commands,
554  ];
555  }
556  return $this->‪getImageTestResponse($result);
557  }
558 
564  public function ‪imageProcessingPngToPngAction(): ResponseInterface
565  {
566  if (!$this->‪isImageMagickEnabledAndConfigured()) {
567  return new JsonResponse([
568  'status' => [$this->‪imageMagickDisabledMessage()],
569  ]);
570  }
571  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
572  $imageProcessor = $this->‪initializeImageProcessor();
573  $inputFile = $imageBasePath . 'TestInput/Transparent.png';
574  $imageProcessor->imageMagickConvert_forceFileNameBody = ‪StringUtility::getUniqueId('scale-png');
575  $imResult = $imageProcessor->imageMagickConvert($inputFile, 'png', '300', '', '', '', [], true);
576  if ($imResult !== null && file_exists($imResult[3])) {
577  $result = [
578  'fileExists' => true,
579  'outputFile' => $imResult[3],
580  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Scale-png.png',
581  'command' => $imageProcessor->IM_commands,
582  ];
583  } else {
584  $result = [
585  'status' => [$this->‪imageGenerationFailedMessage()],
586  'command' => $imageProcessor->IM_commands,
587  ];
588  }
589  return $this->‪getImageTestResponse($result);
590  }
591 
597  public function ‪imageProcessingGifToJpgAction(): ResponseInterface
598  {
599  if (!$this->‪isImageMagickEnabledAndConfigured()) {
600  return new JsonResponse([
601  'status' => [$this->‪imageMagickDisabledMessage()],
602  ]);
603  }
604  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
605  $imageProcessor = $this->‪initializeImageProcessor();
606  $inputFile = $imageBasePath . 'TestInput/Transparent.gif';
607  $imageProcessor->imageMagickConvert_forceFileNameBody = ‪StringUtility::getUniqueId('scale-jpg');
608  $jpegQuality = ‪MathUtility::forceIntegerInRange(‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['jpg_quality'], 10, 100, 85);
609  $imResult = $imageProcessor->imageMagickConvert($inputFile, 'jpg', '300', '', '-quality ' . $jpegQuality . ' -opaque white -background white -flatten', '', [], true);
610  if ($imResult !== null && file_exists($imResult[3])) {
611  $result = [
612  'fileExists' => true,
613  'outputFile' => $imResult[3],
614  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Scale-jpg.jpg',
615  'command' => $imageProcessor->IM_commands,
616  ];
617  } else {
618  $result = [
619  'status' => [$this->‪imageGenerationFailedMessage()],
620  'command' => $imageProcessor->IM_commands,
621  ];
622  }
623  return $this->‪getImageTestResponse($result);
624  }
625 
631  public function ‪imageProcessingCombineGifMaskAction(): ResponseInterface
632  {
633  if (!$this->‪isImageMagickEnabledAndConfigured()) {
634  return new JsonResponse([
635  'status' => [$this->‪imageMagickDisabledMessage()],
636  ]);
637  }
638  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
639  $imageProcessor = $this->‪initializeImageProcessor();
640  $inputFile = $imageBasePath . 'TestInput/BackgroundOrange.gif';
641  $overlayFile = $imageBasePath . 'TestInput/Test.jpg';
642  $maskFile = $imageBasePath . 'TestInput/MaskBlackWhite.gif';
643  $resultFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix
644  . ‪StringUtility::getUniqueId($imageProcessor->alternativeOutputKey . 'combine1') . '.jpg';
645  $imageProcessor->combineExec($inputFile, $overlayFile, $maskFile, $resultFile);
646  $imResult = $imageProcessor->getImageDimensions($resultFile);
647  if ($imResult) {
648  $result = [
649  'fileExists' => true,
650  'outputFile' => $imResult[3],
651  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Combine-1.jpg',
652  'command' => $imageProcessor->IM_commands,
653  ];
654  } else {
655  $result = [
656  'status' => [$this->‪imageGenerationFailedMessage()],
657  'command' => $imageProcessor->IM_commands,
658  ];
659  }
660  return $this->‪getImageTestResponse($result);
661  }
662 
668  public function ‪imageProcessingCombineJpgMaskAction(): ResponseInterface
669  {
670  if (!$this->‪isImageMagickEnabledAndConfigured()) {
671  return new JsonResponse([
672  'status' => [$this->‪imageMagickDisabledMessage()],
673  ]);
674  }
675  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
676  $imageProcessor = $this->‪initializeImageProcessor();
677  $inputFile = $imageBasePath . 'TestInput/BackgroundCombine.jpg';
678  $overlayFile = $imageBasePath . 'TestInput/Test.jpg';
679  $maskFile = $imageBasePath . 'TestInput/MaskCombine.jpg';
680  $resultFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix
681  . ‪StringUtility::getUniqueId($imageProcessor->alternativeOutputKey . 'combine2') . '.jpg';
682  $imageProcessor->combineExec($inputFile, $overlayFile, $maskFile, $resultFile);
683  $imResult = $imageProcessor->getImageDimensions($resultFile);
684  if ($imResult) {
685  $result = [
686  'fileExists' => true,
687  'outputFile' => $imResult[3],
688  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Combine-2.jpg',
689  'command' => $imageProcessor->IM_commands,
690  ];
691  } else {
692  $result = [
693  'status' => [$this->‪imageGenerationFailedMessage()],
694  'command' => $imageProcessor->IM_commands,
695  ];
696  }
697  return $this->‪getImageTestResponse($result);
698  }
699 
705  public function ‪imageProcessingGdlibSimpleAction(): ResponseInterface
706  {
707  $imageProcessor = $this->‪initializeImageProcessor();
708  $gifOrPng = $imageProcessor->gifExtension;
709  $image = imagecreatetruecolor(300, 225);
710  $backgroundColor = imagecolorallocate($image, 0, 0, 0);
711  imagefilledrectangle($image, 0, 0, 300, 225, $backgroundColor);
712  $workArea = [0, 0, 300, 225];
713  $conf = [
714  'dimensions' => '10,50,280,50',
715  'color' => 'olive',
716  ];
717  $imageProcessor->makeBox($image, $conf, $workArea);
718  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('gdSimple') . '.' . $gifOrPng;
719  $imageProcessor->ImageWrite($image, $outputFile);
720  $imResult = $imageProcessor->getImageDimensions($outputFile);
721  $result = [
722  'fileExists' => true,
723  'outputFile' => $imResult[3],
724  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Gdlib-simple.' . $gifOrPng,
725  'command' => $imageProcessor->IM_commands,
726  ];
727  return $this->‪getImageTestResponse($result);
728  }
729 
735  public function ‪imageProcessingGdlibFromFileAction(): ResponseInterface
736  {
737  $imageProcessor = $this->‪initializeImageProcessor();
738  $gifOrPng = $imageProcessor->gifExtension;
739  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
740  $inputFile = $imageBasePath . 'TestInput/Test.' . $gifOrPng;
741  $image = $imageProcessor->imageCreateFromFile($inputFile);
742  $workArea = [0, 0, 400, 300];
743  $conf = [
744  'dimensions' => '10,50,380,50',
745  'color' => 'olive',
746  ];
747  $imageProcessor->makeBox($image, $conf, $workArea);
748  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('gdBox') . '.' . $gifOrPng;
749  $imageProcessor->ImageWrite($image, $outputFile);
750  $imResult = $imageProcessor->getImageDimensions($outputFile);
751  $result = [
752  'fileExists' => true,
753  'outputFile' => $imResult[3],
754  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Gdlib-box.' . $gifOrPng,
755  'command' => $imageProcessor->IM_commands,
756  ];
757  return $this->‪getImageTestResponse($result);
758  }
759 
765  public function ‪imageProcessingGdlibRenderTextAction(): ResponseInterface
766  {
767  $imageProcessor = $this->‪initializeImageProcessor();
768  $gifOrPng = $imageProcessor->gifExtension;
769  $image = imagecreatetruecolor(300, 225);
770  $backgroundColor = imagecolorallocate($image, 128, 128, 150);
771  imagefilledrectangle($image, 0, 0, 300, 225, $backgroundColor);
772  $workArea = [0, 0, 300, 225];
773  $conf = [
774  'iterations' => 1,
775  'angle' => 0,
776  'antiAlias' => 1,
777  'text' => 'HELLO WORLD',
778  'fontColor' => '#003366',
779  'fontSize' => 30,
780  'fontFile' => ‪ExtensionManagementUtility::extPath('install') . 'Resources/Private/Font/vera.ttf',
781  'offset' => '30,80',
782  ];
783  $conf['BBOX'] = $imageProcessor->calcBBox($conf);
784  $imageProcessor->makeText($image, $conf, $workArea);
785  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('gdText') . '.' . $gifOrPng;
786  $imageProcessor->ImageWrite($image, $outputFile);
787  $imResult = $imageProcessor->getImageDimensions($outputFile);
788  $result = [
789  'fileExists' => true,
790  'outputFile' => $imResult[3],
791  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Gdlib-text.' . $gifOrPng,
792  'command' => $imageProcessor->IM_commands,
793  ];
794  return $this->‪getImageTestResponse($result);
795  }
796 
802  public function ‪imageProcessingGdlibNiceTextAction(): ResponseInterface
803  {
804  if (!$this->‪isImageMagickEnabledAndConfigured()) {
805  return new JsonResponse([
806  'status' => [$this->‪imageMagickDisabledMessage()],
807  ]);
808  }
809  $imageProcessor = $this->‪initializeImageProcessor();
810  $gifOrPng = $imageProcessor->gifExtension;
811  $image = imagecreatetruecolor(300, 225);
812  $backgroundColor = imagecolorallocate($image, 128, 128, 150);
813  imagefilledrectangle($image, 0, 0, 300, 225, $backgroundColor);
814  $workArea = [0, 0, 300, 225];
815  $conf = [
816  'iterations' => 1,
817  'angle' => 0,
818  'antiAlias' => 1,
819  'text' => 'HELLO WORLD',
820  'fontColor' => '#003366',
821  'fontSize' => 30,
822  'fontFile' => ‪ExtensionManagementUtility::extPath('install') . 'Resources/Private/Font/vera.ttf',
823  'offset' => '30,80',
824  ];
825  $conf['BBOX'] = $imageProcessor->calcBBox($conf);
826  $imageProcessor->makeText($image, $conf, $workArea);
827  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('gdText') . '.' . $gifOrPng;
828  $imageProcessor->ImageWrite($image, $outputFile);
829  $conf['offset'] = '30,120';
830  $conf['niceText'] = 1;
831  $imageProcessor->makeText($image, $conf, $workArea);
832  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('gdNiceText') . '.' . $gifOrPng;
833  $imageProcessor->ImageWrite($image, $outputFile);
834  $imResult = $imageProcessor->getImageDimensions($outputFile);
835  $result = [
836  'fileExists' => true,
837  'outputFile' => $imResult[3],
838  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Gdlib-niceText.' . $gifOrPng,
839  'command' => $imageProcessor->IM_commands,
840  ];
841  return $this->‪getImageTestResponse($result);
842  }
843 
849  public function ‪imageProcessingGdlibNiceTextShadowAction(): ResponseInterface
850  {
851  if (!$this->‪isImageMagickEnabledAndConfigured()) {
852  return new JsonResponse([
853  'status' => [$this->‪imageMagickDisabledMessage()],
854  ]);
855  }
856  $imageProcessor = $this->‪initializeImageProcessor();
857  $gifOrPng = $imageProcessor->gifExtension;
858  $image = imagecreatetruecolor(300, 225);
859  $backgroundColor = imagecolorallocate($image, 128, 128, 150);
860  imagefilledrectangle($image, 0, 0, 300, 225, $backgroundColor);
861  $workArea = [0, 0, 300, 225];
862  $conf = [
863  'iterations' => 1,
864  'angle' => 0,
865  'antiAlias' => 1,
866  'text' => 'HELLO WORLD',
867  'fontColor' => '#003366',
868  'fontSize' => 30,
869  'fontFile' => ‪ExtensionManagementUtility::extPath('install') . 'Resources/Private/Font/vera.ttf',
870  'offset' => '30,80',
871  ];
872  $conf['BBOX'] = $imageProcessor->calcBBox($conf);
873  $imageProcessor->makeText($image, $conf, $workArea);
874  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('gdText') . '.' . $gifOrPng;
875  $imageProcessor->ImageWrite($image, $outputFile);
876  $conf['offset'] = '30,120';
877  $conf['niceText'] = 1;
878  $imageProcessor->makeText($image, $conf, $workArea);
879  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('gdNiceText') . '.' . $gifOrPng;
880  $imageProcessor->ImageWrite($image, $outputFile);
881  $conf['offset'] = '30,160';
882  $conf['niceText'] = 1;
883  $conf['shadow.'] = [
884  'offset' => '2,2',
885  'blur' => '20',
886  'opacity' => '50',
887  'color' => 'black'
888  ];
889  // Warning: Re-uses $image from above!
890  $imageProcessor->makeShadow($image, $conf['shadow.'], $workArea, $conf);
891  $imageProcessor->makeText($image, $conf, $workArea);
892  $outputFile = $this->‪getImagesPath() . $imageProcessor->filenamePrefix . ‪StringUtility::getUniqueId('GDwithText-niceText-shadow') . '.' . $gifOrPng;
893  $imageProcessor->ImageWrite($image, $outputFile);
894  $imResult = $imageProcessor->getImageDimensions($outputFile);
895  $result = [
896  'fileExists' => true,
897  'outputFile' => $imResult[3],
898  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Gdlib-shadow.' . $gifOrPng,
899  'command' => $imageProcessor->IM_commands,
900  ];
901  return $this->‪getImageTestResponse($result);
902  }
903 
909  protected function ‪initializeImageProcessor(): GraphicalFunctions
910  {
911  $imageProcessor = GeneralUtility::makeInstance(GraphicalFunctions::class);
912  $imageProcessor->dontCheckForExistingTempFile = true;
913  $imageProcessor->filenamePrefix = 'installTool-';
914  $imageProcessor->dontCompress = true;
915  $imageProcessor->alternativeOutputKey = 'typo3InstallTest';
916  $imageProcessor->setImageFileExt(self::IMAGE_FILE_EXT);
917  return $imageProcessor;
918  }
919 
925  protected function ‪determineImageMagickVersion(): string
926  {
927  $command = ‪CommandUtility::imageMagickCommand('identify', '-version');
928  ‪CommandUtility::exec($command, $result);
929  $string = $result[0];
930  $version = '';
931  if (!empty($string)) {
932  [, $version] = explode('Magick', $string);
933  [$version] = explode(' ', trim($version));
934  $version = trim($version);
935  }
936  return $version;
937  }
938 
945  protected function ‪convertImageFormatsToJpg(string $inputFormat): ResponseInterface
946  {
947  if (!$this->‪isImageMagickEnabledAndConfigured()) {
948  return new JsonResponse([
949  'status' => [$this->‪imageMagickDisabledMessage()],
950  ]);
951  }
952  if (!GeneralUtility::inList(‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'], $inputFormat)) {
953  return new JsonResponse([
954  'status' => [
955  new FlashMessage(
956  'Handling format ' . $inputFormat . ' must be enabled in TYPO3_CONF_VARS[\'GFX\'][\'imagefile_ext\']',
957  'Skipped test',
959  )
960  ]
961  ]);
962  }
963  $imageBasePath = ‪ExtensionManagementUtility::extPath('install') . 'Resources/Public/Images/';
964  $imageProcessor = $this->‪initializeImageProcessor();
965  $inputFile = $imageBasePath . 'TestInput/Test.' . $inputFormat;
966  $imageProcessor->imageMagickConvert_forceFileNameBody = ‪StringUtility::getUniqueId('read') . '-' . $inputFormat;
967  $imResult = $imageProcessor->imageMagickConvert($inputFile, 'jpg', '300', '', '', '', [], true);
968  if ($imResult !== null) {
969  $result = [
970  'fileExists' => file_exists($imResult[3]),
971  'outputFile' => $imResult[3],
972  'referenceFile' => ‪Environment::getFrameworkBasePath() . '/install/Resources/Public/Images/TestReference/Read-' . $inputFormat . '.jpg',
973  'command' => $imageProcessor->IM_commands,
974  ];
975  } else {
976  $result = [
977  'status' => [$this->‪imageGenerationFailedMessage()],
978  'command' => $imageProcessor->IM_commands,
979  ];
980  }
981  return $this->‪getImageTestResponse($result);
982  }
983 
989  protected function ‪getDatabaseConnectionInformation(): array
990  {
991  $connectionInfos = [];
992  $connectionPool = GeneralUtility::makeInstance(ConnectionPool::class);
993  foreach ($connectionPool->getConnectionNames() as $connectionName) {
994  $connection = $connectionPool->getConnectionByName($connectionName);
995  $connectionParameters = $connection->getParams();
996  $connectionInfo = [
997  'connectionName' => $connectionName,
998  'version' => $connection->getServerVersion(),
999  'databaseName' => $connection->getDatabase(),
1000  'username' => $connectionParameters['user'],
1001  'host' => $connectionParameters['host'],
1002  'port' => $connectionParameters['port'],
1003  'socket' => $connectionParameters['unix_socket'] ?? '',
1004  'numberOfTables' => count($connection->getSchemaManager()->listTableNames()),
1005  'numberOfMappedTables' => 0,
1006  ];
1007  if (isset(‪$GLOBALS['TYPO3_CONF_VARS']['DB']['TableMapping'])
1008  && is_array(‪$GLOBALS['TYPO3_CONF_VARS']['DB']['TableMapping'])
1009  ) {
1010  // Count number of array keys having $connectionName as value
1011  $connectionInfo['numberOfMappedTables'] = count(array_intersect(
1012  ‪$GLOBALS['TYPO3_CONF_VARS']['DB']['TableMapping'],
1013  [$connectionName]
1014  ));
1015  }
1016  $connectionInfos[] = $connectionInfo;
1017  }
1018  return $connectionInfos;
1019  }
1020 
1026  protected function ‪getApplicationContextInformation(): array
1027  {
1028  $applicationContext = ‪Environment::getContext();
1029  $status = $applicationContext->isProduction() ? ‪InformationStatus::STATUS_OK : ‪InformationStatus::STATUS_WARNING;
1030 
1031  return [
1032  'context' => (string)$applicationContext,
1033  'status' => $status,
1034  ];
1035  }
1036 
1044  protected function ‪getSenderEmailAddress(): string
1045  {
1046  return !empty(‪$GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromAddress'])
1047  ? ‪$GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromAddress']
1048  : 'no-reply@example.com';
1049  }
1050 
1058  protected function ‪getSenderEmailName(): string
1059  {
1060  return !empty(‪$GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromName'])
1061  ? ‪$GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromName']
1062  : 'TYPO3 CMS install tool';
1063  }
1064 
1072  protected function ‪getEmailSubject(): string
1073  {
1074  $name = !empty(‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'])
1075  ? ' from site "' . ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'] . '"'
1076  : '';
1077  return 'Test TYPO3 CMS mail delivery' . $name;
1078  }
1079 
1086  protected function ‪getImageTestResponse(array $testResult): ResponseInterface
1087  {
1088  $responseData = [
1089  'success' => true,
1090  ];
1091  foreach ($testResult as $resultKey => $value) {
1092  if ($resultKey === 'referenceFile' && !empty($testResult['referenceFile'])) {
1093  $fileExt = end(explode('.', $testResult['referenceFile']));
1094  $responseData['referenceFile'] = 'data:image/' . $fileExt . ';base64,' . base64_encode((string)file_get_contents($testResult['referenceFile']));
1095  } elseif ($resultKey === 'outputFile' && !empty($testResult['outputFile'])) {
1096  $fileExt = end(explode('.', $testResult['outputFile']));
1097  $responseData['outputFile'] = 'data:image/' . $fileExt . ';base64,' . base64_encode((string)file_get_contents($testResult['outputFile']));
1098  } else {
1099  $responseData[$resultKey] = $value;
1100  }
1101  }
1102  return new JsonResponse($responseData);
1103  }
1104 
1110  protected function ‪imageGenerationFailedMessage(): FlashMessage
1111  {
1112  return new FlashMessage(
1113  'ImageMagick / GraphicsMagick handling is enabled, but the execute'
1114  . ' command returned an error. Please check your settings, especially'
1115  . ' [\'GFX\'][\'processor_path\'] and [\'GFX\'][\'processor_path_lzw\'] and ensure Ghostscript is installed on your server.',
1116  'Image generation failed',
1118  );
1119  }
1120 
1126  protected function ‪isImageMagickEnabledAndConfigured(): bool
1127  {
1128  $enabled = ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_enabled'];
1129  $path = ‪$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_path'];
1130  return $enabled && $path;
1131  }
1132 
1138  protected function ‪imageMagickDisabledMessage(): FlashMessage
1139  {
1140  return new FlashMessage(
1141  'ImageMagick / GraphicsMagick handling is disabled or not configured correctly.',
1142  'Tests not executed',
1144  );
1145  }
1146 
1153  protected function ‪getImagesPath(): string
1154  {
1155  $imagePath = ‪Environment::getPublicPath() . '/typo3temp/assets/images/';
1156  if (!is_dir($imagePath)) {
1157  ‪GeneralUtility::mkdir_deep($imagePath);
1158  }
1159  return $imagePath;
1160  }
1161 }
‪TYPO3\CMS\Install\Controller\EnvironmentController\environmentCheckGetStatusAction
‪ResponseInterface environmentCheckGetStatusAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:124
‪TYPO3\CMS\Install\Controller\EnvironmentController\folderStructureGetStatusAction
‪ResponseInterface folderStructureGetStatusAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:169
‪TYPO3\CMS\Install\Controller\EnvironmentController\isImageMagickEnabledAndConfigured
‪bool isImageMagickEnabledAndConfigured()
Definition: EnvironmentController.php:1125
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingReadPngAction
‪ResponseInterface imageProcessingReadPngAction()
Definition: EnvironmentController.php:403
‪TYPO3\CMS\Install\Controller\AbstractController\initializeStandaloneView
‪StandaloneView initializeStandaloneView(ServerRequestInterface $request, string $templatePath)
Definition: AbstractController.php:40
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGifToJpgAction
‪ResponseInterface imageProcessingGifToJpgAction()
Definition: EnvironmentController.php:596
‪TYPO3\CMS\Core\FormProtection\FormProtectionFactory\get
‪static TYPO3 CMS Core FormProtection AbstractFormProtection get($classNameOrType='default',... $constructorArguments)
Definition: FormProtectionFactory.php:74
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGdlibRenderTextAction
‪ResponseInterface imageProcessingGdlibRenderTextAction()
Definition: EnvironmentController.php:764
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGdlibSimpleAction
‪ResponseInterface imageProcessingGdlibSimpleAction()
Definition: EnvironmentController.php:704
‪TYPO3\CMS\Install\Controller\EnvironmentController\initializeImageProcessor
‪GraphicalFunctions initializeImageProcessor()
Definition: EnvironmentController.php:908
‪TYPO3\CMS\Core\Core\Environment\getPublicPath
‪static string getPublicPath()
Definition: Environment.php:180
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGdlibNiceTextAction
‪ResponseInterface imageProcessingGdlibNiceTextAction()
Definition: EnvironmentController.php:801
‪TYPO3\CMS\Core\Core\Environment\isRunningOnCgiServer
‪static bool isRunningOnCgiServer()
Definition: Environment.php:312
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingReadGifAction
‪ResponseInterface imageProcessingReadGifAction()
Definition: EnvironmentController.php:393
‪TYPO3\CMS\Core\Utility\MathUtility\forceIntegerInRange
‪static int forceIntegerInRange($theInt, $min, $max=2000000000, $defaultValue=0)
Definition: MathUtility.php:32
‪TYPO3\CMS\Install\Controller\EnvironmentController
Definition: EnvironmentController.php:53
‪TYPO3\CMS\Core\Core\Environment\isWindows
‪static bool isWindows()
Definition: Environment.php:292
‪TYPO3\CMS\Install\FolderStructure\DefaultFactory
Definition: DefaultFactory.php:25
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGetDataAction
‪ResponseInterface imageProcessingGetDataAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:320
‪TYPO3\CMS\Install\Controller\EnvironmentController\IMAGE_FILE_EXT
‪const IMAGE_FILE_EXT
Definition: EnvironmentController.php:54
‪TYPO3\CMS\Install\Controller\EnvironmentController\__construct
‪__construct(LateBootService $lateBootService)
Definition: EnvironmentController.php:60
‪TYPO3\CMS\Backend\Toolbar\Enumeration\InformationStatus\STATUS_OK
‪const STATUS_OK
Definition: InformationStatus.php:40
‪TYPO3\CMS\Install\Controller\EnvironmentController\cardsAction
‪ResponseInterface cardsAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:72
‪TYPO3\CMS\Core\Core\Environment\getFrameworkBasePath
‪static string getFrameworkBasePath()
Definition: Environment.php:261
‪TYPO3\CMS\Core\FormProtection\InstallToolFormProtection
Definition: InstallToolFormProtection.php:61
‪TYPO3\CMS\Install\Controller\EnvironmentController\getImagesPath
‪string getImagesPath()
Definition: EnvironmentController.php:1152
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageMagickDisabledMessage
‪FlashMessage imageMagickDisabledMessage()
Definition: EnvironmentController.php:1137
‪TYPO3\CMS\Core\Core\Environment\getContext
‪static ApplicationContext getContext()
Definition: Environment.php:133
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGdlibNiceTextShadowAction
‪ResponseInterface imageProcessingGdlibNiceTextShadowAction()
Definition: EnvironmentController.php:848
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility
Definition: ExtensionManagementUtility.php:43
‪TYPO3\CMS\Install\Controller\EnvironmentController\getApplicationContextInformation
‪array getApplicationContextInformation()
Definition: EnvironmentController.php:1025
‪TYPO3\CMS\Core\Messaging\AbstractMessage\WARNING
‪const WARNING
Definition: AbstractMessage.php:30
‪TYPO3\CMS\Install\SystemEnvironment\DatabaseCheck
Definition: DatabaseCheck.php:78
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingTrueTypeAction
‪ResponseInterface imageProcessingTrueTypeAction()
Definition: EnvironmentController.php:350
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingReadAiAction
‪ResponseInterface imageProcessingReadAiAction()
Definition: EnvironmentController.php:433
‪TYPO3\CMS\Core\Imaging\GraphicalFunctions
Definition: GraphicalFunctions.php:37
‪TYPO3\CMS\Backend\Toolbar\Enumeration\InformationStatus\STATUS_WARNING
‪const STATUS_WARNING
Definition: InformationStatus.php:45
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingReadJpgAction
‪ResponseInterface imageProcessingReadJpgAction()
Definition: EnvironmentController.php:383
‪TYPO3\CMS\Core\Utility\GeneralUtility\fixPermissions
‪static mixed fixPermissions($path, $recursive=false)
Definition: GeneralUtility.php:1863
‪TYPO3\CMS\Core\Utility\GeneralUtility\mkdir_deep
‪static mkdir_deep($directory)
Definition: GeneralUtility.php:2022
‪TYPO3\CMS\Core\Mail\FluidEmail
Definition: FluidEmail.php:35
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGifToGifAction
‪ResponseInterface imageProcessingGifToGifAction()
Definition: EnvironmentController.php:530
‪TYPO3\CMS\Core\Imaging\GraphicalFunctions\gifCompress
‪static string gifCompress($theFile, $type)
Definition: GraphicalFunctions.php:2528
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingReadTifAction
‪ResponseInterface imageProcessingReadTifAction()
Definition: EnvironmentController.php:413
‪TYPO3\CMS\Core\Utility\CommandUtility\exec
‪static string exec($command, &$output=null, &$returnValue=0)
Definition: CommandUtility.php:81
‪TYPO3\CMS\Install\Controller
Definition: AbstractController.php:18
‪TYPO3\CMS\Install\SystemEnvironment\ServerResponse\ServerResponseCheck
Definition: ServerResponseCheck.php:42
‪TYPO3\CMS\Install\Controller\EnvironmentController\determineImageMagickVersion
‪string determineImageMagickVersion()
Definition: EnvironmentController.php:924
‪TYPO3\CMS\Install\Controller\EnvironmentController\mailTestAction
‪ResponseInterface mailTestAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:259
‪TYPO3\CMS\Backend\Toolbar\Enumeration\InformationStatus
Definition: InformationStatus.php:24
‪TYPO3\CMS\Install\Service\LateBootService
Definition: LateBootService.php:34
‪TYPO3\CMS\Core\Mail\Mailer
Definition: Mailer.php:38
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingPngToPngAction
‪ResponseInterface imageProcessingPngToPngAction()
Definition: EnvironmentController.php:563
‪TYPO3\CMS\Install\SystemEnvironment\DatabaseCheck
‪TYPO3\CMS\Core\Messaging\AbstractMessage\OK
‪const OK
Definition: AbstractMessage.php:29
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingReadPdfAction
‪ResponseInterface imageProcessingReadPdfAction()
Definition: EnvironmentController.php:423
‪TYPO3\CMS\Install\Controller\EnvironmentController\getImageTestResponse
‪ResponseInterface getImageTestResponse(array $testResult)
Definition: EnvironmentController.php:1085
‪TYPO3\CMS\Install\Controller\EnvironmentController\convertImageFormatsToJpg
‪ResponseInterface convertImageFormatsToJpg(string $inputFormat)
Definition: EnvironmentController.php:944
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingWriteGifAction
‪ResponseInterface imageProcessingWriteGifAction()
Definition: EnvironmentController.php:443
‪TYPO3\CMS\Core\Messaging\AbstractMessage\INFO
‪const INFO
Definition: AbstractMessage.php:28
‪TYPO3\CMS\Core\Utility\StringUtility\getUniqueId
‪static string getUniqueId($prefix='')
Definition: StringUtility.php:92
‪TYPO3\CMS\Core\Messaging\FlashMessage
Definition: FlashMessage.php:24
‪TYPO3\CMS\Core\FormProtection\FormProtectionFactory
Definition: FormProtectionFactory.php:47
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingCombineJpgMaskAction
‪ResponseInterface imageProcessingCombineJpgMaskAction()
Definition: EnvironmentController.php:667
‪TYPO3\CMS\Install\SystemEnvironment\Check
Definition: Check.php:55
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingCombineGifMaskAction
‪ResponseInterface imageProcessingCombineGifMaskAction()
Definition: EnvironmentController.php:630
‪TYPO3\CMS\Core\Http\JsonResponse
Definition: JsonResponse.php:26
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:40
‪TYPO3\CMS\Install\Controller\EnvironmentController\getSenderEmailAddress
‪string getSenderEmailAddress()
Definition: EnvironmentController.php:1043
‪TYPO3\CMS\Install\SystemEnvironment\SetupCheck
Definition: SetupCheck.php:36
‪TYPO3\CMS\Core\Utility\MathUtility
Definition: MathUtility.php:22
‪TYPO3\CMS\Install\Controller\EnvironmentController\phpInfoGetDataAction
‪ResponseInterface phpInfoGetDataAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:109
‪TYPO3\CMS\Install\Controller\AbstractController
Definition: AbstractController.php:31
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility\extPath
‪static string extPath($key, $script='')
Definition: ExtensionManagementUtility.php:127
‪TYPO3\CMS\Core\Messaging\AbstractMessage\NOTICE
‪const NOTICE
Definition: AbstractMessage.php:27
‪TYPO3\CMS\Install\Controller\EnvironmentController\folderStructureFixAction
‪ResponseInterface folderStructureFixAction()
Definition: EnvironmentController.php:216
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:46
‪TYPO3\CMS\Install\Controller\EnvironmentController\getEmailSubject
‪string getEmailSubject()
Definition: EnvironmentController.php:1071
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46
‪TYPO3\CMS\Core\Utility\StringUtility
Definition: StringUtility.php:22
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageGenerationFailedMessage
‪FlashMessage imageGenerationFailedMessage()
Definition: EnvironmentController.php:1109
‪TYPO3\CMS\Core\Utility\CommandUtility
Definition: CommandUtility.php:49
‪TYPO3\CMS\Core\Messaging\FlashMessageQueue
Definition: FlashMessageQueue.php:29
‪TYPO3\CMS\Core\Utility\CommandUtility\imageMagickCommand
‪static string imageMagickCommand($command, $parameters, $path='')
Definition: CommandUtility.php:94
‪TYPO3\CMS\Install\Controller\EnvironmentController\mailTestGetDataAction
‪ResponseInterface mailTestGetDataAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:233
‪TYPO3\CMS\Core\Messaging\AbstractMessage\ERROR
‪const ERROR
Definition: AbstractMessage.php:31
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingGdlibFromFileAction
‪ResponseInterface imageProcessingGdlibFromFileAction()
Definition: EnvironmentController.php:734
‪TYPO3\CMS\Install\Controller\EnvironmentController\getSenderEmailName
‪string getSenderEmailName()
Definition: EnvironmentController.php:1057
‪TYPO3\CMS\Install\Controller\EnvironmentController\$lateBootService
‪LateBootService $lateBootService
Definition: EnvironmentController.php:58
‪TYPO3\CMS\Install\Controller\EnvironmentController\imageProcessingWritePngAction
‪ResponseInterface imageProcessingWritePngAction()
Definition: EnvironmentController.php:497
‪TYPO3\CMS\Install\FolderStructure\DefaultPermissionsCheck
Definition: DefaultPermissionsCheck.php:26
‪TYPO3\CMS\Install\Controller\EnvironmentController\getDatabaseConnectionInformation
‪array getDatabaseConnectionInformation()
Definition: EnvironmentController.php:988
‪TYPO3\CMS\Install\Controller\EnvironmentController\systemInformationGetDataAction
‪ResponseInterface systemInformationGetDataAction(ServerRequestInterface $request)
Definition: EnvironmentController.php:87