mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
Merge pull request #3578 from s9e/ticket/13801
[ticket/13801] Remove user dependency from text_formatter.s9e.parser
This commit is contained in:
commit
15bec23770
6 changed files with 20 additions and 35 deletions
|
@ -41,7 +41,6 @@ services:
|
||||||
arguments:
|
arguments:
|
||||||
- @cache.driver
|
- @cache.driver
|
||||||
- %text_formatter.cache.parser.key%
|
- %text_formatter.cache.parser.key%
|
||||||
- @user
|
|
||||||
- @text_formatter.s9e.factory
|
- @text_formatter.s9e.factory
|
||||||
- @dispatcher
|
- @dispatcher
|
||||||
|
|
||||||
|
|
|
@ -1264,6 +1264,11 @@ class parse_message extends bbcode_firstpass
|
||||||
$errors = $parser->get_errors();
|
$errors = $parser->get_errors();
|
||||||
if ($errors)
|
if ($errors)
|
||||||
{
|
{
|
||||||
|
foreach ($errors as $i => $args)
|
||||||
|
{
|
||||||
|
// Translate each error with $user->lang()
|
||||||
|
$errors[$i] = call_user_func_array(array($user, 'lang'), $args);
|
||||||
|
}
|
||||||
$this->warn_msg = array_merge($this->warn_msg, $errors);
|
$this->warn_msg = array_merge($this->warn_msg, $errors);
|
||||||
|
|
||||||
return (!$update_this_message) ? $return_message : $this->warn_msg;
|
return (!$update_this_message) ? $return_message : $this->warn_msg;
|
||||||
|
|
|
@ -82,7 +82,8 @@ interface parser_interface
|
||||||
/**
|
/**
|
||||||
* Get the list of errors that were generated during last parsing
|
* Get the list of errors that were generated during last parsing
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array[] Array of arrays. Each array contains a lang string at index 0 plus any number
|
||||||
|
* of optional parameters
|
||||||
*/
|
*/
|
||||||
public function get_errors();
|
public function get_errors();
|
||||||
|
|
||||||
|
|
|
@ -31,21 +31,15 @@ class parser implements \phpbb\textformatter\parser_interface
|
||||||
*/
|
*/
|
||||||
protected $parser;
|
protected $parser;
|
||||||
|
|
||||||
/**
|
|
||||||
* @var \phpbb\user User object, used for translating errors
|
|
||||||
*/
|
|
||||||
protected $user;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
* @param \phpbb\cache\driver_interface $cache
|
* @param \phpbb\cache\driver_interface $cache
|
||||||
* @param string $key Cache key
|
* @param string $key Cache key
|
||||||
* @param \phpbb\user $user
|
|
||||||
* @param factory $factory
|
* @param factory $factory
|
||||||
* @param \phpbb\event\dispatcher_interface $dispatcher
|
* @param \phpbb\event\dispatcher_interface $dispatcher
|
||||||
*/
|
*/
|
||||||
public function __construct(\phpbb\cache\driver\driver_interface $cache, $key, \phpbb\user $user, factory $factory, \phpbb\event\dispatcher_interface $dispatcher)
|
public function __construct(\phpbb\cache\driver\driver_interface $cache, $key, factory $factory, \phpbb\event\dispatcher_interface $dispatcher)
|
||||||
{
|
{
|
||||||
$parser = $cache->get($key);
|
$parser = $cache->get($key);
|
||||||
if (!$parser)
|
if (!$parser)
|
||||||
|
@ -56,24 +50,21 @@ class parser implements \phpbb\textformatter\parser_interface
|
||||||
|
|
||||||
$this->dispatcher = $dispatcher;
|
$this->dispatcher = $dispatcher;
|
||||||
$this->parser = $parser;
|
$this->parser = $parser;
|
||||||
$this->user = $user;
|
|
||||||
$parser = $this;
|
$parser = $this;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configure the parser service
|
* Configure the parser service
|
||||||
*
|
*
|
||||||
* Can be used to:
|
* Can be used to:
|
||||||
* - toggle features according to the user's preferences,
|
* - toggle features or BBCodes
|
||||||
* - toggle BBCodes according to the user's permissions,
|
* - register variables or custom parsers in the s9e\TextFormatter parser
|
||||||
* - register variables or custom parsers in the s9e\TextFormatter
|
* - configure the s9e\TextFormatter parser's runtime settings
|
||||||
* - configure the s9e\TextFormatter parser
|
|
||||||
*
|
*
|
||||||
* @event core.text_formatter_s9e_parser_setup
|
* @event core.text_formatter_s9e_parser_setup
|
||||||
* @var \phpbb\textformatter\s9e\parser parser This parser service
|
* @var \phpbb\textformatter\s9e\parser parser This parser service
|
||||||
* @var \phpbb\user user Current user
|
|
||||||
* @since 3.2.0-a1
|
* @since 3.2.0-a1
|
||||||
*/
|
*/
|
||||||
$vars = array('parser', 'user');
|
$vars = array('parser');
|
||||||
extract($dispatcher->trigger_event('core.text_formatter_s9e_parser_setup', compact($vars)));
|
extract($dispatcher->trigger_event('core.text_formatter_s9e_parser_setup', compact($vars)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,13 +187,12 @@ class parser implements \phpbb\textformatter\parser_interface
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*
|
*
|
||||||
* This will translate the log entries found in s9e\TextFormatter's logger into phpBB error
|
* This will convert the log entries found in s9e\TextFormatter's logger into phpBB error
|
||||||
* messages
|
* messages
|
||||||
*/
|
*/
|
||||||
public function get_errors()
|
public function get_errors()
|
||||||
{
|
{
|
||||||
$errors = array();
|
$errors = array();
|
||||||
|
|
||||||
foreach ($this->parser->getLogger()->get() as $entry)
|
foreach ($this->parser->getLogger()->get() as $entry)
|
||||||
{
|
{
|
||||||
list($type, $msg, $context) = $entry;
|
list($type, $msg, $context) = $entry;
|
||||||
|
@ -211,29 +201,29 @@ class parser implements \phpbb\textformatter\parser_interface
|
||||||
{
|
{
|
||||||
if ($context['tagName'] === 'E')
|
if ($context['tagName'] === 'E')
|
||||||
{
|
{
|
||||||
$errors[] = $this->user->lang('TOO_MANY_SMILIES', $context['tagLimit']);
|
$errors[] = array('TOO_MANY_SMILIES', $context['tagLimit']);
|
||||||
}
|
}
|
||||||
else if ($context['tagName'] === 'URL')
|
else if ($context['tagName'] === 'URL')
|
||||||
{
|
{
|
||||||
$errors[] = $this->user->lang('TOO_MANY_URLS', $context['tagLimit']);
|
$errors[] = array('TOO_MANY_URLS', $context['tagLimit']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ($msg === 'MAX_FONT_SIZE_EXCEEDED')
|
else if ($msg === 'MAX_FONT_SIZE_EXCEEDED')
|
||||||
{
|
{
|
||||||
$errors[] = $this->user->lang($msg, $context['max_size']);
|
$errors[] = array($msg, $context['max_size']);
|
||||||
}
|
}
|
||||||
else if (preg_match('/^MAX_(?:FLASH|IMG)_(HEIGHT|WIDTH)_EXCEEDED$/D', $msg, $m))
|
else if (preg_match('/^MAX_(?:FLASH|IMG)_(HEIGHT|WIDTH)_EXCEEDED$/D', $msg, $m))
|
||||||
{
|
{
|
||||||
$errors[] = $this->user->lang($msg, $context['max_' . strtolower($m[1])]);
|
$errors[] = array($msg, $context['max_' . strtolower($m[1])]);
|
||||||
}
|
}
|
||||||
else if ($msg === 'Tag is disabled')
|
else if ($msg === 'Tag is disabled')
|
||||||
{
|
{
|
||||||
$name = strtolower($context['tag']->getName());
|
$name = strtolower($context['tag']->getName());
|
||||||
$errors[] = $this->user->lang('UNAUTHORISED_BBCODE', '[' . $name . ']');
|
$errors[] = array('UNAUTHORISED_BBCODE', '[' . $name . ']');
|
||||||
}
|
}
|
||||||
else if ($msg === 'UNABLE_GET_IMAGE_SIZE')
|
else if ($msg === 'UNABLE_GET_IMAGE_SIZE')
|
||||||
{
|
{
|
||||||
$errors[] = $this->user->lang($msg);
|
$errors[] = array($msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -494,11 +494,9 @@ class phpbb_test_case_helpers
|
||||||
$parser = new \phpbb\textformatter\s9e\parser(
|
$parser = new \phpbb\textformatter\s9e\parser(
|
||||||
$cache,
|
$cache,
|
||||||
$cache_key_parser,
|
$cache_key_parser,
|
||||||
$user,
|
|
||||||
$factory,
|
$factory,
|
||||||
$dispatcher
|
$dispatcher
|
||||||
);
|
);
|
||||||
|
|
||||||
$container->set('text_formatter.parser', $parser);
|
$container->set('text_formatter.parser', $parser);
|
||||||
$container->set('text_formatter.s9e.parser', $parser);
|
$container->set('text_formatter.s9e.parser', $parser);
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,6 @@ class phpbb_textformatter_s9e_parser_test extends phpbb_test_case
|
||||||
$parser = new \phpbb\textformatter\s9e\parser(
|
$parser = new \phpbb\textformatter\s9e\parser(
|
||||||
$cache,
|
$cache,
|
||||||
'_foo_parser',
|
'_foo_parser',
|
||||||
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
|
||||||
$factory,
|
$factory,
|
||||||
new phpbb_mock_event_dispatcher
|
new phpbb_mock_event_dispatcher
|
||||||
);
|
);
|
||||||
|
@ -63,7 +62,6 @@ class phpbb_textformatter_s9e_parser_test extends phpbb_test_case
|
||||||
$parser = new \phpbb\textformatter\s9e\parser(
|
$parser = new \phpbb\textformatter\s9e\parser(
|
||||||
$cache,
|
$cache,
|
||||||
'_foo_parser',
|
'_foo_parser',
|
||||||
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
|
||||||
$factory,
|
$factory,
|
||||||
new phpbb_mock_event_dispatcher
|
new phpbb_mock_event_dispatcher
|
||||||
);
|
);
|
||||||
|
@ -92,7 +90,6 @@ class phpbb_textformatter_s9e_parser_test extends phpbb_test_case
|
||||||
$parser = new \phpbb\textformatter\s9e\parser(
|
$parser = new \phpbb\textformatter\s9e\parser(
|
||||||
new phpbb_mock_cache,
|
new phpbb_mock_cache,
|
||||||
'_foo_parser',
|
'_foo_parser',
|
||||||
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
|
||||||
$factory,
|
$factory,
|
||||||
new phpbb_mock_event_dispatcher
|
new phpbb_mock_event_dispatcher
|
||||||
);
|
);
|
||||||
|
@ -126,7 +123,6 @@ class phpbb_textformatter_s9e_parser_test extends phpbb_test_case
|
||||||
$parser = new \phpbb\textformatter\s9e\parser(
|
$parser = new \phpbb\textformatter\s9e\parser(
|
||||||
$cache,
|
$cache,
|
||||||
'_foo_parser',
|
'_foo_parser',
|
||||||
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
|
||||||
$factory,
|
$factory,
|
||||||
new phpbb_mock_event_dispatcher
|
new phpbb_mock_event_dispatcher
|
||||||
);
|
);
|
||||||
|
@ -191,7 +187,6 @@ class phpbb_textformatter_s9e_parser_test extends phpbb_test_case
|
||||||
new \phpbb\textformatter\s9e\parser(
|
new \phpbb\textformatter\s9e\parser(
|
||||||
$container->get('cache.driver'),
|
$container->get('cache.driver'),
|
||||||
'_foo_parser',
|
'_foo_parser',
|
||||||
$container->get('user'),
|
|
||||||
$container->get('text_formatter.s9e.factory'),
|
$container->get('text_formatter.s9e.factory'),
|
||||||
$dispatcher
|
$dispatcher
|
||||||
);
|
);
|
||||||
|
@ -200,9 +195,7 @@ class phpbb_textformatter_s9e_parser_test extends phpbb_test_case
|
||||||
public function setup_event_callback($vars)
|
public function setup_event_callback($vars)
|
||||||
{
|
{
|
||||||
return isset($vars['parser'])
|
return isset($vars['parser'])
|
||||||
&& $vars['parser'] instanceof \phpbb\textformatter\s9e\parser
|
&& $vars['parser'] instanceof \phpbb\textformatter\s9e\parser;
|
||||||
&& isset($vars['user'])
|
|
||||||
&& $vars['user'] instanceof \phpbb\user;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -236,7 +229,6 @@ class phpbb_textformatter_s9e_parser_test extends phpbb_test_case
|
||||||
$parser = new \phpbb\textformatter\s9e\parser(
|
$parser = new \phpbb\textformatter\s9e\parser(
|
||||||
$container->get('cache.driver'),
|
$container->get('cache.driver'),
|
||||||
'_foo_parser',
|
'_foo_parser',
|
||||||
$container->get('user'),
|
|
||||||
$container->get('text_formatter.s9e.factory'),
|
$container->get('text_formatter.s9e.factory'),
|
||||||
$dispatcher
|
$dispatcher
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Reference in a new issue