Skip to content

Commit 822ad8b

Browse files
authored
Merge pull request #46 from torben-fr/bugfix/schemainformation-api-changes
[BUGFIX] Mitigate internal SchemaInformation API changes
2 parents 63a8d9c + 78024e9 commit 822ad8b

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)