diff options
Diffstat (limited to 'phpBB/phpbb/console/command/config')
-rw-r--r-- | phpBB/phpbb/console/command/config/command.php | 26 | ||||
-rw-r--r-- | phpBB/phpbb/console/command/config/delete.php | 63 | ||||
-rw-r--r-- | phpBB/phpbb/console/command/config/get.php | 72 | ||||
-rw-r--r-- | phpBB/phpbb/console/command/config/increment.php | 70 | ||||
-rw-r--r-- | phpBB/phpbb/console/command/config/set.php | 70 | ||||
-rw-r--r-- | phpBB/phpbb/console/command/config/set_atomic.php | 84 |
6 files changed, 385 insertions, 0 deletions
diff --git a/phpBB/phpbb/console/command/config/command.php b/phpBB/phpbb/console/command/config/command.php new file mode 100644 index 0000000000..f0ad5d4d19 --- /dev/null +++ b/phpBB/phpbb/console/command/config/command.php @@ -0,0 +1,26 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ +namespace phpbb\console\command\config; + +abstract class command extends \phpbb\console\command\command +{ + /** @var \phpbb\config\config */ + protected $config; + + function __construct(\phpbb\user $user, \phpbb\config\config $config) + { + $this->config = $config; + + parent::__construct($user); + } +} diff --git a/phpBB/phpbb/console/command/config/delete.php b/phpBB/phpbb/console/command/config/delete.php new file mode 100644 index 0000000000..efd276d7e3 --- /dev/null +++ b/phpBB/phpbb/console/command/config/delete.php @@ -0,0 +1,63 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ +namespace phpbb\console\command\config; + +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class delete extends command +{ + /** + * {@inheritdoc} + */ + protected function configure() + { + $this + ->setName('config:delete') + ->setDescription($this->user->lang('CLI_DESCRIPTION_DELETE_CONFIG')) + ->addArgument( + 'key', + InputArgument::REQUIRED, + $this->user->lang('CLI_CONFIG_OPTION_NAME') + ) + ; + } + + /** + * Executes the command config:delete. + * + * Removes a configuration option + * + * @param InputInterface $input An InputInterface instance + * @param OutputInterface $output An OutputInterface instance + * + * @return null + * @see \phpbb\config\config::delete() + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $key = $input->getArgument('key'); + + if (isset($this->config[$key])) + { + $this->config->delete($key); + + $output->writeln('<info>' . $this->user->lang('CLI_CONFIG_DELETE_SUCCESS', $key) . '</info>'); + } + else + { + $output->writeln('<error>' . $this->user->lang('CLI_CONFIG_NOT_EXISTS', $key) . '</error>'); + } + } +} diff --git a/phpBB/phpbb/console/command/config/get.php b/phpBB/phpbb/console/command/config/get.php new file mode 100644 index 0000000000..9c03b49a3d --- /dev/null +++ b/phpBB/phpbb/console/command/config/get.php @@ -0,0 +1,72 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ +namespace phpbb\console\command\config; + +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +class get extends command +{ + /** + * {@inheritdoc} + */ + protected function configure() + { + $this + ->setName('config:get') + ->setDescription($this->user->lang('CLI_DESCRIPTION_GET_CONFIG')) + ->addArgument( + 'key', + InputArgument::REQUIRED, + $this->user->lang('CLI_CONFIG_OPTION_NAME') + ) + ->addOption( + 'no-newline', + null, + InputOption::VALUE_NONE, + $this->user->lang('CLI_CONFIG_PRINT_WITHOUT_NEWLINE') + ) + ; + } + + /** + * Executes the command config:get. + * + * Retrieves a configuration value. + * + * @param InputInterface $input An InputInterface instance + * @param OutputInterface $output An OutputInterface instance + * + * @return null + * @see \phpbb\config\config::offsetGet() + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $key = $input->getArgument('key'); + + if (isset($this->config[$key]) && $input->getOption('no-newline')) + { + $output->write($this->config[$key]); + } + else if (isset($this->config[$key])) + { + $output->writeln($this->config[$key]); + } + else + { + $output->writeln('<error>' . $this->user->lang('CLI_CONFIG_NOT_EXISTS', $key) . '</error>'); + } + } +} diff --git a/phpBB/phpbb/console/command/config/increment.php b/phpBB/phpbb/console/command/config/increment.php new file mode 100644 index 0000000000..b4d7438b66 --- /dev/null +++ b/phpBB/phpbb/console/command/config/increment.php @@ -0,0 +1,70 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ +namespace phpbb\console\command\config; + +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +class increment extends command +{ + /** + * {@inheritdoc} + */ + protected function configure() + { + $this + ->setName('config:increment') + ->setDescription($this->user->lang('CLI_DESCRIPTION_INCREMENT_CONFIG')) + ->addArgument( + 'key', + InputArgument::REQUIRED, + $this->user->lang('CLI_CONFIG_OPTION_NAME') + ) + ->addArgument( + 'increment', + InputArgument::REQUIRED, + $this->user->lang('CLI_CONFIG_INCREMENT_BY') + ) + ->addOption( + 'dynamic', + 'd', + InputOption::VALUE_NONE, + $this->user->lang('CLI_CONFIG_CANNOT_CACHED') + ) + ; + } + + /** + * Executes the command config:increment. + * + * Increments an integer configuration value. + * + * @param InputInterface $input An InputInterface instance + * @param OutputInterface $output An OutputInterface instance + * + * @return null + * @see \phpbb\config\config::increment() + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $key = $input->getArgument('key'); + $increment = $input->getArgument('increment'); + $use_cache = !$input->getOption('dynamic'); + + $this->config->increment($key, $increment, $use_cache); + + $output->writeln('<info>' . $this->user->lang('CLI_CONFIG_INCREMENT_SUCCESS', $key) . '</info>'); + } +} diff --git a/phpBB/phpbb/console/command/config/set.php b/phpBB/phpbb/console/command/config/set.php new file mode 100644 index 0000000000..695de31013 --- /dev/null +++ b/phpBB/phpbb/console/command/config/set.php @@ -0,0 +1,70 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ +namespace phpbb\console\command\config; + +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +class set extends command +{ + /** + * {@inheritdoc} + */ + protected function configure() + { + $this + ->setName('config:set') + ->setDescription($this->user->lang('CLI_DESCRIPTION_SET_CONFIG')) + ->addArgument( + 'key', + InputArgument::REQUIRED, + $this->user->lang('CLI_CONFIG_OPTION_NAME') + ) + ->addArgument( + 'value', + InputArgument::REQUIRED, + $this->user->lang('CLI_CONFIG_NEW') + ) + ->addOption( + 'dynamic', + 'd', + InputOption::VALUE_NONE, + $this->user->lang('CLI_CONFIG_CANNOT_CACHED') + ) + ; + } + + /** + * Executes the command config:set. + * + * Sets a configuration option's value. + * + * @param InputInterface $input An InputInterface instance + * @param OutputInterface $output An OutputInterface instance + * + * @return null + * @see \phpbb\config\config::set() + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $key = $input->getArgument('key'); + $value = $input->getArgument('value'); + $use_cache = !$input->getOption('dynamic'); + + $this->config->set($key, $value, $use_cache); + + $output->writeln('<info>' . $this->user->lang('CLI_CONFIG_SET_SUCCESS', $key) . '</info>'); + } +} diff --git a/phpBB/phpbb/console/command/config/set_atomic.php b/phpBB/phpbb/console/command/config/set_atomic.php new file mode 100644 index 0000000000..e8c69a0885 --- /dev/null +++ b/phpBB/phpbb/console/command/config/set_atomic.php @@ -0,0 +1,84 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ +namespace phpbb\console\command\config; + +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +class set_atomic extends command +{ + /** + * {@inheritdoc} + */ + protected function configure() + { + $this + ->setName('config:set-atomic') + ->setDescription($this->user->lang('CLI_DESCRIPTION_SET_ATOMIC_CONFIG')) + ->addArgument( + 'key', + InputArgument::REQUIRED, + $this->user->lang('CLI_CONFIG_OPTION_NAME') + ) + ->addArgument( + 'old', + InputArgument::REQUIRED, + $this->user->lang('CLI_CONFIG_CURRENT') + ) + ->addArgument( + 'new', + InputArgument::REQUIRED, + $this->user->lang('CLI_CONFIG_NEW') + ) + ->addOption( + 'dynamic', + 'd', + InputOption::VALUE_NONE, + $this->user->lang('CLI_CONFIG_CANNOT_CACHED') + ) + ; + } + + /** + * Executes the command config:set-atomic. + * + * Sets a configuration option's value only if the old_value matches the + * current configuration value or the configuration value does not exist yet. + * + * @param InputInterface $input An InputInterface instance + * @param OutputInterface $output An OutputInterface instance + * + * @return bool True if the value was changed, false otherwise. + * @see \phpbb\config\config::set_atomic() + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $key = $input->getArgument('key'); + $old_value = $input->getArgument('old'); + $new_value = $input->getArgument('new'); + $use_cache = !$input->getOption('dynamic'); + + if ($this->config->set_atomic($key, $old_value, $new_value, $use_cache)) + { + $output->writeln('<info>' . $this->user->lang('CLI_CONFIG_SET_SUCCESS', $key) . '</info>'); + return 0; + } + else + { + $output->writeln('<error>' . $this->user->lang('CLI_CONFIG_SET_FAILURE', $key) . '</error>'); + return 1; + } + } +} |