diff options
Diffstat (limited to 'phpBB/phpbb/console')
| -rw-r--r-- | phpBB/phpbb/console/application.php | 80 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/cache/purge.php | 24 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/config/delete.php | 15 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/config/get.php | 16 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/config/increment.php | 14 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/config/set.php | 14 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/config/set_atomic.php | 15 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/cron/cron_list.php | 115 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/cron/run.php | 9 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/db/migrate.php | 2 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/dev/migration_tips.php | 64 | 
11 files changed, 358 insertions, 10 deletions
| diff --git a/phpBB/phpbb/console/application.php b/phpBB/phpbb/console/application.php index da2bfbb49a..b1f0635913 100644 --- a/phpBB/phpbb/console/application.php +++ b/phpBB/phpbb/console/application.php @@ -13,15 +13,93 @@  namespace phpbb\console; +use Symfony\Component\Console\Shell; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface;  use Symfony\Component\DependencyInjection\TaggedContainerInterface;  class application extends \Symfony\Component\Console\Application  { -	function register_container_commands(TaggedContainerInterface $container, $tag = 'console.command') +	/** +	* @var bool Indicates whether or not we are in a shell +	*/ +	protected $in_shell = false; + +	/** +	* @var \phpbb\user User object +	*/ +	protected $user; + +	/** +	* @param string			$name		The name of the application +	* @param string			$version	The version of the application +	* @param \phpbb\user	$user		The user which runs the application (used for translation) +	*/ +	public function __construct($name, $version, \phpbb\user $user) +	{ +		parent::__construct($name, $version); + +		$this->user = $user; +	} + +	/** +	* Gets the help message. +	* +	* It's a hack of the default help message to display the --shell +	* option only for the application and not for all the commands. +	* +	* @return string A help message. +	*/ +	public function getHelp() +	{ +		// If we are already in a shell +		// we do not want to have the --shell option available +		if ($this->in_shell) +		{ +			return parent::getHelp(); +		} + +		$this->getDefinition()->addOption(new InputOption( +			'--shell', +			'-s', +			InputOption::VALUE_NONE, +			$this->user->lang('CLI_DESCRIPTION_OPTION_SHELL') +		)); + +		return parent::getHelp(); +	} + +	/** +	* Register a set of commands from the container +	* +	* @param TaggedContainerInterface	$container	The container +	* @param string						$tag		The tag used to register the commands +	*/ +	public function register_container_commands(TaggedContainerInterface $container, $tag = 'console.command')  	{  		foreach($container->findTaggedServiceIds($tag) as $id => $void)  		{  			$this->add($container->get($id));  		}  	} + +	/** +	* {@inheritdoc} +	*/ +	public function doRun(InputInterface $input, OutputInterface $output) +	{ +		// Run a shell if the --shell (or -s) option is set and if no command name is specified +		// Also, we do not want to have the --shell option available if we are already in a shell +		if (!$this->in_shell && $this->getCommandName($input) === null && $input->hasParameterOption(array('--shell', '-s'))) +		{ +			$shell = new Shell($this); +			$this->in_shell = true; +			$shell->run(); + +			return 0; +		} + +		return parent::doRun($input, $output); +	}  } diff --git a/phpBB/phpbb/console/command/cache/purge.php b/phpBB/phpbb/console/command/cache/purge.php index 1e2adaeb4d..379d2aa1ca 100644 --- a/phpBB/phpbb/console/command/cache/purge.php +++ b/phpBB/phpbb/console/command/cache/purge.php @@ -35,6 +35,16 @@ class purge extends \phpbb\console\command\command  	/** @var \phpbb\config\config */  	protected $config; +	/** +	* Constructor +	* +	* @param \phpbb\cache\driver\driver_interface	$cache	Cache instance +	* @param \phpbb\db\driver\driver_interface		$db		Database connection +	* @param \phpbb\auth\auth						$auth	Auth instance +	* @param \phpbb\log\log							$log	Logger instance +	* @param \phpbb\user							$user	User instance +	* @param \phpbb\config\config					$config	Config instance +	*/  	public function __construct(\phpbb\cache\driver\driver_interface $cache, \phpbb\db\driver\driver_interface $db, \phpbb\auth\auth $auth, \phpbb\log\log $log, \phpbb\user $user, \phpbb\config\config $config)  	{  		$this->cache = $cache; @@ -43,10 +53,12 @@ class purge extends \phpbb\console\command\command  		$this->log = $log;  		$this->user = $user;  		$this->config = $config; -		$this->user->add_lang(array('acp/common'));  		parent::__construct();  	} +	/** +	* {@inheritdoc} +	*/  	protected function configure()  	{  		$this @@ -55,6 +67,16 @@ class purge extends \phpbb\console\command\command  		;  	} +	/** +	* Executes the command cache:purge. +	* +	* Purge the cache (including permissions) and increment the asset_version number +	* +	* @param InputInterface  $input  An InputInterface instance +	* @param OutputInterface $output An OutputInterface instance +	* +	* @return null +	*/  	protected function execute(InputInterface $input, OutputInterface $output)  	{  		$this->config->increment('assets_version', 1); diff --git a/phpBB/phpbb/console/command/config/delete.php b/phpBB/phpbb/console/command/config/delete.php index e29afdbf82..1310bb18b4 100644 --- a/phpBB/phpbb/console/command/config/delete.php +++ b/phpBB/phpbb/console/command/config/delete.php @@ -14,11 +14,13 @@ 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 delete extends command  { +	/** +	* {@inheritdoc} +	*/  	protected function configure()  	{  		$this @@ -32,6 +34,17 @@ class delete extends command  		;  	} +	/** +	* 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'); diff --git a/phpBB/phpbb/console/command/config/get.php b/phpBB/phpbb/console/command/config/get.php index 0ed2a12608..ee8c65110e 100644 --- a/phpBB/phpbb/console/command/config/get.php +++ b/phpBB/phpbb/console/command/config/get.php @@ -19,6 +19,9 @@ use Symfony\Component\Console\Output\OutputInterface;  class get extends command  { +	/** +	* {@inheritdoc} +	*/  	protected function configure()  	{  		$this @@ -38,6 +41,17 @@ class get extends command  		;  	} +	/** +	* 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'); @@ -46,7 +60,7 @@ class get extends command  		{  			$output->write($this->config[$key]);  		} -		elseif (isset($this->config[$key])) +		else if (isset($this->config[$key]))  		{  			$output->writeln($this->config[$key]);  		} diff --git a/phpBB/phpbb/console/command/config/increment.php b/phpBB/phpbb/console/command/config/increment.php index 64b5d42b9d..21f0660e61 100644 --- a/phpBB/phpbb/console/command/config/increment.php +++ b/phpBB/phpbb/console/command/config/increment.php @@ -19,6 +19,9 @@ use Symfony\Component\Console\Output\OutputInterface;  class increment extends command  { +	/** +	* {@inheritdoc} +	*/  	protected function configure()  	{  		$this @@ -43,6 +46,17 @@ class increment extends command  		;  	} +	/** +	* 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'); diff --git a/phpBB/phpbb/console/command/config/set.php b/phpBB/phpbb/console/command/config/set.php index fce1edb93e..587b7fb0de 100644 --- a/phpBB/phpbb/console/command/config/set.php +++ b/phpBB/phpbb/console/command/config/set.php @@ -19,6 +19,9 @@ use Symfony\Component\Console\Output\OutputInterface;  class set extends command  { +	/** +	* {@inheritdoc} +	*/  	protected function configure()  	{  		$this @@ -43,6 +46,17 @@ class set extends command  		;  	} +	/** +	* 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'); diff --git a/phpBB/phpbb/console/command/config/set_atomic.php b/phpBB/phpbb/console/command/config/set_atomic.php index 4df2d90722..a7a52155f9 100644 --- a/phpBB/phpbb/console/command/config/set_atomic.php +++ b/phpBB/phpbb/console/command/config/set_atomic.php @@ -19,6 +19,9 @@ use Symfony\Component\Console\Output\OutputInterface;  class set_atomic extends command  { +	/** +	* {@inheritdoc} +	*/  	protected function configure()  	{  		$this @@ -48,6 +51,18 @@ class set_atomic extends command  		;  	} +	/** +	* 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'); diff --git a/phpBB/phpbb/console/command/cron/cron_list.php b/phpBB/phpbb/console/command/cron/cron_list.php new file mode 100644 index 0000000000..4f4228d9b3 --- /dev/null +++ b/phpBB/phpbb/console/command/cron/cron_list.php @@ -0,0 +1,115 @@ +<?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\cron; + +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class cron_list extends \phpbb\console\command\command +{ +	/** @var \phpbb\cron\manager */ +	protected $cron_manager; + +	/** @var \phpbb\user */ +	protected $user; + +	/** +	* Constructor +	* +	* @param \phpbb\cron\manager	$cron_manager	Cron manager +	* @param \phpbb\user			$user			User instance +	*/ +	public function __construct(\phpbb\cron\manager $cron_manager, \phpbb\user $user) +	{ +		$this->cron_manager = $cron_manager; +		$this->user = $user; +		parent::__construct(); +	} + +	/** +	* {@inheritdoc} +	*/ +	protected function configure() +	{ +		$this +			->setName('cron:list') +			->setDescription($this->user->lang('CLI_DESCRIPTION_CRON_LIST')) +		; +	} + +	/** +	* Executes the command cron:list. +	* +	* Prints a list of ready and unready cron jobs. +	* +	* @param InputInterface  $input  An InputInterface instance +	* @param OutputInterface $output An OutputInterface instance +	* +	* @return null +	*/ +	protected function execute(InputInterface $input, OutputInterface $output) +	{ +		$tasks = $this->cron_manager->get_tasks(); + +		if (empty($tasks)) +		{ +			$output->writeln($this->user->lang('CRON_NO_TASKS')); +			return; +		} + +		$ready_tasks = array(); +		$not_ready_tasks = array(); +		foreach ($tasks as $task) +		{ +			if ($task->is_ready()) +			{ +				$ready_tasks[] = $task; +			} +			else +			{ +				$not_ready_tasks[] = $task; +			} +		} + +		if (!empty($ready_tasks)) +		{ +			$output->writeln('<info>' . $this->user->lang('TASKS_READY') . '</info>'); +			$this->print_tasks_names($ready_tasks, $output); +		} + +		if (!empty($ready_tasks) && !empty($not_ready_tasks)) +		{ +			$output->writeln(''); +		} + +		if (!empty($not_ready_tasks)) +		{ +			$output->writeln('<info>' . $this->user->lang('TASKS_NOT_READY') . '</info>'); +			$this->print_tasks_names($not_ready_tasks, $output); +		} +	} + +	/** +	* Print a list of cron jobs +	* +	* @param array				$tasks A list of task to display +	* @param OutputInterface	$output An OutputInterface instance +	*/ +	protected function print_tasks_names(array $tasks, OutputInterface $output) +	{ +		foreach ($tasks as $task) +		{ +			$output->writeln($task->get_name()); +		} +	} +} diff --git a/phpBB/phpbb/console/command/cron/run.php b/phpBB/phpbb/console/command/cron/run.php index 1029a2e085..0b365ece67 100644 --- a/phpBB/phpbb/console/command/cron/run.php +++ b/phpBB/phpbb/console/command/cron/run.php @@ -3,7 +3,7 @@  *  * This file is part of the phpBB Forum Software package.  * -* @copyright (c) phpBB Limited +* @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 @@ -15,7 +15,6 @@ namespace phpbb\console\command\cron;  use Symfony\Component\Console\Input\InputInterface;  use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputOption;  use Symfony\Component\Console\Output\OutputInterface;  class run extends \phpbb\console\command\command @@ -35,7 +34,7 @@ class run extends \phpbb\console\command\command  	* @param \phpbb\cron\manager $cron_manager The cron manager containing  	*		the cron tasks to be executed.  	* @param \phpbb\lock\db $lock_db The lock for accessing database. -	* @param \phobb\user $user The user object (used to get language information) +	* @param \phpbb\user $user The user object (used to get language information)  	*/  	public function __construct(\phpbb\cron\manager $cron_manager, \phpbb\lock\db $lock_db, \phpbb\user $user)  	{ @@ -102,7 +101,7 @@ class run extends \phpbb\console\command\command  		}  	} -	/* +	/**  	* Executes all ready cron tasks.  	*  	* If verbose mode is set, an info message will be printed if there is no task to @@ -140,7 +139,7 @@ class run extends \phpbb\console\command\command  		return 0;  	} -	/* +	/**  	* Executes a given cron task, if it is ready.  	*  	* If there is a task whose name matches $task_name, it is run and 0 is returned. diff --git a/phpBB/phpbb/console/command/db/migrate.php b/phpBB/phpbb/console/command/db/migrate.php index 0f74664095..2abeaf5268 100644 --- a/phpBB/phpbb/console/command/db/migrate.php +++ b/phpBB/phpbb/console/command/db/migrate.php @@ -43,7 +43,7 @@ class migrate extends \phpbb\console\command\command  		$this->cache = $cache;  		$this->log = $log;  		$this->user = $user; -		$this->user->add_lang(array('common', 'acp/common', 'install', 'migrator')); +		$this->user->add_lang(array('common', 'install', 'migrator'));  		parent::__construct();  	} diff --git a/phpBB/phpbb/console/command/dev/migration_tips.php b/phpBB/phpbb/console/command/dev/migration_tips.php new file mode 100644 index 0000000000..c2f61568ea --- /dev/null +++ b/phpBB/phpbb/console/command/dev/migration_tips.php @@ -0,0 +1,64 @@ +<?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\dev; + +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class migration_tips extends \phpbb\console\command\command +{ +	/** @var \phpbb\extension\manager */ +	protected $extension_manager; + +	function __construct(\phpbb\extension\manager $extension_manager) +	{ +		$this->extension_manager = $extension_manager; +		parent::__construct(); +	} + +	protected function configure() +	{ +		$this +			->setName('dev:migration-tips') +			->setDescription('Finds migrations that are not depended on.') +		; +	} + +	protected function execute(InputInterface $input, OutputInterface $output) +	{ +		$migrations = $this->extension_manager->get_finder() +			->set_extensions(array()) +			->core_path('phpbb/db/migration/data/') +			->get_classes(); +		$tips = $migrations; + +		foreach ($migrations as $migration_class) +		{ +			foreach ($migration_class::depends_on() as $dependency) +			{ +				$tips_key = array_search($dependency, $tips); +				if ($tips_key !== false) +				{ +					unset($tips[$tips_key]); +				} +			} +		} + +		$output->writeln("\t\tarray("); +		foreach ($tips as $migration) +		{ +			$output->writeln("\t\t\t'{$migration}',"); +		} +		$output->writeln("\t\t);"); +	} +} | 
