Skip to content

Commit e93772e

Browse files
authored
Merge pull request #43 from TYPO3GmbH/typo3v12
Add support for TYPO3v12
2 parents 79797ec + 2e1db8d commit e93772e

12 files changed

+57
-42
lines changed

.github/workflows/ci.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ jobs:
2222
- '8.2'
2323
typo3:
2424
- ^11.5
25+
- ^12.4
2526

2627
steps:
2728
- uses: actions/checkout@v4
@@ -34,4 +35,4 @@ jobs:
3435

3536
- name: Cleanup
3637
if: ${{ always() }}
37-
run: docker-compose down --volumes
38+
run: docker-compose down --volumes

Build/rector.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@
99
* LICENSE file that was distributed with this source code.
1010
*/
1111

12-
use Ssch\TYPO3Rector\TYPO312\v0\MigrateQueryBuilderExecuteRector;
13-
1412
use Rector\Config\RectorConfig;
1513
use Ssch\TYPO3Rector\Set\Typo3SetList;
14+
use Ssch\TYPO3Rector\TYPO312\v3\MigrateItemsIndexedKeysToAssociativeRector;
1615

1716
return RectorConfig::configure()
1817
->withPaths([
@@ -25,8 +24,9 @@
2524
->withPhpSets()
2625
->withSets([
2726
Typo3SetList::TYPO3_11,
27+
Typo3SetList::TYPO3_12,
2828
])
29-
->withRules([
30-
MigrateQueryBuilderExecuteRector::class
29+
->withSkip([
30+
MigrateItemsIndexedKeysToAssociativeRector::class,
3131
])
3232
;

Classes/Controller/FileVariantsController.php

+16-6
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
*
2323
* The TYPO3 project - inspiring people to share!
2424
*/
25+
use TYPO3\CMS\Core\Database\Connection;
2526
use Psr\Http\Message\ResponseInterface;
2627
use Psr\Http\Message\ServerRequestInterface;
2728
use TYPO3\CMS\Backend\Form\FormDataCompiler;
@@ -33,6 +34,7 @@
3334
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
3435
use TYPO3\CMS\Core\Database\ReferenceIndex;
3536
use TYPO3\CMS\Core\Http\HtmlResponse;
37+
use TYPO3\CMS\Core\Information\Typo3Version;
3638
use TYPO3\CMS\Core\Resource\DuplicationBehavior;
3739
use TYPO3\CMS\Core\Resource\File;
3840
use TYPO3\CMS\Core\Resource\Folder;
@@ -52,16 +54,20 @@ public function ajaxResetFileVariant(ServerRequestInterface $request): ResponseI
5254
$formDataCompiler = GeneralUtility::makeInstance(FormDataCompiler::class, $formDataGroup);
5355
$nodeFactory = GeneralUtility::makeInstance(NodeFactory::class);
5456
$formDataCompilerInput = [
57+
'request' => $request,
5558
'tableName' => 'sys_file_metadata',
5659
'vanillaUid' => $uid,
5760
'command' => 'edit',
5861
];
62+
if ((new Typo3Version())->getMajorVersion() < 12) {
63+
unset($formDataCompilerInput['request']);
64+
}
5965
$formData = $formDataCompiler->compile($formDataCompilerInput);
6066
$formData['renderType'] = 'fileInfo';
6167

6268
$fileUid = (int)$formData['databaseRow']['file'][0];
6369
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file');
64-
$fileRecord = $queryBuilder->select('l10n_parent')->from('sys_file')->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($fileUid, \PDO::PARAM_INT)))->executeQuery()->fetchAssociative();
70+
$fileRecord = $queryBuilder->select('l10n_parent')->from('sys_file')->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($fileUid, Connection::PARAM_INT)))->executeQuery()->fetchAssociative();
6571

6672
$defaultFileObject = GeneralUtility::makeInstance(ResourceFactory::class)->getFileObject((int)$fileRecord['l10n_parent']);
6773
/** @var Folder */
@@ -76,15 +82,15 @@ public function ajaxResetFileVariant(ServerRequestInterface $request): ResponseI
7682
$file->rename($defaultFileObject->getName(), DuplicationBehavior::RENAME);
7783
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file');
7884
$queryBuilder->delete('sys_file')->where($queryBuilder->expr()
79-
->eq('uid', $queryBuilder->createNamedParameter($sysFileRecordToBeDeleted, \PDO::PARAM_INT)))->executeStatement();
85+
->eq('uid', $queryBuilder->createNamedParameter($sysFileRecordToBeDeleted, Connection::PARAM_INT)))->executeStatement();
8086

8187
// metadata records for copied file are not needed, either
8288
/** @var QueryBuilder $queryBuilder */
8389
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
8490
->getQueryBuilderForTable('sys_file_metadata');
8591
$metadataRecordsToBeDeleted = $queryBuilder->select('uid')->from('sys_file_metadata')->where($queryBuilder->expr()->eq(
8692
'file',
87-
$queryBuilder->createNamedParameter($sysFileRecordToBeDeleted, \PDO::PARAM_INT)
93+
$queryBuilder->createNamedParameter($sysFileRecordToBeDeleted, Connection::PARAM_INT)
8894
))->executeQuery()->fetchFirstColumn();
8995
if (count($metadataRecordsToBeDeleted) > 0) {
9096
/** @var QueryBuilder $queryBuilder */
@@ -121,7 +127,7 @@ public function ajaxUploadFileVariant(ServerRequestInterface $request): Response
121127
$metadataUid = (int)$request->getQueryParams()['uid'];
122128

123129
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file_metadata');
124-
$currentFileUid = $queryBuilder->select('file')->from('sys_file_metadata')->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($metadataUid, \PDO::PARAM_INT)))->executeQuery()->fetchOne();
130+
$currentFileUid = $queryBuilder->select('file')->from('sys_file_metadata')->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($metadataUid, Connection::PARAM_INT)))->executeQuery()->fetchOne();
125131

126132
$currentFile = GeneralUtility::makeInstance(ResourceFactory::class)->getFileObject($currentFileUid);
127133
$uploadedFile = GeneralUtility::makeInstance(ResourceFactory::class)->getFileObject($uploadedFileUid);
@@ -130,20 +136,24 @@ public function ajaxUploadFileVariant(ServerRequestInterface $request): Response
130136

131137
/** @var QueryBuilder $queryBuilder */
132138
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file');
133-
$queryBuilder->delete('sys_file')->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uploadedFileUid, \PDO::PARAM_INT)))->executeStatement();
139+
$queryBuilder->delete('sys_file')->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($uploadedFileUid, Connection::PARAM_INT)))->executeStatement();
134140

135141
/** @var QueryBuilder $queryBuilder */
136142
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file_metadata');
137-
$queryBuilder->delete('sys_file_metadata')->where($queryBuilder->expr()->eq('file', $queryBuilder->createNamedParameter($uploadedFileUid, \PDO::PARAM_INT)))->executeStatement();
143+
$queryBuilder->delete('sys_file_metadata')->where($queryBuilder->expr()->eq('file', $queryBuilder->createNamedParameter($uploadedFileUid, Connection::PARAM_INT)))->executeStatement();
138144

139145
$formDataGroup = GeneralUtility::makeInstance(TcaDatabaseRecord::class);
140146
$formDataCompiler = GeneralUtility::makeInstance(FormDataCompiler::class, $formDataGroup);
141147
$nodeFactory = GeneralUtility::makeInstance(NodeFactory::class);
142148
$formDataCompilerInput = [
149+
'request' => $request,
143150
'tableName' => 'sys_file_metadata',
144151
'vanillaUid' => $metadataUid,
145152
'command' => 'edit',
146153
];
154+
if ((new Typo3Version())->getMajorVersion() < 12) {
155+
unset($formDataCompilerInput['request']);
156+
}
147157
$formData = $formDataCompiler->compile($formDataCompilerInput);
148158
$formData['renderType'] = 'fileInfo';
149159

Classes/DataHandler/DataHandlerHook.php

+11-10
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
*
2323
* The TYPO3 project - inspiring people to share!
2424
*/
25+
use TYPO3\CMS\Core\Database\Connection;
2526
use T3G\AgencyPack\FileVariants\Service\ResourcesService;
2627
use TYPO3\CMS\Core\Configuration\Exception\ExtensionConfigurationExtensionNotConfiguredException;
2728
use TYPO3\CMS\Core\Configuration\ExtensionConfiguration;
@@ -69,7 +70,7 @@ public function processDatamap_postProcessFieldArray(string $status, string $tab
6970
->select('uid_local')
7071
->from('sys_file_reference')->where($queryBuilder->expr()->eq(
7172
'uid',
72-
$queryBuilder->createNamedParameter((int)$fieldArray['l10n_parent'], \PDO::PARAM_INT)
73+
$queryBuilder->createNamedParameter((int)$fieldArray['l10n_parent'], Connection::PARAM_INT)
7374
))->executeQuery()
7475
->fetchOne();
7576
$fileVariantUid = $this->findLanguageVariantForLanguageAndParentFile((int)$fieldArray['sys_language_uid'], $parentFile);
@@ -112,15 +113,15 @@ public function processCmdmap_postProcess(
112113
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
113114
$currentFileId = (int)$queryBuilder->select('uid_local')->from('sys_file_reference')->where($queryBuilder->expr()->eq(
114115
'uid',
115-
$queryBuilder->createNamedParameter((int)$reference, \PDO::PARAM_INT)
116+
$queryBuilder->createNamedParameter((int)$reference, Connection::PARAM_INT)
116117
))->executeQuery()->fetchOne();
117118
$fileVariantUid = $this->findLanguageVariantForLanguageAndParentFile((int)$value, $currentFileId);
118119

119120
if ((int)$fileVariantUid > 0) {
120121
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file_reference');
121122
$queryBuilder->update('sys_file_reference')->set('uid_local', $fileVariantUid)->where($queryBuilder->expr()->eq(
122123
'uid',
123-
$queryBuilder->createNamedParameter((int)$reference, \PDO::PARAM_INT)
124+
$queryBuilder->createNamedParameter((int)$reference, Connection::PARAM_INT)
124125
))->executeStatement();
125126
}
126127
}
@@ -144,10 +145,10 @@ public function processCmdmap_postProcess(
144145
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file_metadata');
145146
$handledMetaDataRecord = $queryBuilder->select('uid', 'file')->from('sys_file_metadata')->where($queryBuilder->expr()->eq(
146147
'l10n_parent',
147-
$queryBuilder->createNamedParameter((int)$id, \PDO::PARAM_INT)
148+
$queryBuilder->createNamedParameter((int)$id, Connection::PARAM_INT)
148149
), $queryBuilder->expr()->eq(
149150
'sys_language_uid',
150-
$queryBuilder->createNamedParameter((int)$value, \PDO::PARAM_INT)
151+
$queryBuilder->createNamedParameter((int)$value, Connection::PARAM_INT)
151152
))->executeQuery()->fetchAssociative();
152153
$resourcesService->copyOriginalFileAndUpdateAllConsumingReferencesToUseTheCopy($value, $handledMetaDataRecord, $folder);
153154
}
@@ -176,28 +177,28 @@ protected function findLanguageVariantForLanguageAndParentFile(int $sys_language
176177
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file');
177178
$fileRecord = $queryBuilder->select('sys_language_uid', 'l10n_parent')->from('sys_file')->where($queryBuilder->expr()->eq(
178179
'uid',
179-
$queryBuilder->createNamedParameter($currentFileId, \PDO::PARAM_INT)
180+
$queryBuilder->createNamedParameter($currentFileId, Connection::PARAM_INT)
180181
))->executeQuery()->fetchAssociative();
181182
if ((int)$fileRecord['sys_language_uid'] === 0) {
182183
$queryBuilder->select('uid')->from('sys_file')->where(
183184
$queryBuilder->expr()->eq(
184185
'l10n_parent',
185-
$queryBuilder->createNamedParameter($currentFileId, \PDO::PARAM_INT)
186+
$queryBuilder->createNamedParameter($currentFileId, Connection::PARAM_INT)
186187
),
187188
$queryBuilder->expr()->eq(
188189
'sys_language_uid',
189-
$queryBuilder->createNamedParameter($sys_language_uid, \PDO::PARAM_INT)
190+
$queryBuilder->createNamedParameter($sys_language_uid, Connection::PARAM_INT)
190191
)
191192
);
192193
} else {
193194
$queryBuilder->select('uid')->from('sys_file')->where(
194195
$queryBuilder->expr()->eq(
195196
'l10n_parent',
196-
$queryBuilder->createNamedParameter($fileRecord['l10n_parent'], \PDO::PARAM_INT)
197+
$queryBuilder->createNamedParameter($fileRecord['l10n_parent'], Connection::PARAM_INT)
197198
),
198199
$queryBuilder->expr()->eq(
199200
'sys_language_uid',
200-
$queryBuilder->createNamedParameter($sys_language_uid, \PDO::PARAM_INT)
201+
$queryBuilder->createNamedParameter($sys_language_uid, Connection::PARAM_INT)
201202
)
202203
);
203204
}

Classes/EventListener/AfterFileDeletedEventListener.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
*
2323
* The TYPO3 project - inspiring people to share!
2424
*/
25-
25+
use TYPO3\CMS\Core\Database\Connection;
2626
use TYPO3\CMS\Core\Database\ConnectionPool;
2727
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
2828
use TYPO3\CMS\Core\Resource\Event\AfterFileDeletedEvent;
@@ -41,12 +41,12 @@ public function __invoke(AfterFileDeletedEvent $event): void
4141
$fileUid = $file->getUid();
4242
/** @var QueryBuilder $queryBuilder */
4343
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file_metadata');
44-
$queryBuilder->delete('sys_file_metadata')->where($queryBuilder->expr()->eq('file', $queryBuilder->createNamedParameter($fileUid, \PDO::PARAM_INT)))->executeStatement();
44+
$queryBuilder->delete('sys_file_metadata')->where($queryBuilder->expr()->eq('file', $queryBuilder->createNamedParameter($fileUid, Connection::PARAM_INT)))->executeStatement();
4545

4646
// delete all file variants
4747
/** @var QueryBuilder $queryBuilder */
4848
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file');
49-
$fileVariants = $queryBuilder->select('uid')->from('sys_file')->where($queryBuilder->expr()->eq('l10n_parent', $queryBuilder->createNamedParameter($fileUid, \PDO::PARAM_INT)))->executeQuery();
49+
$fileVariants = $queryBuilder->select('uid')->from('sys_file')->where($queryBuilder->expr()->eq('l10n_parent', $queryBuilder->createNamedParameter($fileUid, Connection::PARAM_INT)))->executeQuery();
5050
foreach ($fileVariants->fetchFirstColumn() as $variantUid) {
5151
/** @var File $variantFile */
5252
$variantFile = GeneralUtility::makeInstance(ResourceFactory::class)->getFileObject($variantUid);

Classes/EventListener/BeforeFileDeletedEventListener.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
*
2323
* The TYPO3 project - inspiring people to share!
2424
*/
25-
25+
use TYPO3\CMS\Core\Database\Connection;
2626
use TYPO3\CMS\Core\Database\ConnectionPool;
2727
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
2828
use TYPO3\CMS\Core\Resource\Event\BeforeFileDeletedEvent;
@@ -39,15 +39,15 @@ public function __invoke(BeforeFileDeletedEvent $event): void
3939
$fileUid = $file->getUid();
4040
/** @var QueryBuilder $queryBuilder */
4141
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file');
42-
$parentFileUid = (int)$queryBuilder->select('l10n_parent')->from('sys_file')->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($fileUid, \PDO::PARAM_INT)))->executeQuery()->fetchOne();
42+
$parentFileUid = (int)$queryBuilder->select('l10n_parent')->from('sys_file')->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($fileUid, Connection::PARAM_INT)))->executeQuery()->fetchOne();
4343

4444
/** @var QueryBuilder $queryBuilder */
4545
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file_reference');
46-
$references = $queryBuilder->select('uid')->from('sys_file_reference')->where($queryBuilder->expr()->eq('uid_local', $queryBuilder->createNamedParameter($fileUid, \PDO::PARAM_INT)))->executeQuery();
46+
$references = $queryBuilder->select('uid')->from('sys_file_reference')->where($queryBuilder->expr()->eq('uid_local', $queryBuilder->createNamedParameter($fileUid, Connection::PARAM_INT)))->executeQuery();
4747
foreach ($references->fetchFirstColumn() as $referenceUid) {
4848
/** @var QueryBuilder $queryBuilder */
4949
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file_reference');
50-
$queryBuilder->update('sys_file_reference')->set('uid_local', $parentFileUid)->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($referenceUid, \PDO::PARAM_INT)))->executeStatement();
50+
$queryBuilder->update('sys_file_reference')->set('uid_local', $parentFileUid)->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($referenceUid, Connection::PARAM_INT)))->executeStatement();
5151
}
5252
}
5353
}

Classes/FormEngine/FieldWizard/FileVariantsOverviewWizard.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
*
2323
* The TYPO3 project - inspiring people to share!
2424
*/
25+
use TYPO3\CMS\Core\Database\Connection;
2526
use T3G\AgencyPack\FileVariants\Service\ResourcesService;
2627
use TYPO3\CMS\Backend\Form\AbstractNode;
2728
use TYPO3\CMS\Core\Database\ConnectionPool;
@@ -52,7 +53,7 @@ public function render(): array
5253
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file_metadata');
5354
$translations = $queryBuilder->select('file', 'sys_language_uid')->from('sys_file_metadata')->where($queryBuilder->expr()->eq(
5455
'l10n_parent',
55-
$queryBuilder->createNamedParameter((int)$this->data['databaseRow']['uid'], \PDO::PARAM_INT)
56+
$queryBuilder->createNamedParameter((int)$this->data['databaseRow']['uid'], Connection::PARAM_INT)
5657
))->executeQuery();
5758
while ($translation = $translations->fetchAssociative()) {
5859
$siteLanguage = $this->findSiteLanguageById((int)$translation['sys_language_uid']);

Classes/FormEngine/FileVariantInfoElement.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,6 @@ protected function getDefaultFileUid(): int
156156

157157
/** @var QueryBuilder $queryBuilder */
158158
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('sys_file_metadata');
159-
return (int)$queryBuilder->select('file')->from('sys_file_metadata')->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($l10nParent, \PDO::PARAM_INT)))->executeQuery()->fetchOne();
159+
return (int)$queryBuilder->select('file')->from('sys_file_metadata')->where($queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($l10nParent, Connection::PARAM_INT)))->executeQuery()->fetchOne();
160160
}
161161
}

0 commit comments

Comments
 (0)