chore: remove the one-off ep:scheduler-tasks command
It replaced the TYPO3 10 import tasks with scheduler tasks, which ran in production on 2026-10-24 (tasks 26-28). The soft-deleted TYPO3 10 rows it left are hard-deleted by hand on the database. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
386d89a1e0
commit
ff45147964
1 file changed
-82
@@ -1,82 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace EP\EpProducts\Command;
|
||||
|
||||
use Symfony\Component\Console\Attribute\AsCommand;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use TYPO3\CMS\Core\Database\ConnectionPool;
|
||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||
use TYPO3\CMS\Scheduler\Domain\Repository\SchedulerTaskRepository;
|
||||
use TYPO3\CMS\Scheduler\Task\ExecuteSchedulableCommandTask;
|
||||
|
||||
#[AsCommand(name: 'ep:scheduler-tasks', description: 'Replaces the TYPO3 10 import tasks with scheduler tasks running the ep:* commands')]
|
||||
class SchedulerTasksCommand extends Command
|
||||
{
|
||||
/**
|
||||
* TYPO3 10 tasks TYPO3 13 cannot run: 5/10 ImportSnowreportTask/ImportDatesTask (classes gone), 6 ImportContingentsTask
|
||||
* (off since 2026-08), 16-21 one ep:groups-swiss task per house (API keys in the database), 25 garbage collection of
|
||||
* the retired tx_epevents_log. The core housekeeping tasks 13, 14, 22, 23 and 24 work unchanged.
|
||||
*/
|
||||
private const OLD_TASKS = [5, 6, 10, 16, 17, 18, 19, 20, 21, 25];
|
||||
|
||||
/**
|
||||
* Same schedules and groups as on TYPO3 10 (1 Datenimport, 2 Datenexport); ep:groups-swiss without arguments
|
||||
* exports all houses of groupsSwissHouses in secrets.php.
|
||||
*/
|
||||
private const NEW_TASKS = [
|
||||
['command' => 'ep:import-dates', 'cron' => '*/15 6-20 * * *', 'multiple' => true, 'group' => 1, 'description' => 'Reisedaten aus MyE&P importieren'],
|
||||
['command' => 'ep:import-snowreport', 'cron' => '0 6 * * *', 'multiple' => false, 'group' => 1, 'description' => 'Schneehöhen importieren'],
|
||||
['command' => 'ep:groups-swiss', 'cron' => '0 14 * * *', 'multiple' => false, 'group' => 2, 'description' => 'Belegung der Gruppenhäuser nach groups.swiss exportieren'],
|
||||
];
|
||||
|
||||
public function __construct(
|
||||
private readonly SchedulerTaskRepository $taskRepository,
|
||||
private readonly ConnectionPool $connectionPool,
|
||||
) {
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
protected function configure(): void
|
||||
{
|
||||
$this->addOption('dry-run', null, InputOption::VALUE_NONE, 'Only show what would change');
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int
|
||||
{
|
||||
$dryRun = (bool)$input->getOption('dry-run');
|
||||
|
||||
$existing = [];
|
||||
foreach ($this->connectionPool->getConnectionForTable('tx_scheduler_task')->select(['uid', 'serialized_task_object'], 'tx_scheduler_task', ['deleted' => 0])->fetchAllAssociative() as $row) {
|
||||
if (in_array((int)$row['uid'], self::OLD_TASKS, true)) {
|
||||
$output->writeln(sprintf('Delete TYPO3 10 task %d', $row['uid']));
|
||||
if (!$dryRun) {
|
||||
$this->taskRepository->remove((int)$row['uid']);
|
||||
}
|
||||
} elseif (preg_match('/s:20:"\0\*\0commandIdentifier";s:\d+:"([^"]+)"/', (string)$row['serialized_task_object'], $matches)) {
|
||||
$existing[$matches[1]] = (int)$row['uid'];
|
||||
}
|
||||
}
|
||||
|
||||
foreach (self::NEW_TASKS as $config) {
|
||||
if (isset($existing[$config['command']])) {
|
||||
$output->writeln(sprintf('Task for %s exists (%d)', $config['command'], $existing[$config['command']]));
|
||||
continue;
|
||||
}
|
||||
$output->writeln(sprintf('Add task for %s (%s)', $config['command'], $config['cron']));
|
||||
if ($dryRun) {
|
||||
continue;
|
||||
}
|
||||
$task = GeneralUtility::makeInstance(ExecuteSchedulableCommandTask::class);
|
||||
$task->setCommandIdentifier($config['command']);
|
||||
$task->setDescription($config['description']);
|
||||
$task->setTaskGroup($config['group']);
|
||||
$task->registerRecurringExecution($GLOBALS['EXEC_TIME'] - 1, 0, 0, $config['multiple'], $config['cron']);
|
||||
$this->taskRepository->add($task);
|
||||
}
|
||||
|
||||
return Command::SUCCESS;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user