diff options
Diffstat (limited to 'phpBB/phpbb/console/command')
| -rw-r--r-- | phpBB/phpbb/console/command/command.php | 14 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/config/command.php | 22 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/config/delete.php | 46 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/config/get.php | 54 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/config/increment.php | 52 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/config/set.php | 52 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/config/set_atomic.php | 65 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/extension/command.php | 22 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/extension/disable.php | 47 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/extension/enable.php | 47 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/extension/purge.php | 47 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/extension/show.php | 58 | ||||
| -rw-r--r-- | phpBB/phpbb/console/command/fixup/recalculate_email_hash.php | 71 | 
13 files changed, 597 insertions, 0 deletions
| diff --git a/phpBB/phpbb/console/command/command.php b/phpBB/phpbb/console/command/command.php new file mode 100644 index 0000000000..6abbdd203c --- /dev/null +++ b/phpBB/phpbb/console/command/command.php @@ -0,0 +1,14 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +namespace phpbb\console\command; + +abstract class command extends \Symfony\Component\Console\Command\Command +{ +} diff --git a/phpBB/phpbb/console/command/config/command.php b/phpBB/phpbb/console/command/config/command.php new file mode 100644 index 0000000000..b105bc826d --- /dev/null +++ b/phpBB/phpbb/console/command/config/command.php @@ -0,0 +1,22 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ +namespace phpbb\console\command\config; + +abstract class command extends \phpbb\console\command\command +{ +	/** @var \phpbb\config\config */ +	protected $config; + +	function __construct(\phpbb\config\config $config) +	{ +		$this->config = $config; + +		parent::__construct(); +	} +} diff --git a/phpBB/phpbb/console/command/config/delete.php b/phpBB/phpbb/console/command/config/delete.php new file mode 100644 index 0000000000..9a2d00561d --- /dev/null +++ b/phpBB/phpbb/console/command/config/delete.php @@ -0,0 +1,46 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ +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 +{ +	protected function configure() +	{ +		$this +			->setName('config:delete') +			->setDescription('Deletes a configuration option') +			->addArgument( +				'key', +				InputArgument::REQUIRED, +				"The configuration option's name" +			) +		; +	} + +	protected function execute(InputInterface $input, OutputInterface $output) +	{ +		$key = $input->getArgument('key'); + +		if (isset($this->config[$key])) +		{ +			$this->config->delete($key); + +			$output->writeln("<info>Successfully deleted config $key</info>"); +		} +		else +		{ +			$output->writeln("<error>Config $key does not exist</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..275c82b53f --- /dev/null +++ b/phpBB/phpbb/console/command/config/get.php @@ -0,0 +1,54 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ +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 +{ +	protected function configure() +	{ +		$this +			->setName('config:get') +			->setDescription("Gets a configuration option's value") +			->addArgument( +				'key', +				InputArgument::REQUIRED, +				"The configuration option's name" +			) +			->addOption( +				'no-newline', +				null, +				InputOption::VALUE_NONE, +				'Set this option if the value should be printed without a new line at the end.' +			) +		; +	} + +	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]); +		} +		elseif (isset($this->config[$key])) +		{ +			$output->writeln($this->config[$key]); +		} +		else +		{ +			$output->writeln("<error>Could not get config $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..bc6b63c6ff --- /dev/null +++ b/phpBB/phpbb/console/command/config/increment.php @@ -0,0 +1,52 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ +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 +{ +	protected function configure() +	{ +		$this +			->setName('config:increment') +			->setDescription("Increments a configuration option's value") +			->addArgument( +				'key', +				InputArgument::REQUIRED, +				"The configuration option's name" +			) +			->addArgument( +				'increment', +				InputArgument::REQUIRED, +				'Amount to increment by' +			) +			->addOption( +				'dynamic', +				'd', +				InputOption::VALUE_NONE, +				'Set this option if the configuration option changes too frequently to be efficiently cached.' +			) +		; +	} + +	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>Successfully incremented config $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..9d471a96ad --- /dev/null +++ b/phpBB/phpbb/console/command/config/set.php @@ -0,0 +1,52 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ +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 +{ +	protected function configure() +	{ +		$this +			->setName('config:set') +			->setDescription("Sets a configuration option's value") +			->addArgument( +				'key', +				InputArgument::REQUIRED, +				"The configuration option's name" +			) +			->addArgument( +				'value', +				InputArgument::REQUIRED, +				'New configuration value, use 0 and 1 to specify boolean values' +			) +			->addOption( +				'dynamic', +				'd', +				InputOption::VALUE_NONE, +				'Set this option if the configuration option changes too frequently to be efficiently cached.' +			) +		; +	} + +	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>Successfully set config $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..03e7a60210 --- /dev/null +++ b/phpBB/phpbb/console/command/config/set_atomic.php @@ -0,0 +1,65 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ +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 +{ +	protected function configure() +	{ +		$this +			->setName('config:set-atomic') +			->setDescription("Sets a configuration option's value only if the old matches the current value.") +			->addArgument( +				'key', +				InputArgument::REQUIRED, +				"The configuration option's name" +			) +			->addArgument( +				'old', +				InputArgument::REQUIRED, +				'Current configuration value, use 0 and 1 to specify boolean values' +			) +			->addArgument( +				'new', +				InputArgument::REQUIRED, +				'New configuration value, use 0 and 1 to specify boolean values' +			) +			->addOption( +				'dynamic', +				'd', +				InputOption::VALUE_NONE, +				'Set this option if the configuration option changes too frequently to be efficiently cached.' +			) +		; +	} + +	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>Successfully set config $key</info>"); +			return 0; +		} +		else +		{ +			$output->writeln("<error>Could not set config $key</error>"); +			return 1; +		} +	} +} diff --git a/phpBB/phpbb/console/command/extension/command.php b/phpBB/phpbb/console/command/extension/command.php new file mode 100644 index 0000000000..edde7ce2e2 --- /dev/null +++ b/phpBB/phpbb/console/command/extension/command.php @@ -0,0 +1,22 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ +namespace phpbb\console\command\extension; + +abstract class command extends \phpbb\console\command\command +{ +	/** @var \phpbb\extension\manager */ +	protected $manager; + +	function __construct(\phpbb\extension\manager $manager) +	{ +		$this->manager = $manager; + +		parent::__construct(); +	} +} diff --git a/phpBB/phpbb/console/command/extension/disable.php b/phpBB/phpbb/console/command/extension/disable.php new file mode 100644 index 0000000000..e4de70ca34 --- /dev/null +++ b/phpBB/phpbb/console/command/extension/disable.php @@ -0,0 +1,47 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ +namespace phpbb\console\command\extension; + +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class disable extends command +{ +	protected function configure() +	{ +		$this +			->setName('extension:disable') +			->setDescription('Disables the specified extension.') +			->addArgument( +				'extension-name', +				InputArgument::REQUIRED, +				'Name of the extension' +			) +		; +	} + +	protected function execute(InputInterface $input, OutputInterface $output) +	{ +		$name = $input->getArgument('extension-name'); +		$this->manager->disable($name); +		$this->manager->load_extensions(); + +		if ($this->manager->enabled($name)) +		{ +			$output->writeln("<error>Could not disable extension $name</error>"); +			return 1; +		} +		else +		{ +			$output->writeln("<info>Successfully disabled extension $name</info>"); +			return 0; +		} +	} +} diff --git a/phpBB/phpbb/console/command/extension/enable.php b/phpBB/phpbb/console/command/extension/enable.php new file mode 100644 index 0000000000..ee7dae76aa --- /dev/null +++ b/phpBB/phpbb/console/command/extension/enable.php @@ -0,0 +1,47 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ +namespace phpbb\console\command\extension; + +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class enable extends command +{ +	protected function configure() +	{ +		$this +			->setName('extension:enable') +			->setDescription('Enables the specified extension.') +			->addArgument( +				'extension-name', +				InputArgument::REQUIRED, +				'Name of the extension' +			) +		; +	} + +	protected function execute(InputInterface $input, OutputInterface $output) +	{ +		$name = $input->getArgument('extension-name'); +		$this->manager->enable($name); +		$this->manager->load_extensions(); + +		if ($this->manager->enabled($name)) +		{ +			$output->writeln("<info>Successfully enabled extension $name</info>"); +			return 0; +		} +		else +		{ +			$output->writeln("<error>Could not enable extension $name</error>"); +			return 1; +		} +	} +} diff --git a/phpBB/phpbb/console/command/extension/purge.php b/phpBB/phpbb/console/command/extension/purge.php new file mode 100644 index 0000000000..c2e1d2928c --- /dev/null +++ b/phpBB/phpbb/console/command/extension/purge.php @@ -0,0 +1,47 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ +namespace phpbb\console\command\extension; + +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class purge extends command +{ +	protected function configure() +	{ +		$this +			->setName('extension:purge') +			->setDescription('Purges the specified extension.') +			->addArgument( +				'extension-name', +				InputArgument::REQUIRED, +				'Name of the extension' +			) +		; +	} + +	protected function execute(InputInterface $input, OutputInterface $output) +	{ +		$name = $input->getArgument('extension-name'); +		$this->manager->purge($name); +		$this->manager->load_extensions(); + +		if ($this->manager->enabled($name)) +		{ +			$output->writeln("<error>Could not purge extension $name</error>"); +			return 1; +		} +		else +		{ +			$output->writeln("<info>Successfully purge extension $name</info>"); +			return 0; +		} +	} +} diff --git a/phpBB/phpbb/console/command/extension/show.php b/phpBB/phpbb/console/command/extension/show.php new file mode 100644 index 0000000000..0f48ac2379 --- /dev/null +++ b/phpBB/phpbb/console/command/extension/show.php @@ -0,0 +1,58 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ +namespace phpbb\console\command\extension; + +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class show extends command +{ +	protected function configure() +	{ +		$this +			->setName('extension:show') +			->setDescription('Lists all extensions in the database and on the filesystem.') +		; +	} + +	protected function execute(InputInterface $input, OutputInterface $output) +	{ +		$this->manager->load_extensions(); +		$all = array_keys($this->manager->all_available()); + +		if (empty($all)) +		{ +			$output->writeln('<comment>No extensions were found.</comment>'); +			return 3; +		} + +		$enabled = array_keys($this->manager->all_enabled()); +		$this->print_extension_list($output, 'Enabled', $enabled); + +		$output->writeln(''); + +		$disabled = array_keys($this->manager->all_disabled()); +		$this->print_extension_list($output, 'Disabled', $disabled); + +		$output->writeln(''); + +		$purged = array_diff($all, $enabled, $disabled); +		$this->print_extension_list($output, 'Available', $purged); +	} + +	protected function print_extension_list(OutputInterface $output, $type, array $extensions) +	{ +		$output->writeln("<info>$type:</info>"); + +		foreach ($extensions as $extension) +		{ +			$output->writeln(" - $extension"); +		} +	} +} diff --git a/phpBB/phpbb/console/command/fixup/recalculate_email_hash.php b/phpBB/phpbb/console/command/fixup/recalculate_email_hash.php new file mode 100644 index 0000000000..04db880091 --- /dev/null +++ b/phpBB/phpbb/console/command/fixup/recalculate_email_hash.php @@ -0,0 +1,71 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2013 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ +namespace phpbb\console\command\fixup; + +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class recalculate_email_hash extends \phpbb\console\command\command +{ +	/** @var \phpbb\db\driver\driver */ +	protected $db; + +	function __construct(\phpbb\db\driver\driver $db) +	{ +		$this->db = $db; + +		parent::__construct(); +	} + +	protected function configure() +	{ +		$this +			->setName('fixup:recalculate-email-hash') +			->setDescription('Recalculates the user_email_hash column of the users table.') +		; +	} + +	protected function execute(InputInterface $input, OutputInterface $output) +	{ +		$sql = 'SELECT user_id, user_email, user_email_hash +			FROM ' . USERS_TABLE . ' +			WHERE user_type <> ' . USER_IGNORE . " +				AND user_email <> ''"; +		$result = $this->db->sql_query($sql); + +		while ($row = $this->db->sql_fetchrow($result)) +		{ +			$user_email_hash = phpbb_email_hash($row['user_email']); +			if ($user_email_hash !== $row['user_email_hash']) +			{ +				$sql_ary = array( +					'user_email_hash'	=> $user_email_hash, +				); + +				$sql = 'UPDATE ' . USERS_TABLE . ' +					SET ' . $this->db->sql_build_array('UPDATE', $sql_ary) . ' +					WHERE user_id = ' . (int) $row['user_id']; +				$this->db->sql_query($sql); + +				if ($output->getVerbosity() >= OutputInterface::VERBOSITY_DEBUG) +				{ +					$output->writeln(sprintf( +						'user_id %d, email %s => %s', +						$row['user_id'], +						$row['user_email'], +						$user_email_hash +					)); +				} +			} +		} +		$this->db->sql_freeresult($result); + +		$output->writeln('<info>Successfully recalculated all email hashes.</info>'); +	} +} | 
