Breaking: #63406 - Respect rootLevel configuration in extbase queries

See forge#63406

Description

The rootLevel of a table can be configured to 0, 1 or -1 in TCA, to define where records of a table can be found in the system:

  • 0: In the page tree only
  • 1: Only on the root page (pid 0)
  • -1: Both, on the root page and in the page tree

Currently only 0 and 1 are respected by the Typo3DbQueryParser when building the pageId statement. This means that a rootLevel of -1 does not get any pageId statement at all and therefore ignores any storagePid configuration for extbase plugins.

Impact

Custom records that have a configuration like this $GLOBALS['TCA']['tx_myext_domain_model_record']['ctrl']['rootLevel'] = -1 and are used in extbase plugins might have trouble finding the records if plugin.tx_myext.persistence.storagePid is not configured properly.

Affected Installations

Third party code using $GLOBALS['TCA']['tx_myext_domain_model_record']['ctrl']['rootLevel'] = -1 with records within the page tree and without a proper storagePid configuration.

Migration

Set plugin.tx_myext.persistence.storagePid to the page ids you want to find records from. 0 does not need to be included as it is added to the statement automatically.