Skip to content

Commit

Permalink
[TASK] Avoid direct usages to Doctrine/DBAL and ext-pdo
Browse files Browse the repository at this point in the history
This change modifies most of the userland code to use

a) Connection::PARAM_* constants instead of \PDO::PARAM_* constants

This is due to also another change from Doctrine DBAL 3

https://github.com/doctrine/dbal/blob/3.4.x/UPGRADE.md#bc-break-the-pdo-symbols-are-no-longer-part-of-the-dbal-api

which can easily be changed in TYPO3's Source Code to ensure easy
upgrade paths and showing best practices for extension authors
looking into TYPO3 Source Code

b) Avoid using constants from \Doctrine\DBAL\Connection
but use our own constants.

Even though Doctrine DBAL 3.x introduces "ParameterType" objects,
we use our own connection implementation for the time being
as we also seek to backport such changes in TYPO3 v11.

c) Avoid using the Connection::PARAM_STR for ->createNamedParameter
as second argument, as this is the default value.

All of these changes will make the upgrade path towards Doctrine
DBAL 4.x easier.

The initial change was made with Rector - thanks to @schreiberten

    $rectorConfig->ruleWithConfiguration(
        \Rector\Renaming\Rector\ClassConstFetch\RenameClassConstFetchRector::class,
        [
            new \Rector\Renaming\ValueObject\RenameClassAndConstFetch(
                \PDO::class,
                'PARAM_INT',
                \TYPO3\CMS\Core\Database\Connection::class,
                'PARAM_INT'
            ),
        ....

PDO constants are now solely used within our own Database adapter code.

Resolves: #98649
Releases: main, 11.5
Change-Id: Ife2569ddeda31e37d4c575d96beb4d41e9affff7
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/76156
Tested-by: core-ci <typo3@b13.com>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Oliver Klee <typo3-coding@oliverklee.de>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Benni Mack <benni@typo3.org>
  • Loading branch information
bmack committed Oct 18, 2022
1 parent 34cb9b5 commit 10f6950
Show file tree
Hide file tree
Showing 160 changed files with 898 additions and 811 deletions.
39 changes: 20 additions & 19 deletions typo3/sysext/backend/Classes/Authentication/PasswordReset.php
Expand Up @@ -28,6 +28,7 @@
use TYPO3\CMS\Core\Crypto\PasswordHashing\PasswordHashFactory;
use TYPO3\CMS\Core\Crypto\PasswordHashing\PasswordHashInterface;
use TYPO3\CMS\Core\Crypto\Random;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
Expand Down Expand Up @@ -92,7 +93,7 @@ public function isEnabledForUser(int $userId): bool
->select('uid')
->from('be_users')
->andWhere(
$queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($userId, \PDO::PARAM_INT))
$queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($userId, Connection::PARAM_INT))
)
->setMaxResults(1)
->executeQuery();
Expand Down Expand Up @@ -394,7 +395,7 @@ protected function getPreparedQueryBuilder(): QueryBuilder
);
if (!($GLOBALS['TYPO3_CONF_VARS']['BE']['passwordResetForAdmins'] ?? false)) {
$queryBuilder->andWhere(
$queryBuilder->expr()->eq('admin', $queryBuilder->createNamedParameter(0, \PDO::PARAM_INT))
$queryBuilder->expr()->eq('admin', $queryBuilder->createNamedParameter(0, Connection::PARAM_INT))
);
}
return $queryBuilder;
Expand Down Expand Up @@ -442,22 +443,22 @@ protected function log(string $message, int $action, int $error, int $userId, ar
'sys_log',
$fields,
[
\PDO::PARAM_INT,
\PDO::PARAM_INT,
\PDO::PARAM_STR,
\PDO::PARAM_STR,
\PDO::PARAM_INT,
\PDO::PARAM_INT,
\PDO::PARAM_INT,
\PDO::PARAM_STR,
\PDO::PARAM_STR,
\PDO::PARAM_STR,
\PDO::PARAM_INT,
\PDO::PARAM_STR,
\PDO::PARAM_INT,
\PDO::PARAM_INT,
\PDO::PARAM_STR,
\PDO::PARAM_STR,
Connection::PARAM_INT,
Connection::PARAM_INT,
Connection::PARAM_STR,
Connection::PARAM_STR,
Connection::PARAM_INT,
Connection::PARAM_INT,
Connection::PARAM_INT,
Connection::PARAM_STR,
Connection::PARAM_STR,
Connection::PARAM_STR,
Connection::PARAM_INT,
Connection::PARAM_STR,
Connection::PARAM_INT,
Connection::PARAM_INT,
Connection::PARAM_STR,
Connection::PARAM_STR,
]
);
}
Expand Down Expand Up @@ -494,7 +495,7 @@ protected function getNumberOfInitiatedResetsForEmail(\DateTimeInterface $since,
$queryBuilder->expr()->eq('type', $queryBuilder->createNamedParameter(SystemLogType::LOGIN)),
$queryBuilder->expr()->eq('action', $queryBuilder->createNamedParameter(SystemLogLoginAction::PASSWORD_RESET_REQUEST)),
$queryBuilder->expr()->eq('log_data', $queryBuilder->createNamedParameter(json_encode(['email' => $email]))),
$queryBuilder->expr()->gte('tstamp', $queryBuilder->createNamedParameter($since->getTimestamp(), \PDO::PARAM_INT))
$queryBuilder->expr()->gte('tstamp', $queryBuilder->createNamedParameter($since->getTimestamp(), Connection::PARAM_INT))
)
->executeQuery()
->fetchOne();
Expand Down
Expand Up @@ -15,6 +15,7 @@

namespace TYPO3\CMS\Backend\Backend\Avatar;

use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Resource\Exception\FileDoesNotExistException;
use TYPO3\CMS\Core\Resource\ProcessedFile;
Expand Down Expand Up @@ -78,15 +79,15 @@ protected function getAvatarFileUid($backendUserId)
->where(
$queryBuilder->expr()->eq(
'tablenames',
$queryBuilder->createNamedParameter('be_users', \PDO::PARAM_STR)
$queryBuilder->createNamedParameter('be_users')
),
$queryBuilder->expr()->eq(
'fieldname',
$queryBuilder->createNamedParameter('avatar', \PDO::PARAM_STR)
$queryBuilder->createNamedParameter('avatar')
),
$queryBuilder->expr()->eq(
'uid_foreign',
$queryBuilder->createNamedParameter((int)$backendUserId, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter((int)$backendUserId, Connection::PARAM_INT)
)
)
->executeQuery()
Expand Down
Expand Up @@ -151,7 +151,7 @@ public function shortcutExists(string $routeIdentifier, string $arguments): bool
->where(
$queryBuilder->expr()->eq(
'userid',
$queryBuilder->createNamedParameter($this->getBackendUser()->user['uid'], \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($this->getBackendUser()->user['uid'], Connection::PARAM_INT)
),
$queryBuilder->expr()->eq('route', $queryBuilder->createNamedParameter($routeIdentifier)),
$queryBuilder->expr()->eq('arguments', $queryBuilder->createNamedParameter($arguments))
Expand Down Expand Up @@ -209,7 +209,7 @@ public function updateShortcut(int $id, string $title, int $groupId): bool
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($id, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($id, Connection::PARAM_INT)
)
)
->set('description', $title)
Expand All @@ -220,7 +220,7 @@ public function updateShortcut(int $id, string $title, int $groupId): bool
$queryBuilder->andWhere(
$queryBuilder->expr()->eq(
'userid',
$queryBuilder->createNamedParameter($backendUser->user['uid'], \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($backendUser->user['uid'], Connection::PARAM_INT)
)
);

Expand Down Expand Up @@ -251,7 +251,7 @@ public function removeShortcut(int $id): bool
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($id, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($id, Connection::PARAM_INT)
)
)
->executeStatement();
Expand Down Expand Up @@ -355,11 +355,11 @@ protected function initShortcuts(): array
$queryBuilder->expr()->and(
$queryBuilder->expr()->eq(
'userid',
$queryBuilder->createNamedParameter($backendUser->user['uid'], \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($backendUser->user['uid'], Connection::PARAM_INT)
),
$queryBuilder->expr()->gte(
'sc_group',
$queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter(0, Connection::PARAM_INT)
)
)
)
Expand Down
7 changes: 4 additions & 3 deletions typo3/sysext/backend/Classes/Clipboard/Clipboard.php
Expand Up @@ -21,6 +21,7 @@
use TYPO3\CMS\Backend\Routing\UriBuilder;
use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Database\Query\Restriction\WorkspaceRestriction;
Expand Down Expand Up @@ -404,15 +405,15 @@ protected function getLocalizations(string $table, array $parentRecord, bool $is
->where(
$queryBuilder->expr()->eq(
$tcaCtrl['transOrigPointerField'],
$queryBuilder->createNamedParameter((int)$parentRecord['uid'], \PDO::PARAM_INT)
$queryBuilder->createNamedParameter((int)$parentRecord['uid'], Connection::PARAM_INT)
),
$queryBuilder->expr()->neq(
$tcaCtrl['languageField'],
$queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter(0, Connection::PARAM_INT)
),
$queryBuilder->expr()->gt(
'pid',
$queryBuilder->createNamedParameter(-1, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter(-1, Connection::PARAM_INT)
)
)
->orderBy($tcaCtrl['languageField']);
Expand Down
Expand Up @@ -17,6 +17,7 @@

use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Database\Query\Restriction\WorkspaceRestriction;
Expand Down Expand Up @@ -155,29 +156,29 @@ public function translationInfo($table, $uid, $languageUid = 0, array $row = nul
->where(
$queryBuilder->expr()->eq(
$GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'],
$queryBuilder->createNamedParameter($uid, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($uid, Connection::PARAM_INT)
),
$queryBuilder->expr()->eq(
'pid',
$queryBuilder->createNamedParameter(
$row['pid'],
\PDO::PARAM_INT
Connection::PARAM_INT
)
)
);
if (!$languageUid) {
$queryBuilder->andWhere(
$queryBuilder->expr()->gt(
$GLOBALS['TCA'][$table]['ctrl']['languageField'],
$queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter(0, Connection::PARAM_INT)
)
);
} else {
$queryBuilder
->andWhere(
$queryBuilder->expr()->eq(
$GLOBALS['TCA'][$table]['ctrl']['languageField'],
$queryBuilder->createNamedParameter($languageUid, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($languageUid, Connection::PARAM_INT)
)
);
}
Expand Down
Expand Up @@ -17,7 +17,6 @@

namespace TYPO3\CMS\Backend\Controller\ContentElement;

use Doctrine\DBAL\Connection;
use Exception;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
Expand All @@ -31,6 +30,7 @@
use TYPO3\CMS\Backend\Template\ModuleTemplateFactory;
use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Imaging\Icon;
use TYPO3\CMS\Core\Imaging\IconFactory;
Expand Down Expand Up @@ -526,11 +526,11 @@ protected function makeRef($table, $ref, ServerRequestInterface $request): array
$predicates = [
$queryBuilder->expr()->eq(
'ref_table',
$queryBuilder->createNamedParameter($selectTable, \PDO::PARAM_STR)
$queryBuilder->createNamedParameter($selectTable)
),
$queryBuilder->expr()->eq(
'ref_uid',
$queryBuilder->createNamedParameter($selectUid, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($selectUid, Connection::PARAM_INT)
),
];

Expand Down Expand Up @@ -618,11 +618,11 @@ protected function makeRefFrom($table, $ref, ServerRequestInterface $request): a
$predicates = [
$queryBuilder->expr()->eq(
'tablename',
$queryBuilder->createNamedParameter($table, \PDO::PARAM_STR)
$queryBuilder->createNamedParameter($table)
),
$queryBuilder->expr()->eq(
'recuid',
$queryBuilder->createNamedParameter($ref, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($ref, Connection::PARAM_INT)
),
];

Expand Down Expand Up @@ -692,7 +692,7 @@ protected function transformFileReferenceToRecordReference(array $referenceRecor
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($referenceRecord['recuid'], \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($referenceRecord['recuid'], Connection::PARAM_INT)
)
)
->executeQuery()
Expand Down
23 changes: 12 additions & 11 deletions typo3/sysext/backend/Classes/Controller/EditDocumentController.php
Expand Up @@ -38,6 +38,7 @@
use TYPO3\CMS\Backend\Template\ModuleTemplateFactory;
use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
Expand Down Expand Up @@ -1690,7 +1691,7 @@ protected function getConnectedContentElementTranslationsCount(int $page, int $c
->andWhere(
$queryBuilder->expr()->gt(
$GLOBALS['TCA']['tt_content']['ctrl']['transOrigPointerField'],
$queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter(0, Connection::PARAM_INT)
)
)
->executeQuery()
Expand All @@ -1707,7 +1708,7 @@ protected function getStandAloneContentElementTranslationsCount(int $page, int $
->andWhere(
$queryBuilder->expr()->eq(
$GLOBALS['TCA']['tt_content']['ctrl']['transOrigPointerField'],
$queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter(0, Connection::PARAM_INT)
)
)
->executeQuery()
Expand All @@ -1731,15 +1732,15 @@ protected function getQueryBuilderForTranslationMode(int $page, int $column, int
->where(
$queryBuilder->expr()->eq(
'pid',
$queryBuilder->createNamedParameter($page, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($page, Connection::PARAM_INT)
),
$queryBuilder->expr()->eq(
$languageField,
$queryBuilder->createNamedParameter($language, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($language, Connection::PARAM_INT)
),
$queryBuilder->expr()->eq(
'colPos',
$queryBuilder->createNamedParameter($column, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($column, Connection::PARAM_INT)
)
);
}
Expand Down Expand Up @@ -1933,15 +1934,15 @@ protected function languageSwitch(ModuleTemplate $view, string $table, int $uid,
->where(
$queryBuilder->expr()->eq(
'pid',
$queryBuilder->createNamedParameter($pid, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($pid, Connection::PARAM_INT)
),
$queryBuilder->expr()->gt(
$languageField,
$queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter(0, Connection::PARAM_INT)
),
$queryBuilder->expr()->eq(
$transOrigPointerField,
$queryBuilder->createNamedParameter($rowsByLang[0]['uid'], \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($rowsByLang[0]['uid'], Connection::PARAM_INT)
)
)
->executeQuery();
Expand Down Expand Up @@ -2048,11 +2049,11 @@ protected function localizationRedirect(ServerRequestInterface $request): ?Respo
->where(
$queryBuilder->expr()->eq(
$GLOBALS['TCA'][$table]['ctrl']['languageField'],
$queryBuilder->createNamedParameter($language, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($language, Connection::PARAM_INT)
),
$queryBuilder->expr()->eq(
$GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'],
$queryBuilder->createNamedParameter($origUid, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($origUid, Connection::PARAM_INT)
)
)
->executeQuery()
Expand Down Expand Up @@ -2116,7 +2117,7 @@ protected function getLanguages(int $id, string $table): array
->where(
$queryBuilder->expr()->eq(
$GLOBALS['TCA']['pages']['ctrl']['transOrigPointerField'],
$queryBuilder->createNamedParameter($pageId, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($pageId, Connection::PARAM_INT)
)
)
->executeQuery();
Expand Down
Expand Up @@ -23,6 +23,7 @@
use TYPO3\CMS\Backend\Template\ModuleTemplateFactory;
use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\DataHandling\DataHandler;
Expand Down Expand Up @@ -228,11 +229,11 @@ protected function getSubPagesOfPage(int $pageUid): array
->where(
$queryBuilder->expr()->eq(
'pid',
$queryBuilder->createNamedParameter($pageUid, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($pageUid, Connection::PARAM_INT)
),
$queryBuilder->expr()->eq(
$GLOBALS['TCA']['pages']['ctrl']['languageField'],
$queryBuilder->createNamedParameter(0, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter(0, Connection::PARAM_INT)
)
)
->orderBy('sorting')
Expand Down
Expand Up @@ -23,6 +23,7 @@
use TYPO3\CMS\Backend\Template\ModuleTemplateFactory;
use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\DataHandling\DataHandler;
Expand Down Expand Up @@ -186,7 +187,7 @@ protected function getSubPagesOfPage(int $parentPageUid, string $orderBy = 'sort
$queryBuilder->expr()->eq('sys_language_uid', 0),
$queryBuilder->expr()->eq(
'pid',
$queryBuilder->createNamedParameter($parentPageUid, \PDO::PARAM_INT)
$queryBuilder->createNamedParameter($parentPageUid, Connection::PARAM_INT)
)
)
->orderBy($orderBy)
Expand Down

0 comments on commit 10f6950

Please sign in to comment.