diff --git a/typo3/sysext/backend/Classes/Controller/EditDocumentController.php b/typo3/sysext/backend/Classes/Controller/EditDocumentController.php index ebe404f344f8f96926a348a729581053716db387..8bfe38453b2a45ef75f0c8b923195f56ea3edde5 100644 --- a/typo3/sysext/backend/Classes/Controller/EditDocumentController.php +++ b/typo3/sysext/backend/Classes/Controller/EditDocumentController.php @@ -1538,7 +1538,7 @@ class EditDocumentController ); $referenceCountMessage = BackendUtility::referenceCount( $this->firstEl['table'], - (string)(int)$this->firstEl['uid'], + (int)$this->firstEl['uid'], $this->getLanguageService()->sL( 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.referencesToRecord' ), diff --git a/typo3/sysext/backend/Classes/Utility/BackendUtility.php b/typo3/sysext/backend/Classes/Utility/BackendUtility.php index f876a6c09d46e548a272d7e945e5fdbada000540..ad7ce1c940afb668aa3fddbe905ea4b745f76f60 100644 --- a/typo3/sysext/backend/Classes/Utility/BackendUtility.php +++ b/typo3/sysext/backend/Classes/Utility/BackendUtility.php @@ -52,7 +52,6 @@ use TYPO3\CMS\Core\Utility\ArrayUtility; use TYPO3\CMS\Core\Utility\ExtensionManagementUtility; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\MathUtility; -use TYPO3\CMS\Core\Utility\PathUtility; use TYPO3\CMS\Core\Utility\StringUtility; use TYPO3\CMS\Core\Versioning\VersionState; @@ -2521,46 +2520,29 @@ class BackendUtility /** * Counting references to a record/file * - * @param string $table Table name (or "_FILE" if its a file) - * @param string $ref Reference: If table, then int-uid, if _FILE, then file reference (relative to Environment::getPublicPath()) - * @param string $msg Message with %s, eg. "There were %s records pointing to this file! + * @param string $table Table name + * @param int $ref Record uid + * @param string $msg Message with %s, e.g. "There were %s records pointing to this file!" * @param string|int|null $count Reference count * @return string|int Output string (or int count value if no msg string specified) + * @todo: The method should vanish altogether: The signature with $msg and $count and + * string|int return value is odd, and the method contains hacks for sys_file. */ public static function referenceCount($table, $ref, $msg = '', $count = null) { - if ($count === null) { - // Build base query + if ($count === null && MathUtility::canBeInterpretedAsInteger($ref)) { + // MathUtility::canBeInterpretedAsInteger($ref) and no method type hint for b/w compat. $queryBuilder = static::getQueryBuilderForTable('sys_refindex'); - $queryBuilder - ->count('*') - ->from('sys_refindex') + $queryBuilder->count('*')->from('sys_refindex') ->where( - $queryBuilder->expr()->eq('ref_table', $queryBuilder->createNamedParameter($table)) - ); - - // Look up the path: - if ($table === '_FILE') { - if (!str_starts_with($ref, Environment::getPublicPath())) { - return ''; - } - - $ref = PathUtility::stripPathSitePrefix($ref); - $queryBuilder->andWhere( - $queryBuilder->expr()->eq('ref_string', $queryBuilder->createNamedParameter($ref)) - ); - } else { - $queryBuilder->andWhere( + $queryBuilder->expr()->eq('ref_table', $queryBuilder->createNamedParameter($table)), $queryBuilder->expr()->eq('ref_uid', $queryBuilder->createNamedParameter($ref, Connection::PARAM_INT)) ); - if ($table === 'sys_file') { - $queryBuilder->andWhere($queryBuilder->expr()->neq('tablename', $queryBuilder->quote('sys_file_metadata'))); - } + if ($table === 'sys_file') { + $queryBuilder->andWhere($queryBuilder->expr()->neq('tablename', $queryBuilder->quote('sys_file_metadata'))); } - $count = $queryBuilder->executeQuery()->fetchOne(); } - if ($count) { return $msg ? sprintf($msg, $count) : $count; } diff --git a/typo3/sysext/core/Resources/Private/Language/locallang_core.xlf b/typo3/sysext/core/Resources/Private/Language/locallang_core.xlf index 4b9ea4000ecd9d40bd21c9aaf492ee9bfeeb8413..81958733c383bcaa9daaead00fd12536e6c22e02 100644 --- a/typo3/sysext/core/Resources/Private/Language/locallang_core.xlf +++ b/typo3/sysext/core/Resources/Private/Language/locallang_core.xlf @@ -559,9 +559,6 @@ Do you want to continue WITHOUT saving?</source> <trans-unit id="labels.referencesToRecord" resname="labels.referencesToRecord"> <source>There are %s reference(s) to this record!</source> </trans-unit> - <trans-unit id="labels.referencesToFolder" resname="labels.referencesToFolder"> - <source>There are %s reference(s) to this folder!</source> - </trans-unit> <trans-unit id="labels.referencesToFile" resname="labels.referencesToFile"> <source>There are %s reference(s) to this file!</source> </trans-unit> diff --git a/typo3/sysext/filelist/Classes/ContextMenu/ItemProviders/FileProvider.php b/typo3/sysext/filelist/Classes/ContextMenu/ItemProviders/FileProvider.php index f0e46fc35577a0faacd2d2f7f61a638146e00c6a..60c08288a770c3021e0af69b5b2c2cfa3c630bd2 100644 --- a/typo3/sysext/filelist/Classes/ContextMenu/ItemProviders/FileProvider.php +++ b/typo3/sysext/filelist/Classes/ContextMenu/ItemProviders/FileProvider.php @@ -409,10 +409,6 @@ class FileProvider extends AbstractProvider $confirmMessage = sprintf( $this->languageService->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:mess.delete'), trim($recordInfo) - ) . BackendUtility::referenceCount( - '_FILE', - $this->record->getIdentifier(), - LF . $this->languageService->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.referencesToFolder') ); } else { if ($this->backendUser->shallDisplayDebugInformation()) { @@ -423,7 +419,7 @@ class FileProvider extends AbstractProvider trim($recordInfo) ) . BackendUtility::referenceCount( 'sys_file', - (string)$this->record->getUid(), + (int)$this->record->getUid(), LF . $this->languageService->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.referencesToFile') ); } diff --git a/typo3/sysext/filelist/Classes/FileList.php b/typo3/sysext/filelist/Classes/FileList.php index 28c479c18dd3c101426bea3ff1e22dc3c9256f6c..64ffde9abb5ea0b087a217b19476719d4df6be2d 100644 --- a/typo3/sysext/filelist/Classes/FileList.php +++ b/typo3/sysext/filelist/Classes/FileList.php @@ -1118,18 +1118,16 @@ class FileList if (!$resourceView->canDelete()) { return null; } - $recordInfo = $resourceView->getName(); - + $referenceCountText = ''; if ($resourceView->resource instanceof Folder) { $identifier = $resourceView->getIdentifier(); - $referenceCountText = BackendUtility::referenceCount('_FILE', $identifier, LF . $this->getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.referencesToFolder')); $deleteType = 'delete_folder'; if ($this->getBackendUser()->shallDisplayDebugInformation()) { $recordInfo .= ' [' . $identifier . ']'; } } else { - $referenceCountText = BackendUtility::referenceCount('sys_file', (string)$resourceView->getUid(), LF . $this->getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.referencesToFile')); + $referenceCountText = BackendUtility::referenceCount('sys_file', (int)$resourceView->getUid(), LF . $this->getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.referencesToFile')); $deleteType = 'delete_file'; if ($this->getBackendUser()->shallDisplayDebugInformation()) { $recordInfo .= ' [sys_file:' . $resourceView->getUid() . ']'; diff --git a/typo3/sysext/form/Classes/Service/DatabaseService.php b/typo3/sysext/form/Classes/Service/DatabaseService.php index cd04337018f33f3be8f2a14961ab2cb59ac2ed27..fefdff3ad348c92867d7173dfaaef2aec059494d 100644 --- a/typo3/sysext/form/Classes/Service/DatabaseService.php +++ b/typo3/sysext/form/Classes/Service/DatabaseService.php @@ -35,7 +35,6 @@ class DatabaseService * Returns an array with all sys_refindex database rows which be * connected to a formDefinition identified by $persistenceIdentifier * - * @throws \InvalidArgumentException * @internal */ public function getReferencesByPersistenceIdentifier(string $persistenceIdentifier): array @@ -97,13 +96,10 @@ class DatabaseService return $items; } - /** - * @throws \InvalidArgumentException - */ protected function getAllReferences(string $column): array { if ($column !== 'ref_string' && $column !== 'ref_uid') { - throw new \InvalidArgumentException('$column must not be "ref_string" or "ref_uid".', 1535406600); + throw new \InvalidArgumentException('$column must be "ref_string" or "ref_uid".', 1535406600); } $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_refindex'); diff --git a/typo3/sysext/workspaces/Classes/Dependency/ElementEntity.php b/typo3/sysext/workspaces/Classes/Dependency/ElementEntity.php index d0fabc7e8758086992f12168a8c80e1a0a970986..3d64eebcae556ee8bd0d08d8b81a6d53cafe8036 100644 --- a/typo3/sysext/workspaces/Classes/Dependency/ElementEntity.php +++ b/typo3/sysext/workspaces/Classes/Dependency/ElementEntity.php @@ -176,7 +176,7 @@ class ElementEntity ->executeQuery(); while ($row = $result->fetchAssociative()) { - if ($row['ref_table'] !== '_FILE' && $row['ref_table'] !== '_STRING') { + if ($row['ref_table'] !== '_STRING') { $arguments = [ 'table' => $row['ref_table'], 'id' => $row['ref_uid'],