typo3-rector icon indicating copy to clipboard operation
typo3-rector copied to clipboard

Deprecation: #102793 - PageRepository->enableFields

Open simonschaufi opened this issue 6 months ago • 0 comments

Deprecation: #102793 - PageRepository->enableFields

https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/13.0/Deprecation-102793-PageRepositoryEnableFields.html

Deprecation: #102793 - PageRepository-\>enableFields

See 102793

Description

One of the common PHP APIs used in TYPO3 Core for fetching records is \TYPO3\CMS\Core\Domain\Repository\PageRepository. The method enableFields() is used to enhance a database query with additional restrictions such as filtering out versioned records from workspaces, hidden database entries or scheduled database entries.

This method has been marked as deprecated in favor of a new method getDefaultConstraints().

Impact

Calling the method will trigger a PHP deprecation warning.

Affected installations

TYPO3 installations with custom extensions using the method enableFields() of the PageRepository class.

Migration

A new method called getDefaultConstraints() has been introduced which supersedes the old method. The new method returns an array of CompositeExpression objects, which can be used instead.

Before (TYPO3 v12)

$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
    ->getQueryBuilderForTable($tableName);

$constraints = GeneralUtility::makeInstance(PageRepository::class)
    ->enableFields($tableName);

$queryBuilder
    ->select('*')
    ->from($tableName);
    ->where(QueryHelper::stripLogicalOperatorPrefix($constraints);

$queryBuilder->execute();

After (TYPO3 v13)

$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
    ->getQueryBuilderForTable($tableName);

$constraints = GeneralUtility::makeInstance(PageRepository::class)
    ->getDefaultConstraints($tableName);

$queryBuilder
    ->select('*')
    ->from($tableName);

if ($constraints !== []) {
    $queryBuilder->where(...$constraints);
}

$queryBuilder->execute();

Database, Frontend, PHP-API, NotScanned, ext:core

simonschaufi avatar Feb 12 '24 19:02 simonschaufi