*/ class ConfigCommand extends ContainerAwareCommand { protected function configure() { $this ->setName("thelia:config") ->setDescription("Manage configuration variables") ->addArgument( 'COMMAND', InputArgument::REQUIRED, 'Command : list, get, set, delete' ) ->addArgument( 'name', InputArgument::OPTIONAL, 'The variable name' ) ->addArgument( 'value', InputArgument::OPTIONAL, 'The variable value' ) ->addOption( 'secured', null, InputOption::VALUE_NONE, 'When setting a new variable tell variable is secured.' ) ->addOption( 'visible', null, InputOption::VALUE_NONE, 'When setting a new variable tell variable is visible.' ) ; } protected function execute(InputInterface $input, OutputInterface $output) { $command = $input->getArgument("COMMAND"); switch ($command) { case "list": $this->listConfig($input, $output); break; case "get": $this->getConfig($input, $output); break; case "set": $this->setConfig($input, $output); break; case "delete": $this->deleteConfig($input, $output); break; default: $output->writeln( "Unknown argument 'COMMAND' : list, get, set, delete" ); } } private function listConfig(InputInterface $input, OutputInterface $output) { $output->writeln([ "", "Variables list", "" ]); $vars = ConfigQuery::create() ->orderByName() ->find() ; $rows = []; /** @var Config $var */ foreach ($vars as $var) { $rows[] = [ $var->getName(), $var->getValue(), $var->getSecured() !== 0 ? "yes" : "no", $var->getHidden() !== 0 ? "yes" : "no" ]; } $table = new Table($output); $table ->setHeaders(['Name', 'Value', 'secured', 'hidden']) ->setRows($rows) ; $table->render(); } private function getConfig(InputInterface $input, OutputInterface $output) { $varName = $input->getArgument("name"); if (null === $varName) { $output->writeln( "Need argument 'name' for get command" ); return; } $var = ConfigQuery::create()->findOneByName($varName); $out = []; if (null === $var) { $out[] = sprintf( "Unknown variable '%s'", $varName ); } else { $out = [ sprintf('%12s: <%3$s>%s', "Name", $var->getName(), "info"), sprintf('%12s: <%3$s>%s', "Value", $var->getValue(), "info"), sprintf('%12s: <%3$s>%s', "Secured", $var->getSecured() ? "yes" : "no", "info"), sprintf('%12s: <%3$s>%s', "Hidden", $var->getHidden() ? "yes" : "no", "info"), sprintf('%12s: <%3$s>%s', "Title", $var->getTitle(), "info"), sprintf('%12s: <%3$s>%s', "Description", $var->getDescription(), "info"), ]; } $output->writeln($out); } private function setConfig(InputInterface $input, OutputInterface $output) { $varName = $input->getArgument("name"); $varValue = $input->getArgument("value"); if (null === $varName || null === $varValue) { $output->writeln( "Need argument 'name' and 'value' for set command" ); return; } ConfigQuery::write( $varName, $varValue, $input->getOption("secured"), !$input->getOption("visible") ); $output->writeln("Variable has been set"); } private function deleteConfig(InputInterface $input, OutputInterface $output) { $varName = $input->getArgument("name"); if (null === $varName) { $output->writeln( "Need argument 'name' for get command" ); return; } $var = ConfigQuery::create()->findOneByName($varName); if (null === $var) { $output->writeln( sprintf( "Unknown variable '%s'", $varName ) ); } else { $var->delete(); $output->writeln( sprintf( "Variable '%s' has been deleted", $varName ) ); } } }