Spaces:
No application file
No application file
| namespace Mautic\CoreBundle\Update\Step; | |
| use Mautic\CoreBundle\Exception\UpdateFailedException; | |
| use Symfony\Bundle\FrameworkBundle\Console\Application; | |
| use Symfony\Component\Console\Helper\ProgressBar; | |
| use Symfony\Component\Console\Input\ArgvInput; | |
| use Symfony\Component\Console\Input\InputInterface; | |
| use Symfony\Component\Console\Output\NullOutput; | |
| use Symfony\Component\Console\Output\OutputInterface; | |
| use Symfony\Component\DependencyInjection\ContainerInterface; | |
| use Symfony\Contracts\Translation\TranslatorInterface; | |
| final class UpdateSchemaStep implements StepInterface | |
| { | |
| private ?object $kernel; | |
| public function __construct( | |
| private TranslatorInterface $translator, | |
| ContainerInterface $container | |
| ) { | |
| $this->kernel = $container->get('kernel'); | |
| } | |
| public function getOrder(): int | |
| { | |
| return 50; | |
| } | |
| public function shouldExecuteInFinalStage(): bool | |
| { | |
| return true; | |
| } | |
| /** | |
| * @throws UpdateFailedException | |
| */ | |
| public function execute(ProgressBar $progressBar, InputInterface $input, OutputInterface $output): void | |
| { | |
| // Migrate the database to the current version | |
| $progressBar->setMessage($this->translator->trans('mautic.core.update.migrating.database.schema')); | |
| $progressBar->advance(); | |
| $migrationApplication = new Application($this->kernel); | |
| $migrationApplication->setAutoExit(false); | |
| $migrationCommandArgs = new ArgvInput(['console', 'doctrine:migrations:migrate', '--quiet', '--no-interaction']); | |
| $migrationCommandArgs->setInteractive(false); | |
| $migrateExitCode = $migrationApplication->run($migrationCommandArgs, new NullOutput()); | |
| // Output the error (if exists) from the migrate command after we've finished the progress bar | |
| if (0 !== $migrateExitCode) { | |
| throw new UpdateFailedException($this->translator->trans('mautic.core.update.error_performing_migration')); | |
| } | |
| } | |
| } | |