diff options
author | Matt Friedman <maf675@gmail.com> | 2016-12-18 01:28:51 -0800 |
---|---|---|
committer | Matt Friedman <maf675@gmail.com> | 2016-12-18 01:28:51 -0800 |
commit | b4748a5d1ee31084da7e78f8ffaf5b036f2e5314 (patch) | |
tree | eb815b485b6360235bbc04413b2f682215cc1efe | |
parent | 544c7c4e0864df7ad1748c21b92a146e84308a06 (diff) | |
download | forums-b4748a5d1ee31084da7e78f8ffaf5b036f2e5314.tar forums-b4748a5d1ee31084da7e78f8ffaf5b036f2e5314.tar.gz forums-b4748a5d1ee31084da7e78f8ffaf5b036f2e5314.tar.bz2 forums-b4748a5d1ee31084da7e78f8ffaf5b036f2e5314.tar.xz forums-b4748a5d1ee31084da7e78f8ffaf5b036f2e5314.zip |
[ticket/14925] Set reparser names in service definitions
PHPBB3-14925
-rw-r--r-- | phpBB/config/default/container/services_text_reparser.yml | 18 | ||||
-rw-r--r-- | phpBB/phpbb/console/command/reparser/list_all.php | 4 | ||||
-rw-r--r-- | phpBB/phpbb/console/command/reparser/reparse.php | 16 | ||||
-rw-r--r-- | phpBB/phpbb/cron/task/text_reparser/reparser.php | 2 | ||||
-rw-r--r-- | phpBB/phpbb/textreparser/base.php | 27 | ||||
-rw-r--r-- | phpBB/phpbb/textreparser/manager.php | 20 | ||||
-rw-r--r-- | phpBB/phpbb/textreparser/reparser_interface.php | 14 |
7 files changed, 87 insertions, 14 deletions
diff --git a/phpBB/config/default/container/services_text_reparser.yml b/phpBB/config/default/container/services_text_reparser.yml index 6b0353cf5b..4bc49f5765 100644 --- a/phpBB/config/default/container/services_text_reparser.yml +++ b/phpBB/config/default/container/services_text_reparser.yml @@ -24,6 +24,8 @@ services: class: phpbb\textreparser\plugins\contact_admin_info arguments: - '@config_text' + calls: + - [set_name, [contact_admin_info]] tags: - { name: text_reparser.plugin } @@ -32,6 +34,8 @@ services: arguments: - '@dbal.conn' - '%tables.forums%' + calls: + - [set_name, [forum_description]] tags: - { name: text_reparser.plugin } @@ -40,6 +44,8 @@ services: arguments: - '@dbal.conn' - '%tables.forums%' + calls: + - [set_name, [forum_rules]] tags: - { name: text_reparser.plugin } @@ -48,6 +54,8 @@ services: arguments: - '@dbal.conn' - '%tables.groups%' + calls: + - [set_name, [group_description]] tags: - { name: text_reparser.plugin } @@ -56,6 +64,8 @@ services: arguments: - '@dbal.conn' - '%tables.privmsgs%' + calls: + - [set_name, [pm_text]] tags: - { name: text_reparser.plugin } @@ -63,6 +73,8 @@ services: class: phpbb\textreparser\plugins\poll_option arguments: - '@dbal.conn' + calls: + - [set_name, [poll_option]] tags: - { name: text_reparser.plugin } @@ -71,6 +83,8 @@ services: arguments: - '@dbal.conn' - '%tables.topics%' + calls: + - [set_name, [poll_title]] tags: - { name: text_reparser.plugin } @@ -79,6 +93,8 @@ services: arguments: - '@dbal.conn' - '%tables.posts%' + calls: + - [set_name, [post_text]] tags: - { name: text_reparser.plugin } @@ -87,5 +103,7 @@ services: arguments: - '@dbal.conn' - '%tables.users%' + calls: + - [set_name, [user_signature]] tags: - { name: text_reparser.plugin } diff --git a/phpBB/phpbb/console/command/reparser/list_all.php b/phpBB/phpbb/console/command/reparser/list_all.php index 028468649d..a79578abf0 100644 --- a/phpBB/phpbb/console/command/reparser/list_all.php +++ b/phpBB/phpbb/console/command/reparser/list_all.php @@ -34,10 +34,10 @@ class list_all extends \phpbb\console\command\command { parent::__construct($user); $this->reparser_names = array(); - foreach ($reparsers as $name => $reparser) + foreach ($reparsers as $reparser) { // Store the names without the "text_reparser." prefix - $this->reparser_names[] = preg_replace('(^text_reparser\\.)', '', $name); + $this->reparser_names[] = $reparser->get_name(); } } diff --git a/phpBB/phpbb/console/command/reparser/reparse.php b/phpBB/phpbb/console/command/reparser/reparse.php index cebeee0919..f285977ea2 100644 --- a/phpBB/phpbb/console/command/reparser/reparse.php +++ b/phpBB/phpbb/console/command/reparser/reparse.php @@ -140,13 +140,9 @@ class reparse extends \phpbb\console\command\command } $name = $input->getArgument('reparser-name'); - if (isset($name)) + if ($name) { - // Allow "post_text" to be an alias for "text_reparser.post_text" - if (!isset($this->reparsers[$name])) - { - $name = 'text_reparser.' . $name; - } + $name = $this->reparser_manager->find_reparser($name); $this->reparse($name); } else @@ -187,7 +183,7 @@ class reparse extends \phpbb\console\command\command /** * Reparse all text handled by given reparser within given range * - * @param string $name Reparser name + * @param string $name Reparser service name */ protected function reparse($name) { @@ -218,10 +214,10 @@ class reparse extends \phpbb\console\command\command return; } - $this->io->section($this->user->lang('CLI_REPARSER_REPARSE_REPARSING', preg_replace('(^text_reparser\\.)', '', $name), $min, $max)); + $this->io->section($this->user->lang('CLI_REPARSER_REPARSE_REPARSING', $reparser->get_name(), $min, $max)); $progress = $this->create_progress_bar($max, $this->io, $this->output, true); - $progress->setMessage($this->user->lang('CLI_REPARSER_REPARSE_REPARSING_START', preg_replace('(^text_reparser\\.)', '', $name))); + $progress->setMessage($this->user->lang('CLI_REPARSER_REPARSE_REPARSING_START', $reparser->get_name())); $progress->start(); // Start from $max and decrement $current by $size until we reach $min @@ -231,7 +227,7 @@ class reparse extends \phpbb\console\command\command $start = max($min, $current + 1 - $size); $end = max($min, $current); - $progress->setMessage($this->user->lang('CLI_REPARSER_REPARSE_REPARSING', preg_replace('(^text_reparser\\.)', '', $name), $start, $end)); + $progress->setMessage($this->user->lang('CLI_REPARSER_REPARSE_REPARSING', $reparser->get_name(), $start, $end)); $reparser->reparse_range($start, $end); $current = $start - 1; diff --git a/phpBB/phpbb/cron/task/text_reparser/reparser.php b/phpBB/phpbb/cron/task/text_reparser/reparser.php index 7099128efd..69392f5ac9 100644 --- a/phpBB/phpbb/cron/task/text_reparser/reparser.php +++ b/phpBB/phpbb/cron/task/text_reparser/reparser.php @@ -81,7 +81,7 @@ class reparser extends \phpbb\cron\task\base */ public function set_reparser($reparser) { - $this->reparser_name = (!isset($this->reparsers[$reparser]) ? 'text_reparser.' : '') . $reparser; + $this->reparser_name = !isset($this->reparsers[$reparser]) ? $this->reparser_manager->find_reparser($reparser) : $reparser; if ($this->resume_data === null) { diff --git a/phpBB/phpbb/textreparser/base.php b/phpBB/phpbb/textreparser/base.php index afa5ccacad..ef97bc90d5 100644 --- a/phpBB/phpbb/textreparser/base.php +++ b/phpBB/phpbb/textreparser/base.php @@ -16,6 +16,11 @@ namespace phpbb\textreparser; abstract class base implements reparser_interface { /** + * @var string The reparser name + */ + protected $name; + + /** * @var bool Whether to save changes to the database */ protected $save_changes = true; @@ -90,6 +95,26 @@ abstract class base implements reparser_interface } /** + * Returns the name of the reparser + * + * @return string Name of reparser + */ + public function get_name() + { + return $this->name; + } + + /** + * Sets the name of the reparser + * + * @param string $name The reparser name + */ + public function set_name($name) + { + $this->name = $name; + } + + /** * Disable saving changes to the database */ public function disable_save() @@ -231,7 +256,7 @@ abstract class base implements reparser_interface $unparsed['enable_flash_bbcode'], $unparsed['enable_quote_bbcode'], $unparsed['enable_url_bbcode'], - 'reparse' + $this->get_name() ); // Save the new text if it has changed and it's not a dry run diff --git a/phpBB/phpbb/textreparser/manager.php b/phpBB/phpbb/textreparser/manager.php index fddd867923..7ca65d708d 100644 --- a/phpBB/phpbb/textreparser/manager.php +++ b/phpBB/phpbb/textreparser/manager.php @@ -125,4 +125,24 @@ class manager $this->schedule($reparser, $interval); } } + + /** + * Finds a reparser by name. + * + * If there is no reparser with the specified name, null is returned. + * + * @param string $name Name of the reparser to look up. + * @return string A reparser service name, or null. + */ + public function find_reparser($name) + { + foreach ($this->reparsers as $service => $reparser) + { + if ($reparser->get_name() == $name) + { + return $service; + } + } + return null; + } } diff --git a/phpBB/phpbb/textreparser/reparser_interface.php b/phpBB/phpbb/textreparser/reparser_interface.php index 9ea1732870..912de10058 100644 --- a/phpBB/phpbb/textreparser/reparser_interface.php +++ b/phpBB/phpbb/textreparser/reparser_interface.php @@ -23,6 +23,20 @@ interface reparser_interface public function get_max_id(); /** + * Returns the name of the reparser + * + * @return string Name of reparser + */ + public function get_name(); + + /** + * Sets the name of the reparser + * + * @param string $name The reparser name + */ + public function set_name($name); + + /** * Reparse all records in given range * * @param integer $min_id Lower bound |