Breaking: #64200 - Custom [cObject].cache.* TypoScript evaluation

See forge#64200

Description

The stdWrap.cache. property is now available as first-class function to all content objects. This skips the rendering even for content objects that evaluate stdWrap after rendering (e.g. COA).

Additionally, stdWrap support is added to key, lifetime and tags.

Impact

If you've previously used the cache. property in your custom cObject, this will now fail, because cache. is unset to avoid double caching.

stdWrap.cache continues to exist and can be used as before. However the top level stdWrap of certain cObjects (e.g. TEXT cObject) will not evaluate cache. as part of stdWrap, but before starting the rendering of the cObject. In conjunction the storing will happen after the stdWrap processing right before the content is returned.

Top level cache. will not evaluate the hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap_cacheStore'] any more.

Affected Installations

All installations with custom cObject implementations which make use of the cache. property.

Installations that purposely rely on the content object being evaluated before the cache is tried.

Installations that rely on the order of the cache. evaluation.

Installations that make use of the hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap_cacheStore'] on top level cache..

Migration

Rename your property or rely on the Core implementation.

If you need cache. being evaluated as part of stdWrap, please move it down one level by writing stdWrap.cache instead.

If you used the hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap_cacheStore'], please use stdWrap and the available hooks inside stdWrap to achieve your goal.