Deprecation: #86406 - TCA type group internal_type file and file_reference

See forge#86406

Description

The TCA property values internal_type="file" and internal_type="file_reference" for columns config type="group" have been marked as deprecated.

A series of related methods have been marked as deprecated:

  • TYPO3\CMS\Core\DataHandling\DataHandler->checkValue_group_select_file()

  • TYPO3\CMS\Core\DataHandling\DataHandler->copyRecord_procFilesRefs()

  • TYPO3\CMS\Core\DataHandling\DataHandler->extFileFields()

  • TYPO3\CMS\Core\DataHandling\DataHandler->extFileFunctions()

  • TYPO3\CMS\Core\Database\ReferenceIndex->getRelations_procFiles()

  • TYPO3\CMS\Core\Integrity\DatabaseIntegrityCheck->getFileFields()

Some constants have bee marked as deprecated:

  • TYPO3\CMS\Core\DataHandling\TableColumnSubType::FILE

  • TYPO3\CMS\Core\DataHandling\TableColumnSubType::FILE_REFERENCE

The "internal_type" functionality has been superseded by the File Abstraction Layer (FAL) since TYPO3 6.0 and has several drawbacks within TYPO3 (e.g. multiple copies of files based on a file name, no flexibility for moving data to a different storage, no metadata functionality, no cropping functionality).

Impact

The Backend module "Upgrade" > "Check TCA migrations" shows them as deprecated, and triggers a E_USER_DEPRECATED error.

Using the TCA property values mentioned above will trigger a PHP E_USER_DEPRECATED error when the cache is cleared.

Affected Installations

Installations still using the methods or constants, or TYPO3 installations with extensions registering custom TCA fields with the mentioned TCA properties.

Migration

It is rather unlikely instances use one of the above methods or constants. The extension scanner will find possible usages, though.

It's more likely that extensions use type=group with internal_type=file or internal_type=file_reference. Those should switch to use FAL references based on type=inline instead.

The core code changed one last internal_type=file usage in TYPO3 v9 and moved it to FAL. Several use-cases within the last TYPO3 major versions show how to migrate a legacy file field to FAL (e.g. "fe_users.image" or "tt_content.image" including automatic upgrade wizards for the database - an example of the last migration can be found online. These previous changes give some insight on how a file relation could be changed to FAL and comes with an upgrade wizard that can be a helpful example if existing extension data needs to be migrated.