Skip to content

Commit 78024e9

Browse files
torben-frsbuerk
authored andcommitted
[BUGFIX] Mitigate internal SchemaInformation API changes
TYPO3 changed the internal SchemaInformation API implementation, not covered by breaking policy to mitigate cache issues using persistance caches files. This change modifies the extension usage of that internal API in the `MigrateFieldsCommand ` and `MigrateRealUrlExcludeField` by now using the `listTableColumnNames()` to retrieve the names of the columns for further use. Further, the `strtolower()` usage in the fieldname comparision has been removed making not much sense in the way that other code places does use field names as case-insensitive like in result rowset row items. [1] https://review.typo3.org/c/Packages/TYPO3.CMS/+/90947 [2] https://review.typo3.org/c/Packages/TYPO3.CMS/+/90950
1 parent 63a8d9c commit 78024e9

File tree

2 files changed

+26
-8
lines changed

2 files changed

+26
-8
lines changed

Classes/Command/MigrateFieldsCommand.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,18 @@ protected function execute(InputInterface $input, OutputInterface $output): int
9494
*/
9595
protected function doesRealurlFieldExist(Connection $conn): bool
9696
{
97-
$columns = $conn->getSchemaInformation()->introspectTable('pages')->getColumns();
98-
foreach ($columns as $column) {
99-
if (strtolower($column->getName()) === 'tx_realurl_exclude') {
100-
return true;
97+
$realurlFieldName = 'tx_realurl_exclude';
98+
$schemaInformation = $conn->getSchemaInformation();
99+
if (method_exists($schemaInformation, 'listTableColumnNames')) {
100+
// TYPO3 13.4.19 and higher
101+
return in_array($realurlFieldName, $schemaInformation->listTableColumnNames('pages'), true);
102+
} else if (method_exists($schemaInformation, 'introspectTable')) {
103+
// Before TYPO3 v13.4.19
104+
$columns = $schemaInformation->introspectTable('pages')->getColumns();
105+
foreach ($columns as $column) {
106+
if ($column->getName() === $realurlFieldName) {
107+
return true;
108+
}
101109
}
102110
}
103111
return false;

Classes/Updates/MigrateRealUrlExcludeField.php

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,23 @@ public function executeUpdate(): bool
9090

9191
protected function doesRealurlFieldExist(): bool
9292
{
93+
$realurlFieldName = 'tx_realurl_exclude';
9394
$conn = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('pages');
94-
$columns = $conn->getSchemaInformation()->introspectTable('pages')->getColumns();
95-
foreach ($columns as $column) {
96-
if (strtolower($column->getName()) === 'tx_realurl_exclude') {
97-
return true;
95+
$schemaInformation = $conn->getSchemaInformation();
96+
97+
if (method_exists($schemaInformation, 'listTableColumnNames')) {
98+
// TYPO3 13.4.19 and higher
99+
return in_array($realurlFieldName, $schemaInformation->listTableColumnNames('pages'), true);
100+
} else if (method_exists($schemaInformation, 'introspectTable')) {
101+
// Before TYPO3 v13.4.19
102+
$columns = $schemaInformation->introspectTable('pages')->getColumns();
103+
foreach ($columns as $column) {
104+
if ($column->getName() === $realurlFieldName) {
105+
return true;
106+
}
98107
}
99108
}
109+
100110
return false;
101111
}
102112

0 commit comments

Comments
 (0)