TYPO3 v15 dev-main snapshot ()

This commit is contained in:
2026-08-10 22:31:38 +02:00
commit 4392dbe2ce
142 changed files with 11824 additions and 0 deletions
@@ -0,0 +1,48 @@
<?php
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Scheduler\Task\CachingFrameworkGarbageCollectionTask;
defined('TYPO3') or die();
ExtensionManagementUtility::addTCAcolumns(
'tx_scheduler_task',
[
'cache_backends' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.cachingFrameworkGarbageCollection.selectBackends',
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'itemsProcFunc' => CachingFrameworkGarbageCollectionTask::class . '->getRegisteredBackends',
'size' => 10,
'minitems' => 0,
'maxitems' => 100,
'default' => '',
],
],
]
);
ExtensionManagementUtility::addRecordType(
[
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:cachingFrameworkGarbageCollection.name',
'description' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:cachingFrameworkGarbageCollection.description',
'value' => CachingFrameworkGarbageCollectionTask::class,
'icon' => 'mimetypes-x-tx_scheduler_task_group',
'group' => 'scheduler',
],
'
--div--;core.form.tabs:general,
tasktype,
task_group,
description,
cache_backends;LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.cachingFrameworkGarbageCollection.selectBackends,
--div--;core.form.tabs:timing,
--palette--;;execution,
--div--;core.form.tabs:access,
disable,
--div--;core.form.tabs:extended,',
[],
'',
'tx_scheduler_task'
);
@@ -0,0 +1,56 @@
<?php
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Scheduler\Task\FileStorageExtractionTask;
defined('TYPO3') or die();
ExtensionManagementUtility::addTCAcolumns(
'tx_scheduler_task',
[
'max_file_count' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.fileStorageExtraction.fileCount',
'config' => [
'type' => 'number',
'size' => 10,
'default' => 0,
'range' => [
'lower' => 1,
'upper' => 9999,
],
],
],
'registered_extractors' => [
'config' => [
'type' => 'none',
'renderType' => 'registeredExtractors',
],
],
]
);
ExtensionManagementUtility::addRecordType(
[
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:fileStorageExtraction.name',
'description' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:fileStorageExtraction.description',
'value' => FileStorageExtractionTask::class,
'icon' => 'mimetypes-x-tx_scheduler_task_group',
'group' => 'scheduler',
],
'
--div--;core.form.tabs:general,
tasktype,
task_group,
description,
file_storage;LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.fileStorageIndexing.storage,
max_file_count,
registered_extractors,
--div--;core.form.tabs:timing,
--palette--;;execution,
--div--;core.form.tabs:access,
disable,
--div--;core.form.tabs:extended,',
[],
'',
'tx_scheduler_task'
);
@@ -0,0 +1,30 @@
<?php
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Scheduler\Task\FileStorageIndexingTask;
defined('TYPO3') or die();
ExtensionManagementUtility::addRecordType(
[
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:fileStorageIndexing.name',
'description' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:fileStorageIndexing.description',
'value' => FileStorageIndexingTask::class,
'icon' => 'mimetypes-x-tx_scheduler_task_group',
'group' => 'scheduler',
],
'
--div--;core.form.tabs:general,
tasktype,
task_group,
description,
file_storage;LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.fileStorageIndexing.storage,
--div--;core.form.tabs:timing,
--palette--;;execution,
--div--;core.form.tabs:access,
disable,
--div--;core.form.tabs:extended,',
[],
'',
'tx_scheduler_task'
);
@@ -0,0 +1,86 @@
<?php
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Scheduler\Task\IpAnonymizationTask;
defined('TYPO3') or die();
ExtensionManagementUtility::addTCAcolumns(
'tx_scheduler_task',
[
'ip_mask' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.ipAnonymization.mask',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'default' => 2,
'items' => [
['label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.ipAnonymization.mask.1', 'value' => 1],
['label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.ipAnonymization.mask.2', 'value' => 2],
],
'minitems' => 1,
'maxitems' => 1,
],
],
]
);
ExtensionManagementUtility::addRecordType(
[
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:ipAnonymization.name',
'description' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:ipAnonymization.description',
'value' => IpAnonymizationTask::class,
'icon' => 'mimetypes-x-tx_scheduler_task_group',
'group' => 'scheduler',
],
'
--div--;core.form.tabs:general,
tasktype,
task_group,
description,
ip_mask,
selected_tables;LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.ipAnonymization.table,
number_of_days;LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.ipAnonymization.numberOfDays,
--div--;core.form.tabs:timing,
--palette--;;execution,
--div--;core.form.tabs:access,
disable,
--div--;core.form.tabs:extended,',
[
'columnsOverrides' => [
'selected_tables' => [
'displayCond' => 'FIELD:all_tables:=:0',
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.ipAnonymization.table',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'size' => 1,
'minitems' => 1,
'maxitems' => 1,
'itemsProcFunc' => IpAnonymizationTask::class . '->getAnonymizableTables',
],
],
'number_of_days' => [
'displayCond' => 'FIELD:all_tables:=:0',
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.ipAnonymization.numberOfDays',
'config' => [
'type' => 'number',
'default' => 0,
'range' => [
'lower' => 0,
],
],
],
],
'taskOptions' => [
'tables' => [
'sys_log' => [
'dateField' => 'tstamp',
'ipField' => 'IP',
],
],
],
],
'',
'tx_scheduler_task'
);
@@ -0,0 +1,44 @@
<?php
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Scheduler\Task\OptimizeDatabaseTableTask;
defined('TYPO3') or die();
ExtensionManagementUtility::addRecordType(
[
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:optimizeDatabaseTable.name',
'description' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:optimizeDatabaseTable.description',
'value' => OptimizeDatabaseTableTask::class,
'icon' => 'mimetypes-x-tx_scheduler_task_group',
'group' => 'scheduler',
],
'
--div--;core.form.tabs:general,
tasktype,
task_group,
description,
selected_tables;LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.optimizeDatabaseTables.selectTables,
--div--;core.form.tabs:timing,
--palette--;;execution,
--div--;core.form.tabs:access,
disable,
--div--;core.form.tabs:extended,',
[
'columnsOverrides' => [
'selected_tables' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.optimizeDatabaseTables.selectTables',
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'size' => 10,
'minitems' => 1,
'maxitems' => 100,
'itemsProcFunc' => OptimizeDatabaseTableTask::class . '->getOptimizableTables',
],
],
],
],
'',
'tx_scheduler_task'
);
@@ -0,0 +1,43 @@
<?php
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Scheduler\Task\RecyclerGarbageCollectionTask;
defined('TYPO3') or die();
ExtensionManagementUtility::addRecordType(
[
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:recyclerGarbageCollection.name',
'description' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:recyclerGarbageCollection.description',
'value' => RecyclerGarbageCollectionTask::class,
'icon' => 'mimetypes-x-tx_scheduler_task_group',
'group' => 'scheduler',
],
'
--div--;core.form.tabs:general,
tasktype,
task_group,
description,
number_of_days;LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.recyclerGarbageCollection.numberOfDays,
--div--;core.form.tabs:timing,
--palette--;;execution,
--div--;core.form.tabs:access,
disable,
--div--;core.form.tabs:extended,',
[
'columnsOverrides' => [
'number_of_days' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.recyclerGarbageCollection.numberOfDays',
'config' => [
'type' => 'number',
'default' => 30,
'range' => [
'lower' => 0,
],
],
],
],
],
'',
'tx_scheduler_task'
);
@@ -0,0 +1,97 @@
<?php
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Scheduler\Task\TableGarbageCollectionTask;
defined('TYPO3') or die();
ExtensionManagementUtility::addTCAcolumns(
'tx_scheduler_task',
[
'all_tables' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.tableGarbageCollection.allTables',
'description' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.tableGarbageCollection.allTables.description',
'config' => [
'type' => 'check',
'renderType' => 'checkboxToggle',
'default' => 0,
],
],
]
);
ExtensionManagementUtility::addRecordType(
[
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:tableGarbageCollection.name',
'description' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:tableGarbageCollection.description',
'value' => TableGarbageCollectionTask::class,
'icon' => 'mimetypes-x-tx_scheduler_task_group',
'group' => 'scheduler',
],
'
--div--;core.form.tabs:general,
tasktype,
task_group,
description,
all_tables,
selected_tables;LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.tableGarbageCollection.table,
number_of_days;LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.tableGarbageCollection.numberOfDays,
--div--;core.form.tabs:timing,
--palette--;;execution,
--div--;core.form.tabs:access,
disable,
--div--;core.form.tabs:extended,',
[
'columnsOverrides' => [
'selected_tables' => [
'displayCond' => 'FIELD:all_tables:=:0',
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.tableGarbageCollection.table',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'size' => 1,
'minitems' => 1,
'maxitems' => 1,
'itemsProcFunc' => TableGarbageCollectionTask::class . '->getCleanableTables',
],
],
'number_of_days' => [
'displayCond' => 'FIELD:all_tables:=:0',
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:label.tableGarbageCollection.numberOfDays',
'config' => [
'type' => 'number',
'default' => 0,
'range' => [
'lower' => 0,
],
'fieldInformation' => [
'expirePeriodInformation' => [
'renderType' => 'expirePeriodInformation',
'options' => [
'refField' => 'selected_tables',
],
],
],
],
],
],
'taskOptions' => [
'tables' => [
'sys_log' => [
'dateField' => 'tstamp',
'expirePeriod' => 180,
],
'sys_http_report' => [
'dateField' => 'changed',
'expirePeriod' => 30,
],
'sys_history' => [
'dateField' => 'tstamp',
'expirePeriod' => 30,
],
],
],
],
'',
'tx_scheduler_task'
);
+204
View File
@@ -0,0 +1,204 @@
<?php
use TYPO3\CMS\Scheduler\Service\TaskService;
return [
'ctrl' => [
'label' => 'tasktype',
'label_alt' => 'description',
'label_alt_force' => true,
'title' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task',
'crdate' => 'crdate',
'delete' => 'deleted',
'default_sortby' => 'nextexecution',
'typeicon_classes' => [
// @todo, TYPO3.icons needs to introduce tx_scheduler_task and use the current icon for "tx_scheduler_task_group"
'default' => 'mimetypes-x-tx_scheduler_task_group',
],
'type' => 'tasktype',
'hideTable' => true, // Disabled for now until sorting and grouping is usable in records module
'adminOnly' => true, // Only admin users can edit
'groupName' => 'system',
'rootLevel' => 1,
'enablecolumns' => [
'disabled' => 'disable',
],
],
'columns' => [
'tasktype' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task.tasktype',
'config' => [
'type' => 'select',
'renderType' => 'taskTypeInfo',
'itemsProcFunc' => TaskService::class . '->getTaskTypesForTcaItems',
// Always select the first tasktype
'items' => [],
'default' => '',
'required' => true,
// relevant for migration
'nullable' => true,
],
],
'task_group' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task.task_group',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'tx_scheduler_task_group',
'items' => [
['label' => '', 'value' => 0],
],
'size' => 1,
'default' => 0,
],
],
'priority' => [
'label' => 'scheduler.tca:tx_scheduler_task.priority',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['label' => 'scheduler.tca:tx_scheduler_task.priority.high', 'value' => 150],
['label' => 'scheduler.tca:tx_scheduler_task.priority.regular', 'value' => 100],
['label' => 'scheduler.tca:tx_scheduler_task.priority.low', 'value' => 50],
],
'default' => 100,
],
],
'description' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task.description',
'config' => [
'type' => 'text',
],
],
'parameters' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task.parameters',
'config' => [
'type' => 'json',
],
],
'execution_details' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task.execution_details',
'config' => [
'type' => 'json',
'renderType' => 'schedulerTimingOptions',
'overrideFieldTca' => [
'frequency' => [
'config' => [
'valuePicker' => [
'items' => [
[ 'value' => '0 9,15 * * 1-5', 'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:command.example1' ],
[ 'value' => '0 */2 * * *', 'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:command.example2' ],
[ 'value' => '*/20 * * * *', 'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:command.example3' ],
[ 'value' => '0 7 * * 2', 'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:command.example4' ],
],
],
],
],
],
],
],
'nextexecution' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task.nextexecution',
'config' => [
'type' => 'datetime',
'readOnly' => true,
],
],
'lastexecution_time' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task.lastexecution_time',
'config' => [
'type' => 'datetime',
'readOnly' => true,
],
],
'lastexecution_failure' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task.lastexecution_failure',
'config' => [
'type' => 'text',
'readOnly' => true,
],
],
'lastexecution_context' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task.lastexecution_context',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['value' => 'CLI', 'label' => 'CLI'],
['value' => 'BE', 'label' => 'BE'],
['value' => '', 'label' => ''],
],
'readOnly' => true,
'dbFieldLength' => 3,
'default' => '',
],
],
'serialized_executions' => [
'config' => [
'type' => 'passthrough',
],
],
'number_of_days' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:tx_scheduler_task.number_of_days',
'config' => [
'type' => 'number',
'default' => 0,
],
],
'selected_tables' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:tx_scheduler_task.selected_tables',
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'size' => 10,
'dbFieldLength' => 4000,
'minitems' => 1,
'maxitems' => 100,
'items' => [],
],
],
'file_storage' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang.xlf:tx_scheduler_task.file_storage',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'sys_file_storage',
'size' => 1,
'minitems' => 1,
'maxitems' => 1,
'items' => [],
],
],
],
'types' => [
'0' => [
'showitem' => '
--div--;core.form.tabs:general,
tasktype,
task_group,
description,
--div--;core.form.tabs:timing,
--palette--;;execution,
--div--;core.form.tabs:access,
disable,
--div--;core.form.tabs:extended,
',
],
],
'palettes' => [
'execution' => [
'showitem' => '
execution_details,
--linebreak--,
nextexecution,
priority,
--linebreak--,
lastexecution_context,
lastexecution_time,
--linebreak--,
lastexecution_failure,
',
],
],
];
@@ -0,0 +1,72 @@
<?php
return [
'ctrl' => [
'label' => 'groupName',
'tstamp' => 'tstamp',
'title' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group',
'crdate' => 'crdate',
'delete' => 'deleted',
'sortby' => 'sorting',
'typeicon_classes' => [
'default' => 'mimetypes-x-tx_scheduler_task_group',
],
'adminOnly' => true, // Only admin users can edit
'groupName' => 'system',
'rootLevel' => 1,
'enablecolumns' => [
'disabled' => 'hidden',
],
],
'columns' => [
'groupName' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group.groupName',
'config' => [
'type' => 'input',
'size' => 35,
'max' => 80,
'required' => true,
'eval' => 'unique,trim',
'softref' => 'substitute',
],
],
'color' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group.color',
'config' => [
'type' => 'color',
'size' => 10,
'valuePicker' => [
'items' => [
['label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group.color.typo3Orange', 'value' => '#FF8700'],
['label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group.color.white', 'value' => '#ffffff'],
['label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group.color.gray', 'value' => '#808080'],
['label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group.color.black', 'value' => '#000000'],
['label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group.color.blue', 'value' => '#2671d9'],
['label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group.color.purple', 'value' => '#5e4db2'],
['label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group.color.teal', 'value' => '#2da8d2'],
['label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group.color.green', 'value' => '#3cc38c'],
['label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group.color.magenta', 'value' => '#c6398f'],
['label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group.color.yellow', 'value' => '#ffbf00'],
['label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group.color.red', 'value' => '#d13a2e'],
],
],
],
],
'description' => [
'label' => 'LLL:EXT:scheduler/Resources/Private/Language/locallang_tca.xlf:tx_scheduler_task_group.description',
'config' => [
'type' => 'text',
],
],
],
'types' => [
'1' => [
'showitem' => '
--div--;core.form.tabs:general, groupName, color,
--div--;core.form.tabs:access, hidden,
--div--;core.form.tabs:notes, description,
--div--;core.form.tabs:extended,
',
],
],
];