[BUGFIX] FormEngine: Custom functions
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Documentation / Changelog / master / Breaking-70132-FormEngineCustomFunctions.rst
1 ==============================================
2 Breaking: #70132 - FormEngine custom functions
3 ==============================================
4
5 Description
6 ===========
7
8 Due to the refactoring of the backend FormEngine code the "low end" extension API to manipulate data
9 changed. Affected are especially the ``type=user`` ``TCA`` element, any ``userFunc`` configured in
10 ``TCA`` as well as the ``itemsProcFunc`` to manipulate single items in select, group and other types.
11
12 In general data given to those custom functions has changed and extensions that rely on this data may
13 fail. For instance, if a ``itemsProcFunc`` was defined for a field within a flex form, the ``row``
14 array argument contained the full parent database row in the past. This is no longer the case and
15 the parent database row is now transferred as ``flexParentDatabaseRow``. In other cases data previously
16 handed over to custom functions may no longer be available at all.
17
18
19 Impact
20 ======
21
22 Custom functions receive less or different options than before and may stop working.
23
24
25 Affected Installations
26 ======================
27
28 Extensions using the ``TCA`` with ``type=user`` fields, extensions using ``TCA`` with ``userFunc`` and
29 extensions  using ``itemsProcFunc``.
30
31
32 Migration
33 =========
34
35 Developers using this API must debug the data given to custom functions and adapt accordingly.
36
37 If the data given is not sufficient it is possible to register own element classes with the
38 ``NodeFactory`` or to manipulate data by adding a custom ``FormDataProvider``. While the current
39 API will be mostly stable throughout further TYPO3 CMS 7 LTS patch releases, it may however happen
40 that the given API and data breaks again with the development of the TYPO3 CMS 8 path to make the
41 FormEngine code more powerful and reliable in the end.