[ticket/13801] Removed user dependency from text_formatter.s9e.parser

PHPBB3-13801
This commit is contained in:
JoshyPHP 2015-04-30 23:01:28 +02:00
parent c967ba7b9b
commit deadc06652
5 changed files with 13 additions and 31 deletions

View file

@ -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

View file

@ -1254,6 +1254,10 @@ class parse_message extends bbcode_firstpass
$errors = $parser->get_errors(); $errors = $parser->get_errors();
if ($errors) if ($errors)
{ {
foreach ($errors as $i => $args)
{
$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;

View file

@ -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,20 @@ 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 BBCodes according to the user's permissions,
* - register variables or custom parsers in the s9e\TextFormatter * - register variables or custom parsers in the s9e\TextFormatter
* - configure the s9e\TextFormatter parser * - 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)));
} }
@ -202,7 +192,6 @@ class parser implements \phpbb\textformatter\parser_interface
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 +200,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);
} }
} }

View file

@ -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);

View file

@ -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
); );