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-37180:
===============================================================
Breaking: #37180 - ExtDirectDebug and $GLOBALS['error'] removed
===============================================================
See :issue:`37180`
Description
===========
The class :php:`TYPO3\CMS\Core\ExtDirect\ExtDirectDebug` has been removed and within the change, also the usage of the
global variable :php:`$GLOBALS['error']` has been removed.
The following global methods are removed as well:
- :php:`debugBegin()`
- :php:`debugEnd()`
Impact
======
Accessing the class :php:`TYPO3\CMS\Core\ExtDirect\ExtDirectDebug`, the global variable :php:`$GLOBALS['error']` or the
global methods :php:`debugBegin()` and :php:`debugEnd()` will lead to an exception.
Affected Installations
======================
All instances, that use the mentioned class, global methods or access the global variable.
The extension scanner of the install tool will find affected extensions.
.. index:: PHP-API, Backend, FullyScanned
@@ -0,0 +1,31 @@
.. include:: /Includes.rst.txt
.. _breaking-52694:
==============================================================
Breaking: #52694 - GeneralUtility::devLog() not called anymore
==============================================================
See :issue:`52694`
Description
===========
:php:`TYPO3\CMS\Core\Utility\GeneralUtility::devLog()` is deprecated. Therefore the Core does not call this function
anymore. Instead the Logging API is used to write log data.
The option to write the deprecation log to the devLog has been removed.
Impact
======
Log data can be filtered through the writer configuration for the Logging API.
Registered devLog extensions are not triggered anymore by the Core.
Migration
=========
Add a custom writer configuration to retrieve devLog entries. These are mostly of level Info and Notice.
.. index:: PHP-API, NotScanned
@@ -0,0 +1,101 @@
.. include:: /Includes.rst.txt
.. _breaking-55298:
======================================================
Breaking: #55298 - Decoupled sys_history functionality
======================================================
See :issue:`55298`
Description
===========
Tracking of record changes within the TYPO3 Backend is now handled via the database table `sys_history` only,
the connection towards `sys_log` has been removed - at the same time, the backend view for showing the history
of a database record has been updated.
Database-related changes
------------------------
Changes of database records within DataHandler are now always tracked regardless of enabled logging within DataHandler.
It is not possible to disable this functionality by design (e.g. for bulk-inserts), otherwise the history of a database
record would not be complete.
DataHandler now tracks inserts/deletes/undelete entries into `sys_history` as well. Previously this was only
stored within `sys_log` (where it is still logged, if logging is enabled).
Instead of having sys_history database entries that are referenced into sys_log contain all necessary data, all data
is now stored within sys_history. All additional payload data is stored as JSON and not as serialized array.
A PHP new class :php:`RecordHistory` store has been introduced to act as API layer for storing any activity (including
moving records).
BE-log module
-------------
Referencing history entries within the BE-Log module is now done reverse (sys_log has a reference to an existing
sys_history record, and not vice-versa), speeding up the module rendering. The following related PHP classes
have been removed which were previously needed for rendering within the BE-Log backend module:
* :php:`\TYPO3\CMS\Belog\Domain\Model\HistoryEntry`
* :php:`\TYPO3\CMS\Belog\Domain\Repository\HistoryEntryRepository`
* :php:`\TYPO3\CMS\Belog\ViewHelpers\HistoryEntryViewHelper`
History view
------------
The "highlight" functionality for selecting a specific change within the history module of the TYPO3 Backend
has been removed.
A clear separation of concerns has been introduced between :php:`ElementHistoryController`, which is the entry-point
for viewing changes of a record, and :php:`RecordHistory`. The latter is now the place for fetching the history
data and doing rollbacks, where the Controller class is responsible for evaluating display-related settings inside the
module, and for preparing and rendering the Fluid-based output.
The following public PHP methods have now been removed or made protected.
* :php:`TYPO3\CMS\Backend\History\RecordHistory->maxSteps` (see the added setMaxSteps() method)
* :php:`TYPO3\CMS\Backend\History\RecordHistory->showDiff`
* :php:`TYPO3\CMS\Backend\History\RecordHistory->showSubElements` (see the added setShowSubElements() method)
* :php:`TYPO3\CMS\Backend\History\RecordHistory->showInsertDelete` (moved into controller)
* :php:`TYPO3\CMS\Backend\History\RecordHistory->element`
* :php:`TYPO3\CMS\Backend\History\RecordHistory->lastSyslogId`
* [not scanned] :php:`TYPO3\CMS\Backend\History\RecordHistory->returnUrl`
* :php:`TYPO3\CMS\Backend\History\RecordHistory->showMarked`
* :php:`TYPO3\CMS\Backend\History\RecordHistory->main()` (logic moved into controller)
* :php:`TYPO3\CMS\Backend\History\RecordHistory->toggleHighlight()`
* Method parameter of :php:`TYPO3\CMS\Backend\History\RecordHistory->performRollback()`
* :php:`TYPO3\CMS\Backend\History\RecordHistory->displaySettings()` (logic moved into controller)
* :php:`TYPO3\CMS\Backend\History\RecordHistory->displayHistory()` (logic moved into controller)
* :php:`TYPO3\CMS\Backend\History\RecordHistory->displayMultipleDiff()` (logic moved into controller)
* :php:`TYPO3\CMS\Backend\History\RecordHistory->renderDiff()` (logic moved into controller)
* :php:`TYPO3\CMS\Backend\History\RecordHistory->generateTitle()` (logic moved into controller)
* :php:`TYPO3\CMS\Backend\History\RecordHistory->linkPage()` (logic moved into view)
* :php:`TYPO3\CMS\Backend\History\RecordHistory->removeFilefields()`
* :php:`TYPO3\CMS\Backend\History\RecordHistory->resolveElement()`
* :php:`TYPO3\CMS\Backend\History\RecordHistory->resolveShUid()`
* :php:`TYPO3\CMS\Backend\Controller\ContentElement\ElementHistoryController->content`
* :php:`TYPO3\CMS\Backend\Controller\ContentElement\ElementHistoryController->doc`
* :php:`TYPO3\CMS\Backend\Controller\ContentElement\ElementHistoryController->main()`
Impact
======
Calling any of the PHP methods will result in a fatal PHP error. Getting or setting any of the PHP properties
will trigger a PHP warning.
Using the affected database tables directly will produce unexpected results than before.
Affected Installations
======================
Any installation using the record history, or extensions extending sys_history.
Migration
=========
An upgrade wizard to separate existing history data from `sys_log` can be found within the Install Tool.
The install tool also checks for existing extensions making use of the dropped and changed PHP code.
.. index:: Database, PHP-API, Backend, PartiallyScanned
@@ -0,0 +1,66 @@
.. include:: /Includes.rst.txt
.. _breaking-57594:
============================================================
Breaking: #57594 - Optimize ReflectionService Cache handling
============================================================
See :issue:`57594`
Description
===========
The `extbase_object` cache has been removed completely and all necessary information about objects,
mainly @inject information, is now fetched from the ReflectionService as well.
The ReflectionService does still create `ClassSchema` instances but these were improved a lot. All
necessary information is now gathered during the instantiation of `ClassSchema` instances. That means
that all necessary data is fetched once and then it can be used everywhere making any further
reflection superfluous.
As runtime reflection has been removed completely, along with it several reflection classes, that
analyzed doc blocks, have been removed as well. These are no longer necessary.
The `extbase_reflection` cache is no longer plugin based and will no longer be stored in the database
in the first place. Serialized ClassSchema instances will be stored in `typo3temp/var/cache` or `var/cache` for
composer-based installations.
The following classes for internal use only and have been removed:
* :php:`ClassInfo`
* :php:`ClassInfoCache`
* :php:`ClassInfoFactory`
* :php:`ClassReflection`
* :php:`MethodReflection`
* :php:`ParameterReflection`
* :php:`PropertyReflection`
The following methods of the PHP class :php:`ReflectionService` have been removed:
* :php:`injectConfigurationManager`
* :php:`setDataCache`
* :php:`initialize`
* :php:`isInitialized`
* :php:`shutdown`
Impact
======
Installations using the above classes or methods will throw a fatal error.
Affected Installations
======================
Installations using one of the mentioned classes or methods instead of the ReflectionService API.
Migration
=========
Use the class :php:`ReflectionService` as API which will be automatically initialized on
instantiation.
.. index:: PHP-API, FullyScanned, ext:extbase
@@ -0,0 +1,53 @@
.. include:: /Includes.rst.txt
.. _breaking-71306:
=================================================================================
Breaking: #71306 - Dropped "Protocol" field from page type "Link to external URL"
=================================================================================
See :issue:`71306`
Description
===========
When selecting the page type "External Url" the option to select the protocol / URL scheme for the
external target has been dropped, and is now added directly to the external target field.
Previously it was possible to select between "http://", "https://", "ftp://" and "mailto:" or no
prefix. As this sets confusion for editors and also makes it more complicated when pasting an
external URL directly, the field is removed.
The according PHP functionality has been removed:
* The TCA definition for "pages.urltype" and "pages_language_overlay.urltype" has been removed.
* The according database fields is not populated anymore, and will be removed when using the Database
Scheme Migrations in the install tool. For new installations the fields are not created anymore.
* The public PHP class property :php:`PageRepository->urltypes` has been removed.
Impact
======
Editing a page record or page translation record of type "External URL" in the TYPO3 Backend will
not include the "Protocol" field is anymore. Instead, the "URL" field will contain the full target
including the scheme part of a URL.
Accessing the public property will throw a PHP-internal warning message.
Affected Installations
======================
TYPO3 extensions making use of the "urltype" fields or TCA values for custom targets or evaluating
the urltype field in a separate functionality like "custom external redirects".
Migration
=========
The existing data is migrated via an Install Tool wizard to have all external URLs behave the same
as before.
The "pages.url" field will now contain the full URL target with scheme.
.. index:: Backend, Database, Frontend, PHP-API, TCA, PartiallyScanned
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-74533:
==================================================================
Breaking: #74533 - Throw exception if user function does not exist
==================================================================
See :issue:`74533`
Description
===========
:php:`GeneralUtility::callUserFunction()` does now always throw an exception if the passed
user function does not exist or is not callable. The parameter `$errorMode` has been removed,
exceptions are now always thrown. The method should not be called with more than three arguments.
Impact
======
Calling a not existing or uncallable user function leads to an exception, breaking the page output.
Affected Installations
======================
All TYPO3 installations are affected.
Migration
=========
Remove or fix invalid `userFunc` calls registered in TypoScript and/or `ext_localconf.php`. Catch exceptions properly
with try/catch.
.. index:: PHP-API, PartiallyScanned
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _breaking-79777:
=================================================================
Breaking: #79777 - EXT:scheduler - Deleted column for tasks added
=================================================================
See :issue:`79777`
Description
===========
Instead of deleting the record directly in the database, a "deleted" column was added for ``tx_scheduler_task``
in a way to have developers / admins revive a task later-on.
Impact
======
It is not possible to remove a task completely using the delete button in the scheduler module.
Instead the "deleted" column will be set to 1 and the task won't show up in the backend module, and cannot
be called via CLI anymore.
Affected Installations
======================
If an extension is accessing the database table ``tx_scheduler_task`` directly, an additional `deleted=0` check
needs to be added.
.. index:: Backend, CLI, NotScanned, ext:scheduler
@@ -0,0 +1,426 @@
.. include:: /Includes.rst.txt
.. _breaking-80700:
===================================================
Breaking: #80700 - Deprecated functionality removed
===================================================
See :issue:`80700`
Description
===========
The following PHP classes that have been previously deprecated for v8 have been removed:
* :php:`RemoveXSS`
* :php:`TYPO3\CMS\Backend\Console\Application`
* :php:`TYPO3\CMS\Backend\Console\CliRequestHandler`
* :php:`TYPO3\CMS\Backend\Controller\Wizard\ColorpickerController`
* :php:`TYPO3\CMS\Backend\Form\Container\SoloFieldContainer`
* :php:`TYPO3\CMS\Backend\Form\Wizard\SuggestWizard`
* :php:`TYPO3\CMS\Backend\Form\Wizard\ValueSliderWizard`
* :php:`TYPO3\CMS\Core\Cache\CacheFactory`
* :php:`TYPO3\CMS\Core\Controller\CommandLineController`
* :php:`TYPO3\CMS\Core\Http\AjaxRequestHandler`
* :php:`TYPO3\CMS\Core\Messaging\AbstractStandaloneMessage`
* :php:`TYPO3\CMS\Core\Messaging\ErrorpageMessage`
* :php:`TYPO3\CMS\Core\TimeTracker\NullTimeTracker`
* :php:`TYPO3\CMS\Extbase\Utility\ArrayUtility`
* :php:`TYPO3\CMS\Fluid\ViewHelpers\CaseViewHelper`
* :php:`TYPO3\CMS\Fluid\ViewHelpers\SwitchViewHelper`
* :php:`TYPO3\CMS\Form\Domain\Model\FormElements\AdvancedPassword`
* :php:`TYPO3\CMS\Form\ViewHelpers\Form\CheckboxViewHelper`
* :php:`TYPO3\CMS\Form\ViewHelpers\Form\PlainTextMailViewHelper`
* :php:`TYPO3\CMS\Frontend\Page\FramesetRenderer`
* :php:`TYPO3\CMS\Lowlevel\CleanerCommand`
The following PHP interfaces have been dropped:
* :php:`TYPO3\CMS\Backend\Form\DatabaseFileIconsHookInterface`
The following PHP interface signatures have been changed:
* :php:`TYPO3\CMS\Extbase\Persistence\Generic\QueryInterface->like()` - Third argument dropped
The following PHP static class methods that have been previously deprecated for v8 have been removed:
* :php:`TYPO3\CMS\Backend\Utility\BackendUtility::getAjaxUrl()`
* :php:`TYPO3\CMS\Backend\Utility\BackendUtility::getFlexFormDS()`
* :php:`TYPO3\CMS\Backend\Utility\BackendUtility::getInlineLocalizationMode()`
* :php:`TYPO3\CMS\Backend\Utility\BackendUtility::getListViewLink()`
* :php:`TYPO3\CMS\Backend\Utility\BackendUtility::getRecordRaw()`
* :php:`TYPO3\CMS\Backend\Utility\BackendUtility::getRecordsByField()`
* :php:`TYPO3\CMS\Backend\Utility\BackendUtility::getSpecConfParametersFromArray()`
* :php:`TYPO3\CMS\Backend\Utility\BackendUtility::getSpecConfParts()`
* :php:`TYPO3\CMS\Backend\Utility\BackendUtility::getSQLselectableList()`
* :php:`TYPO3\CMS\Backend\Utility\BackendUtility::titleAltAttrib()`
* :php:`TYPO3\CMS\Backend\Utility\BackendUtility::makeConfigForm()`
* :php:`TYPO3\CMS\Backend\Utility\BackendUtility::processParams()`
* :php:`TYPO3\CMS\Backend\Utility\BackendUtility::replaceL10nModeFields()`
* :php:`TYPO3\CMS\Backend\Utility\BackendUtility::RTEsetup()`
* :php:`TYPO3\CMS\Core\DataHandling\DataHandler::rmComma()`
* :php:`TYPO3\CMS\Core\DataHandling\DataHandler::destPathFromUploadFolder()`
* :php:`TYPO3\CMS\Core\DataHandling\DataHandler::noRecordsFromUnallowedTables()`
* :php:`TYPO3\CMS\Core\Utility\ArrayUtility::inArray()`
* :php:`TYPO3\CMS\Core\Utility\ClientUtility::getDeviceType()`
* :php:`TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addExtJSModule()`
* :php:`TYPO3\CMS\Core\Utility\ExtensionManagementUtility::appendToTypoConfVars()`
* :php:`TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath()`
* :php:`TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerAjaxHandler()`
* :php:`TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerExtDirectComponent()`
* :php:`TYPO3\CMS\Core\Utility\File\ExtendedFileUtility::pushErrorMessagesToFlashMessageQueue()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::array2xml_cs()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::compat_version()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::convertMicrotime()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::csvValues()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::deHSCentities()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::flushOutputBuffers()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::freetypeDpiComp()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::generateRandomBytes()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::getMaximumPathLength()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::getRandomHexString()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::imageMagickCommand()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::lcfirst()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::rawUrlEncodeFP()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::rawUrlEncodeJS()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::removeXSS()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::requireFile()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::requireOnce()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::resolveAllSheetsInDS()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::resolveSheetDefInDS()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::slashJS()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::strtolower()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::strtoupper()`
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::xmlGetHeaderAttribs()`
* :php:`TYPO3\CMS\Frontend\Page\PageGenerator::pagegenInit()`
* :php:`TYPO3\CMS\Frontend\Page\PageRepository::getHash()`
* :php:`TYPO3\CMS\Frontend\Page\PageRepository::storeHash()`
The following PHP class methods that have been previously deprecated for v8 have been removed:
* :php:`TYPO3\CMS\Backend\Clipboard\Clipboard->confirmMsg()`
* :php:`TYPO3\CMS\Backend\Controller\BackendController->addCssFile()`
* :php:`TYPO3\CMS\Backend\Controller\BackendController->addJavascript()`
* :php:`TYPO3\CMS\Backend\Controller\BackendController->addJavascriptFile()`
* :php:`TYPO3\CMS\Backend\Controller\BackendController->includeLegacyBackendItems()`
* :php:`TYPO3\CMS\Backend\Controller\Page\LocalizationController->getRecordUidsToCopy()`
* :php:`TYPO3\CMS\Backend\Controller\Page\PageLayoutController->printContent()`
* :php:`TYPO3\CMS\Backend\Domain\Repository\Localization\LocalizationRepository->getAllowedLanguagesForBackendUser()`
* :php:`TYPO3\CMS\Backend\Domain\Repository\Localization\LocalizationRepository->getExcludeQueryPart()`
* :php:`TYPO3\CMS\Backend\Domain\Repository\Localization\LocalizationRepository->getPreviousLocalizedRecordUid()`
* :php:`TYPO3\CMS\Backend\Domain\Repository\Localization\LocalizationRepository->getRecordLocalization()`
* :php:`TYPO3\CMS\Backend\Form\FormDataProvider\AbstractItemProvider->sanitizeMaxItems()`
* :php:`TYPO3\CMS\Backend\Module\AbstractFunctionModule->getBackPath()`
* :php:`[NotScanned] TYPO3\CMS\Backend\Module\AbstractFunctionModule->getDatabaseConnection()`
* :php:`TYPO3\CMS\Backend\Module\AbstractFunctionModule->incLocalLang()`
* :php:`[NotScanned] TYPO3\CMS\Backend\Module\BaseScriptClass->getDatabaseConnection()`
* :php:`TYPO3\CMS\Backend\Form\AbstractFormElement->isWizardsDisabled()`
* :php:`TYPO3\CMS\Backend\Form\AbstractFormElement->renderWizards()`
* :php:`TYPO3\CMS\Backend\Form\AbstractNode->getValidationDataAsDataAttribute()`
* :php:`TYPO3\CMS\Backend\Form\FormResultCompiler->JStop()`
* :php:`TYPO3\CMS\Backend\Routing\UriBuilder->buildUriFromAjaxId()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->divider()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->funcMenu()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->getContextMenuCode()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->getDragDropCode()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->getHeader()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->getResourceHeader()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->getTabMenu()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->getTabMenuRaw()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->header()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->icons()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->loadJavascriptLib()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->section()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->sectionBegin()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->sectionEnd()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->sectionHeader()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->t3Button()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->getVersionSelector()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->viewPageIcon()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->wrapInCData()`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->wrapScriptTags()`
* :php:`TYPO3\CMS\Backend\Template\ModuleTemplate->getVersionSelector()`
* :php:`TYPO3\CMS\Backend\View\PageLayoutView->pages_getTree()`
* :php:`TYPO3\CMS\Core\Authentication\AbstractUserAuthentication->veriCode()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->convCapitalize()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->conv_case()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->euc_char2byte_pos()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->euc_strlen()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->euc_strtrunc()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->euc_substr()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->getPreferredClientLanguage()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->strlen()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->strtrunc()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->substr()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->utf8_byte2char_pos()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->utf8_strlen()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->utf8_strpos()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->utf8_strrpos()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->utf8_strtrunc()`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->utf8_substr()`
* :php:`TYPO3\CMS\Core\Core\Bootstrap->ensureClassLoadingInformationExists()`
* :php:`TYPO3\CMS\Core\Core\Bootstrap->loadExtensionTables()`
* :php:`TYPO3\CMS\Core\Database\RelationHandler->readyForInterface()`
* :php:`TYPO3\CMS\Core\Database\QueryView->tableWrap()`
* :php:`TYPO3\CMS\Core\Imaging\GraphicalFunctions->createTempSubDir()`
* :php:`TYPO3\CMS\Core\Imaging\GraphicalFunctions->prependAbsolutePath()`
* :php:`TYPO3\CMS\Core\Imaging\IconRegistry->getDeprecationSettings()`
* :php:`[NotScanned] TYPO3\CMS\Core\Messaging\FlashMessage->getClass()`
* :php:`TYPO3\CMS\Core\Messaging\FlashMessage->getIconName()`
* :php:`TYPO3\CMS\Core\TypoScript\TemplateService->splitConfArray()`
* :php:`TYPO3\CMS\Core\TypoScript\TemplateService->fileContent()`
* :php:`TYPO3\CMS\Core\TypoScript\TemplateService->removeQueryString()`
* :php:`TYPO3\CMS\Core\TypoScript\TemplateService->sortedKeyList()`
* :php:`[NotScanned] TYPO3\CMS\Extbase\Domain\Model\Category->getIcon()`
* :php:`[NotScanned] TYPO3\CMS\Extbase\Domain\Model\Category->setIcon()`
* :php:`TYPO3\CMS\Extbase\Persistence\Generic\Qom\Comparison->getParameterIdentifier()`
* :php:`TYPO3\CMS\Extbase\Persistence\Generic\Qom\Comparison->setParameterIdentifier()`
* :php:`TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings->getUsePreparedStatement()`
* :php:`TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings->getUseQueryCache()`
* :php:`TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings->usePreparedStatement()`
* :php:`TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings->useQueryCache()`
* :php:`TYPO3\CMS\Fluid\Core\Rendering\RenderingContext->getObjectManager()`
* :php:`TYPO3\CMS\Fluid\Core\Rendering\RenderingContext->getTemplateVariableContainer()`
* :php:`TYPO3\CMS\Fluid\Core\Rendering\RenderingContext->injectObjectManager()`
* :php:`TYPO3\CMS\Fluid\Core\Rendering\RenderingContext->setLegacyMode()`
* :php:`TYPO3\CMS\Form\Domain\Model\FormElements\AbstractFormElement->onSubmit()`
* :php:`TYPO3\CMS\Form\Domain\Model\FormElements\AbstractSection->onSubmit()`
* :php:`TYPO3\CMS\Form\Domain\Model\FormElements\FileUpload->onBuildingFinished()`
* :php:`TYPO3\CMS\Form\Domain\Model\FormElements\FormElementInterface->onSubmit()`
* :php:`TYPO3\CMS\Form\Domain\Model\FormElements\UnknownFormElement->onSubmit()`
* :php:`TYPO3\CMS\Form\Domain\Model\Renderable\AbstractRenderable->beforeRendering()`
* :php:`TYPO3\CMS\Form\Domain\Model\Renderable\AbstractRenderable->onBuildingFinished()`
* :php:`TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface->onBuildingFinished()`
* :php:`TYPO3\CMS\Form\Domain\Model\Renderable\RootRenderableInterface->beforeRendering()`
* :php:`TYPO3\CMS\Form\Domain\Runtime\FormRuntime->beforeRendering()`
* :php:`TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication->record_registration()`
* :php:`TYPO3\CMS\Frontend\ContentObject\AbstractContentObject->getContentObject()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->URLqMark()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->clearTSProperties()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->fileResource()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->fillInMarkerArray()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->getClosestMPvalueForPage()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->getSubpart()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->getWhere()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->gifBuilderTextBox()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->includeLibs()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->linebreaks()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->processParams()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->removeBadHTML()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->stdWrap_fontTag()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->stdWrap_removeBadHTML()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->substituteMarker()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->substituteMarkerAndSubpartArrayRecursive()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->substituteMarkerArray()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->substituteMarkerArrayCached()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->substituteMarkerInObject()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->substituteSubpart()`
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->substituteSubpartArray()`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->beLoginLinkIPList()`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->csConv()`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->encryptCharcode()`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->encryptEmail()`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->generatePage_whichScript()`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->includeLibraries()`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->setParseTime()`
* :php:`TYPO3\CMS\Frontend\Page\PageRepository->getPathFromRootline()`
* :php:`TYPO3\CMS\IndexedSearch\Indexer->includeCrawlerClass()`
* :php:`TYPO3\CMS\Lang\LanguageService->addModuleLabels()`
* :php:`TYPO3\CMS\Lang\LanguageService->getParserFactory()`
* :php:`TYPO3\CMS\Lang\LanguageService->makeEntities()`
* :php:`TYPO3\CMS\Lang\LanguageService->overrideLL()`
* :php:`TYPO3\CMS\Lowlevel\Utility\ArrayBrowser->wrapValue()`
* :php:`TYPO3\CMS\Recordlist\RecordList\AbstractDatabaseRecordList->makeQueryArray()`
* :php:`TYPO3\CMS\Taskcenter\Controller\TaskModuleController->printContent()`
The following methods changed signature according to previous deprecations in v8 at the end of the argument list:
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->euc_char_mapping()` - Third and fourth argument dropped
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->sb_char_mapping()` - Third and fourth argument dropped
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->utf8_char_mapping()` - Second and third argument dropped
* :php:`TYPO3\CMS\Core\DataHandling\DataHandler->extFileFunctions()` - Fourth argument dropped
* :php:`TYPO3\CMS\Core\Localization\LanguageStore->setConfiguration()` - Third argument dropped
* :php:`TYPO3\CMS\Core\Localization\Parser\AbstractXmlParser->getParsedData()` - Third argument dropped
* :php:`TYPO3\CMS\Core\Localization\Parser\LocalizationParserInterface->getParsedData()` - Third argument dropped
* :php:`TYPO3\CMS\Core\Localization\Parser\LocallangXmlParser->getParsedData()` - Third argument dropped
* :php:`TYPO3\CMS\Core\Page\PageRenderer->addInlineLanguageLabelFile()` - Fourth argument dropped
* :php:`TYPO3\CMS\Core\Page\PageRenderer->includeLanguageFileForInline()` - Fourth argument dropped
* :php:`TYPO3\CMS\Extbase\Persistence\Generic\Query->like()` - Third argument dropped
* :php:`TYPO3\CMS\Frontend\Plugin\AbstractPlugin->pi_getLL()` - Third argument dropped
* :php:`TYPO3\CMS\Lang\LanguageService->getLL()` - Second argument dropped
* :php:`TYPO3\CMS\Lang\LanguageService->getLLL()` - Third argument dropped
* :php:`TYPO3\CMS\Lang\LanguageService->sL()` - Second argument dropped
The following static methods changed signature according to previous deprecations in v8 at the end of the argument list:
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName()` - Second and third argument dropped
* :php:`TYPO3\CMS\Core\Utility\GeneralUtility::wrapJS()` - Second argument dropped
* :php:`TYPO3\CMS\Recycler\Utility\RecyclerUtility::getRecordPath()` - Second, third and fourth argument dropped
The following methods changed signature according to previous deprecations in v8 which should be
given as null if further arguments are added after the unused ones:
* :php:`TYPO3\CMS\Core\Html\RteHtmlParser->RTE_transform()` - Second argument unused
* :php:`TYPO3\CMS\Core\Localization\LocalizationFactory->getParsedData()` - Third and fourth argument unused
* :php:`TYPO3\CMS\Core\TypoScript\TemplateService->linkData()` - Fourth argument unused
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->whichWorkspace()` - First argument removed
The following constructor arguments are unused and should be given as null if additional arguments are
given after the unused one:
* [NotScanned] :php:`TYPO3\CMS\Frontend\Plugin\AbstractPlugin->__constructor()` - First argument unused
The following methods changed single argument details:
* [NotScanned] :php:`TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModule` - Fifth argument ignores [labels][tabs_images][tab]
* [NotScanned] :php:`TYPO3\CMS\Core\Utility\GeneralUtility::callUserFunction()` - Persistent or file prefix in first argument removed
* [NotScanned] :php:`TYPO3\CMS\Extbase\Persistence\Generic\Qom\Statement` - support for \TYPO3\CMS\Core\Database\PreparedStatement as argument dropped
* [NotScanned] :php:`TYPO3\CMS\Core\Utility\GeneralUtility::getUserObj()` - File reference prefix in first argument removed
* [NotScanned] :php:`TYPO3\CMS\Extbase\Mvc\Cli\ConsoleOutput->askAndValidate()` - support for boolean as fourth argument removed
* [NotScanned] :php:`TYPO3\CMS\Extbase\Mvc\Cli\ConsoleOutput->select()` - support for boolean as fifth argument removed
The following methods have additional arguments:
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->searchWhere()` - Third parameter is now mandatory
The following public class properties have been dropped:
* :php:`TYPO3\CMS\Backend\Controller\EditDocumentController->localizationMode`
* :php:`TYPO3\CMS\Backend\Controller\PageLayoutController->edit_record`
* :php:`TYPO3\CMS\Backend\Controller\PageLayoutController->new_unique_uid`
* :php:`TYPO3\CMS\Backend\Controller\PageLayoutController->externalTables`
* :php:`TYPO3\CMS\Backend\Module\AbstractFunctionModule->thisPath`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->extJScode`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate->form_largeComp`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->charSetArray`
* :php:`TYPO3\CMS\Core\Charset\CharsetConverter->fourByteSets`
* :php:`TYPO3\CMS\Core\DataHandling\DataHandler->checkWorkspaceCache`
* :php:`TYPO3\CMS\Core\Imaging\GraphicalFunctions->tempPath`
* :php:`TYPO3\CMS\Frontend\ContentObject\Menu\AbstractMenuContentObject->parentMenuArr`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->compensateFieldWidth`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->dtdAllowsFrames`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->excludeCHashVars`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->scriptParseTime`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->csConvObj`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->defaultCharSet`
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->renderCharset`
* :php:`TYPO3\CMS\Lang\LanguageService->charSet`
* :php:`TYPO3\CMS\Lang\LanguageService->csConvObj`
* :php:`TYPO3\CMS\Lang\LanguageService->moduleLabels`
* :php:`TYPO3\CMS\Lang\LanguageService->parserFactory`
The following class properties have changed visibility:
* :php:`TYPO3\CMS\Core\DataHandling\DataHandler->recUpdateAccessCache` changed from public to protected
* :php:`TYPO3\CMS\Core\DataHandling\DataHandler->recInsertAccessCache` changed from public to protected
* :php:`TYPO3\CMS\Core\DataHandling\DataHandler->isRecordInWebMount_Cache` changed from public to protected
* :php:`TYPO3\CMS\Core\DataHandling\DataHandler->isInWebMount_Cache` changed from public to protected
* :php:`TYPO3\CMS\Core\DataHandling\DataHandler->cachedTSconfig` changed from public to protected
* :php:`TYPO3\CMS\Core\DataHandling\DataHandler->pageCache` changed from public to protected
The following public class constants have been dropped:
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate::STATUS_ICON_ERROR`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate::STATUS_ICON_WARNING`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate::STATUS_ICON_NOTIFICATION`
* :php:`TYPO3\CMS\Backend\Template\DocumentTemplate::STATUS_ICON_OK`
The following configuration options are not evaluated anymore:
* :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['GLOBAL][cliKeys']`
* :php:`$GLOBALS['TYPO3_CONF_VARS']['FE']['noPHPscriptInclude']`
* :php:`$GLOBALS['TYPO3_CONF_VARS']['FE']['maxSessionDataSize']`
* :php:`$GLOBALS['TYPO3_CONF_VARS_extensionAdded']`
The following hooks have been removed:
* :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['getFlexFormDSClass']`
* :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/div/class.t3lib_utility_client.php']['getDeviceType']`
* :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/class.db_list.inc']['makeQueryArray']`
The following entry points have been removed:
* [NotScanned] :php:`typo3/cli_dispatch.phpsh`
The following functionality has been removed:
* [NotScanned] Support for legacy prepared statements within Extbase Persistence within Qom\Statement
The following TypoScript options have been removed:
* :typoscript:`stdWrap.fontTag`
* :typoscript:`stdWrap.removeBadHTML`
* :typoscript:`config.mainScript`
* :typoscript:`config.frameReloadIfNotInFrameset`
* :typoscript:`config.noScaleUp`
* :typoscript:`config.setJS_mouseOver`
* :typoscript:`config.setJS_openPic`
* :typoscript:`config.doctype = xhtml_frames`
* :typoscript:`config.xhtmlDoctype = xhtml_frames`
* :typoscript:`config.pageGenScript`
* :typoscript:`config.beLoginLinkIPList`
* :typoscript:`config.beLoginLinkIPList_login`
* :typoscript:`config.beLoginLinkIPList_logout`
* :typoscript:`page.frameSet`
* :typoscript:`page.insertClassesFromRTE`
* single slashes are no longer interpreted as comment
The following TCA properties have been removed:
* :code:`type=select` selectedListStyle
* :code:`type=select` itemListStyle
* :code:`type=inline` behaviour['localizationMode']
The following PageTsConfig properties have been removed:
* :typoscript:`TCEFORM.[table].[field].addItems.icon` - with icons not registered in IconRegistry
* :typoscript:`TCEFORM.[table].[flexFormField].PAGE_TSCONFIG_ID`
* :typoscript:`TCEFORM.[table].[flexFormField].PAGE_TSCONFIG_IDLIST`
* :typoscript:`TCEFORM.[table].[flexFormField].PAGE_TSCONFIG_STR`
The following icon identifiers have been removed:
* :code:`actions-document-close`
* :code:`actions-edit-add`
The following Fluid ViewHelper arguments have been removed:
* :php:`f:be.container->enableClickMenu`
* :php:`f:be.container->loadExtJs`
* :php:`f:be.container->loadExtJsTheme`
* :php:`f:be.container->enableExtJsDebug`
* :php:`f:be.container->loadJQuery`
* :php:`f:be.container->jQueryNamespace`
* :php:`f:be.pageRenderer->loadExtJs`
* :php:`f:be.pageRenderer->loadExtJsTheme`
* :php:`f:be.pageRenderer->enableExtJsDebug`
* :php:`f:be.pageRenderer->loadJQuery`
* :php:`f:be.pageRenderer->jQueryNamespace`
* :php:`f:case->default (use f:defaultCase instead)`
The following requireJS modules have been removed:
* :php:`TYPO3/CMS/Core/QueryGenerator`
Further removal notes:
* FormEngine result array ignores key `extJSCODE`
* RTE transformation 'ts_css' dropped
* Invalid flex form data structure wildcard matching `secondFieldValue,*` dropped
The following JavaScript methods and options have been removed:
* :js:`backend/Resources/Public/JavaScript/jsfunc.inline.js escapeSelectorObjectId`
* :js:`TYPO3/CMS/Backend/Modal.getSeverityClass()`
* :js:`TYPO3/CMS/Backend/Severity.information`
Impact
======
Instantiating or requiring the PHP classes, will result in PHP fatal errors.
Calling the entry points via CLI will result in a file not found error.
.. index:: Backend, CLI, FlexForm, Fluid, Frontend, JavaScript, LocalConfiguration, PHP-API, TCA, TSConfig, TypoScript, PartiallyScanned
@@ -0,0 +1,46 @@
.. include:: /Includes.rst.txt
.. _breaking-80876:
=============================================================
Breaking: #80876 - Remove system extension css_styled_content
=============================================================
See :issue:`80876`
Description
===========
The long-time used system extension CSS Styled Content has been removed from the TYPO3 Core.
Impact
======
Rendering sites with TypoScript based on CSS Styled Content or referencing any TypoScript, resources or
PHP classes from this extension may result in fatal PHP errors or empty frontend output.
Extensions depending on the frontend rendering based on CSS Styled Content directly will work
unpredictably.
Affected Installations
======================
Installations that run their frontend based on CSS Styled Content as TypoScript, and extensions
depending on CSS Styled Content rendering instead of default rendering.
Migration
=========
The system extension "Fluid Styled Content" (EXT:fluid_styled_content) which was introduced in TYPO3 v7,
acts as a drop-in replacement for CSS Styled Content since TYPO3 v8.
Install fluid styled content (if not happened yet) and prepare the Fluid templates to show the frontend
rendering accordingly to the previous output.
For managing content in the TYPO3 Backend and can be used transparently when migrating from CSS Styled
Content to Fluid Styled Content.
.. index:: Fluid, Frontend, PHP-API, TypoScript, NotScanned, ext:css_styled_content
@@ -0,0 +1,46 @@
.. include:: /Includes.rst.txt
.. _breaking-80929:
==============================================
Breaking: #80929 - TYPO3_DB moved to extension
==============================================
See :issue:`80929`
Description
===========
The legacy class :php:`DatabaseConnection` better known as :php:`$GLOBALS['TYPO3_DB']` has been moved
to the new system extension ext:typo3db_legacy.
The following classes have been moved and renamed, including an alias to the original class name:
* :php:`TYPO3\CMS\Core\Database\DatabaseConnection` to :php:`TYPO3\CMS\Typo3DbLegacy\Database\DatabaseConnection`
* :php:`TYPO3\CMS\Core\Database\PreparedStatement` to :php:`TYPO3\CMS\Typo3DbLegacy\Database\PreparedStatement`
* :php:`TYPO3\CMS\Core\Database\PostProcessQueryHookInterface` to :php:`TYPO3\CMS\Typo3DbLegacy\Database\PostProcessQueryHookInterface`
* :php:`TYPO3\CMS\Core\Database\PreProcessQueryHookInterface` to :php:`TYPO3\CMS\Typo3DbLegacy\Database\PreProcessQueryHookInterface`
Impact
======
:php:`$GLOBALS['TYPO3_DB']` is no longer initialized by the core bootstrap. Third party extensions
that rely on :php:`$GLOBALS['TYPO3_DB']` will trigger a fatal error if :code:`ext:typo3db_legacy`
is not loaded.
Affected Installations
======================
Installations with extensions which did not migrate to doctrine yet and need :php:`$GLOBALS['TYPO3_DB']`.
Migration
=========
`Migrate affected extensions to doctrine <https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Database/Migration/Index.html>`_
or load extension `typo3db_legacy` as backwards compatible layer to :php:`$GLOBALS['TYPO3_DB']`
(the extension is available via TER and may be installed from there or directly
via the upgrade wizard `typo3DbLegacyExtension`).
.. index:: Database, PHP-API, FullyScanned
@@ -0,0 +1,49 @@
.. include:: /Includes.rst.txt
.. _breaking-81171:
================================================================================
Breaking: #81171 - Edit ability of TypoScript template in EXT:tstemplate removed
================================================================================
See :issue:`81171`
Description
===========
Editing "Constants" and "Setup" of templates in the backend template module has been
refactored to use FormEngine field rendering instead of an own solution.
Impact
======
Rendering the edit form for the fields "Constants" and "Setup" is now done by FormEngine, triggered
by EditDocumentController. The following code has been removed without substitution:
* Public method :php:`TypoScriptTemplateInformationModuleFunctionController->processTemplateRowAfterLoading()`
* Public method :php:`TypoScriptTemplateInformationModuleFunctionController->processTemplateRowBeforeSaving()`
* Hook :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/tstemplate_info/class.tx_tstemplateinfo.php']['postTCEProcessingHook']`
* Hook :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/tstemplate_info/class.tx_tstemplateinfo.php']['postOutputProcessingHook']`
* Public property :php:`TypoScriptTemplateModuleController::$e`
* Hook class :php:`\TYPO3\CMS\T3editor\Hook\TypoScriptTemplateInfoHook`
Due to code removal the following features were removed without substitution:
* "Include TypoScript file content" functionality
* Saving the form via CTRL/CMD+S keystroke
Affected Installations
======================
All installations are affected.
Migration
=========
As the hooks `postTCEProcessingHook` and `postOutputProcessingHook` were removed without
substitution, any functionality has to be migrated to custom FormEngine render types.
.. index:: Backend, FullyScanned, PHP-API
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _breaking-81225:
=========================================================
Breaking: #81225 - Merged EXT:context_help to EXT:backend
=========================================================
See :issue:`81225`
Description
===========
The extension `context_help` has been merged into the extension backend.
Impact
======
The extension backend can't be deactivated.
Any check if `context_help` is installed will return false.
Affected Installations
======================
Installations with extensions with checks for extension `context_help` being installed.
Migration
=========
Remove the checks.
.. index:: Backend, NotScanned
@@ -0,0 +1,43 @@
.. include:: /Includes.rst.txt
.. _breaking-81460:
==========================================================
Breaking: #81460 - Deprecate getByTag() on cache frontends
==========================================================
See :issue:`81460`
Description
===========
The following public method and property have been removed without any substitute
since it invoked or was used in combination with Cache\FrontendInterface::getByTag
method which has been deprecated and removed from the interface declaration.
* :php:`TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication::extGetNumberOfCachedPages`
* :php:`TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication::$extPageInTreeInfo`
Impact
======
Calling :php:`TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication::extGetNumberOfCachedPages` will
result in a PHP fatal error. Using the property :php:`FrontendUserAuthentication::$extPageInTreeInfo` will
return an implicit `null` instead of an `array`.
Affected Installations
======================
All that make use of :php:`TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication::extGetNumberOfCachedPages`
or property :php:`TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication::$extPageInTreeInfo`.
Migration
=========
Remove invocation of :php:`TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication::extGetNumberOfCachedPages`
and property :php:`TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication::$extPageInTreeInfo`.
.. index:: PHP-API, FullyScanned
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _breaking-81534:
=================================================================
Breaking: #81534 - Database field be_groups:hide_in_lists dropped
=================================================================
See :issue:`81534`
Description
===========
The database field hide_in_lists of table be_groups has been dropped without substitution.
* The property has been dropped from PHP class :php:`TYPO3\CMS\Extbase\Domain\Model\BackendUserGroup` along with
the getter and setter methods :php:`->setHideInList` and :php:`->getHideInList`
* The TCA column :php:`hide_in_lists` has been dropped, the field is no longer configured and shown in the backend.
* The database field definition for :php:`hide_in_lists` has been dropped.
Impact
======
The special group configuration hide_in_lists has been removed.
Affected Installations
======================
An instance may break in the unlikely case that an extension relies on field existence or uses
the extbase model getter or setter.
Migration
=========
The field usage should be dropped. If that is not possible and a special functionality has been bound to that
field it should be mimicked by extending TCA, declaring the database field in an extension and maybe extending
the extbase model.
.. index:: Database, TCA, PartiallyScanned
@@ -0,0 +1,57 @@
.. include:: /Includes.rst.txt
.. _changelog-MoveOfServicesListReportFromSvToReports:
=============================================================
Breaking: #81536 - Move ServicesListReport From Sv to Reports
=============================================================
See :issue:`81536`
Description
===========
The service list report has been moved from `EXT:sv` to `EXT:reports`.
Impact
======
Because of the new location the namespace of the class :php:`ServicesListReport` has been
changed from :php:`TYPO3\CMS\Sv\Report` to :php:`TYPO3\CMS\Reports\Report`. Additionally the
relevant language file has been moved from :file:`EXT:sv/Resources/Private/Language/locallang.xlf`
to :file:`EXT:reports/Resources/Private/Language/serviceReport.xlf`.
Affected Installations
======================
All installations or 3rd party extensions which directly access the used files of the report:
- :php:`TYPO3\CMS\Sv\Report\ServicesListReport`
- :file:`EXT:sv/Resources/Private/Language/locallang.xlf`
- :file:`EXT:sv/Resources/Private/Templates/ServicesListReport.html`
- :file:`EXT:sv/Resources/Public/Images/service-reports.png`
Migration
=========
Use the new namespace :php:`TYPO3\CMS\Reports\Report\ServicesListReport` and the location of the files:
- :file:`EXT:reports/Resources/Private/Language/serviceReport.xlf`
- :file:`EXT:reports/Resources/Private/Templates/ServicesListReport.html`
- :file:`EXT:reports/Resources/Public/Images/service-reports.png`
Related
=======
- :ref:`changelog-Breaking-81735-GetRidOfSysextsv`
More Information
================
- :ref:`t3coreapi:services-developer-service-api` in "TYPO3 Explained"
.. index:: Backend, PartiallyScanned, ext:sv, ext:reports
@@ -0,0 +1,46 @@
.. include:: /Includes.rst.txt
.. _changelog-Breaking-81735-GetRidOfSysextsv:
=======================================
Breaking: #81735 - Get rid of sysext:sv
=======================================
See :issue:`81735`
Description
===========
The AuthenticationService has been moved into system extension `core`. Class aliases are in place and
will be removed with TYPO3 v10.
Impact
======
The namespace of the classes :php:`AbstractAuthenticationService` and :php:`AuthenticationService` changed
from :php:`\TYPO3\CMS\Sv` to :php:`\TYPO3\CMS\Core\Authentication`.
Affected Installations
======================
All instances, that use or extend the mentioned classes.
Migration
=========
Use the new namespaces as mentioned above.
Related
=======
- :ref:`changelog-MoveOfServicesListReportFromSvToReports`
More Information
================
- :ref:`t3coreapi:services-developer-service-api` in "TYPO3 Explained"
.. index:: Backend, PHP-API, FullyScanned, ext:sv
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-81763:
================================================================================================
Breaking: #81763 - Hook parameters of ['typo3/file_edit.php']['preOutputProcessingHook'] changed
================================================================================================
See :issue:`81763`
Description
===========
The hook parameters passed into :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/file_edit.php']['preOutputProcessingHook']`
have been changed due to rewriting the edit file form to use FormEngine.
Impact
======
Any information added to modify the output may have no effect anymore.
Affected Installations
======================
Every installation using an extension that hooks into :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/file_edit.php']['preOutputProcessingHook']`
to modify the form's output is affected.
Migration
=========
As the form is based on FormEngine now, you may want to adjust the newly introduced hook parameter :php:`$dataColumnDefinition`,
representing the definition of the `data` field which contains the file content. An example can be found in EXT:t3editor.
.. index:: Backend, PHP-API, NotScanned
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _breaking-81775:
======================================================================
Breaking: #81775 - suffix form identifier with the content element uid
======================================================================
See :issue:`81775`
Description
===========
If a form is rendered through the "form" content element, the identifier
of the form is modified with a suffix.
The form identifier will be suffixed with "-$contentElementUid" (e.g. "myForm-65").
Impact
======
All form element names within the frontend will change from e.g.
.. code-block:: html
<textarea name="tx_form_formframework[myForm][message]"></textarea>
to
.. code-block:: html
<textarea name="tx_form_formframework[myForm-65][message]"></textarea>
if the form is rendered through the "form" content element.
Affected Installations
======================
All instances, that render forms through the "form" content element.
.. index:: Frontend, ext:form, NotScanned
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-81787:
================================
Breaking: #81787 - Drop EXT:func
================================
See :issue:`81787`
Description
===========
The extension :php:`func` that added the "Web->Functions" backend module
has been dropped from core.
The extension is available in the TER and an install tool upgrade wizard
is in place to download and load the extension as compatibility layer for
other extensions that still rely on it by adding own sub modules to the module.
Extensions that need :php:`func` should already have a dependency in ext_emconf.php
similar to this:
.. code-block:: php
'constraints' => [
...
'depends' => [
'func' => 9.0.0-9.0.99',
],
],
The version constraint depends on which core version the extension supports,
the func extension did not change much between core v8 and its extraction to TER
in v9.
.. index:: Backend, PHP-API, NotScanned, ext:func
@@ -0,0 +1,52 @@
.. include:: /Includes.rst.txt
.. _breaking-81847:
================================
Breaking: #81847 - Remove JSMENU
================================
See :issue:`81847`
Description
===========
The content objects :typoscript:`JSMENU` and :typoscript:`JSMENUITEM` to create a jump menu have been removed.
The used JavaScript is totally outdated and has not really been touched since its creation more than 10 years ago.
If this kind of menu is needed it can be easily achieved with a TMENU as well:
.. code-block:: typoscript
lib.menu = HMENU
lib.menu {
1 = TMENU
1 {
wrap = <select onchange="window.location=this.options[this.selectedIndex].value">|</select>
NO {
doNotLinkIt = 1
stdWrap.cObject = COA
stdWrap.cObject {
10 = TEXT
10 {
wrap = <option value="{getIndpEnv:TYPO3_SITE_URL}|">
insertData = 1
typolink {
parameter.field = uid
returnLast = url
htmlSpecialChars = 1
}
}
20 = TEXT
20 {
field = subtitle//title
htmlSpecialChars = 1
wrap = |</option>
}
}
}
}
}
.. index:: Frontend, TypoScript, NotScanned
@@ -0,0 +1,30 @@
.. include:: /Includes.rst.txt
.. _breaking-81901:
=================================================================
Breaking: #81901 - Changed behavior of auto-completion appearance
=================================================================
See :issue:`81901`
Description
===========
Due to streamlining t3editor's JavaScript code to CodeMirror's architecture, the behavior of the TS auto-completion
has changed.
Impact
======
After pressing the dot character (.), the auto-completion does not appear automatically. A user has to press the
keystroke Ctrl+Space now.
Affected Installations
======================
All installations are affected.
.. index:: Backend, NotScanned, ext:t3editor
@@ -0,0 +1,28 @@
.. include:: /Includes.rst.txt
.. _breaking-81901-1668719172:
============================================================
Breaking: #81901 - Removed explanation of TypoScript options
============================================================
See :issue:`81901`
Description
===========
The explanation of TypoScript options displayed with autocompletion has been removed.
Impact
======
Using the autocompletion will not render the description of the TypoScript Reference anymore.
Affected Installations
======================
All installations are affected.
.. index:: Backend, NotScanned, ext:t3editor
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-82433:
===================================================
Breaking: #82433 - Install Tool entry point removed
===================================================
See :issue:`82433`
Description
===========
The canonical entry point for accessing the install tool now is `typo3/install.php`. The previous entrypoint
located in `typo3/sysext/install/Start/Install.php` has been removed. The deprecated entrypoint located under
`typo3/install/index.php` still exists, but `typo3/install.php` is the new way to access the install tool,
available since TYPO3 8 LTS.
Impact
======
Accessing `typo3/sysext/install/Start/Install.php` will trigger a Server-based "Page Not Found" error message.
Affected Installations
======================
Every TYPO3 installation using the old entry point is affected.
Migration
=========
Change bookmarks or scripts from the old entry point to the new one.
.. index:: Backend, NotScanned
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-81973:
========================================================================
Breaking: #81973 - FormEngineValidation.parseDate remove fixed year 2038
========================================================================
See :issue:`81973`
Description
===========
The limitation to be only able to set dates up to the year 2038 in datetime fields
has been removed. The date by default is always set to the current date.
Additionally it is now also possible to enter dates in years below the year 100 as
those years are no longer automatically converted to either 19xx or 20xx.
Impact
======
The magic in calculating date values, e.g. entering 12 will result in 2012, is now removed.
Affected Installations
======================
This affects only the behavior in backend record editing forms. Values of 0 to 100 will not be changed anymore.
Migration
=========
No migration, this behavior was wrong and there is no migration possible.
.. index:: Backend, FlexForm, JavaScript, NotScanned
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _breaking-82148:
==================================================
Breaking: #82148 - Download SQL dump dropped in EM
==================================================
See :issue:`82148`
Description
===========
The "Download SQL Dump" feature in extension manager list view has been dropped,
it is no longer possible to download the dump file this button created.
Impact
======
The button in the extension manager is gone along with various classes
and methods that took care of the functionality:
* Dropped class :php:`TYPO3\CMS\Extensionmanager\Utility\DatabaseUtility`
* Dropped class :php:`TYPO3\CMS\Extensionmanager\ViewHelpers\DownloadExtensionDataViewHelper`
* Dropped class :php:`TYPO3\CMS\Install\Service\SqlExpectedSchemaService`
* Dropped class :php:`TYPO3\CMS\Install\Service\SqlSchemaMigrationService`
* Dropped method :php:`TYPO3\CMS\Extensionmanager\Utility\FileHandlingUtility->sendSqlDumpFileToBrowserAndDelete()`
Migration
=========
The core provides the "Import / Export" extension to manage database data,
furthermore the "List" module has an CSV export feature.
For true database backups we recommend the CLI tools of the database engine
or dedicated GUI applications for this task.
.. index:: Backend, Database, PHP-API, FullyScanned
@@ -0,0 +1,47 @@
.. include:: /Includes.rst.txt
.. _breaking-82162:
=================================================
Breaking: #82162 - Global error constants removed
=================================================
See :issue:`82162`
Description
===========
Three error and logging related constants are no longer defined during TYPO3 core bootstrap:
* :php:`TYPO3_DLOG`
* :php:`TYPO3_ERROR_DLOG`
* :php:`TYPO3_EXCEPTION_DLOG`
Two error and logging related keys have been removed from :php:`TYPO3_CONF_VARS`:
* :php:`$GLOBALS['TYPO3_CONF_VARS']['SYS']['enable_errorDLOG']`
* :php:`$GLOBALS['TYPO3_CONF_VARS']['SYS']['enable_exceptionDLOG']`
Impact
======
Accessing one of the constants in PHP will return the constants name as value
which is different to the former value and most likely breaks code depending on it.
Affected Installations
======================
The extension scanner of the install tool finds extensions affected by this change.
The install tool will automatically remove the :php:`LocalConfiguration.php` settings
:php:`TYPO3_CONF_VARS` if used.
Migration
=========
Refactor code to not depend on these constants and :php:`TYPO3_CONF_VARS` any longer,
there shouldn't be many use cases where extensions used these.
.. index:: LocalConfiguration, PHP-API, FullyScanned
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _breaking-82210:
============================================================================
Breaking: #82210 - EXT:form - translation for "options" properties as string
============================================================================
See :issue:`82210`
Description
===========
The templates for RadioButton and MultiCheckbox form elements have been changed. This was necessary
to allow dots and special chars within labels and values for the "options" property of the
aforementioned elements.
Impact
======
If a user utilizes his own templates for MultiCheckbox and/ or RadioButton form elements and
translates the "options" property in the following way, the label will not be shown anymore.
.. code-block:: html
{formvh:translateElementProperty(element: element, property: 'options.{value}')}
Affected Installations
======================
Any installation which uses ext:form and own templates for MultiCheckbox and RadioButton form
elements.
Migration
=========
Use
.. code-block:: html
{formvh:translateElementProperty(element: element, property: '{0: \'options\', 1: value}')}
to translate the "options" property within MultiCheckbox and RadioButton form element templates.
.. index:: Frontend, ext:form, NotScanned
@@ -0,0 +1,32 @@
.. include:: /Includes.rst.txt
.. _breaking-82252:
=========================================================================================
Breaking: #82252 - Override TypoScript configuration formDefinitionOverrides by FlexForms
=========================================================================================
See :issue:`82252`
Description
===========
Override TypoScript configuration :typoscript:`formDefinitionOverrides` by FlexForms configuration.
Impact
======
Before this, FlexForm configuration of form was overridden by TypoScript :typoscript:`formDefinitionOverrides`,
which is not the intended behaviour. Now the FlexForm configuration overrides the
TypoScript configuration of the :typoscript:`formDefinitionOverrides`. This means, having a configuration of
form in FlexForms and TypoScript, the form will change its behavior and start using the configuration
defined in your FlexForm.
Affected Installations
======================
All installations using the form framework and TypoScript/ FlexForm overrides are affected.
.. index:: ext:form, FlexForm, TypoScript, NotScanned
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-82296:
====================================================
Breaking: #82296 - Removed constant TYPO3_user_agent
====================================================
See :issue:`82296`
Description
===========
The unused PHP constant :php:`TYPO3_user_agent` containing information of the User Agent string sent
for requests by TYPO3, has been removed.
Impact
======
Calling the constant will result in a PHP fatal error.
Affected Installations
======================
TYPO3 installations with third-party extensions that make use of the PHP constant.
Migration
=========
The extension scanner checks if the constant is used.
Any extension authors are encouraged to use php:`$GLOBALS['TYPO3_CONF_VARS']['HTTP']['headers']['User-Agent']`
instead.
.. index:: PHP-API, FullyScanned
@@ -0,0 +1,43 @@
.. include:: /Includes.rst.txt
.. _breaking-82334:
=====================================
Breaking: #82334 - AbstractRecordList
=====================================
See :issue:`82334`
Description
===========
The PHP classes :php:`AbstractRecordList` and :php:`AbstractDatabaseRecordList` have been marked as deprecated.
Some classes changed inheritances, which can be breaking for instance in hooks if they type hint or otherwise
check instance types of these classes:
* :php:`PageLayoutView` no longer extends :php:`AbstractDatabaseRecordList`
* :php:`FileList` no longer extends :php:`AbstractRecordList`
* :php:`DatabaseRecordList` no longer extends :php:`AbstractDatabaseRecordList`
Impact
======
Calling the constructor in these classes triggers a deprecation log entry.
Affected Installations
======================
Any TYPO3 installation with an extension accessing or extending the deprecated classes.
Migration
=========
The extension scanner checks if the classes are used.
All extension authors are encouraged to copy the content of these Classes into their child classes.
.. index:: Backend, PHP-API, FullyScanned
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _breaking-82368:
====================================================================
Breaking: #82368 - Signal 'afterExtensionConfigurationWrite' removed
====================================================================
See :issue:`82368`
Description
===========
The extension manager no longer emits signal :php:`afterExtensionConfigurationWrite`.
The code has been moved to the install tool which does not load signal / slot
information at this point.
Impact
======
Slots of this signal are no longer executed.
Affected Installations
======================
Extensions that use signal :php:`afterExtensionConfigurationWrite`. This is a rather seldom
used signal, relevant mostly only for distributions.
Migration
=========
In many cases it should be possible to use signal :php:`afterExtensionInstall` of class
:php:`\TYPO3\CMS\Extensionmanager\Utility\InstallUtility` instead which is fired after an extension
has been installed.
.. index:: Backend, LocalConfiguration, PHP-API, NotScanned, ext:extensionmanager
@@ -0,0 +1,47 @@
.. include:: /Includes.rst.txt
.. _breaking-82377:
======================================================================
Breaking: #82377 - Option to allow uploading system extensions removed
======================================================================
See :issue:`82377`
Description
===========
The option to allow uploading additional extensions as system extensions in TYPO3 has been removed
without substitution.
Disclaimer: It is highly discouraged by the TYPO3 Core to modify anything within `typo3/sysext/`,
especially adding extensions, as typo3conf/ is the folder to add or override extensions.
If an administrator needs to do changes within `typo3/sysext/` it's at his/her own risk,
and should not be encouraged to be possible from TYPO3 itself.
Impact
======
The possibility to upload an extension into `typo3/sysext/` via the Extension Manager / TYPO3 Backend
interface is removed. System extensions can only be added or modified via the file system now.
Affected Installations
======================
TYPO3 instances having the option `$GLOBALS['TYPO3_CONF_VARS']['EXT']['allowSystemInstall']` enabled and do not
run in TYPO3's Composer Mode.
As this option was disabled by default for over 10 years, it is highly unlikely this change will
affect a regular instance.
Migration
=========
The mentioned option, if set, is automatically removed when accessing the Install Tool through
the :php:`SilentMigrationService`.
.. index:: LocalConfiguration, FullyScanned
@@ -0,0 +1,43 @@
.. include:: /Includes.rst.txt
.. _breaking-82378:
===========================================
Breaking: #82378 - Remove namespaced jQuery
===========================================
See :issue:`82378`
Description
===========
The possibility to jail jQuery into a namespace has been removed. This affects custom namespaces and
:js:`TYPO3.jQuery` as well.
The class constants :php:`TYPO3\CMS\Core\Page\PageRenderer::JQUERY_NAMESPACE_DEFAULT` and
:php:`TYPO3\CMS\Core\Page\PageRenderer::JQUERY_NAMESPACE_DEFAULT_NOCONFLICT` have been removed without
substitution, any usage will be detected by the Extension Scanner.
Impact
======
Namespaces will be ignored and automatically fall back to noConflict behavior.
Calling :js:`TYPO3.jQuery.*` will result in a TypeError.
Affected Installations
======================
All installations using a custom namespace, :php:`PageRenderer::JQUERY_NAMESPACE_DEFAULT`
:php:`PageRenderer::JQUERY_NAMESPACE_DEFAULT` or relying on :js:`TYPO3.jQuery` are affected.
Migration
=========
Remove :php:`$namespace` argument in :php:`PageRenderer->loadJquery()` and either use :js:`window.$` or migrate
to RequireJS.
.. index:: Backend, Frontend, JavaScript, PartiallyScanned
@@ -0,0 +1,43 @@
.. include:: /Includes.rst.txt
.. _breaking-82398:
=============================================================
Breaking: #82398 - Remove special constant "TSConstantEditor"
=============================================================
See :issue:`82398`
Description
===========
The special functionality on the top level constant name :typoscript:`TSConstantEditor`
has been dropped. This rarely used feature makes this constant name a casual
constant without further added features.
A series of PHP class methods and properties has been dropped together with that removal:
* Method :php:`TYPO3\CMS\Core\TypoScript\ConfigurationForm->ext_makeHelpInformationForCategory()`
* Method :php:`TYPO3\CMS\Core\TypoScript\ConfigurationForm->ext_displayExample()`
* Method :php:`TYPO3\CMS\Core\TypoScript\ExtendedTemplateService->ext_getTSCE_config()`
* Property :php:`TYPO3\CMS\Core\TypoScript\ExtendedTemplateService->helpConfig`
* Method :php:`TYPO3\CMS\Extensionmanager\Domain\Model\ConfigurationCategory->setHighlightText()`
* Method :php:`TYPO3\CMS\Extensionmanager\Domain\Model\ConfigurationCategory->getHighlightText()`
* Method :php:`TYPO3\CMS\Extensionmanager\Domain\Model\ConfigurationItem->setHighlight()`
* Method :php:`TYPO3\CMS\Extensionmanager\Domain\Model\ConfigurationItem->getHighlight()`
Impact
======
The constants editor does not show any extending information (like bulletpoints) for a constant
anymore configured via the :typoscript:`TSConstantEditor` object.
Affected Installations
======================
All installations which have configured the special constant :typoscript:`TSConstantEditor`. Since this has
been a widely unknown feature, most instances should not be affected. On PHP side, the extension
scanner will find consuming extensions of the dropped API, but that is highly unlikely, too.
.. index:: Backend, TypoScript, FullyScanned
@@ -0,0 +1,51 @@
.. include:: /Includes.rst.txt
.. _breaking-82406:
==========================================================================
Breaking: #82406 - Routing: Backend Modules run through regular dispatcher
==========================================================================
See :issue:`82406`
Description
===========
Calling Backend modules was previously handled via a special `BackendModuleRequestHandler` which has
been removed.
When registering a Backend module, a route with the name of the module is automatically added to the
Backend Router.
When generating URLs for modules, the module is not added via the GET Parameter `&M=moduleName`
anymore, but built like any other Backend Route (currently with the "route" and "token" parameters)
All request handling functionality is now done by the regular Backend RequestHandler,
which checks if the Route to be targeted is a module, and does extra module permission checks.
Impact
======
Handling with the "&M" GET parameter in backend modules won't deliver the correct result anymore.
Instantiating `BackendModuleRequestHandler` will result in a fatal PHP error.
Affected Installations
======================
Installations with custom extensions including backend modules which work directly with the GET
parameter "M".
Migration
=========
If extensions use API methods like ``BackendUtility::getModuleUrl()`` are used, nothing needs to be
modified.
If a backend module is using the GET parameter "M" currently, the code needs to be adjusted to the
GET "route" or use the UriBuilder directly.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,63 @@
.. include:: /Includes.rst.txt
.. _breaking-82414:
======================================================
Breaking: #82414 - CMS ViewHelper base classes removed
======================================================
See :issue:`82414`
Description
===========
The following ViewHelper base classes have been removed:
- :php:`TYPO3\CMS\Fluid\Core\ViewHelper\AbstractConditionViewHelper`
- :php:`TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper`
- :php:`TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper`
- :php:`TYPO3\CMS\Fluid\Core\ViewHelper\ArgumentDefinition`
Aliases are in place, but the following key differences may break your code:
- Render method arguments are no longer possible at all
- The property :php:`$this->controllerContext` is no longer defined
Impact
======
Render method arguments have been deprecated for a long time and should already have been migrated
in your code. If you still have ViewHelpers using render method arguments, these will break
after this change.
Affected Installations
======================
All instances which use a ViewHelper that either contains render method arguments, extends from one
of the base classes above, or or accesses :php:`$this->controllerContext`.
Migration
=========
Migrate to use `renderStatic` methods (see examples in TYPO3 Core, EXT:fluid) to not use
render method arguments.
ViewHelpers which access :php:`$this->controllerContext` can instead access
:php:`$this->renderingContext->getControllerContext()`.
Instead of using the (now removed) abstract classes from ext:fluid, use the classes
supplied in :file:`vendor/typo3fluid/fluid`:
* :php:`TYPO3Fluid\Fluid\Core\ViewHelper\AbstractConditionViewHelper`
* :php:`TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper`
* :php:`TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper`
* :php:`TYPO3Fluid\Fluid\Core\ViewHelper\ArgumentDefinition`
and change your code accordingly.
Migrating this can be done with search-and-replace for all common use cases.
.. index:: Fluid, NotScanned
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _breaking-82421:
===============================================================
Breaking: #82421 - Dropped old DB related configuration options
===============================================================
See :issue:`82421`
Description
===========
Some configuration options related to pre-doctrine era have been removed
from :php:`$GLOBALS['TYPO3_CONF_VARS']`:
* `SYS/sqlDebug` - Obsolete since core version 8, no substitution
* `SYS/setDBinit` - Obsolete since core version 8 and migrated automatically
* `SYS/no_pconnect` - Obsolete since core version 8 and migrated automatically
* `SYS/dbClientCompress` - Obsolete since core version 8 and migrated automatically
Impact
======
Extension code usually shouldn't rely on these settings.
Affected Installations
======================
Instances with extension code using these array entries in :php:`$GLOBALS['TYPO3_CONF_VARS']`
are found by the install tool extension scanner.
Migration
=========
Extension code should not rely on these core framework internal settings.
.. index:: Database, LocalConfiguration, PHP-API, FullyScanned
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _breaking-82425:
==================================================================================================
Breaking: #82425 - Remove old typoscript constants editor option "###MOD_TS:EDITABLE_CONSTANTS###"
==================================================================================================
See :issue:`82425`
Description
===========
The special functionality on the constant comment `###MOD_TS:EDITABLE_CONSTANTS###`
has been dropped. This rarely used feature makes this comment a casual
comment without further added features.
A public property of PHP class has been dropped together with that removal:
* Property :php:`TYPO3\CMS\Core\TypoScript\ExtendedTemplateService->edit_divider`
Impact
======
The constants editor does not show constants before the comment `###MOD_TS:EDITABLE_CONSTANTS###` anymore as default constants.
Affected Installations
======================
All installations which have configured the constants comment `###MOD_TS:EDITABLE_CONSTANTS###`. Since this has been a widely
unknown feature, most instances should not be affected.
.. index:: Backend, TypoScript, PartiallyScanned
@@ -0,0 +1,74 @@
.. include:: /Includes.rst.txt
.. _breaking-82426:
==============================================
Breaking: #82426 - ExtJS and ExtDirect removal
==============================================
See :issue:`82426`
Description
===========
ExtJS and ExtDirect support has been removed from the core (TYPO3 Backend).
ExtJS Javascript is not loaded now in TYPO3 Backend.
ExtDirect classes were removed without substitution.
Removed classes:
----------------
* :php:`TYPO3\CMS\Backend\Tree\ExtDirectNode`
* :php:`TYPO3\CMS\Backend\Tree\Pagetree\Commands`
* :php:`TYPO3\CMS\Backend\Tree\Pagetree\DataProvider`
* :php:`TYPO3\CMS\Backend\Tree\Pagetree\ExtdirectTreeCommands`
* :php:`TYPO3\CMS\Backend\Tree\Pagetree\ExtdirectTreeDataProvider`
* :php:`TYPO3\CMS\Backend\Tree\Renderer\ExtJsJsonTreeRenderer`
* :php:`TYPO3\CMS\Backend\Tree\Pagetree\PagetreeNode`
* :php:`TYPO3\CMS\Backend\Tree\Pagetree\PagetreeNodeCollection`
* :php:`TYPO3\CMS\Core\ExtDirect\ExtDirectApi`
* :php:`TYPO3\CMS\Core\ExtDirect\ExtDirectRouter`
* :php:`TYPO3\CMS\Workspaces\Hooks\PagetreeCollectionsProcessor`
Removed methods:
----------------
* :php:`TYPO3\CMS\Backend\Tree\Pagetree\ExtdirectTreeDataProvider->getNodeTypes()`
* :php:`TYPO3\CMS\Backend\Tree\Pagetree\ExtdirectTreeDataProvider->loadResources()`
* :php:`TYPO3\CMS\Core\Page\PageRenderer->setExtJsPath()`
* :php:`TYPO3\CMS\Core\Page\PageRenderer->getExtJsPath()`
* :php:`TYPO3\CMS\Core\Page\PageRenderer->addExtOnReadyCode()`
* :php:`TYPO3\CMS\Core\Page\PageRenderer->addExtDirectCode()`
* :php:`TYPO3\CMS\Core\Page\PageRenderer->loadExtJS()`
* :php:`TYPO3\CMS\Core\Page\PageRenderer->enableExtJsDebug()`
Removed interfaces:
-------------------
* :php:`TYPO3\CMS\Backend\Tree\Pagetree\CollectionProcessorInterface`
* :php:`TYPO3\CMS\Backend\Tree\EditableNodeLabelInterface`
* :php:`TYPO3\CMS\Backend\Tree\DraggableAndDropableNodeInterface`
Impact
======
JS code relying on ExtJS will stop working.
PHP code relying on ExtDirect classes being available will now throw a fatal error.
Affected Installations
======================
All installations having extensions relying on ExtJS being loaded or using ExtDirect API.
Migration
=========
JS code relying on ExtJS has to be reworked to not use ExtJS or to load ExtJS from custom extension.
PHP code related to ExtDirect should be changed to regular Backend AJAX routing.
.. index:: Backend, JavaScript, PHP-API, PartiallyScanned
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _breaking-82430:
===================================================================
Breaking: #82430 - Replaced GeneralUtility::sysLog with Logging API
===================================================================
See :issue:`82430`
Description
===========
The original sysLog() logging API has been superseded by the Logging API.
Therefore, :php:`GeneralUtility::sysLog` and :php:`GeneralUtility::initSysLog` have been deprecated.
The configuration :php:`$GLOBALS['TYPO3_CONF_VARS']['SYS']['systemLog']` has been changed to a boolean value.
The option :php:`$GLOBALS['TYPO3_CONF_VARS']['SYS']['syslogErrorReporting']` has been removed.
Impact
======
The Logging API needs custom writer configuration to send the log entries of your choice to the
PHP error log, the syslog facility or a file.
Affected Installations
======================
Any instance having a configuration set for :php:`$GLOBALS['TYPO3_CONF_VARS']['SYS']['systemLog']`.
Migration
=========
Add a custom log writer configuration to send log entries to the destination of your choice.
The Logging API provides these writers as replacements for the original configuration options:
- :php:`\TYPO3\CMS\Core\Log\Writer\SyslogWriter`
- :php:`\TYPO3\CMS\Core\Log\Writer\PhpErrorLogWriter`
- :php:`\TYPO3\CMS\Core\Log\Writer\FileWriter`
More details on the configuration of log writers can be found in the Core API Reference
at `<https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Logging/Writers/Index.html>`__.
.. index:: LocalConfiguration, PHP-API, NotScanned
@@ -0,0 +1,63 @@
.. include:: /Includes.rst.txt
.. _breaking-82445:
==============================================
Breaking: #82445 - Pages and page translations
==============================================
See :issue:`82445`
Description
===========
The database table `pages_language_overlay` has been obsoleted in the core and is
not used and updated anymore. Page translation records are now handled in the "pages"
table directly.
Impact
======
This change has a huge impact on page and page translation handling, especially
on database record level:
* Table "pages_language_overlay" is no longer read by core code
* Records in "pages_language_overlay" are no longer updated by core code
* Records in "pages_language_overlay" are no longer shown in the backend
* Table and TCA definition for "pages_language_overlay" will be dropped in v10
* Queries to table "pages" should now observe the "sys_language_uid" field to
fetch default language records only. A casual case for this are tree traversal
queries for children or rootline fetching. If additional restrictions are not
added, the query result may return page translations along the default language row.
* Existing inline relations with "foreign_table" and "foreign_field" and "foreign_table_field"
on a "pages_language_overlay" TCA are migrated to "pages". This works well for
typical FAL relations like the default "media" field.
* Complex TCA relations with "inline" "group" that use an "MM" table in TCA
not automatically get their relation record rows migrated. Configurations
like these are seldom and need manual migration steps depending on their
TCA configuration when upgrading.
Affected installations
======================
Single language instances are not affected. For sites with translations and
non-empty "pages_language_overlay" table, the main data merging is done with
upgrade wizards, but it may happen that TypoScript and extensions may need
adaptions, for instance if they write and read data from "pages" or
"pages_language_overlay" directly.
Migration
=========
The following backwards-compatibility are met until TYPO3 v10.0:
* The TCA definition for "pages_language_overlay" is kept as part of handling extensions supporting v8 and v9
* The database table "pages_language_overlay" is kept as is, but not updated anymore by core
* A database field within "pages" is keeping the old pages_language_overlay record UID
* An upgrade wizard merges records from "pages_language_overlay" into "pages"
* An upgrade wizard adapts "be_groups" access restrictions for "pages_language_overlay" towards "pages"
.. index:: Backend, Database, PHP-API, TCA, NotScanned
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _breaking-82505:
===========================================================
Breaking: #82505 - Merged EXT:info_pagetsconfig to EXT:info
===========================================================
See :issue:`82505`
Description
===========
The extension `info_pagetsconfig` has been merged into the extension `info`.
Impact
======
The extension `info` now contains the `PageTSconfig` analysis as well, without the possibility to disable this submodule
function on a per-system functionality.
Affected Installations
======================
Installations with extensions with checks for extension `info_pagetsconfig` being installed.
Migration
=========
Change the extensions to check for `info` instead of `info_pagetsconfig`.
.. index:: Backend, NotScanned, ext:info
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-82506:
===========================================================================
Breaking: #82506 - Remove BackendUserRepository injection in NoteController
===========================================================================
See :issue:`82506`
Description
===========
To improve the performance of showing sys_note records the injection of the :php:`BackendUserRepository` has been
removed in :php:`\TYPO3\CMS\SysNote\Controller\NoteController`.
Impact
======
The method :php:`\TYPO3\CMS\SysNote\Domain\Repository\SysNoteRepository::findByPidsAndAuthor` has been removed.
Affected Installations
======================
Any installation using third-party extension that use the method
:php:`\TYPO3\CMS\SysNote\Domain\Repository\SysNoteRepository::findByPidsAndAuthor`.
Migration
=========
Use the method :php:`\TYPO3\CMS\SysNote\Domain\Repository\SysNoteRepository::findByPidsAndAuthorId`, and use the
user id as 2nd argument instead of a `BackendUser` object.
.. index:: Backend, PHP-API, FullyScanned, ext:sys_note
@@ -0,0 +1,66 @@
.. include:: /Includes.rst.txt
.. _breaking-82572:
=============================================
Breaking: #82572 - RDCT functionality removed
=============================================
See :issue:`82572`
Description
===========
The short-link / redirect functionality based on the GET parameter `RDCT` of TYPO3 Frontend requests
has been removed from TYPO3.
Along, all functionality related to evaluating `RDCT` is not evaluated anymore.
The following PHP methods have been removed:
* TypoScriptFrontendController->sendRedirect()
* TypoScriptFrontendController->updateMD5paramsRecord()
* GeneralUtility::makeRedirectUrl()
The eighth property of the constructor of TypoScriptFrontendController is not evaluated anymore,
also the public property `TSFE->RDCT` is removed as it is not set anymore.
The corresponding database table `cache_md5params` has been dropped.
Substitution logic can be found in the TER extension `rdct`.
Impact
======
When calling TYPO3 Frontend via `index.php&RDCT=myhash` the RDCT GET parameter is not evaluated
anymore.
Calling :php:`$TSFE->sendRedirect()`, :php:`$TSFE->updateMD5paramsRecord()` and
:php:`GeneralUtility::makeRedirectUrl()` will result in a fatal PHP error.
Accessing the now non-existent property :php:`$TSFE->RDCT` will trigger a PHP notice, as well
as setting up a new instance of `TypoScriptFrontendController` with an eighth parameter.
Accessing the database table `cache_md5params` will also lead to unexpected results as this table
does not exist in new installations anymore.
Affected Installations
======================
Any TYPO3 instance handling data via the `cache_md5params` database table or creating short links
via `&RDCT` hashes.
Migration
=========
The TER extension `rdct` contains all previous functionality handled via a simple hook. An upgrade
wizard within the Install Tool will check if the database table is filled and downloads the extension
from TER.
It is recommended to use a third-party short-url or redirect extension which provides a richer feature
set.
.. index:: Frontend, PHP-API, PartiallyScanned
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _breaking-82629:
===========================================================
Breaking: #82629 - Removed tce_db options "prErr" and "uPT"
===========================================================
See :issue:`82629`
Description
===========
The two options `prErr` ("print errors") and `uPT` ("update page tree"), usually set via GET/POST
when calling TYPO3's Backend endpoint `tce_db` (DataHandler actions within the TYPO3 Backend),
have been removed, and are now automatically evaluated when the endpoint is called.
The option `prErr` added possible errors to the Message Queue. The option `uPT` triggered an update
of the pagetree after a page-related action was made.
Both options are dropped as the functionality is enabled by default.
The corresponding methods have been adjusted:
* `TYPO3\CMS\Core\DataHandling\DataHandler->printLogErrorMessages()` does not need a method argument anymore.
* The public property `TYPO3\CMS\Backend\Controller\SimpleDataHandlerController->prErr` is removed
* The public property `TYPO3\CMS\Backend\Controller\SimpleDataHandlerController->uPT` is removed
Impact
======
Calling `tce_db` with any of the two options has no effect anymore.
Affected Installations
======================
Installations with third-party extensions accessing the entrypoint `tce_db` or calling
`DataHandler->printLogErrorMessages()` via PHP.
Migration
=========
Remove any of the parameters in the PHP code and everything will continue to work as before.
.. index:: Backend, PHP-API, FullyScanned
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _breaking-82639:
===========================================================================
Breaking: #82639 - Logging activated for authentication and Service classes
===========================================================================
See :issue:`82639`
Description
===========
Due to the introduction of TYPO3's Logging API in several places, it is now common to use the logging
API without further options.
Therefore the following configuration options have been removed:
- :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['writeDevLog']`
- :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['writeDevLogBE']`
- :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['writeDevLogFE']`
- :php:`$GLOBALS['TYPO3_CONF_VARS']['SYS']['enable_DLOG']`
The following public properties have no effect anymore and have been removed:
- :php:`AbstractUserAuthentication->writeDevLog`
- :php:`AbstractService->writeDevLog`
Impact
======
Setting any of the options does not have any effect anymore on logging.
Affected Installations
======================
Installations running with `EXT:devlog` or further extensions setting any of the options above.
Migration
=========
Instead of using the mentioned options, TYPO3's Logging API can be configured as stated in the
official documentation to write the logging messages to various places.
.. index:: LocalConfiguration, PHP-API, FullyScanned
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-82640:
======================================================
Breaking: #82640 - Re-arranging global debug functions
======================================================
See :issue:`82640`
Description
===========
The global function :php:`xdebug()` has been dropped in favor of using :php:`debug()`.
The global function :php:`debug()` now only takes a maximum of three function arguments.
Impact
======
Calling `xdebug()` globally will throw in a PHP fatal error.
Affected Installations
======================
Any TYPO3 installation in a development environment using the global functions in an old-fashioned way.
Migration
=========
Instead of `xdebug()` simply use `debug()` as an alias. Ensure that when calling `debug()` that a
maximum of three arguments are handed over to the function.
.. index:: PHP-API, FullyScanned
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-82680:
=======================================================================
Breaking: #82680 - Removed option to generate PNGs limited to 64 colors
=======================================================================
See :issue:`82680`
Description
===========
The option to generate PNGs with only 64 colors called :php:`$TYPO3_CONF_VARS[GFX][png_truecolor]` has been removed.
The public PHP property `GraphicalFunctions->png_truecolor` has been removed.
Impact
======
Setting the option has no effect anymore, as resized PNG images are always truecolor.
Affected Installations
======================
Any installation having this option disabled.
Migration
=========
Accessing the Install Tool removes the option. If necessary, the option can be set via TypoScript GIFBUILDER `reduceColors`.
.. index:: LocalConfiguration, PHP-API, NotScanned
@@ -0,0 +1,46 @@
.. include:: /Includes.rst.txt
.. _breaking-82689:
==============================================================================
Breaking: #82689 - Backend AbstractWizardController not extends AbstractModule
==============================================================================
See :issue:`82689`
Description
===========
The PHP class :php:`TYPO3\CMS\Backend\Controller\Wizard\AbstractWizardController` no
longer extends class :php:`TYPO3\CMS\Backend\Module\AbstractModule`. This can be breaking
if wizard classes of extensions depend on method :php:`processRequest()` or the initialized
property :php:`moduleTemplate`.
PHP class :php:`TYPO3\CMS\Backend\Module\AbstractModule` has been deprecated and should not be used any longer.
Impact
======
* Using class :php:`AbstractModule` will throw a deprecation warning
* Extensions with wizards extending class :php:`AbstractWizardController`
may fatal if they use property :php:`moduleTemplate`
* Extensions with wizards extending class :php:`AbstractWizardController`
may fatal if they use they registered routes to method :php:`processRequest`
Affected Installations
======================
Installations with extensions with one of the above described patterns.
Migration
=========
Extensions that extend :php:`AbstractModule` should initialize :php:`moduleTemplate`
at an appropriate place instead. Instead of :php:`processRequest()`, routes should be
registered in an extensions :file:`Configuration/Backend/Routes.php` and
:file:`Configuration/Backend/AjaxRoutes.php`.
.. index:: Backend, PHP-API, PartiallyScanned
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _breaking-82701:
======================================================================
Breaking: #82701 - Always consider publishing references in workspaces
======================================================================
See :issue:`82701`
Description
===========
The TSconfig option :typoscript:`options.workspaces.considerReferences` to disable references when publishing
records from a workspace has been removed.
The according method :php:`TYPO3\CMS\Version\DataHandler\CommandMap::setWorkspacesConsiderReferences()`
has been removed.
Impact
======
Disabling this setting will have no effect anymore, thus publishing records will always
publish relations e.g. in IRRE relations as well.
Calling the removed PHP method will throw a PHP fatal error.
Affected Installations
======================
Installations with workspaces enabled, having the TSconfig option explicitly disabled.
Migration
=========
Remove any calls to the method, as it has no effect anymore.
.. index:: TSConfig, PartiallyScanned, ext:workspaces
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _breaking-82709:
============================================================================
Breaking: #82709 - TCA option "localizeChildrenAtParentLocalization" removed
============================================================================
See :issue:`82709`
Description
===========
The TCA option :php:`$TCA[$tableName]['columns'][$columnName]['config']['behaviour']['localizeChildrenAtParentLocalization']`
has been removed, as this is the default behaviour for any kind of inline translation (IRRE).
The behaviour to disable this functionality in TYPO3 v8 was not compatible anymore with any
localization mode setting and the newly introduced `allowLanguageSynchronization`.
Impact
======
Explicitly disabling this option has no effect anymore, setting this option in TCA will
trigger a deprecation message.
Affected Installations
======================
Any installation with custom TCA definitions of Inline Relational Record Editing which have this
setting set.
Migration
=========
Remove the TCA option in the extensions' TCA definition.
.. index:: TCA, Backend, NotScanned
@@ -0,0 +1,65 @@
.. include:: /Includes.rst.txt
.. _breaking-82768:
=======================================================================
Breaking: #82768 - Configuration Options for Image Manipulation PHP API
=======================================================================
See :issue:`82768`
Description
===========
The main PHP class :php:`GraphicalFunctions` for rendering images based on ImageMagick/GraphicsMagick
and/or GDlib has been cleaned up in order to optimize various places within the code itself,
making more use of the proper "init()" function setting all relevant options.
The following previously public properties are therefore either set to "protected"
or removed/renamed as part of the streaming process, removing the possibility to
override any of the settings other than via the :php:`init()` method within
GraphicalFunctions:
* :php:`GraphicalFunctions->gdlibExtensions`
* :php:`GraphicalFunctions->imageFileExt`
* :php:`GraphicalFunctions->webImageExt`
* :php:`GraphicalFunctions->NO_IM_EFFECTS`
* :php:`GraphicalFunctions->NO_IMAGE_MAGICK`
* :php:`GraphicalFunctions->mayScaleUp`
* :php:`GraphicalFunctions->dontCompress`
* :php:`GraphicalFunctions->dontUnlinkTempFiles`
* :php:`GraphicalFunctions->absPrefix`
* :php:`GraphicalFunctions->im5fx_blurSteps`
* :php:`GraphicalFunctions->im5fx_sharpenSteps`
* :php:`GraphicalFunctions->pixelLimitGif`
* :php:`GraphicalFunctions->colMap`
* :php:`GraphicalFunctions->csConvObj`
* :php:`GraphicalFunctions->jpegQuality`
* :php:`GraphicalFunctions->OFFSET`
Additionally, the option to disable the deletion of tempFiles have been removed.
The global configuration option :php:`$TYPO3_CONF_VARS[GFX][processor_effects]`
is a boolean option now.
Impact
======
Setting any of the PHP properties above will have no effect anymore.
Affected Installations
======================
Any TYPO3 installation with an extension accessing directly GraphicalFunctions or GifBuilder API
via PHP and using any of the properties above.
Migration
=========
Ensure all options are properly set when calling :php:`GraphicalFunctions->init()` and remove
all calls to get or set values from the previously public properties.
.. index:: LocalConfiguration, PHP-API, NotScanned
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-82803:
=========================================================================
Breaking: #82803 - Global configuration option "content_doktypes" removed
=========================================================================
See :issue:`82803`
Description
===========
The configuration option :php:`$TYPO3_CONF_VARS['FE']['content_doktypes']` which declared
what pages.doktypes values could contain content elements, was removed.
Impact
======
Using this option in custom code will lead to unexpected behaviour.
Changing this option has no effect on TYPO3 Core anymore.
Affected Installations
======================
Installations having this option explicitly set.
Migration
=========
Remove all usages working with this option.
.. index:: LocalConfiguration, NotScanned
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _breaking-82832:
=======================================================
Breaking: #82832 - Use at daemon dropped from scheduler
=======================================================
See :issue:`82832`
Description
===========
The functionality to execute tasks via the unix "at daemon" (atd)
has been dropped.
The following method has been dropped:
* :php:`TYPO3\CMS\Scheduler\Scheduler->scheduleNextSchedulerRunUsingAtDaemon()`
Impact
======
If this feature has been used, existing tasks may not be executed anymore.
Affected Installations
======================
The feature "useAtdaemon" had to be explicitly enabled in scheduler
extension configuration. In general it was very sparsely used.
Migration
=========
Switch to cron execution instead.
.. index:: Backend, CLI, PHP-API, PartiallyScanned, ext:scheduler
@@ -0,0 +1,39 @@
.. include:: /Includes.rst.txt
.. _breaking-82852:
=========================================================
Breaking: #82852 - Exception is thrown on invalid charset
=========================================================
See :issue:`82852`
Description
===========
The method :php:`\TYPO3\CMS\Core\Charset\CharsetConverter::initCharset()` and
consequently all methods in this class calling that method now throw
an :php:`\TYPO3\CMS\Core\Charset\UnknownCharsetException` if an unknown
charset was provided.
The :php:`TypoScriptFrontendController` aka TSFE uses this to throw
a :php:`\RuntimeException` in case of an invalid :typoscript:`config.metaCharset`.
Before this resulted in a blank page instead.
Impact
======
Third party code directly using the :php:`CharsetConverter` class need to be aware of the new exception in case of an invalid charset.
Sites with an invalid :typoscript:`config.metaCharset` will now see a clear error message.
Migration
=========
Catch the :php:`UnknownCharsetException` of the :php:`CharsetConverter` if necessary.
Ensure that :typoscript:`config.metaCharset` is set to a known charset.
.. index:: Frontend, PHP-API, NotScanned
@@ -0,0 +1,50 @@
.. include:: /Includes.rst.txt
.. _breaking-82878:
=====================================================================
Breaking: #82878 - Removed field "no_cache" in database table "pages"
=====================================================================
See :issue:`82878`
Description
===========
The database field :sql:`pages.no_cache` has been removed from TYPO3 Core. This option allowed editors
to completely disable all frontend caching functionality of a specific page.
Impact
======
Having this option previously set on a specific page will now use caching when rendering this page.
Affected Installations
======================
Existing installations having this option set in their database.
This can easily be checked via a SQL query: :sql:`SELECT uid, pid, title FROM pages WHERE deleted=0
AND pid>=0 AND no_cache=1;`.
Migration
=========
The "no cache" option which should be avoided or otherwise used carefully by integrators via
TypoScript through :typoscript:`config.no_cache = 1` in conjunction with a condition on a per-page basis.
However, it is better to set a very low cache timeout, or investigate why caching is configured
wrongly in an extension or plugin.
Also, use the following SQL query to quickly check if your installation is even using this option at all.
If not, it is not necessary to migrate anything:
.. code-block:: sql
SELECT uid,title FROM pages WHERE no_cache = 1
.. index:: Database, Frontend, NotScanned
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-82893:
=========================================================
Breaking: #82893 - Remove global variable PARSETIME_START
=========================================================
See :issue:`82893`
Description
===========
The global variable :php:`$GLOBALS['PARSETIME_START']` can be removed, as it has been superseded by
:php:`$GLOBALS['TYPO3_MISC']['microtime_start']` for a long time already.
Impact
======
The variable is not available any more. If it is used it must be replaced (see Migration).
Affected Installations
======================
Installations that use the global variable :php:`$GLOBALS['PARSETIME_START']`.
Migration
=========
Use :php:`round($GLOBALS['TYPO3_MISC']['microtime_start'] * 1000)` if you need the same value as
:php:`$GLOBALS['PARSETIME_START']` previously contained.
.. index:: Frontend, PHP-API, FullyScanned
@@ -0,0 +1,56 @@
.. include:: /Includes.rst.txt
.. _breaking-82896:
========================================================================
Breaking: #82896 - System extension "version" migrated into "workspaces"
========================================================================
See :issue:`82896`
Description
===========
The basic functionality of versioning records, previously located within the "version" system
extension was moved into the "workspaces" extension, which not only enhances the versioning with
workflows and workflow stages, but also adds a Backend module to configure and to publish versioned
records within a workspace.
The extensions' deeply coupled logic is now moved into one system extension, providing the same
functionality still.
Impact
======
Using the versioning functionality of TYPO3 is now coupled with the workspace and workflow logic,
and cannot be used separately for custom versioning strategies not supported by TYPO3 Core.
Additionally, third-party extensions checking for the previously available "version" extensions
will trigger a deprecation warning.
Affected Installations
======================
Any installation solely providing versioning functionality based on the "version" extension,
but not using "workspaces".
Migration
=========
Adapt your changes to check for "workspaces" instead of the "version" extension.
.. code-block:: php
# old
if (ExtensionManagementUtility::isLoaded('version')) { ... }
# new
if (ExtensionManagementUtility::isLoaded('workspaces')) { ... }
If you built custom functionality built on "version" without "workspaces", ensure to adapt
your settings and old class names to use the workspace PHP namespaces.
.. index:: PHP-API, NotScanned, ext:workspaces
@@ -0,0 +1,45 @@
.. include:: /Includes.rst.txt
.. _breaking-82899:
========================================================================================
Breaking: #82899 - More restricting checks for API methods in ExtensionManagementUtility
========================================================================================
See :issue:`82899`
Description
===========
The following methods within :php:`ExtensionManagementUtility`, the primary API class for
extensions registering additional components like plugins, modules or extending TCA functionality
now throw Exceptions with invalid calls:
1. :php:`addLLrefForTCAdescr()` requires a non-empty string as first argument
2. :php:`addNavigationComponent()` requires the third argument ($extensionKey)
3. :php:`addService()` requires the second argument to be non-empty, and the fourth argument as array
4. :php:`addPlugin()` requires the third argument ($extensionKey) to be set
5. :php:`addStaticFile()` requires the second and third argument to be non-empty
6. :php:`addTypoScript()` requires the second argument to be either `setup` or `constants`
Impact
======
Calling any of the methods mentioned will trigger a `InvalidArgumentException`.
Affected Installations
======================
Any TYPO3 installation with an extension calling any of the methods above with missing
information.
Migration
=========
Add the required parameters to the API calls in your extension registration files, typically
located within :file:`ext_localconf.php`, :file:`ext_tables.php` or :file:`Configuration/TCA/*` of an extension.
.. index:: PHP-API, PartiallyScanned
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _breaking-82914:
===============================================================
Breaking: #82914 - Remove TypoScript option page.bodyTagMargins
===============================================================
See :issue:`82914`
Description
===========
The TypoScript option :typoscript:`page.bodyTagMargins` has been removed.
Impact
======
Setting this option will have no effect anymore.
Affected Installations
======================
Any TYPO3 installation using this option.
Migration
=========
Move the configuration into your used CSS files.
.. index:: TypoScript, Frontend, NotScanned
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _breaking-82915:
===========================================================
Breaking: #82915 - Remove TypoScript option page.stylesheet
===========================================================
See :issue:`82915`
Description
===========
The TypoScript option :typoscript:`page.stylesheet` has been removed.
Impact
======
Setting this option will have no effect anymore.
Affected Installations
======================
Any TYPO3 installation using this option.
Migration
=========
Use a configuration like :typoscript:`page.includeCSS.aFile = fileadmin/styles.css`
.. index:: Frontend, TypoScript, NotScanned
@@ -0,0 +1,33 @@
.. include:: /Includes.rst.txt
.. _breaking-82919:
=============================================================
Breaking: #82919 - Removed pagetree-related TSconfig settings
=============================================================
See :issue:`82919`
Description
===========
The following edge-case TSconfig options have been removed:
- :typoscript:`options.pageTree.disableIconLinkToContextmenu` (Icons are always linked)
- :typoscript:`options.pageTree.searchInAlias` (the pages.alias DB field is now always respected when filtering)
- :typoscript:`options.pageTree.excludeDoktypes` (there is no restriction to doctypes in the filter anymore)
- :typoscript:`options.pageTree.hideFilter` (filter is now always visible)
Impact
======
Setting these options in UserTSconfig will have no effect anymore.
Affected Installations
======================
Installations having one of these options set.
.. index:: Backend, TSConfig, NotScanned
@@ -0,0 +1,46 @@
.. include:: /Includes.rst.txt
.. _breaking-82926:
===========================================================
Breaking: #82926 - Removed database field sys_domain.forced
===========================================================
See :issue:`82926`
Description
===========
The database field "sys_domain.forced" (Checkbox "Always prepend this domain in links" in Domain Records)
and its functionality has been removed.
Previously, setting the checkbox allowed to prepend a specific domain to TypoLink-generated links, but only
if the visiting HTTP_HOST did not match any of other domain records on the same page (without redirect).
It was however, only partially useful, as - depending on which HTTP_HOST the site was accessed the first time,
and thus, the links were generated and written to cache - resulting in ambiguous cache entries.
Impact
======
Custom links having multiple domains in one pagetree without redirects and the forced flag will
not force a certain domain anymore via TypoLink.
Affected Installations
======================
Installations using this flag (can be checked with a simple SQL query :sql:`SELECT uid, pid, domainName
FROM sys_domain WHERE forced=1`) and using that on purpose with a lot of non-redirect domains
for the same page tree.
Migration
=========
If a site has a special use-case, hooks for page link generation can be used to prepend specific domains to links.
Also, if queries are made against sys_domain in third-party extensions, ensure this field is not selected or
evaluated anymore, in order to avoid SQL errors.
.. index:: Database, PHP-API, NotScanned
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _breaking-82991:
====================================================================
Breaking: #82991 - Record list "Localization View" is always enabled
====================================================================
See :issue:`82991`
Description
===========
The option / checkbox "Localization View" in TYPO3's List module was removed, as the functionality is now
always enabled.
Impact
======
The PageTSconfig option :typoscript:`mod.web_list.enableLocalizationView` has no effect anymore.
Affected Installations
======================
Any multi-language installation using the TSconfig option above to e.g. disable the localization view.
Migration
=========
Remove the TSconfig option.
.. index:: TSConfig, Backend, NotScanned
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-83081:
==========================================================================
Breaking: #83081 - Removed configuration option BE/fileExtensions/webspace
==========================================================================
See :issue:`83081`
Description
===========
The file extensions which are allowed to be uploaded, which were previously available under
:php:`$TYPO3_CONF_VARS[BE][fileExtensions][webspace]` called `allow` and `deny` have been removed.
Impact
======
* Using the old configuration option names will result in a PHP notice.
* In Import/Export when uploading files :php:`fileDenyPattern` is used instead of `allow` and `deny`
* When using :php:`BasicFileUtility` directly, only :php:`fileDenyPattern` is used
Affected Installations
======================
TYPO3 installations which have set this option in :file:`LocalConfiguration.php` previously, or extensions which
still use the old configuration option names.
Migration
=========
Use :php:`fileDenyPattern` which is used consistently throughout the core to deny specific file extensions.
.. index:: LocalConfiguration, PartiallyScanned
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _breaking-83122:
=======================================================
Breaking: #83122 - Removed stdWrap option TCAselectItem
=======================================================
See :issue:`83122`
Description
===========
The option `TCAselectItem` is rarely used and also does not cover all possibilities of the core like manipulating
entries with TSconfig and the mentioned support of database relations.
Impact
======
The stdWrap option :typoscript:`TCAselectItem` will not work anymore.
Calling :php:`\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::stdWrap_TCAselectItem` and
:php:`\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::TCAlookup` will trigger an error.
Affected Installations
======================
Any instance using the stdWrap option :typoscript:`TCAselectItem` or calls to
:php:`\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::stdWrap_TCAselectItem` and
:php:`\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::TCAlookup`.
Migration
=========
Use a custom userFunc to rebuild the functionality.
.. index:: Frontend, TypoScript, PartiallyScanned
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _breaking-83124:
========================================================================
Breaking: #83124 - Remove stdWrap options space, spaceBefore, spaceAfter
========================================================================
See :issue:`83124`
Description
===========
The stdWrap options :typoscript:`space`, :typoscript:`spaceBefore`, :typoscript:`spaceAfter` are rarely used and should be better done completely by CSS.
Impact
======
The stdWrap options :typoscript:`space`, :typoscript:`spaceBefore`, :typoscript:`spaceAfter` do not work anymore. The following calls to :php:`\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer` will trigger an error:
- :php:`stdWrap_spaceBefore`
- :php:`stdWrap_spaceAfter`
- :php:`stdWrap_space`
Affected Installations
======================
Any instance using the stdWrap option :typoscript:`space`, :typoscript:`spaceBefore`, :typoscript:`spaceAfter` or calls to :php:`\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer` :
- :php:`stdWrap_spaceBefore`
- :php:`stdWrap_spaceAfter`
- :php:`stdWrap_space`
Migration
=========
Use CSS or a wrap option of stdWrap.
.. index:: Frontend, TypoScript, PartiallyScanned
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _breaking-83153:
======================================================
Breaking: #83153 - Migrated backend_layout.icon to FAL
======================================================
See :issue:`83153`
Description
===========
The existing database field "icon" for Backend Layouts put into the database, was previously a file upload field,
putting all icons under `uploads/media`. The field is migrated to the File Abstraction Layer (FAL), having
proper file relations like all other parts of TYPO3 core.
Impact
======
When working with the TCA for the backend_layout.icon field, sys_file_reference relations are now expected.
When querying the database table directly, icon only contains the number of references of this backend layout.
Affected Installations
======================
Installations with custom backend layout icons and, more specifically extensions dealing with the database
table directly.
Migration
=========
An upgrade wizard in the TYPO3 install tool moves all existing icons of backend_layouts from `uploads/media` to
`fileadmin/_migrated/backend_layouts/`.
For extensions directly working on the database table, the database access needs to be modified.
.. index:: Database, FAL, Backend, NotScanned
@@ -0,0 +1,28 @@
.. include:: /Includes.rst.txt
.. _breaking-83160:
===========================================================================
Breaking: #83160 - Removed 'sorting' column from table 'sys_file_reference'
===========================================================================
See :issue:`83160`
Description
===========
The column :php:`sorting` has been removed from table :php:`sys_file_reference` as it was not used in TYPO3
core and lead to severe performance issues on instances with many records in the table.
Impact
======
Custom queries (e.g. from extensions) on table :php:`sys_file_reference` containing the column :php:`sorting` will lead to an SQL error.
Affected Installations
======================
All instances which use custom queries containing the mentioned column.
.. index:: Database, FAL, NotScanned
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-83161:
========================================================
Breaking: #83161 - Remove TYPO3.LLL usages in TYPO3 core
========================================================
See :issue:`83161`
Description
===========
After moving to the :js:`TYPO3.lang` API for javascript, the :js:`TYPO3.LLL` is not needed anymore.
Impact
======
All extensions which are using :js:`TYPO3.LLL` for translation in javascript should be checked and updated accordingly.
Affected Installations
======================
Any installation using extensions, which are using :js:`TYPO3.LLL`.
Migration
=========
Use :js:`TYPO3.lang['label']` from javascript. To make custom language labels available in javascript,
add :php:`$this->pageRenderer->addInlineLanguageLabelFile('EXT:foo/Resources/Private/Language/locallang.xlf');`
in your backend controller.
The class typo3/sysext/feedit/Classes/FrontendEditAssetLoader.php was removed, so if you used it in your code you have to remove the dependency.
.. index:: Backend, JavaScript, PHP-API, NotScanned
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _breaking-83241:
======================================================================================
Breaking: #83241 - Extbase: Removed custom functionality for DataMapper->getPlainValue
======================================================================================
See :issue:`83241`
Description
===========
Extbase's DataMapper allowed for wrapping string values in custom user functions via custom parameters.
This was primarily placed in DataMapper for allowing TYPO3's legacy DBAL / :php:`$GLOBALS['TYPO3_DB']`.
The functionality is now removed, as the Generic Backend is handled via Doctrine DBAL.
Impact
======
Calling :php:`DataMapper->getPlainValue()` with the third or fourth parameter set will have no effect anymore.
Affected Installations
======================
In an VERY unlikely case of using a custom Persistence Backend within Extbase in an extension, some
transformations will not work as expected anymore.
Migration
=========
Use the transformations outside the DataMapper, if still necessary.
.. index:: PHP-API, FullyScanned, ext:extbase
@@ -0,0 +1,28 @@
.. include:: /Includes.rst.txt
.. _breaking-83243:
============================================================
Breaking: #83243 - Removed cache_phpcode cache configuration
============================================================
See :issue:`83243`
Description
===========
The Caching Framework configuration for `cache_phpcode` is unused since
TYPO3 6.0 and has been removed without substitution.
Impact
======
Using `cache_phpcode` will throw a `NoSuchCacheException`.
Affected Installations
======================
Every installation using a 3rd party extension that still relies on `cache_phpcode` is affected.
.. index:: PHP-API, NotScanned, LocalConfiguration
@@ -0,0 +1,40 @@
.. include:: /Includes.rst.txt
.. _breaking-83244:
=======================================================================================
Breaking: #83244 - Fluid Widget Links do not add cacheHash parameter by default anymore
=======================================================================================
See :issue:`83244`
Description
===========
When using links for fluid widgets (like Paginator widgets) it is not possible to disable the cHash calculation.
A new argument `useCacheHash` for the :html:`<f:widget.link>` and the :html:`<f:widget.uri>` ViewHelpers has been added
to re-enable the previous behaviour.
Additionally, using cHash and addQueryString is counterproductive for deterministic caching purposes,
thus this combination should not be set by TYPO3 core by default.
Impact
======
Using the :html:`<f:widget.link>` or :html:`<f:widget.uri>` ViewHelper will not generate a cHash anymore.
Affected Installations
======================
Installations using extensions that are built around Fluid widgets.
Migration
=========
None. If necessary, activate the cHash calculation by using the newly introduced Fluid argument "useCacheHash".
.. index:: Fluid, NotScanned
@@ -0,0 +1,53 @@
.. include:: /Includes.rst.txt
.. _breaking-83256:
=====================================================
Breaking: #83256 - Removed lockFilePath functionality
=====================================================
See :issue:`83256`
Description
===========
The TypoScript option :typoscript:`config.lockFilePath` has been removed, which was possible to allow TypoScript
:typoscript:`stdWrap.filelist` to use a different base directory than fileadmin/ (which was the default).
However, :typoscript:`stdWrap.filelist` now checks for valid local FAL storages (File Abstraction Layer), which can
now be used if multiple storages are in use.
Thus, the following PHP property has been removed:
* :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->lockFilePath`
The following PHP method has been removed:
* :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->clean_directory()`
Impact
======
Setting :typoscript:`config.lockFilePath` has no effect anymore.
Accessing or setting :php:`TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController->lockFilePath` will trigger
a PHP notice.
Calling :php:`TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer->clean_directory()` will trigger a PHP fatal error.
Affected Installations
======================
Any installation using the PHP method/property or having config.lockFilePath set to a specific non-FAL folder,
and using :typoscript:`stdWrap.filelist` functionality.
Migration
=========
If the TypoScript option was set to a different folder than a FAL storage, ensure to set a local FAL storage
to this folder.
.. index:: Frontend, TypoScript, PartiallyScanned
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _breaking-83265:
=========================================================================================
Breaking: #83265 - Dropped support for setting "typeNum" via id GET Parameter in Frontend
=========================================================================================
See :issue:`83265`
Description
===========
The functionality to add the possible page :typoscript:`typeNum` to the "id" GET/POST Parameter has been removed.
Previously it was possible to call TYPO3 Frontend via `index.php?id=23.13` (separated with a dot)
which resolved in the page ID being "23" and the typeNum set to 13.
This functionality is a leftover from 2003, to shorten the URL and avoid multiple GET parameters.
Instead, today it is common to use `index.php?id=23&type=13` which TYPO3 uses internally everywhere
since TYPO3 v4.0.
Impact
======
Calling Frontend URLs via `index.php?id=23.13` - adding the typeNum with a dot - will result in a PageNotFound exception.
Affected Installations
======================
Installations with multiple "typeNum" TypoScript values, and with very old settings and custom built URLs for the Frontend.
Migration
=========
Use typolink functionality in TypoScript, or Fluid to build your URLs properly in the format
of `index.php?id=pageId&type=typeNum`.
.. index:: Frontend, NotScanned
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _breaking-83284:
=============================================================================
Breaking: #83284 - Removed EXT:backend/Resources/Private/Templates/Close.html
=============================================================================
See :issue:`83284`
Description
===========
The file :php:`EXT:backend/Resources/Private/Templates/Close.html` has been removed.
Impact
======
Accessing the file :php:`EXT:backend/Resources/Private/Templates/Close.html` will result in an empty
string returned or an exception, depending on the code to access it.
Affected Installations
======================
All instances, that manually access this file or use the extensions doing this..
The extension scanner of the install tool will find affected extensions.
Migration
=========
Use the file :php:`EXT:backend/Resources/Public/Html/Close.html` instead.
.. index:: Backend, NotScanned
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _breaking-83289:
===================================================
Breaking: #83289 - Core version 9.0 needs PHP 7.2.0
===================================================
See :issue:`83289`
Description
===========
The minimum PHP version required to run core version 9.0 has been raised from 7.0.0 to 7.2.0.
Impact
======
Version constructs of PHP 7.2 and library versions requiring this PHP platform can be used.
Hosting on platforms lower than PHP 7.2.0 is not supported.
The PHP entry points to TYPO3 will throw fatal errors if the PHP version constraint is not fulfilled.
Affected Installations
======================
Hosting a TYPO3 instance based on core version 9 may require an update of the PHP platform.
Migration
=========
Youngest TYPO3 core v7 and v8 releases support PHP 7.2. This allows upgrading the platform
in a first step and upgrading to TYPO3 v9 in a second step.
.. index:: PHP-API, NotScanned
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _breaking-83294:
===============================================================================
Breaking: #83294 - Salted Passwords: Custom saltings must use the SaltInterface
===============================================================================
See :issue:`83294`
Description
===========
The salted passwords factory allowed to register custom saltings has been changed. All custom salts
need to implement :php:`TYPO3\CMS\SaltedPasswords\Salt\SaltInterface`. Before, this was
handled by extending from :php:`TYPO3\CMS\SaltedPasswords\Salt\AbstractSalt`, which has been renamed to
:php:`TYPO3\CMS\SaltedPasswords\Salt\AbstractComposedSalt` when the salting is implemented.
Impact
======
When writing custom salts for TYPO3, they need to implement the SaltInterface.
If extending from :php:`AbstractSalt`, custom salt now need to extend from :php:`AbstractComposedSalt` and
implement the additional method :php:`getSaltLength()` and :php:`isValidSalt($salt)`.
Affected Installations
======================
TYPO3 installations using custom salts for `EXT:saltedpasswords`.
Migration
=========
Switch to the new implementation details mentioned above, and change your custom salt to fit
to the :php:`SaltInterface` API.
.. index:: PHP-API, NotScanned, ext:saltedpasswords
@@ -0,0 +1,57 @@
.. include:: /Includes.rst.txt
.. _breaking-83302:
===============================================================
Breaking: #83302 - Composer restricts installation of typo3/cms
===============================================================
See :issue:`83302`
Description
===========
When running a composer-based TYPO3 instance, it is not possible anymore to require the whole
TYPO3 Core via `composer require typo3/cms`. This package is solely used for Core-development purposes
from now on.
Instead, all system extensions maintained by the TYPO3 Core Team must be required individually.
Some examples:
* `composer require typo3/cms-core:^9`
* `composer require typo3/cms-fluid-styled-content:^9`
* `composer require typo3/cms-extbase:^9`
* `composer require typo3/cms-workspaces:^9`
* `composer require typo3/cms-sys-note:^9`
For convenience, TYPO3 projects can simply require `composer require typo3/minimal` to get the main
system extensions that are needed for a running TYPO3 instance, and add custom system extensions
as mentioned above.
Impact
======
Installing or updating the composer package `typo3/cms` will show an error for TYPO3 v9.
Affected Installations
======================
Composer-based TYPO3 installations that previously required `typo3/cms` in the projects'
`composer.json` file or in any required extension `composer.json` file.
Migration
=========
Extension authors should specifically define their dependencies of system extensions in their
`composer.json` file, if they have previously added `typo3/cms`.
Site administrators / developers should require only the necessary `typo3/cms-*` packages that they
have installed in their projects. In order to find out, which system extensions have been installed,
have a look at `typo3conf/PackageStates.php` and look for all extensions that are located under
`typo3/sysext/`.
.. index:: CLI, NotScanned
@@ -0,0 +1,22 @@
.. include:: /Includes.rst.txt
.. _deprecation-52694:
=========================================================
Deprecation: #52694 - Deprecated GeneralUtility::devLog()
=========================================================
See :issue:`52694`
Description
===========
The PHP method :php:`TYPO3\CMS\Core\Utility\GeneralUtility::devLog()` has been deprecated in favour of the Logging API.
Additionally these PHP symbols have been deprecated as well:
- :php:`TYPO3\CMS\Core\Utility\GeneralUtility::SYSLOG_SEVERITY_*` constants
- :php:`TYPO3\CMS\Core\Service\AbstractService::devLog()`
- :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_div.php']['devLog']`
.. index:: LocalConfiguration, PHP-API, NotScanned
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _deprecation-54152:
=============================================================================
Deprecation: #54152 - Deprecate arguments of BackendUtility::getPagesTSconfig
=============================================================================
See :issue:`54152`
Description
===========
:php:`BackendUtility::getPagesTSconfig($id, $rootLine = null, $returnPartArray = false)` allowed the following arguments:
* :php:`$id`: This argument was and still is required. It's the id of the page the TSconfig is fetched for
* :php:`$rootLine`: This argument was optional and allowed to use that method with a custom rootline. That argument is deprecated now.
* :php:`$returnPartArray`: This argument was optional and allowed to return the TSconfig non parsed. That argument is deprecated now.
Impact
======
Calling :php:`BackendUtility::getPagesTSconfig` with `$rootline` and/or `$returnPartArray` being different than their
default value, will write a deprecation log entry and will stop working in TYPO3 v10.
Affected Installations
======================
All installations that call :php:`BackendUtility::getPagesTSconfig` with :php:`$rootline` and/or :php:`$returnPartArray` being
different than their default value.
Migration
=========
Calling :php:`BackendUtility::getPagesTSconfig` with just the :php:`id` argument still behaves the way it does.
It's the most common use case and no migration is needed.
If you called :php:`BackendUtility::getPagesTSconfig` with :php:`$returnPartArray` being :php:`true` in the past,
you should now call `BackendUtility::getRawPagesTSconfig`. You will get the non parsed TSconfig, just like before.
If you called :php:`BackendUtility::getPagesTSconfig` providing a custom rootline via :php:`$rootline` in the past,
you should now call :php:`BackendUtility::getRawPagesTSconfig($id, $rootLine = null)` with your custom rootline
and parse the returned TSconfig yourself, just like :php:`BackendUtility::getPagesTSconfig` does.
.. index:: Backend, TSConfig, PHP-API, NotScanned
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _deprecation-57594:
=======================================================================
Deprecation: #57594 - Optimize extbase ReflectionService Cache handling
=======================================================================
See :issue:`57594`
Description
===========
In the process of streamlining the internal reflection / docparser cache handling, the following
methods of the PHP class :php:`ClassSchema` have been deprecated:
* :php:`addProperty()`
* :php:`setModelType()`
* :php:`getModelType()`
* :php:`setUuidPropertyName()`
* :php:`getUuidPropertyName()`
* :php:`markAsIdentityProperty()`
* :php:`getIdentityProperties()`
Impact
======
Installations using the above methods will trigger a :php:`E_USER_DEPRECATED` warning.
Affected Installations
======================
Installations using one of the mentioned methods instead of the ReflectionService API.
Migration
=========
Use the class :php:`ReflectionService` as API which will be automatically initialized on
instantiation.
.. index:: PHP-API, FullyScanned, ext:extbase
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _deprecation-70526:
================================================================
Deprecation: #70526 - Location of formatToPageTypeMapping option
================================================================
See :issue:`70526`
Description
===========
Since its introduction, the option :typoscript:`formatToPageTypeMapping` had to be configured in :typoscript:`settings.view.formatToPageTypeMapping` instead of :typoscript:`view.formatToPageTypeMapping`. This has been marked as deprecated.
Impact
======
Defining :typoscript:`settings.view.formatToPageTypeMapping` will trigger a deprecation log entry.
Affected Installations
======================
Installations containing plugins that define :typoscript:`settings.view.formatToPageTypeMapping` instead of :typoscript:`view.formatToPageTypeMapping`.
Migration
=========
Move
.. code-block:: typoscript
plugin.tx_myextension.settings.view.formatToPageTypeMapping
to
.. code-block:: typoscript
plugin.tx_myextension.view.formatToPageTypeMapping
.. index:: Frontend, TypoScript, NotScanned
@@ -0,0 +1,44 @@
.. include:: /Includes.rst.txt
.. _deprecation-78410:
===============================================================================
Deprecation: #78410 - Deprecate popover member instance in TYPO3 global object.
===============================================================================
See :issue:`78410`
Description
===========
The member instance :js:`TYPO3.Popover` has been marked as deprecated.
Impact
======
Using the global instance will not throw any deprecation message.
Affected Installations
======================
Any backend JavaScript or TypeScript using :js:`TYPO3.Popover`.
Migration
=========
Usage in TypeScript:
.. code-block:: typescript
import Popover = require('TYPO3/CMS/Backend/Popover');
To use popovers in an amd module, add it as a dependency and a corresponding argument to the anonymous function:
.. code-block:: javascript
define('TYPO3\CMS\Extension\Module', ['jquery', 'TYPO3\CMS\Backend\Popover', 'bootstrap'], function($, Popover) {});
.. index:: Backend, JavaScript, NotScanned
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-80993:
================================================
Deprecation: #80993 - GeneralUtility::getUserObj
================================================
See :issue:`80993`
Description
===========
The method :php:`GeneralUtility::getUserObj()` has been marked as deprecated as it is a sole wrapper for
:php:`GeneralUtility::makeInstance()`.
Impact
======
Calling the method will trigger a deprecation log entry.
Affected Installations
======================
Any installation using third-party extension that call this method.
Migration
=========
Use :php:`GeneralUtility::makeInstance()` instead, which acts as a simple drop-in replacement.
.. index:: PHP-API, FullyScanned
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _deprecation-81201:
=========================================
Deprecation: #81201 - EidUtility::initTCA
=========================================
See :issue:`81201`
Description
===========
The static PHP method :php:`EidUtility::initTCA()` has been marked as deprecated, because the full
global TCA array is available at any eID request already.
Impact
======
Calling this method triggers a deprecation log entry.
Affected Installations
======================
Any TYPO3 installation with an extension having a custom eID script registered that uses this method.
Migration
=========
The method call is superfluous and can be removed from the caller script.
.. index:: Frontend, PHP-API, TCA, FullyScanned
@@ -0,0 +1,35 @@
.. include:: /Includes.rst.txt
.. _deprecation-81213:
=======================================================================
Deprecation: #81213 - Render method arguments on ViewHelpers deprecated
=======================================================================
See :issue:`81213`
Description
===========
Support for arguments on the :php:`render()` method of ViewHelpers has been deprecated.
Impact
======
Usage of render method arguments will cause a deprecation message to be logged about the specific Viewhelper class.
Affected Installations
======================
Any TYPO3 site or extension using ViewHelpers with one or more arguments on the :php:`render()` method.
Migration
=========
Switch to :php:`initializeArguments` method (override this from parent) and call :php:`registerArgument` to register each
argument supported by the ViewHelper.
.. index:: Fluid, NotScanned
@@ -0,0 +1,52 @@
.. include:: /Includes.rst.txt
.. _deprecation-81217:
===================================================
Deprecation: #81217 - TSFE-related language methods
===================================================
See :issue:`81217`
Description
===========
The main class for generating frontend output (TypoScriptFrontendController) has been streamlined
to use the same API within LanguageService.
Therefore the following methods within TypoScriptFrontendController have been marked as deprecated:
* :php:`readLLfile()`
* :php:`getLLL()`
* :php:`initLLvars()`
Impact
======
Calling any of the PHP methods above will trigger a deprecation warning.
Affected Installations
======================
Any TYPO3 installation calling custom frontend code with the methods above.
Migration
=========
Use :php:`TypoScriptFrontendController->sL()` for resolving language labels in the language
of the Frontend rendering engine as a replacement for :php:`getLLL()`.
If you are not doing anything special on language initialization, the call to :php:`initLLvars()`
can likely be dropped. If you need to influence language initialization yourself, you can use the
hooks :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['settingLanguage_preProcess']`
or :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['settingLanguage_postProcess']`.
For doing special logic, it is recommend to set up a custom instance of :php:`LanguageService`
which holds all functionality directly.
For example you may then use :php:`$languageService->includeLLFile(...);` instead of :php:`readLLfile()`.
.. index:: Frontend, PHP-API, FullyScanned
@@ -0,0 +1,38 @@
.. include:: /Includes.rst.txt
.. _deprecation-81218:
=====================================================================
Deprecation: #81218 - noWSOL argument in PageRepository->getRawRecord
=====================================================================
See :issue:`81218`
Description
===========
The method :php:`PageRepository->getRawRecord()` has a fourth parameter called :php:`$noWSOL` which allowed
to disable the logic for getting the workspace-related record. This method argument was previously
only used internally within PageRepository, and using this argument left the functionality of this
method to only do a simple SQL statement, which can be implemented itself without using this API call.
Impact
======
Calling :php:`PageRepository->getRawRecord()` with a fourth parameter will trigger a deprecation log entry.
Affected Installations
======================
Any TYPO3 instance with custom extensions that use this method with a fourth parameter explicitly.
Migration
=========
Remove the fourth parameter if set to false, if just a simple SQL call is needed, implement the SQL
call directly in your PHP code.
.. index:: Frontend, PHP-API, FullyScanned
@@ -0,0 +1,41 @@
.. include:: /Includes.rst.txt
.. _deprecation-81318:
=========================================================
Deprecation: #81318 - Public properties of PageRepository
=========================================================
See :issue:`81318`
Description
===========
The following properties within the PageRepository PHP class have been marked as deprecated, as they
were moved from public access to protected access:
* :php:`workspaceCache`
* :php:`error_getRootLine`
* :php:`error_getRootLine_failPid`
They should only be accessed from within the PHP class itself.
Impact
======
Accessing any of the properties directly within PHP will trigger a deprecation warning.
Affected Installations
======================
Extensions accessing one of the previously public properties directly.
Migration
=========
Remove the PHP calls and either extend the PHP class to your own needs or avoid accessing these properties.
.. index:: PHP-API, FullyScanned, Frontend
@@ -0,0 +1,42 @@
.. include:: /Includes.rst.txt
.. _deprecation-81460:
=============================================================
Deprecation: #81460 - Deprecate getByTag() on cache frontends
=============================================================
See :issue:`81460`
Description
===========
The method :php:`getByTag($tag)` on :php:`TYPO3\CMS\Core\Cache\Frontend\FrontendInterface` and all implementations have been
deprecated with no alternative planned. This is done because the concept of cache tags were originally designed for
invalidation purposes, not for identification and retrieval.
Cache frontends still support the much more efficient :php:`flushByTag` and :php:`flushByTags` methods to perform invalidation
by tag, rather than use the deprecated method to retrieve a list of identifiers and removing each.
Impact
======
Calling this method on any TYPO3 provided cache frontend implementations triggers a deprecation log entry, with the
exception of :php:`StringFrontend` which has itself been deprecated in a separate patch.
Affected Installations
======================
Avoid usage of the method - if necessary, use the same cache to store a list of identifiers for each tag.
Migration
=========
Where possible, switch to :php:`flushByTag` or :php:`flushByTags`. In cases where you depend on getting identifiers by tag,
reconsider your business logic - and if necessary, keep track of which identifiers use a given tag, using a separate
list that you for example store in the cache alongside the usual cached entries.
.. index:: PHP-API, FullyScanned
@@ -0,0 +1,48 @@
.. include:: /Includes.rst.txt
.. _deprecation-81464:
=====================================================
Deprecation: #81464 - Add API for meta tag management
=====================================================
See :issue:`81464`
Description
===========
The following methods have been marked as deprecated and should no longer be used.
* :php:`PageRenderer->addMetaTag()`
* :php:`DocumentTemplate->xUaCompatible`
It has been replaced by the method :php:`PageRenderer->setMetaTag()`.
.. code-block:: php
$pageRenderer = GeneralUtility::makeInstance(PageRenderer::class);
// has meta tag been set already?
$previouslySetMetaTag = $pageRenderer->getMetaTag('property', 'og:title');
// take some decision here
$pageRenderer->setMetaTag('property', 'og:title', 'My amazing title');
Impact
======
Extensions calling :php:`PageRenderer->addMetaTag()` or :php:`DocumentTemplate->xUaCompatible` will trigger a
deprecation warning.
Affected Installations
======================
All instances using extensions that call :php:`PageRenderer->addMetaTag()` or :php:`DocumentTemplate->xUaCompatible`.
Migration
=========
Migrate code to use :php:`PageRenderer->setMetaTag($type, $name, $content)` instead.
.. index:: PHP-API, FullyScanned, Frontend
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-81534:
====================================================================
Deprecation: #81534 - BackendUtility::getListGroupNames() deprecated
====================================================================
See :issue:`81534`
Description
===========
PHP method :php:`BackendUtility::getListGroupNames()` has been dropped due to
the removal of database field :php:`hide_in_lists`.
Impact
======
The methods shouldn't be used anymore. If still used, the where constraint on filed
hide_in_lists is no longer considered.
Affected Installations
======================
Extensions using above method should switch to an alternative.
Migration
=========
Use method :php:`BackendUtility::getGroupNames()` instead and keep an eye on the
different non-admin use of the method if switching.
.. index:: Database, PHP-API, TCA, FullyScanned
@@ -0,0 +1,34 @@
.. include:: /Includes.rst.txt
.. _deprecation-81540:
===========================================================
Deprecation: #81540 - Deprecate DocumentTemplate::formWidth
===========================================================
See :issue:`81540`
Description
===========
The method :php:`DocumentTemplate::formWidth()` has been marked as deprecated.
Impact
======
Calling the method will trigger a deprecation log entry.
Affected Installations
======================
Any installation using third-party extension that call this method.
Migration
=========
Use CSS classes from Bootstrap or if needed inline styles directly.
.. index:: Backend, PHP-API, FullyScanned
@@ -0,0 +1,106 @@
.. include:: /Includes.rst.txt
.. _deprecation-81600:
===============================================
Deprecation: #81600 - Unused Extbase Exceptions
===============================================
See :issue:`81600`
Description
===========
Extbase ships with a lot of PHP Exception classes which are not used (partially anymore) due to
refactorings or backports 8 years ago - they are never thrown within TYPO3 / Extbase itself.
These PHP classes have been removed.
Impact
======
Using these exception classes will not work anymore in TYPO3 v10.
Affected Installations
======================
Any TYPO3 extbase extension using these extraordinary exceptions in their own code.
Migration
=========
PHP class aliases are in place, so all code will still work throughout TYPO3 v9, but extension authors
should migrate to other exceptions.
Use :php:`TYPO3\CMS\Extbase\Configuration\Exception` instead of
* :php:`TYPO3\CMS\Extbase\Configuration\Exception\ContainerIsLockedException`
* :php:`TYPO3\CMS\Extbase\Configuration\Exception\NoSuchFileException`
* :php:`TYPO3\CMS\Extbase\Configuration\Exception\NoSuchOptionException`
Use :php:`TYPO3\CMS\Extbase\Exception` instead of
* :php:`TYPO3\CMS\Extbase\Mvc\Exception\InvalidMarkerException`
* :php:`TYPO3\CMS\Extbase\Mvc\Exception\InvalidViewHelperException`
Use :php:`TYPO3\CMS\Extbase\Mvc\Exception` instead of
* :php:`TYPO3\CMS\Extbase\Mvc\Exception\InvalidRequestTypeException`
* :php:`TYPO3\CMS\Extbase\Mvc\Exception\RequiredArgumentMissingException`
* :php:`TYPO3\CMS\Extbase\Mvc\Exception\InvalidCommandIdentifierException`
Use :php:`TYPO3\CMS\Core\Cache\Exception\InvalidCacheException` instead of
* :php:`TYPO3\CMS\Extbase\Object\Container\Exception\CannotInitializeCacheException`
Use :php:`TYPO3\CMS\Extbase\Object\Exception` instead of
* :php:`TYPO3\CMS\Extbase\Object\Container\Exception\TooManyRecursionLevelsException`
* :php:`TYPO3\CMS\Extbase\Object\Exception\WrongScopeException`
* :php:`TYPO3\CMS\Extbase\Object\InvalidClassException`
* :php:`TYPO3\CMS\Extbase\Object\InvalidObjectConfigurationException`
* :php:`TYPO3\CMS\Extbase\Object\InvalidObjectException`
* :php:`TYPO3\CMS\Extbase\Object\ObjectAlreadyRegisteredException`
* :php:`TYPO3\CMS\Extbase\Object\UnknownClassException`
* :php:`TYPO3\CMS\Extbase\Object\UnknownInterfaceException`
* :php:`TYPO3\CMS\Extbase\Object\UnresolvedDependenciesException`
Use :php:`TYPO3\CMS\Extbase\Persistence\Generic\Exception` instead of
* :php:`TYPO3\CMS\Extbase\Persistence\Generic\Exception\CleanStateNotMemorizedException`
* :php:`TYPO3\CMS\Extbase\Persistence\Generic\Exception\InvalidPropertyTypeException`
* :php:`TYPO3\CMS\Extbase\Persistence\Generic\Exception\MissingBackendException`
Use :php:`TYPO3\CMS\Extbase\Property\Exception` instead of
* :php:`TYPO3\CMS\Extbase\Property\Exception\FormatNotSupportedException`
* :php:`TYPO3\CMS\Extbase\Property\Exception\InvalidFormatException`
* :php:`TYPO3\CMS\Extbase\Property\Exception\InvalidPropertyException`
Use :php:`TYPO3\CMS\Extbase\Reflection\Exception` instead of
* :php:`TYPO3\CMS\Extbase\Reflection\Exception\InvalidPropertyTypeException`
Use :php:`TYPO3\CMS\Extbase\Security\Exception` instead of
* :php:`TYPO3\CMS\Extbase\Security\Exception\InvalidArgumentForRequestHashGenerationException`
* :php:`TYPO3\CMS\Extbase\Security\Exception\SyntacticallyWrongRequestHashException`
* :php:`TYPO3\CMS\Extbase\Mvc\Exception\InvalidUriPatternException`
Use :php:`TYPO3\CMS\Extbase\Security\Exception\InvalidHashException` instead of
* :php:`TYPO3\CMS\Extbase\Mvc\Exception\InvalidOrNoRequestHashException`
Use :php:`TYPO3\CMS\Extbase\Validation\Exception` instead of
* :php:`TYPO3\CMS\Extbase\Validation\Exception\InvalidSubjectException`
* :php:`TYPO3\CMS\Extbase\Validation\Exception\NoValidatorFoundException`
Use :php:`TYPO3Fluid\Fluid\View\Exception\InvalidTemplateResourceException` instead of
* :php:`TYPO3\CMS\Extbase\Mvc\Exception\InvalidTemplateResourceException`
.. index:: PHP-API, FullyScanned, ext:extbase
@@ -0,0 +1,36 @@
.. include:: /Includes.rst.txt
.. _deprecation-81651:
=============================================================
Deprecation: #81651 - Argument parameters in list module hook
=============================================================
See :issue:`81651`
Description
===========
The parameter array :php:`$parameters` of :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][DatabaseRecordList::class]['buildQueryParameters']`
has been marked as deprecated.
Impact
======
Changing the array content array within a hook triggers a deprecation log entry.
Affected Installations
======================
Any installation using third-party extension that use this array to modify the query.
Migration
=========
Use new argument :php:`$queryBuilder` that hands over the query builder instance
to modify the list module query.
.. index:: Backend, Database, PHP-API, NotScanned
@@ -0,0 +1,29 @@
.. include:: /Includes.rst.txt
.. _deprecation-81763:
===============================================================
Deprecation: #81763 - Deprecated language label for file rename
===============================================================
See :issue:`81763`
Description
===========
The language label `file_rename.php.submit` in `EXT:lang/Resources/Private/Language/locallang_core.xlf` has
been marked as deprecated.
Affected Installations
======================
Any TYPO3 extension using the deprecated label is affected.
Migration
=========
Add the label to the `locallang.xlf` of your extension and adjust the usage of the label.
.. index:: Backend, NotScanned, ext:lang
@@ -0,0 +1,37 @@
.. include:: /Includes.rst.txt
.. _deprecation-81951:
====================================================
Deprecation: #81951 - Install Tool entry point moved
====================================================
See :issue:`81951`
Description
===========
The canonical entry point for accessing the install tool now is:
:file:`typo3/install.php`
Impact
======
Accessing :file:`typo3/install/` will still work and redirect to the new
location, but has been deprecated.
Affected Installations
======================
Every TYPO3 installation is affected.
Migration
=========
Change bookmarks or scripts from the old entry point to the new one.
.. index:: Backend, NotScanned
@@ -0,0 +1,47 @@
.. include:: /Includes.rst.txt
.. _deprecation-82110:
===================================================================================
Deprecation: #82110 - Deprecate option "value" and "noscript" in SVG content object
===================================================================================
See :issue:`82110`
Description
===========
The following TypoScript settings of the SVG content object have been marked as deprecated:
* :typoscript:`value` (in case :typoscript:`renderMode` is not set to inline)
* :typoscript:`noscript`
The SVG content object renderer has used the two options "value" and "noscript" to render the given
value into a :html:`<script type="image/svg+xml">` tag.
This kind of implementation is very old and has been marked as deprecated.
The SVG content object supports two render variants:
1) the :html:`<object>` tag variant (:typoscript:`renderMode = object`) [default]
2) the :html:`<svg>` tag variant (:typoscript:`renderMode = inline`)
The second one is nearly the same as the script tag variant, so an alternative is still in place.
Impact
======
Using one of the two options will trigger a deprecation log entry.
Affected Installations
======================
Instances which use at least one of the two options.
Migration
=========
Use the new :typoscript:`renderMode = inline` to render a SVG file as :html:`<svg>`
.. index:: Frontend, TypoScript, NotScanned
@@ -0,0 +1,46 @@
.. include:: /Includes.rst.txt
.. _deprecation-82254:
=============================================================================
Deprecation: #82254 - Deprecate $GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']
=============================================================================
See :issue:`82254`
Description
===========
The extension configuration stored in :php:`$GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']` has been
deprecated and replaced by a plain array in :php:`$GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']`. A new
API has been introduced to retrieve extension configuration.
Affected Installations
======================
All extensions manually getting settings and unserializing them
from :php:`$GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']`.
Migration
=========
Use a new API to retrieve extension configuration, examples:
.. code-block:: php
// Retrieve a single key
$backendFavicon = (bool)GeneralUtility::makeInstance(ExtensionConfiguration::class)->get('backend', 'backendFavicon');
// Retrieve whole configuration
$backendConfiguration = GeneralUtility::makeInstance(ExtensionConfiguration::class)->get('backend');
// Fully qualified class names for usage in ext_localconf.php / ext_tables.php
$backendConfiguration = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
\TYPO3\CMS\Core\Configuration\ExtensionConfiguration::class
)->get('backend');
.. index:: LocalConfiguration, PHP-API, FullyScanned

Some files were not shown because too many files have changed in this diff Show More