Deprecation: #93837 - special property of TCA type select

See forge#93837

Description

The special property of TCA type select was introduced to enrich the items array with dynamic values, e.g. the available site languages or page types.

Since this usually is exactly what an itemsProcFunc does, all those options are migrated to such functions, removing complexity from the TCA select type. As these options are mainly for internal use in the backend user and backend usergroup records, the new itemsProcFunc functions are marked as @internal. This means, they are not considered public API and therefore not part of TYPO3s backwards compatibility promise.

The only option which is considered public API is special=languages, which was already migrated to the new TCA type language in forge#57082.

Impact

Using the TCA property special inside the [columns][config] section of columns with TCA type select triggers a PHP E_USER_DEPRECATED error.

When extending AbstractItemProvider and directly calling addItemsFromSpecial(), also a PHP E_USER_DEPRECATED error will be raised. The extension scanner will also detect such calls.

Affected Installations

All installations using the special property with TCA type select or directly calling AbstractItemProvider->addItemsFromSpecial().

Migration

While it's very unlikely that the special property with another option than languages is used in custom extension code, you nevertheless have to replace them with a itemsProcFunc in such case. Either by creating your own implementation or by copying the one from Core. Have a look at the index_config TCA configuration in EXT:indexed_search how this can be achieved. You can also find detailed information about itemsProcFunc in the documentation.