mirror of
https://github.com/FriendsOfTYPO3/tea.git
synced 2024-11-22 18:56:14 +01:00
1af328f27b
Related #1120
90 lines
3 KiB
PHP
90 lines
3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace TTN\Tea\Command;
|
|
|
|
use Symfony\Component\Console\Application;
|
|
use Symfony\Component\Console\Command\Command;
|
|
use Symfony\Component\Console\Input\InputArgument;
|
|
use Symfony\Component\Console\Input\InputInterface;
|
|
use Symfony\Component\Console\Input\InputOption;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
use Symfony\Component\Console\Style\SymfonyStyle;
|
|
use TYPO3\CMS\Backend\Command\ProgressListener\ReferenceIndexProgressListener;
|
|
use TYPO3\CMS\Backend\Command\ReferenceIndexUpdateCommand;
|
|
use TYPO3\CMS\Core\Core\Bootstrap;
|
|
use TYPO3\CMS\Core\Database\Connection;
|
|
use TYPO3\CMS\Core\Database\ConnectionPool;
|
|
use TYPO3\CMS\Core\Database\ReferenceIndex;
|
|
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
|
|
|
/*
|
|
* Command to create test data for the tea extension.
|
|
*/
|
|
final class CreateTestDataCommand extends Command
|
|
{
|
|
/**
|
|
* @var list<array{title: non-empty-string, description: non-empty-string, sys_language_uid: int<0, max>}>
|
|
*/
|
|
protected array $teaData = [
|
|
[
|
|
'title' => 'Darjeeling',
|
|
'description' => 'I love that tea!',
|
|
'sys_language_uid' => 0,
|
|
],
|
|
[
|
|
'title' => 'Earl Grey',
|
|
'description' => 'A nice tea!',
|
|
'sys_language_uid' => 0,
|
|
],
|
|
];
|
|
|
|
protected function configure(): void
|
|
{
|
|
$this
|
|
->setHelp('Create test data for the tea extension in an already existing page (sysfolder).')
|
|
->addArgument(
|
|
'pageUid',
|
|
InputArgument::REQUIRED,
|
|
'Existing sysfolder page id.'
|
|
)
|
|
->addOption(
|
|
'delete-data-before',
|
|
'd',
|
|
InputOption::VALUE_NONE,
|
|
'Delete all tea data in the defined pid before creating new data.'
|
|
);
|
|
}
|
|
|
|
protected function execute(InputInterface $input, OutputInterface $output): int
|
|
{
|
|
$pageUid = (int)$input->getArgument('pageUid') ?? 0;
|
|
$deleteDataBefore = $input->getOption('delete-data-before') ?? false;
|
|
\assert(\is_bool($deleteDataBefore));
|
|
$table = 'tx_tea_domain_model_tea';
|
|
$connectionForTable = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($table);
|
|
|
|
if ($deleteDataBefore) {
|
|
$query = $connectionForTable;
|
|
$query->delete($table, ['pid' => $pageUid], [Connection::PARAM_INT]);
|
|
$output->writeln(sprintf('Existing data in page %s deleted.', $pageUid));
|
|
}
|
|
|
|
$query = $connectionForTable;
|
|
foreach ($this->teaData as $item) {
|
|
$item = ['pid' => $pageUid, ...$item];
|
|
$query->insert(
|
|
$table,
|
|
$item
|
|
);
|
|
}
|
|
$output->writeln(sprintf('Test data in page %s created.', $pageUid));
|
|
|
|
$referenceIndex = GeneralUtility::makeInstance(ReferenceIndex::class);
|
|
$referenceIndex->updateIndex(0);
|
|
$output->writeln('Reference index updated.');
|
|
|
|
return Command::SUCCESS;
|
|
}
|
|
}
|