Spaces:
No application file
No application file
File size: 3,853 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
<?php
namespace Mautic\CoreBundle\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Question\ConfirmationQuestion;
use Symfony\Contracts\Translation\TranslatorInterface;
/**
* CLI Command to install Mautic sample data.
*/
class InstallDataCommand extends Command
{
public function __construct(
private TranslatorInterface $translator
) {
parent::__construct();
}
protected function configure()
{
$this->setName('mautic:install:data')
->setDefinition([
new InputOption(
'force', null, InputOption::VALUE_NONE, 'Bypasses the verification check.'
),
])
->setHelp(<<<'EOT'
The <info>%command.name%</info> command re-installs Mautic with sample data.
<info>php %command.full_name%</info>
You can optionally specify to bypass the verification check with the --force option:
<info>php %command.full_name% --force</info>
EOT
);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$options = $input->getOptions();
$force = $options['force'];
if (!$force) {
$helper = $this->getHelper('question');
$questionString = $this->translator->trans('mautic.core.command.install_data_confirm').' (y = '.$this->translator->trans('mautic.core.form.yes').', n = '.$this->translator->trans('mautic.core.form.no').'): ';
$question = new ConfirmationQuestion($questionString, false);
if (!$helper->ask($input, $output, $question)) {
return Command::SUCCESS;
}
}
$env = $options['env'];
// TODO - This should respect the --quiet flag
$verbosity = $output->getVerbosity();
$output->setVerbosity(OutputInterface::VERBOSITY_QUIET);
// due to foreign restraint and truncate issues with doctrine, the whole schema must be dropped and recreated
$command = $this->getApplication()->find('doctrine:schema:drop');
$input = new ArrayInput([
'command' => 'doctrine:schema:drop',
'--force' => true,
'--env' => $env,
'--quiet' => true,
]);
$returnCode = $command->run($input, $output);
if (0 !== $returnCode) {
return (int) $returnCode;
}
// recreate the database
$command = $this->getApplication()->find('doctrine:schema:create');
$input = new ArrayInput([
'command' => 'doctrine:schema:create',
'--env' => $env,
'--quiet' => true,
]);
$returnCode = $command->run($input, $output);
if (0 !== $returnCode) {
return (int) $returnCode;
}
// now populate the tables with fixture
$command = $this->getApplication()->find('doctrine:fixtures:load');
$args = [
'command' => 'doctrine:fixtures:load',
'--append' => true,
'--env' => $env,
'--quiet' => true,
'--group' => ['group_mautic_install_data'],
];
$input = new ArrayInput($args);
$returnCode = $command->run($input, $output);
if (0 !== $returnCode) {
return (int) $returnCode;
}
$output->setVerbosity($verbosity);
$output->writeln(
$this->translator->trans('mautic.core.command.install_data_success')
);
return Command::SUCCESS;
}
protected static $defaultDescription = 'Installs Mautic with sample data';
}
|