Deprecation: #102793 - PageRepository->enableFields

See forge#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();