diff --git a/Build/phpstan/phpstan-baseline.neon b/Build/phpstan/phpstan-baseline.neon index af4bc0bde780f7f4e5506175875526f25248f3c8..1290d950fed7f85e9317eddb3dc07032c07be1b9 100644 --- a/Build/phpstan/phpstan-baseline.neon +++ b/Build/phpstan/phpstan-baseline.neon @@ -550,16 +550,6 @@ parameters: count: 1 path: ../../typo3/sysext/core/Classes/Resource/FileReference.php - - - message: "#^Parameter \\#1 \\$uid of method TYPO3\\\\CMS\\\\Core\\\\Resource\\\\ResourceFactory\\:\\:getFileReferenceObject\\(\\) expects int, string given\\.$#" - count: 1 - path: ../../typo3/sysext/core/Classes/Resource/Filter/FileExtensionFilter.php - - - - message: "#^Parameter \\#2 \\$id of method TYPO3\\\\CMS\\\\Core\\\\DataHandling\\\\DataHandler\\:\\:deleteAction\\(\\) expects int, string given\\.$#" - count: 1 - path: ../../typo3/sysext/core/Classes/Resource/Filter/FileExtensionFilter.php - - message: "#^Call to an undefined method TYPO3\\\\CMS\\\\Core\\\\Resource\\\\FolderInterface\\:\\:getReadablePath\\(\\)\\.$#" count: 1 @@ -1145,11 +1135,6 @@ parameters: count: 1 path: ../../typo3/sysext/extbase/Classes/Service/ImageService.php - - - message: "#^Parameter \\#1 \\$uid of method TYPO3\\\\CMS\\\\Core\\\\Resource\\\\ResourceFactory\\:\\:getFileReferenceObject\\(\\) expects int, string given\\.$#" - count: 1 - path: ../../typo3/sysext/extbase/Classes/Service/ImageService.php - - message: "#^Result of && is always false\\.$#" count: 1 @@ -1630,11 +1615,6 @@ parameters: count: 1 path: ../../typo3/sysext/form/Classes/Mvc/Property/PropertyMappingConfiguration.php - - - message: "#^Parameter \\#1 \\$uid of method TYPO3\\\\CMS\\\\Core\\\\Resource\\\\ResourceFactory\\:\\:getFileReferenceObject\\(\\) expects int, string given\\.$#" - count: 1 - path: ../../typo3/sysext/form/Classes/Mvc/Property/TypeConverter/UploadedFileReferenceConverter.php - - message: "#^Parameter \\#1 \\$uid of method TYPO3\\\\CMS\\\\Core\\\\Resource\\\\ResourceFactory\\:\\:getStorageObject\\(\\) expects int\\|null, string given\\.$#" count: 1 @@ -1740,11 +1720,6 @@ parameters: count: 2 path: ../../typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php - - - message: "#^Parameter \\#1 \\$uid of method TYPO3\\\\CMS\\\\Core\\\\Resource\\\\ResourceFactory\\:\\:getFileReferenceObject\\(\\) expects int, string given\\.$#" - count: 2 - path: ../../typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php - - message: "#^Variable \\$conf on left side of \\?\\? always exists and is not nullable\\.$#" count: 14 diff --git a/typo3/sysext/core/Classes/Resource/Filter/FileExtensionFilter.php b/typo3/sysext/core/Classes/Resource/Filter/FileExtensionFilter.php index e34044c06397aca7625c55e9400ab8b649e01d20..26b06bafbde712974f46c0d759a61ff09dfa163a 100644 --- a/typo3/sysext/core/Classes/Resource/Filter/FileExtensionFilter.php +++ b/typo3/sysext/core/Classes/Resource/Filter/FileExtensionFilter.php @@ -62,7 +62,7 @@ class FileExtensionFilter continue; } $parts = GeneralUtility::revExplode('_', (string)$reference, 2); - $fileReferenceUid = $parts[count($parts) - 1]; + $fileReferenceUid = (int)$parts[count($parts) - 1]; try { $fileReference = GeneralUtility::makeInstance(ResourceFactory::class)->getFileReferenceObject($fileReferenceUid); $file = $fileReference->getOriginalFile(); diff --git a/typo3/sysext/core/Classes/Resource/ResourceFactory.php b/typo3/sysext/core/Classes/Resource/ResourceFactory.php index 2244c4624a50483312a1a5364619ff2a369c64ab..1c098ee757bc9d73d391e9b90d87cd9ae038b520 100644 --- a/typo3/sysext/core/Classes/Resource/ResourceFactory.php +++ b/typo3/sysext/core/Classes/Resource/ResourceFactory.php @@ -53,7 +53,7 @@ class ResourceFactory implements SingletonInterface /** * @var FileReference[] */ - protected $fileReferenceInstances = []; + protected array $fileReferenceInstances = []; public function __construct( protected readonly StorageRepository $storageRepository, @@ -422,18 +422,10 @@ class ResourceFactory implements SingletonInterface * @param int $uid The uid of the file usage (sys_file_reference) to instantiate. * @param array $fileReferenceData The record row from database. * @param bool $raw Whether to get raw results without performing overlays - * @return FileReference - * @throws \InvalidArgumentException * @throws Exception\ResourceDoesNotExistException */ - public function getFileReferenceObject($uid, array $fileReferenceData = [], $raw = false) + public function getFileReferenceObject(int $uid, array $fileReferenceData = [], bool $raw = false): FileReference { - if (!is_numeric($uid)) { - throw new \InvalidArgumentException( - 'The reference UID for the file (sys_file_reference) has to be numeric. UID given: "' . $uid . '"', - 1300086584 - ); - } if (!($this->fileReferenceInstances[$uid] ?? false)) { // Fetches data in case $fileData is empty if (empty($fileReferenceData)) { @@ -454,13 +446,10 @@ class ResourceFactory implements SingletonInterface * Creates a file usage object from an array of fileReference data * from sys_file_reference table. * Requires a database row to be already fetched and present. - * - * @return FileReference */ - public function createFileReferenceObject(array $fileReferenceData) + public function createFileReferenceObject(array $fileReferenceData): FileReference { - $fileReferenceObject = GeneralUtility::makeInstance(FileReference::class, $fileReferenceData); - return $fileReferenceObject; + return GeneralUtility::makeInstance(FileReference::class, $fileReferenceData); } /** diff --git a/typo3/sysext/extbase/Classes/Service/ImageService.php b/typo3/sysext/extbase/Classes/Service/ImageService.php index 2d0dbcc5a1c2ae04da44cdb539beedc67a7eea46..3bc93d9c1645daad764f82fd21c68f368787d349 100644 --- a/typo3/sysext/extbase/Classes/Service/ImageService.php +++ b/typo3/sysext/extbase/Classes/Service/ImageService.php @@ -156,7 +156,7 @@ class ImageService implements SingletonInterface } if (MathUtility::canBeInterpretedAsInteger($src)) { if ($treatIdAsReference) { - $image = $this->resourceFactory->getFileReferenceObject($src); + $image = $this->resourceFactory->getFileReferenceObject((int)$src); } else { $image = $this->resourceFactory->getFileObject($src); } diff --git a/typo3/sysext/form/Classes/Mvc/Property/TypeConverter/UploadedFileReferenceConverter.php b/typo3/sysext/form/Classes/Mvc/Property/TypeConverter/UploadedFileReferenceConverter.php index c8abdf8ac85a8e74926f5500e61e4c53d5a3fd39..366d8891f2e600b16e32bccfe5f0f494c1ef7a44 100644 --- a/typo3/sysext/form/Classes/Mvc/Property/TypeConverter/UploadedFileReferenceConverter.php +++ b/typo3/sysext/form/Classes/Mvc/Property/TypeConverter/UploadedFileReferenceConverter.php @@ -151,7 +151,7 @@ class UploadedFileReferenceConverter extends AbstractTypeConverter $resource = $this->createFileReferenceFromFalFileObject($this->resourceFactory->getFileObject($fileUid)); } else { $resource = $this->createFileReferenceFromFalFileReferenceObject( - $this->resourceFactory->getFileReferenceObject($resourcePointer), + $this->resourceFactory->getFileReferenceObject((int)$resourcePointer), (int)$resourcePointer ); } diff --git a/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php b/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php index 214e64d0e460acbf1c62d98d7eae0735468cfc49..719a1ae9d11b5d6241838910a4ae5ae8b5f5250a 100644 --- a/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php +++ b/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php @@ -428,7 +428,7 @@ class ContentObjectRenderer implements LoggerAwareInterface if ($objectType === 'File') { $this->currentFile = GeneralUtility::makeInstance(ResourceFactory::class)->retrieveFileOrFolderObject($identifier); } elseif ($objectType === 'FileReference') { - $this->currentFile = GeneralUtility::makeInstance(ResourceFactory::class)->getFileReferenceObject($identifier); + $this->currentFile = GeneralUtility::makeInstance(ResourceFactory::class)->getFileReferenceObject((int)$identifier); } } catch (ResourceDoesNotExistException $e) { $this->currentFile = null; @@ -3587,7 +3587,7 @@ class ContentObjectRenderer implements LoggerAwareInterface if (MathUtility::canBeInterpretedAsInteger($file)) { $treatIdAsReference = $this->stdWrapValue('treatIdAsReference', $fileArray); if (!empty($treatIdAsReference)) { - $fileReference = $this->getResourceFactory()->getFileReferenceObject($file); + $fileReference = $this->getResourceFactory()->getFileReferenceObject((int)$file); $fileObject = $fileReference->getOriginalFile(); } else { $fileObject = $this->getResourceFactory()->getFileObject($file); @@ -3620,10 +3620,10 @@ class ContentObjectRenderer implements LoggerAwareInterface $processingConfiguration['sample'] = (bool)$this->stdWrapValue('sample', $fileArray); $processingConfiguration['additionalParameters'] = $this->stdWrapValue('params', $fileArray); $processingConfiguration['frame'] = (int)$this->stdWrapValue('frame', $fileArray); - if ($fileReference instanceof FileReference) { - $processingConfiguration['crop'] = $this->getCropAreaFromFileReference($fileReference, $fileArray); - } else { + if ($fileReference === null) { $processingConfiguration['crop'] = $this->getCropAreaFromFromTypoScriptSettings($fileObject, $fileArray); + } else { + $processingConfiguration['crop'] = $this->getCropAreaFromFileReference($fileReference, $fileArray); } // Possibility to cancel/force profile extraction