Breaking: #107488 - Scheduler frequency options moved to TCA
See forge#107488
Description
The global configuration array
$GLOBALS,
which was used to define frequency options for scheduler tasks, has been
removed.
Frequency options are now configured directly in the TCA using the
override mechanism on the
tx_ field.
This change improves consistency with TYPO3’s configuration patterns and provides better extensibility for scheduler task timing options.
Impact
Extensions that previously added custom frequency options through the global
frequency array will no longer see their custom options in the
scheduler task frequency field.
Code that relied on reading the global
frequency configuration
will no longer work as expected.
Affected installations
All installations with extensions providing custom scheduler frequency options through the global configuration array are affected.
Migration
Extensions should migrate their frequency options from the global configuration to TCA overrides.
Before (no longer working):
// EXT:my_extension/ext_localconf.php
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['scheduler']['frequencyOptions']['0 2 * * *'] =
'LLL:EXT:my_extension/Resources/Private/Language/locallang.xlf:daily_2am';
After (recommended approach):
// EXT:my_extension/Configuration/TCA/Overrides/tx_scheduler_task.php
$GLOBALS['TCA']['tx_scheduler_task']['columns']['execution_details']['config']['overrideFieldTca']['frequency']['config']['valuePicker']['items'][] = [
'value' => '0 2 * * *',
'label' => 'LLL:EXT:my_extension/Resources/Private/Language/locallang.xlf:daily_2am',
];
Migration for multiple options:
// EXT:my_extension/Configuration/TCA/Overrides/tx_scheduler_task.php
$customFrequencyOptions = [
[
'value' => '0 2 * * *',
'label' => 'LLL:EXT:my_extension/Resources/Private/Language/locallang.xlf:daily_2am',
],
[
'value' => '0 */6 * * *',
'label' => 'LLL:EXT:my_extension/Resources/Private/Language/locallang.xlf:every_6_hours',
],
[
'value' => '0 0 1 * *',
'label' => 'LLL:EXT:my_extension/Resources/Private/Language/locallang.xlf:monthly_first',
],
];
$GLOBALS['TCA']['tx_scheduler_task']['columns']['execution_details']['config']['overrideFieldTca']['frequency']['config']['valuePicker']['items'] = array_merge(
$GLOBALS['TCA']['tx_scheduler_task']['columns']['execution_details']['config']['overrideFieldTca']['frequency']['config']['valuePicker']['items'] ?? [],
$customFrequencyOptions
);