TYPO3 v15 dev-main snapshot ()

This commit is contained in:
2026-08-10 22:31:09 +02:00
commit af8cc155b5
6818 changed files with 642608 additions and 0 deletions
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-73461-1668719172:
=============================================================
Breaking: #73461 - Import module disabled for non admin users
=============================================================
See :issue:`73461`
Description
===========
The import module of EXT:impexp has been disabled for non-admin users by default.
Impact
======
For non-admin users who need that functionality, the userTsConfig option :typoscript:`options.impexp.enableImportForNonAdminUser = 1`
can be set. This can become a security problem to the TYPO3 instance in core versions
7.6 and 6.2 and should only be enabled for "trustworthy" backend users in general.
Affected Installations
======================
Installations with non-admin users making active use of the import / export module
Migration
=========
Set userTsConfig option :typoscript:`options.impexp.enableImportForNonAdminUser = 1` to restore the old behavior.
.. index:: TSConfig, ext:impexp
@@ -0,0 +1,46 @@
.. include:: /Includes.rst.txt
.. _breaking-74375:
=================================================
Breaking: #74375 - fe_users.image migrated to FAL
=================================================
See :issue:`74375`
Description
===========
The Frontend User field "image" was previously handled via images located under
:file:`uploads/pics/`, as simple file references, not able to handle duplicate images etc.
The field is now set up to add references of the File Abstraction Layer avoiding
the need to copy all images to :file:`uploads/pics/`.
Impact
======
Using the `fe_users.image` field in the frontend or backend may result in unexpected
behaviour.
Affected Installations
======================
Any TYPO3 installation using the field "image" within the database table "fe_users",
common in third-party extensions using the field for storing images for frontend
users (like mm_forum).
Migration
=========
Use the File Abstraction Layer for output and deal with rendering or changing images
for frontend users.
Use the migration wizard provided in the install tool to migrate existing data to
proper file references.
.. index:: Frontend, Database, FAL
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _breaking-76108:
==============================================================
Breaking: #76108 - Replace ExtJS category tree with D3 and SVG
==============================================================
See :issue:`76108`
Description
===========
Backend ExtJS category tree has been replaced with one based on D3.js and SVG.
The js file :file:`typo3/sysext/backend/Resources/Public/JavaScript/tree.js` has been removed.
The expanded/collapsed state will not be saved to the backend user settings any more.
It was not used in the core, as all category trees have setting `expandAll` set to `true`.
It also polluted backend user settings with tons of data without giving much usability gain.
Impact
======
Any JS code referencing ExtJS component :js:`TYPO3.Components.Tree` or its sub-components
(like :js:`TYPO3.Components.Tree.StandardTree`) will no longer work.
Affected Installations
======================
All installations having extensions which modify the :js:`TYPO3.Components.Tree`
(implemented in :file:`typo3/sysext/backend/Resources/Public/JavaScript/tree.js`) component,
or rely on the file being present.
Migration
=========
Migration of the JS code to the new `SvgTree` component is recommended.
.. index:: JavaScript, Backend
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _breaking-76259-1668719184:
=======================================================================================
Breaking: #76259 - Return value of AbstractDatabaseRecordList::makeSearchString changed
=======================================================================================
See :issue:`76259`
Description
===========
The value returned by :php:`AbstractDatabaseRecordList::makeSearchString`
has been adjusted.
The SQL fragment no longer includes the leading `AND` SQL operator and the
method returns `"1=1"` if no search word is specified or if the table contains
no searchable fields.
Impact
======
3rd Party extensions need to ensure that valid SQL queries are being built
using the returned fragment.
Affected Installations
======================
Installations using 3rd party extensions that use :php:`AbstractDatabaseRecordList::makeSearchString`
and expect the leading `AND`.
Migration
=========
Migrate your code to use the Doctrine QueryBuilder where the `AND`
is no longer needed or prepend the missing `AND` before using the
return value.
.. index:: Database, PHP-API, Backend
@@ -0,0 +1,49 @@
.. include:: /Includes.rst.txt
.. _breaking-76259-1668719195:
=====================================================================
Breaking: #76259 - Signature of getResult() in PageLayoutView changed
=====================================================================
See :issue:`76259`
Description
===========
As part of migrating the core code to use Doctrine DBAL the signature of the method
:php:`PageLayoutView::getResult()` has changed.
Instead of accepting :php:`bool`, :php:`\mysqli_result` or :php:`object` as a
result provider only :php:`\Doctrine\DBAL\Driver\Statement` objects are accepted.
The new signature is:
.. code-block:: php
public function getResult(\Doctrine\DBAL\Driver\Statement $result, string $table = 'tt_content') : array
{
}
Impact
======
3rd party extensions using :php:`PageLayoutView::getResult()` need to provide the correct
input type, otherwise exceptions of type :php:`InvalidArgumentException` will be thrown.
Affected Installations
======================
Installations using 3rd party extensions that use :php:`PageLayoutView::getResult()`.
Migration
=========
Refactor all code that works with :php:`PageLayoutView::getResult()` to provide the expected
Doctrine Statement object.
.. index:: Database, PHP-API, Backend
@@ -0,0 +1,56 @@
.. include:: /Includes.rst.txt
.. _breaking-76259-1668719172:
=====================================================================================
Breaking: #76259 - Signature of setTotalItems() in AbstractDatabaseRecordList changed
=====================================================================================
See :issue:`76259`
Description
===========
As part of migrating the core code to use Doctrine DBAL the signature of the method
:php:`AbstractDatabaseRecordList::setTotalItems()` has changed.
The new signature is:
.. code-block:: php
public function setTotalItems(string $table, int $pageId, array $constraints)
{
$queryBuilder = $this->getQueryBuilder($table, $pageId, $constraints);
$this->totalItems = (int)$queryBuilder->count('*')
->execute()
->fetchColumn();
}
The parameter :php:`$constraints` is expected to be an array of Doctrine Expressions
or SQL fragments.
In case of SQL fragments proper quoting needs to be ensured by the invoking method.
SQL fragments should not have a leading ` AND ` SQL operator.
Impact
======
3rd party extensions using :php:`AbstractDatabaseRecordList::setTotalItems()` need
to update the method invocation.
Affected Installations
======================
Installations using 3rd party extensions that use :php:`AbstractDatabaseRecordList::setTotalItems()`.
Migration
=========
Instead of passing an array of parameters built using the deprecated :php:`makeQueryArray()` method
explicitly pass in the table name, page id and any additional query restrictions required.
.. index:: Database, PHP-API, Backend
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _breaking-76259:
========================================================
Breaking: #76259 - Value passed to hook getTable changed
========================================================
See :issue:`76259`
Description
===========
The value of :php:`$additionalWhere` passed to the method :php:`getDBlistQuery()`
as part of the hook `getTable` in :php:`\TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList`
has changed and no longer includes the leading `AND`.
Impact
======
3rd Party extensions implementing the hook method need to ensure the leading `AND` is no
longer present. The leading `AND` should also not be returned anymore.
Affected Installations
======================
Installations using 3rd party extensions that implement the hook method.
Migration
=========
Migrate the hook method to no longer expect or prepend the leading `AND`.
.. index:: Database, PHP-API, Backend
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-76879:
=============================================================
Breaking: #76879 - Remove unused properties from PageTreeView
=============================================================
See :issue:`76879`
Description
===========
The following unused properties have been removed from the :php:`PageTreeView` class:
* :php:`ext_separateNotinmenuPages`
* :php:`ext_alphasortNotinmenuPages`
Impact
======
Extensions which use one of the public properties above will throw a fatal error.
Affected Installations
======================
All installations with a 3rd party extension using one of the classes above.
Migration
=========
No migration available.
.. index:: PHP-API, Backend
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-76879-1668719172:
===================================================================================
Breaking: #76879 - Remove unused property pidSelect from AbstractDatabaseRecordList
===================================================================================
See :issue:`76879`
Description
===========
The unused public property :php:`pidSelect` has been removed from the :php:`AbstractDatabaseRecordList` class.
Impact
======
Extensions which use the public property will throw a fatal error.
Affected Installations
======================
All installations with a 3rd party extension using the :php:`pidSelect` property.
Migration
=========
Use :php:`AbstractDatabaseRecordList::setOverridePageIdList()` to set an array of page ids
that should be used to restrict the query.
.. index:: PHP-API, Backend
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _breaking-76891:
==========================================
Breaking: #76891 - syslog lowlevel command
==========================================
See :issue:`76891`
Description
===========
The lowlevel cleaner syslog command has been migrated to a Symfony Command to show the latest sys_log entries on the command line.
The new command can be called via `./typo3/sysext/core/bin/typo3 syslog:list`.
Impact
======
Calling `./typo3/cli_dispatch.phpsh lowlevel_cleaner syslog -r` will not show the expected output anymore as before.
Migration
=========
Use `./typo3/sysext/core/bin/typo3 syslog:list` with the optional verbose parameter instead.
.. index:: CLI, ext:lowlevel
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _breaking-77049:
=============================================================================
Breaking: #77049 - Remove unused properties from SuggestWizardDefaultReceiver
=============================================================================
See :issue:`77049`
Description
===========
The following unused properties have been removed from the :php:`SuggestWizardDefaultReceiver` class:
- :php:`selectClause`
- :php:`addWhere`
Impact
======
Extensions which use one of the protected properties above will not work properly as the
properties are not used by class methods anymore.
Affected Installations
======================
All installations with a 3rd party extension extending the :php:`SuggestWizardDefaultReceiver` class.
Migration
=========
Don't set the properties in extended classes and make use of the constructor and queryTable
method instead, as it is done in the :php:`SuggestWizard` class.
.. index:: PHP-API, Backend
@@ -0,0 +1,58 @@
.. include:: /Includes.rst.txt
.. _breaking-77062:
=====================================================================
Breaking: #77062 - Example image in TS constants descriptions removed
=====================================================================
See :issue:`77062`
Description
===========
In previous TYPO3 versions it was possible to add help text and an help image to a certain category or
configuration option in the TypoScript Constant Editor of the TYPO3 Backend. This was previously done via an
additional Constant Editor option within the `TSConstantEditor` object.
The functionality has been removed without substitution.
Along with that change, the following PHP methods have been removed:
* :php:`ExtendedTemplateService::ext_getTSCE_config_image()`
* :php:`ConfigurationForm::ext_getTSCE_config_image()`
The following public properties have been removed:
* :php:`ExtendedTemplateService::$ext_localGfxPrefix`
* :php:`ExtendedTemplateService::$ext_localWebGfxPrefix`
Within :php:`ConfigurationForm::ext_initTSstyleConfig()` the second and third parameter have been removed.
Impact
======
Setting an option :typoscript:`TSConstantEditor.basic.image = EXT:sys_note/ext_icon.png` for a category or configuration option in TypoScript constants has no effect anymore.
Calling any of the removed methods will result in a fatal PHP error.
Using any of the removed properties will result in a PHP warning.
Calling :php:`ConfigurationForm::ext_initTSstyleConfig()` with the second or third parameter will result in a PHP warning.
Affected Installations
======================
Any TYPO3 installation with extended TypoScript constant editor configuration.
Migration
=========
Remove the affected TypoScript constant editor configuration code, and any reference to the removed PHP
methods and properties.
.. index:: TypoScript, PHP-API
@@ -0,0 +1,66 @@
.. include:: /Includes.rst.txt
.. _breaking-77081:
===================================================================================
Breaking: #77081 - Removed TCA tree options: width, allowRecursiveMode, autoSizeMax
===================================================================================
See :issue:`77081`
Description
===========
The following three TCA configuration options have been removed from the FormEngine TCA Tree
functionality which is e.g. used within the FormEngine for the selection of categories.
TCA Column Config
* [config][treeConfig][appearance][allowRecursiveMode]
The option hasn't been working for a while and the documentation vs. implementation
was off - see :issue:`77074`
* [config][treeConfig][appearance][width]
* [config][autoSizeMax]
The options have no influence on the rendering of FormEngine select field configured
with :php:`'renderType' => 'selectTree'` anymore.
The Recursive selection button (the green arrow button located on the category tree toolbar) was
not widely used, mostly due that nobody expected the green "refresh" icon was related to recursive
selection.
When implemented 4 years ago, the purpose of this button was to ease handling of
"record storage page". But now the "recursive" select box can be used for this usage.
The option `autosizemax` has been dropped as the `size` can be used as maximum height.
Impact
======
The recursive selection mode button is not available any longer.
The options `width` and `autoSizeMax` have no impact on the tree rendering.
The TCA Tree now fills the full width of the parent container.
Instead of using the option `autoSizeMax` the configuration is now using the `size` parameter as maximal
height of the TCA tree.
Affected Installations
======================
Any TYPO3 installation using a TCA Tree within FormEngine with one of the options above configured.
Migration
=========
Use the `size` option and tune it to higher value, if it was used in combination
with `autoSizeMax`.
.. index:: TCA, Backend
@@ -0,0 +1,58 @@
.. include:: /Includes.rst.txt
.. _breaking-77137-1668719172:
================================================
Breaking: #77137 - JavaScript API of RTE changed
================================================
See :issue:`77137`
Description
===========
Due to the migration of the RTE from ExtJS to Bootstrap and jQuery, some API methods have been changed or removed.
Impact
======
ExtJS-based plugins will throw JavaScript errors.
The following methods have been removed:
* `onContainerResize`
* `getWindowDimensions`
* `setTabPanelHeight`
* `syncHeight`
The following methods have been changed:
* `openContainerWindow`
* `buildButtonConfig`
Affected Installations
======================
All installations using custom RTE plugins are affected.
Migration
=========
The former `Ext.Window` objects are replaced by Bootstrap modals.
See the list below for a migration of the changed methods:
openContainerWindow
The third parameter `dimensions` which used to be an array has changed to `height`, containing an integer
buildButtonConfig
The method takes now two additional arguments: `active` and `severity`. The parameter `active` is a boolean
value and declares the button being either active or not. The parameter `severity` is an integer representing the
severity of the button. This should always represent the severity of the modal, use one of the severities defined in
:js:`TYPO3/CMS/Backend/Severity`.
.. index:: JavaScript, RTE, Backend
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _breaking-77137:
==============================================
Breaking: #77137 - RTE option "colors" removed
==============================================
See :issue:`77137`
Description
===========
The RTE configuration option `RTEsetup.properties.colors` has been removed.
Impact
======
The color picker is streamlined with all occurrences in the backend, it shows all available colors.
Affected Installations
======================
All installations configuring `RTEsetup.properties.colors` are affected.
Migration
=========
There is no migration available, the obsolete configuration can be removed.
.. index:: RTE, TSConfig, Backend
@@ -0,0 +1,57 @@
.. include:: /Includes.rst.txt
.. _breaking-77156:
================================================================================
Breaking: #77156 - TSconfig and TStemplate soft references functionality removed
================================================================================
See :issue:`77156`
Description
===========
Soft references based on TSconfig, TStemplate and images within :file:`fileadmin/` have been removed.
The soft reference keys `TSconfig` and `TStemplate` that could previously be set via
:php:`$GLOBALS[TCA][$table][columns][$column][config][softref]` are not evaluated anymore.
The soft reference keys `images`, `typolink` and `typolink_tag` are not evaluating files within :file:`fileadmin/`
anymore that are not based on the File Abstraction Layer.
The public PHP property :php:`SoftReferenceIndex::$fileAdminDir` has been removed.
The following PHP methods has been removed without substitution:
- :php:`SoftReferenceIndex::findRef_TStemplate()`
- :php:`SoftReferenceIndex::findRef_TSconfig()`
- :php:`SoftReferenceIndex::fileadminReferences()`
Impact
======
Setting the softref properties `TSconfig` and `TStemplate` within TCA will not be evaluated anymore and will
throw a deprecation message.
Calling any of the PHP methods above will throw a fatal PHP error.
The soft reference index will not be updated with the TSconfig and TStemplate properties anymore, as well
as files directly linked or referenced with the :file:`fileadmin/` directory.
Affected Installations
======================
If the soft reference index is evaluated in a third-party extension, this might result in unexpected behaviour.
All TYPO3 instances using extensions setting TSconfig or TStemplate soft references in TCA are also affected.
Migration
=========
Remove the softref keys `TStemplate` and `TSconfig` from the TCA definition of the third party extensions.
.. index:: TCA, PHP-API
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _breaking-77180:
===============================================================
Breaking: #77180 - Dropped ExtJS support in Frontend TypoScript
===============================================================
See :issue:`77180`
Description
===========
The following TypoScript options
.. code-block:: typoscript
page.javascriptLibs.ExtJs
page.javascriptLibs.ExtJs.debug
page.inlineLanguageLabel
page.extOnReady
have been removed.
Impact
======
Using the settings above will not include ExtJs and inline language labels anymore in the TYPO3 Frontend.
Affected Installations
======================
Any installation using the shipped ExtJS bundle in the frontend.
Migration
=========
Include ExtJS via :typoscript:`page.includeJS` manually if needed or migrate to another supported modern framework.
.. index:: JavaScript, TypoScript
@@ -0,0 +1,68 @@
.. include:: /Includes.rst.txt
.. _breaking-77182:
==================================================================
Breaking: #77182 - Removed BasicFileUtility methods and properties
==================================================================
See :issue:`77182`
Description
===========
The `BasicFileUtility` class was used for checking file mounts and paths, and is only
used for non-FAL files.
Now, old legacy functionality has been removed.
The :php:`init()` method has been replaced by a real constructor. A possibility to set the
file extension permissions has been added via `setFileExtensionPermissions()`.
The DefaultConfiguration setting :php:`$GLOBALS[TYPO3_CONF_VARS][BE][fileExtensions][ftpspace]`
has been removed.
The following public properties within BasicFileUtility have been removed:
* `getUniqueNamePrefix`
* `tempFN`
* `f_ext`
* `mounts`
* `webPath`
* `isInit`
The following public methods within `BasicFileUtility` have been removed:
* `checkPathAgainstMounts()`
* `findFirstWebFolder()`
* `slashPath()`
* `is_webpath()`
* `checkIfFullAccess()`
* `init()`
The following public properties within `BasicFileUtility` have been set to have a protected visibility:
* `is_directory`
* `is_allowed`
Impact
======
Calling any of the methods above or using one of the properties above will result in PHP errors and warnings respectively.
Using the `TYPO3_CONF_VARS` setting has no effect anymore.
Affected Installations
======================
Any installation using pre - 6.0 core functionality within extensions.
Migration
=========
Use the File Abstraction Layer to achieve the same functionality.
.. index:: PHP-API, FAL, LocalConfiguration
@@ -0,0 +1,47 @@
.. include:: /Includes.rst.txt
.. _breaking-77184:
==================================================
Breaking: #77184 - Various TSFE properties removed
==================================================
See :issue:`77184`
Description
===========
The following public properties of the PHP class :php:`TypoScriptFrontendController` have been removed.
* :php:`TYPO3_CONF_VARS`
* :php:`defaultBodyTag`
* :php:`clientInfo`
Additionally, the first parameter of the :php:`TypoScriptFrontendController` constructor has no effect anymore and can be set
to null.
Impact
======
Accessing or setting the properties will throw a PHP warning and have no effect anymore.
Affected Installations
======================
Any installation working with the public property in a third-party extension or instantiating the `TSFE` object itself.
Migration
=========
For any calls to :php:`$GLOBALS['TSFE']->TYPO3_CONF_VARS` the global array :php:`$GLOBALS['TYPO3_CONF_VARS']` should be used.
For the property :php:`defaultBodyTag` the according TypoScript settings can be used to override the
body tag or the page title.
The information previously stored in the clientInfo property can be fetched via :php:`GeneralUtility::clientInfo()`.
.. index:: PHP-API, Frontend
@@ -0,0 +1,29 @@
.. include:: /Includes.rst.txt
.. _breaking-77186:
====================================================
Breaking: #77186 - ExtDirect eID entry point removed
====================================================
See :issue:`77186`
Description
===========
The frontend eID script to call the `ExtDirect` API for backend calls has been removed.
Impact
======
Calling `index.php?eID=ExtDirect` will result in an PHP exception.
Affected Installations
======================
Instances using the ExtDirect eID script.
.. index:: JavaScript, Backend, PHP-API
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-77209:
===============================================
Breaking: #77209 - Adapt default RECORDS tables
===============================================
See :issue:`77209`
Description
===========
The value of the constant :typoscript:`styles.content.shortcut.tables` which is set by
EXT:fluid_styled_content has been changed from :typoscript:`tt_content,tt_address,tt_news,tx_news_domain_model_news` to :typoscript:`tt_content`.
Impact
======
Shortcuts to records of the tables tt_address, tt_news and tx_news_domain_model_news don't work anymore.
Affected Installations
======================
Installations which use shortcut to records of the tables tt_address, tt_news and tx_news_domain_model_news
Migration
=========
Adopt the TS and use :typoscript:`styles.content.shortcut.tables := addToList(tt_address,tt_news,tx_news_domain_model_news)`
.. index:: TypoScript, Frontend
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _breaking-77280:
==========================================================================
Breaking: #77280 - Uploads template shows file title in favor of file name
==========================================================================
See :issue:`77280`
Description
===========
The file title is now shown instead of the file name, if the title is present.
Impact
======
The output of the template changes.
Affected Installations
======================
Every installation using the "File links" content element with files having a specified title is affected.
Migration
=========
Override the template and remove the condition to restore the original behavior.
.. index:: Frontend
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-77342:
============================================================================
Breaking: #77342 - Removed templateFile override via FlexForm in EXT:felogin
============================================================================
See :issue:`77342`
Description
===========
The possibility to override the template file via FlexForm when inserting a Frontend Login plugin has been removed.
The need for the upload folder :file:`uploads/tx_felogin` has been removed, and the folder is not generated anymore.
Impact
======
The template file cannot be selected anymore from the Frontend Login plugin. Existing installations using this option before
will fall back to the TypoScript setting silently.
Affected Installations
======================
TYPO3 instances using the `templateFile` option via FlexForms in Frontend Login plugins.
Migration
=========
Use the TypoScript setting :typoscript:`plugin.tx_felogin.templateFile` to set an alternative template file.
.. index:: Frontend, ext:felogin, TypoScript
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _breaking-77345:
===================================================================
Breaking: #77345 - EXT:form - Remove deprecated IMAGEBUTTON element
===================================================================
See :issue:`77345`
Description
===========
The :typoscript:`IMAGEBUTTON` element has been removed in TYPO3 v8.
Impact
======
Using the :typoscript:`IMAGEBUTTON` element is not working anymore, i.e. no :typoscript:`IMAGEBUTTON` element will be rendered.
Affected Installations
======================
All installations using the :typoscript:`IMAGEBUTTON` element.
Migration
=========
Remove all usages of the :typoscript:`IMAGEBUTTON` element.
.. index:: TypoScript, ext:form
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _breaking-77390:
==================================================================================================
Breaking: #77390 - Expected return type of hook getResultRows_SQLpointer in Indexed Search changed
==================================================================================================
See :issue:`77390`
Description
===========
As part of migrating the core code to use Doctrine DBAL the expected return value of the hook
:php:`getResultRows_SQLpointer` in EXT:indexed_search has changed.
It is required that :php:`\Doctrine\DBAL\Driver\Statement` objects are returned instead of the
previous types :php:`bool` or :php:`\mysqli_result`.
Impact
======
3rd party extensions implementing the hook :php:`getResultRows_SQLpointer` need to provide the
correct return type, otherwise fatal errors will occur when processing the search results.
Affected Installations
======================
Installations using 3rd party extensions that implement the hook :php:`getResultRows_SQLpointer`
for Indexed Search.
Migration
=========
Migrate the implementation of the hook to provide the expected Doctrine Statement object.
.. index:: Database, ext:indexed_search, PHP-API
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-77391:
===============================================
Breaking: #77391 - DataHandler method protected
===============================================
See :issue:`77391`
Description
===========
Method :php:`doesRecordExist_pageLookUp()` of class :php:`DataHandler` has been
changed from public access to protected access and the returned object changed to an
instance of :php:`QueryBuilder`.
Impact
======
Calling the method will trigger a fatal PHP error.
Affected Installations
======================
Extensions that use method :php:`doesRecordExist_pageLookUp()`. This is very unlikely
since the method is mostly only useful for core internal handling.
Migration
=========
No migration possible, remove the method call.
.. index:: PHP-API, Backend
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-77416:
===============================================================
Breaking: #77416 - Removed property from DatabaseIntegrityCheck
===============================================================
See :issue:`77416`
Description
===========
The property :php:`$perms_clause` has been removed from class :php:`DatabaseIntegrityCheck`.
Impact
======
Setting or reading this property on an instance of :php:`TYPO3\CMS\Core\Integrity\DatabaseIntegrityCheck` will
result in a fatal PHP error.
Affected Installations
======================
All installations with a 3rd party extension using this class.
Migration
=========
No migration available.
.. index:: PHP-API, Database
@@ -0,0 +1,47 @@
.. include:: /Includes.rst.txt
.. _breaking-77453-1668719172:
=====================================================================
Breaking: #77453 - Signature of AbstractPlugin::pi_exec_query changed
=====================================================================
See :issue:`77453`
Description
===========
The value returned by :php:`AbstractPlugin::pi_exec_query` has changed.
Instead of returning one of :php:`bool`, :php:`\mysqli_result` or :php:`object`
the method always returns a :php:`Doctrine\Dbal\Driver\Statement`.
Impact
======
3rd Party extensions using :php:`AbstractPlugin::pi_exec_query` need to be modified
to work with the new return type.
Affected Installations
======================
Installations using 3rd party extensions that use :php:`AbstractPlugin::pi_exec_query`.
Migration
=========
Migrate your code to use the :php:`Statement` object:
.. code-block:: php
$statement = $this->pi_exec_query(...);
while($row = $statement->fetch())
{
// ... do something here
}
.. index:: Database, PHP-API
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _breaking-77453:
========================================================================
Breaking: #77453 - Signature of AbstractPlugin::pi_list_makelist changed
========================================================================
See :issue:`77453`
Description
===========
The expected result data type of the method :php:`AbstractPlugin::pi_list_makelist` has changed.
Instead of accepting :php:`bool`, :php:`\mysqli_result` or :php:`object` as a
result provider only :php:`\Doctrine\DBAL\Driver\Statement` objects are accepted.
Impact
======
3rd party extensions using :php:`AbstractPlugin::pi_list_makelist` need to provide the correct
input type.
Affected Installations
======================
Installations using 3rd party extensions that use :php:`AbstractPlugin::pi_list_makelist`.
Migration
=========
Migrate all code that works with the :php:`AbstractPlugin::pi_list_makelist` to provide the expected
Doctrine Statement object.
.. index:: PHP-API, Database
@@ -0,0 +1,43 @@
.. include:: /Includes.rst.txt
.. _breaking-77460:
==============================================
Breaking: #77460 - Extbase query cache removed
==============================================
See :issue:`77460`
Description
===========
The PHP-based query cache functionality within the Extbase persistence layer has been removed.
The following public methods within the Extbase persistence layer have been removed:
* :php:`Typo3DbBackend->quoteTextValueCallback()`
* :php:`Typo3DbBackend->initializeObject()`
* :php:`Typo3DbBackend->injectCacheManager()`
* Interface definition in :php:`QuerySettingsInterface->getUseQueryCache()`
The TypoScript configuration :typoscript:`config.tx_extbase.persistence.useQueryCache` has no effect anymore.
Impact
======
The according cache configuration set via :php:`$GLOBALS[TYPO3_CONF_VARS][SYS][cache][cacheConfigurations][extbase_typo3dbbackend_queries]` has no effect anymore.
Affected Installations
======================
Any installation effectively relying on the query cache via a third party extension or explicitly deactivating the query cache of extbase.
Migration
=========
Remove the according lines and migrate to Doctrine.
.. index:: Database, PHP-API, LocalConfiguration, ext:extbase
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _breaking-77481:
=================================================
Breaking: #77481 - Remove favicon from TBE_STYLES
=================================================
See :issue:`77481`
Description
===========
The configuration :php:`$GLOBALS['TBE_STYLES']['favicon']` has been removed.
Impact
======
The configuration :php:`$GLOBALS['TBE_STYLES']['favicon']` is not evaluated anymore.
Affected Installations
======================
Any installation using :php:`$GLOBALS['TBE_STYLES']['favicon']`.
Migration
=========
Define the favicon in the setting of EXT:backend in the extension manager.
.. index:: Backend, PHP-API
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _breaking-77502:
==========================================================
Breaking: #77502 - Extbase: pre-parsing of queries removed
==========================================================
See :issue:`77502`
Description
===========
Extbase's custom implementation to pre-parse and cache queries has been removed in favor of using the RDBMS' native implementation
via Doctrine DBAL.
The following public methods have been removed:
* :php:`Typo3DbBackend->quoteTextValueCallback()`
* :php:`Typo3DbQueryParser->preparseQuery()`
* :php:`Typo3DbQueryParser->normalizeParameterIdentifier()`
* :php:`Typo3DbQueryParser->addDynamicQueryParts()`
* :php:`ComparisonInterface->setParameterIdentifier`
* :php:`ComparisonInterface->getParameterIdentifier`
Impact
======
Calling any of the methods above will result in a fatal PHP error.
Affected Installations
======================
Any TYPO3 installation using custom logic inside Extbase's own Persistence layer within `Typo3DbBackend` or `Typo3DbQueryParser`.
Migration
=========
Remove the functionality and just use :php:`Typo3DbQueryParser->parseQuery()`.
.. index:: Database, PHP-API, ext:extbase
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-77557:
=======================================================================
Breaking: #77557 - Signature of QueryView->getQueryResultCode() changed
=======================================================================
See :issue:`77557`
Description
===========
The method signature of :php:`QueryView->getQueryResultCode()` has changed
from :php:`getQueryResultCode($mQ, $res, $table)` to :php:`getQueryResultCode($type, array $dataRows, $table)`.
The second argument is no longer a MySQLi or DBAL result object, but an array of rows.
Impact
======
Extensions using this method will throw a fatal error.
Affected Installations
======================
Extensions using :php:`QueryView->getQueryResultCode()`
Migration
=========
Move away from the method or feed it with an array of database rows.
.. index:: PHP-API, Database
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _breaking-77558:
=======================================================
Breaking: #77558 - PageLayoutController removed methods
=======================================================
See :issue:`77558`
Description
===========
The following methods have been removed from :php:`PageLayoutController` without substitution:
* :php:`exec_languageQuery()`
* :php:`isColumnEmpty()`
* :php:`getElementsFromColumnAndLanguage()`
All of those methods were internally used within the Page module, the risk that an extension using them is low.
Impact
======
The methods executed page module specific queries. Extensions calling the method will throw a fatal error.
Affected Installations
======================
Extensions calling one of the aforementioned methods.
Migration
=========
Move away from those methods.
.. index:: PHP-API, Backend
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _breaking-77587:
=====================================================
Breaking: #77587 - Removed LiveSearch->getQueryString
=====================================================
See :issue:`77587`
Description
===========
The public utility method `getQueryString()` within the `LiveSearch` PHP class has been removed.
Impact
======
Calling the method directly will result in a PHP fatal error.
Affected Installations
======================
Any installation extending TYPO3's internal LiveSearch functionality via an extension.
Migration
=========
Use one of the various quoting options shipped with the Doctrine DBAL.
.. index:: PHP-API, Database
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-77591:
====================================================================
Breaking: #77591 - Removed WorkspaceService->isOldStyleWorkspaceUsed
====================================================================
See :issue:`77591`
Description
===========
The method `WorkspaceService->isOldStyleWorkspaceUsed()` was removed without substitution. It existed to identify if
Workspaces still were configured for TYPO3 4.4.
Impact
======
Calling the PHP method directly will result in a fatal PHP error.
Affected Installations
======================
TYPO3 installations using workspaces and extending the workspaces functionality extensively by providing a fallback layer to functionality for TYPO3 4.4 or lower.
Migration
=========
Remove any occurrences to the PHP method.
.. index:: PHP-API, ext:workspaces
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-76259:
===================================================================================
Deprecation: #76259 - Deprecate method makeQueryArray of AbstractDatabaseRecordList
===================================================================================
See :issue:`76259`
Description
===========
The method :php:`AbstractDatabaseRecordList::makeQueryArray()` has been marked
as deprecated.
Impact
======
Using the method mentioned will trigger a deprecation log entry. The hook `makeQueryArray`
provided within this method is no longer called by the core.
Affected Installations
======================
Instances that use the method.
Migration
=========
Migrate your code to the Doctrine based replacement :php:`\TYPO3\CMS\Recordlist\RecordList\AbstractDatabaseRecordList::getQueryBuilder`
and the associated hook `buildQueryParameters`.
.. index:: PHP-API, Backend
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-76520:
======================================================================
Deprecation: #76520 - Deprecate method pages_getTree of PageLayoutView
======================================================================
See :issue:`76520`
Description
===========
The method :php:`pages_getTree()` of `PageLayoutView` has been marked as deprecated.
Impact
======
Calling the method :php:`pages_getTree` will trigger a deprecation log entry.
Affected Installations
======================
Any installation with a 3rd party extension calling the method in its PHP code.
Migration
=========
No migration available, implement the required functionality in your own code.
.. index:: PHP-API
@@ -0,0 +1,51 @@
.. include:: /Includes.rst.txt
.. _deprecation-76804:
=======================================================================
Deprecation: #76804 - Deprecate GeneralUtility::strtoupper & strtolower
=======================================================================
See :issue:`76804`
Description
===========
The following methods within `GeneralUtility` have been marked as deprecated:
* `strtoupper()`
* `strtolower()`
Impact
======
Calling any of the methods above will trigger a deprecation log entry.
Affected Installations
======================
Any installation with a 3rd party extension calling one of the methods in its PHP code.
Migration
=========
Instead of :php:`GeneralUtility::strtoupper($value)` use:
.. code-block:: php
mb_strtoupper($value, 'utf-8');
Instead of :php:`GeneralUtility::strtolower($value)` use:
.. code-block:: php
mb_strtolower($value, 'utf-8');
Alternatively use the native implementation of :php:`strtoupper($value)` or :php:`strtolower($value)`
if the handled string consists of ascii characters only.
.. index:: PHP-API
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-77164:
====================================================================
Deprecation: #77164 - ErrorpageMessage and AbstractStandaloneMessage
====================================================================
See :issue:`77164`
Description
===========
The two PHP classes `ErrorpageMessage` and `AbstractStandaloneMessage` have been marked as deprecated.
Impact
======
Instantiating one of the PHP classes will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 instance using the two PHP classes directly because of a specialized error handling or exception handling method.
Migration
=========
Use the new Fluid-based ErrorPageController class.
.. index:: PHP-API
@@ -0,0 +1,29 @@
.. include:: /Includes.rst.txt
.. _deprecation-77405:
=========================================================
Deprecation: #77405 - PageRepository->getPathFromRootline
=========================================================
See :issue:`77405`
Description
===========
The PHP method `PageRepository->getPathFromRootline()` has been marked as deprecated.
Impact
======
Calling the method will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 installation with a third-party extension using this method.
.. index:: PHP-API, Frontend
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _deprecation-77432:
==============================================================
Deprecation: #77432 - Extbase: Prepared Statement Query Option
==============================================================
See :issue:`77432`
Description
===========
The option to use prepared statements within the Extbase persistence layer has been removed. The method
`getUsePreparedStatement()` has been removed from the `QuerySettingsInterface`, as the database
abstraction layer will take care of prepared statements automatically.
The implementation of the following properties within `Typo3QuerySettings` has been marked as
deprecated:
* `getUsePreparedStatement()`
* `usePreparedStatement()`
The protected property `usePreparedStatement` has been marked as deprecated as well.
Impact
======
Calling one of the methods above within the `QuerySettings` object within the extbase persistence
will trigger a deprecation notice warning.
Affected Installations
======================
Any TYPO3 instance with an extbase extension using custom query settings using the
`usePreparedStatement()` option.
Migration
=========
Remove any calls to the methods within the extensions' code, as the TYPO3 abstraction layer will
handle them automatically.
.. index:: PHP-API, ext:extbase, Database
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-77477:
==================================================
Deprecation: #77477 - TemplateService->fileContent
==================================================
See :issue:`77477`
Description
===========
The method `fileContent` within the class `TemplateService` has been marked as deprecated.
Impact
======
Calling the method will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 instance with a third-party extension calling the method directly.
Migration
=========
Implement the same logic directly in PHP with `getFileName()` and `file_get_contents()`.
.. index:: PHP-API
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _deprecation-77502:
=============================================================
Deprecation: #77502 - Extbase: pre-parsing of queries removed
=============================================================
See :issue:`77502`
Description
===========
The following methods and properties within Extbase's persistence query comparison interface have been marked as deprecated:
* :php:`Comparison->setParameterIdentifier()`
* :php:`Comparison->getParameterIdentifier()`
Impact
======
Calling any of the methods above will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 installation using custom logic inside Extbase's own persistence layer with parameters and placeholders within
`Typo3DbBackend` or `Typo3DbQueryParser` and actively overwriting parameter identifiers within Extbase.
Migration
=========
Usage of these methods can be replaced by simply using the `DataMapper->getPlainValue()` functionality.
.. index:: PHP-API, Database, ext:extbase
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-77557:
===================================================
Deprecation: #77557 - Method QueryView->tableWrap()
===================================================
See :issue:`77557`
Description
===========
Method :php:`QueryView->tableWrap()` has been marked as deprecated.
Impact
======
Extensions using this method will trigger a deprecation log entry.
Affected Installations
======================
Extensions using :php:`QueryView->tableWrap()`
Migration
=========
Use :php:`'<pre>' . $str . '</pre>'` instead.
.. index:: PHP-API, Backend
@@ -0,0 +1,24 @@
.. include:: /Includes.rst.txt
.. _feature-73461-1668719172:
==========================================================
Feature: #73461 - Enable import module for non admin users
==========================================================
See :issue:`73461`
Description
===========
The new userTsConfig option :typoscript:`options.impexp.enableImportForNonAdminUser` can be used to enable
the import module of EXT:impexp for non admin users.
Impact
======
This option should be enabled for "trustworthy" backend users only.
.. index:: TSConfig, Backend, ext:impexp
@@ -0,0 +1,137 @@
.. include:: /Includes.rst.txt
.. _feature-74365:
================================================================
Feature: #74365 - Add Linkservice for unified referencing syntax
================================================================
See :issue:`74365`
Description
===========
Resources within TYPO3 have been referenced using multiple, different forms of syntax
in the past.
TYPO3 now supports a modern and future-proof way of referencing resources using an
extensible and expressive syntax which is easy to understand.
In order to understand the syntax, we will guide you through using a simple page
link.
`t3://page?uid=13&campaignCode=ABC123`
The syntax consists of three main parts, much like parts on an URL:
Syntax Namespace (t3://)
The namespace is set to `t3://` to ensure the `LinkService` should be called to
parse the URL.
This value is fixed and mandatory.
Resource handler key (page)
The resource handler key is a list of available handlers that TYPO3 can work
with. At the time of writing these handlers are:
* page
* file
* folder
More keys can be added via `$TYPO3_CONF_VARS['SYS']['linkHandler']` in an associative
array where the key is the handler key and the value is a class implementing
the LinkHandlerInterface.
Resource parameters(?uid=13&campaignCode=ABC123)
These are the specific identification parameters that are used by any handler.
Note that these may carry additional parameters in order to configure the
behavior of any handler.
Handler syntax
==============
page
----
The page identifier is a compound string based on several optional settings.
uid
**int**:
The **uid** of a page record.
`t3://page?uid=13`
alias
**string**:
The **alias** of a page record (as an alternative to the UID).
`t3://page?alias=myfunkyalias`
type
**int** *(optional)*:
`t3://page?uid=13&type=3` will reference page 13 in type 3.
parameters
**string** *(optional, prefixed with &)*:
`t3://page?uid=1313&my=param&will=get&added=here`
fragment
**string** *(optional, prefixed with #)*:
`t3://page?alias=myfunkyalias#c123`
`t3://page?uid=13&type=3#c123`
`t3://page?uid=13&type3?my=param&will=get&added=here#c123`
file
----
uid
**int**: The UID of a file within the FAL database table `sys_file`.
`t3://file?uid=13`
identifier
**int**: The identifier of a file when not indexed in FAL.
`t3://file?identifier=folder/myfile.jpg`
folder
------
identifier
**string**: The identifier of a given folder.
`t3://folder?identifier=fileadmin`
storage
**string**: The FAL storage to the given folder (optional).
`t3://folder?storage=1&identifier=myfolder`
Examples:
=========
Linking to a page in RTE
------------------------
The old way of linking to a page in the RTE resulted in the following code in the
database:
`<link 13?campaignCode=ABC123 _blank class="linkMe" #c1234>Text</link>`
The new way would be the following code in the database:
`<a href="t3://page?uid=13&campaignCode=ABC123#c1234" target="_blank" class="linkMe">Text</a>`
As you can see, the syntax is more in line with known markup, thus removing the
demand of data processing from or to the RTE component.
Referencing an image in RTE
---------------------------
`<img src="t3://file?uid=134&renderAs=png" width="200" height="200">`
In this example we illustrate a **fictional** usecase of identifier configuration (mind the "renderAs" part).
Impact
======
Currently the impact is rather low, since a fallback mechanism will still be able to
work with the old syntax.
.. index:: RTE, Backend
@@ -0,0 +1,57 @@
.. include:: /Includes.rst.txt
.. _feature-76107:
====================================================
Feature: #76107 - Add fluid interceptor registration
====================================================
See :issue:`76107`
Description
===========
Interceptors in Fluid Standalone have been introduced to be able to change the template output.
The Fluid API already allows for registration of custom interceptors. Now it is possible to define
custom interceptors via the following option:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['fluid']['interceptors']
Interceptors registered here are added to the Fluid parser configuration.
Impact
======
Extensions are able to register custom interceptors using the available configuration in :php:`$TYPO3_CONF_VARS[fluid][interceptors]`.
Registered classes have to implement the `\TYPO3Fluid\Fluid\Core\Parser\InterceptorInterface`.
.. code-block:: php
// Register an own interceptor to fluid parser configuration
$GLOBALS['TYPO3_CONF_VARS']['SYS']['fluid']['interceptors'][\TYPO3\CMS\Fluid\Core\Parser\Interceptor\DebugInterceptor::class] =
\TYPO3\CMS\Fluid\Core\Parser\Interceptor\DebugInterceptor::class;
.. code-block:: php
use TYPO3Fluid\Fluid\Core\Parser\InterceptorInterface;
use TYPO3Fluid\Fluid\Core\Parser\ParsingState;
use TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\NodeInterface;
class DebugInterceptor implements InterceptorInterface
{
public function process(NodeInterface $node, $interceptorPosition, ParsingState $parsingState) : NodeInterface
{
return $node;
}
public function getInterceptionPoints()
{
return [];
}
}
.. index:: PHP-API, LocalConfiguration, Fluid
@@ -0,0 +1,51 @@
.. include:: /Includes.rst.txt
.. _feature-76108:
=============================================================
Feature: #76108 - Replace ExtJS category tree with D3 and SVG
=============================================================
See :issue:`76108`
Description
===========
The Backend ExtJS category tree (renderType `selectTree`) has been replaced with one based on D3.js_ and SVG.
Tree implements a 'virtual scroll' pattern, meaning that it renders only as many nodes as fit in the viewport.
.. _D3.js: https://d3js.org/
Additionally the tree now display icon overlay (e.g. for disabled categories).
Structure
---------
There are three RequireJS modules:
- SvgTree.js - this is a base JS object able to render a SVG based tree. It can expand and collapse child nodes, render icons for each node, and keep track of the select nodes.
- SelectTree.js - extends the SvgTree object (prototype inheritance) with checkboxes
- SvgTreeToolbar.js - toolbar for SvgTree which allows to search, collapse all and expand all tree nodes
Visual Scroll
-------------
SvgTree renders only as many nodes as fit in the wrapping container. This requires that the wrapping container has a fixed height set.
So e.g. if one node takes 20px height, and the wrapper has 200px, only 10 nodes will be rendered at the time.
Data binding
------------
Thanks to D3, each SVG node representing tree item is bound to the data object. The general idea is that all operations (like showing/hiding/selecting...) are first performed on the dataset, and then the view (SVG) is refreshed.
In the :js:`initialize` function SvgTree loads the whole tree as json
Impact
======
- New tree is faster.
- A new 'indeterminate' state for the category has been introduced introduced. The category is in the 'indeterminate' state if at last one of its descendants is selected (checked).
- Tree data is not rendered inline in HTML any more but fetched via Ajax
.. index:: JavaScript, Backend
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _feature-76209:
===========================================================================
Feature: #76209 - Hook to register custom result browsers in AbstractPlugin
===========================================================================
See :issue:`76209`
Description
===========
The hook :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Frontend\Plugin\AbstractPlugin::class]['pi_list_browseresults']` allows
registering custom result browser implementations. This approach allows to override the default implementation of
:php:`AbstractPlugin::pi_list_browseresults()` for either all extensions or only for specific ones.
Impact
======
The hook may be registered in `ext_localconf.php`:
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Frontend\Plugin\AbstractPlugin::class]['pi_list_browseresults'][1463475262] = \Vendor\ExtensionKey\Hook\ResultBrowserHook::class
The registered class must implement the method :php:`pi_list_browseresults()` with the following arguments:
* int `$showResultCount` Determines how the results of the page browser will be shown
* string `$tableParams` Attributes for the table tag which is wrapped around the table cells containing the browse links
* array `$wrapArr` Array with elements to overwrite the default $wrapper-array
* string `$pointerName` Variable name for the pointer
* bool `$hscText` Enable htmlspecialchars() for the pi_getLL function
* bool `$forceOutput` Forces the output of the page browser if you set this option to `true`
* object `$pObj` The AbstractPlugin instance calling the hook
.. index:: PHP-API, LocalConfiguration, Frontend
@@ -0,0 +1,54 @@
.. include:: /Includes.rst.txt
.. _feature-76259:
================================================================
Feature: #76259 - Introduce buildQueryParametersPostProcess Hook
================================================================
See :issue:`76259`
Description
===========
With the migration to Doctrine the hook `buildQueryParameters`
has been introduced in the class :php:`DatabaseRecordList`. This hook
replaces the hook `makeQueryArray` from the deprecated method
:php:`AbstractDatabaseRecordList::makeQueryArray`.
Using this hook allows modifying the parameters used to query the database
for records to be shown in the record list view.
The hook-object needs to be registered in :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList::class]['buildQueryParameters'][]`
and implement the public method :php:`buildQueryParametersPostProcess`.
The signature of the :php:`buildQueryParametersPostProcess` method is as following:
.. code-block:: php
public function buildQueryParametersPostProcess(
array $parameters,
string $table,
int $pageId,
array $additionalConstraints,
array $fieldList,
AbstractDatabaseRecordList $parentObject
) : void {
}
The following fields are part of the `$parameters` array and can be modified:
============== ========== ===========
Key Type Description
-------------- ---------- -----------
table string The queried tablename
fields string[] The columns to retrieve
groupBy string[] The columns to group the result by
firstResult int|null The offset to start retrieve rows from
maxResults int|null The maximum number of rows to retrieve
orderBy array[] Array of arrays containing fieldname/sorting pairs
where string[] Array of where conditions to apply to the database query.
============== ========== ===========
.. index:: PHP-API, Database
@@ -0,0 +1,22 @@
.. include:: /Includes.rst.txt
.. _feature-77280:
=======================================================================
Feature: #77280 - Render the file title in "file links" content element
=======================================================================
See :issue:`77280`
Description
===========
In the content element "File links" now displays the file title, if present.
Impact
======
In the frontend the file name will be replaced by the title as soon as a file has a title.
.. index:: Frontend
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _feature-77336:
=========================================================================
Feature: #77336 - Allow passing an own unit collection to BytesViewHelper
=========================================================================
See :issue:`77336`
Description
===========
The BytesViewHelper accepts a new parameter named `units`. It must be a comma separated list of units.
First example: Use the translation VH
.. code-block:: none
{fileSize -> f:format.bytes(units: '{f:translate(\'viewhelper.format.bytes.units\', \'fluid\')}'}
Second example: Provide a plain list
.. code-block:: html
<f:format.bytes units="byte, kilo, mega, husel, pusel">{size}</f:format.bytes>
results in the currently used collection, provided by the core.
Impact
======
A custom list of units can be passed to the ViewHelper and will be used for formatting. The existing behaviour has not changed.
.. index:: Fluid
@@ -0,0 +1,23 @@
.. include:: /Includes.rst.txt
.. _feature-77349:
==========================================================
Feature: #77349 - Additional locations for extension icons
==========================================================
See :issue:`77349`
Description
===========
Extensions can now hold their extension icons in additional locations to the existing ones (ext_icon.png, ext_icon.svg, ext_icon.gif):
- `Resources/Public/Icons/Extension.png`
- `Resources/Public/Icons/Extension.svg`
- `Resources/Public/Icons/Extension.gif`
This makes it possible to restrict access to more directories, thus hardening the TYPO3 instance.
.. index:: Backend
@@ -0,0 +1,19 @@
.. include:: /Includes.rst.txt
.. _feature-77481:
=====================================================================
Feature: #77481 - Add possibility to define a favicon for the backend
=====================================================================
See :issue:`77481`
Description
===========
The new option `backendFavicon` in the extension manager configuration makes it possible to
change the favicon of the backend. This makes it easier to distinguish between different
installations and stages.
.. index:: Backend
@@ -0,0 +1,21 @@
.. include:: /Includes.rst.txt
.. _important-77411-1668719172:
======================================================
Important: #77411 - Removed extbase table column cache
======================================================
See :issue:`77411`
Description
===========
The extbase table column cache `extbase_typo3dbbackend_tablecolumns`,
which was used to store all database fields of all database tables,
hass been removed.
The associated configuration variable :php:`$GLOBALS[TYPO3_CONF_VARS][SYS][caching][cacheConfigurations][extbase_typo3dbbackend_tablecolumns]` can safely be removed.
.. index:: Database, ext:extbase, LocalConfiguration
+52
View File
@@ -0,0 +1,52 @@
:template: changelogOverview.html
.. include:: /Includes.rst.txt
.. _changelog-8-3:
8.3 Changes
===========
**Table of contents**
.. contents::
:local:
:depth: 1
Breaking Changes
^^^^^^^^^^^^^^^^
.. toctree::
:maxdepth: 1
:titlesonly:
:glob:
Breaking-*
Features
^^^^^^^^
.. toctree::
:maxdepth: 1
:titlesonly:
:glob:
Feature-*
Deprecation
^^^^^^^^^^^
.. toctree::
:maxdepth: 1
:titlesonly:
:glob:
Deprecation-*
Important
^^^^^^^^^
.. toctree::
:maxdepth: 1
:titlesonly:
:glob:
Important-*