aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Friedman <maf675@gmail.com>2016-12-18 01:28:51 -0800
committerMatt Friedman <maf675@gmail.com>2016-12-18 01:28:51 -0800
commitb4748a5d1ee31084da7e78f8ffaf5b036f2e5314 (patch)
treeeb815b485b6360235bbc04413b2f682215cc1efe
parent544c7c4e0864df7ad1748c21b92a146e84308a06 (diff)
downloadforums-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.yml18
-rw-r--r--phpBB/phpbb/console/command/reparser/list_all.php4
-rw-r--r--phpBB/phpbb/console/command/reparser/reparse.php16
-rw-r--r--phpBB/phpbb/cron/task/text_reparser/reparser.php2
-rw-r--r--phpBB/phpbb/textreparser/base.php27
-rw-r--r--phpBB/phpbb/textreparser/manager.php20
-rw-r--r--phpBB/phpbb/textreparser/reparser_interface.php14
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