diff options
author | Oliver Schramm <oliver.schramm97@gmail.com> | 2015-10-24 20:10:16 +0200 |
---|---|---|
committer | Oliver Schramm <oliver.schramm97@gmail.com> | 2015-10-24 20:16:54 +0200 |
commit | c7ecb1310f7663e5fdaafb655381663b9410c31a (patch) | |
tree | 4f007be4689c016c264ba2f3e52754bfa539894e /phpBB/phpbb/console | |
parent | 8376c6552a7860036640a5840f26dba239c20750 (diff) | |
download | forums-c7ecb1310f7663e5fdaafb655381663b9410c31a.tar forums-c7ecb1310f7663e5fdaafb655381663b9410c31a.tar.gz forums-c7ecb1310f7663e5fdaafb655381663b9410c31a.tar.bz2 forums-c7ecb1310f7663e5fdaafb655381663b9410c31a.tar.xz forums-c7ecb1310f7663e5fdaafb655381663b9410c31a.zip |
[ticket/14257] Add reparse_lock to CLI command
PHPBB3-14257
Diffstat (limited to 'phpBB/phpbb/console')
-rw-r--r-- | phpBB/phpbb/console/command/reparser/reparse.php | 50 |
1 files changed, 34 insertions, 16 deletions
diff --git a/phpBB/phpbb/console/command/reparser/reparse.php b/phpBB/phpbb/console/command/reparser/reparse.php index 63124b4b8c..e77b384d8e 100644 --- a/phpBB/phpbb/console/command/reparser/reparse.php +++ b/phpBB/phpbb/console/command/reparser/reparse.php @@ -13,6 +13,7 @@ namespace phpbb\console\command\reparser; +use phpbb\exception\runtime_exception; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; @@ -42,6 +43,11 @@ class reparse extends \phpbb\console\command\command protected $output; /** + * @var \phpbb\lock\db + */ + protected $reparse_lock; + + /** * @var \phpbb\di\service_collection */ protected $reparsers; @@ -57,13 +63,15 @@ class reparse extends \phpbb\console\command\command * @param \phpbb\user $user * @param \phpbb\di\service_collection $reparsers * @param \phpbb\config\db_text $config_text + * @param \phpbb\lock\db $reparse_lock */ - public function __construct(\phpbb\user $user, \phpbb\di\service_collection $reparsers, \phpbb\config\db_text $config_text) + public function __construct(\phpbb\user $user, \phpbb\di\service_collection $reparsers, \phpbb\config\db_text $config_text, \phpbb\lock\db $reparse_lock) { require_once __DIR__ . '/../../../../includes/functions_content.php'; $this->config_text = $config_text; $this->reparsers = $reparsers; + $this->reparse_lock = $reparse_lock; parent::__construct($user); } @@ -163,29 +171,39 @@ class reparse extends \phpbb\console\command\command $this->input = $input; $this->output = $output; $this->io = new SymfonyStyle($input, $output); - $this->load_resume_data(); - $name = $input->getArgument('reparser-name'); - if (isset($name)) + if (!$this->reparse_lock->acquire()) { - // Allow "post_text" to be an alias for "text_reparser.post_text" - if (!isset($this->reparsers[$name])) + $this->load_resume_data(); + + $name = $input->getArgument('reparser-name'); + if (isset($name)) { - $name = 'text_reparser.' . $name; + // Allow "post_text" to be an alias for "text_reparser.post_text" + if (!isset($this->reparsers[$name])) + { + $name = 'text_reparser.' . $name; + } + $this->reparse($name); } - $this->reparse($name); - } - else - { - foreach ($this->reparsers as $name => $service) + else { - $this->reparse($name); + foreach ($this->reparsers as $name => $service) + { + $this->reparse($name); + } } - } - $this->io->success($this->user->lang('CLI_REPARSER_REPARSE_SUCCESS')); + $this->io->success($this->user->lang('CLI_REPARSER_REPARSE_SUCCESS')); - return 0; + $this->reparse_lock->release(); + + return 0; + } + else + { + throw new runtime_exception('REPARSE_LOCK_ERROR', array(), null, 1); + } } /** |