setDescription('Mount databox') ->addArgument('databox', InputArgument::REQUIRED, 'Database name in Mysql', null) ->addArgument('user_id', InputArgument::REQUIRED, 'The Id of user owner (this account became full admin on this databox)', null) ->addOption('db-host', null, InputOption::VALUE_OPTIONAL, 'MySQL server host') ->addOption('db-port', null, InputOption::VALUE_OPTIONAL, 'MySQL server port') ->addOption('db-user', null, InputOption::VALUE_OPTIONAL, 'MySQL server user') ->addOption('db-password', null, InputOption::VALUE_OPTIONAL, 'MySQL server password') ; return $this; } protected function doExecute(InputInterface $input, OutputInterface $output) { try { /** @var UserRepository $userRepository */ $userRepository = $this->container['repo.users']; $owner = $userRepository->find($input->getArgument('user_id')); if (empty($owner)) { $output->writeln('User not found ! '); return; } if ($owner->isGuest() || !$this->container->getAclForUser($owner)->is_admin()) { $output->writeln('Admin role is required for the owner ! '); return; } $databoxName = $input->getArgument('databox'); $dialog = $this->getHelperSet()->get('dialog'); $connectionSettings = new DataboxConnectionSettings( $input->getOption('db-host')?:$this->container['conf']->get(['main', 'database', 'host']), $input->getOption('db-port')?:$this->container['conf']->get(['main', 'database', 'port']), $input->getOption('db-user')?:$this->container['conf']->get(['main', 'database', 'user']), $input->getOption('db-password')?:$this->container['conf']->get(['main', 'database', 'password']) ); do { $continue = mb_strtolower($dialog->ask($output, ' Do you want really mount this databox? (y/N)', 'N')); } while ( ! in_array($continue, ['y', 'n'])); if ($continue !== 'y') { $output->writeln('Aborting !'); return; } /** @var DataboxService $databoxService */ $databoxService = $this->container['databox.service']; \phrasea::clear_sbas_params($this->container); $databox = $databoxService->mountDatabox( $databoxName, $owner, $connectionSettings ); $output->writeln("\n\tData-Box ID ".$databox->get_sbas_id()." mounted successful !\n"); } catch (\Exception $e) { $output->writeln('Mount databox failed :'.$e->getMessage().''); } return 0; } }