mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
[ticket/11768] Added core.text_formatter_s9e_parser_setup event
PHPBB3-11768
This commit is contained in:
parent
2a462bb7e4
commit
a7a53d5a30
3 changed files with 75 additions and 8 deletions
|
@ -21,6 +21,11 @@ use s9e\TextFormatter\Parser\Logger;
|
||||||
*/
|
*/
|
||||||
class parser implements \phpbb\textformatter\parser_interface
|
class parser implements \phpbb\textformatter\parser_interface
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @var \phpbb\event\dispatcher_interface
|
||||||
|
*/
|
||||||
|
protected $dispatcher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \s9e\TextFormatter\Parser
|
* @var \s9e\TextFormatter\Parser
|
||||||
*/
|
*/
|
||||||
|
@ -38,19 +43,39 @@ class parser implements \phpbb\textformatter\parser_interface
|
||||||
* @param string $key Cache key
|
* @param string $key Cache key
|
||||||
* @param \phpbb\user $user
|
* @param \phpbb\user $user
|
||||||
* @param factory $factory
|
* @param factory $factory
|
||||||
|
* @param \phpbb\event\dispatcher_interface $dispatcher
|
||||||
*/
|
*/
|
||||||
public function __construct(\phpbb\cache\driver\driver_interface $cache, $key, \phpbb\user $user, factory $factory)
|
public function __construct(\phpbb\cache\driver\driver_interface $cache, $key, \phpbb\user $user, factory $factory, \phpbb\event\dispatcher_interface $dispatcher)
|
||||||
{
|
{
|
||||||
$this->user = $user;
|
|
||||||
|
|
||||||
$parser = $cache->get($key);
|
$parser = $cache->get($key);
|
||||||
if (!$parser)
|
if (!$parser)
|
||||||
{
|
{
|
||||||
$objects = $factory->regenerate();
|
$objects = $factory->regenerate();
|
||||||
$parser = $objects['parser'];
|
$parser = $objects['parser'];
|
||||||
}
|
}
|
||||||
|
$self = $this;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure the parser service
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
* - configure the s9e\TextFormatter parser
|
||||||
|
*
|
||||||
|
* @event core.text_formatter_s9e_parser_setup
|
||||||
|
* @var \s9e\TextFormatter\Parser parser s9e\TextFormatter parser instance
|
||||||
|
* @var \phpbb\textformatter\s9e\parser self This parser service
|
||||||
|
* @var \phpbb\user user Current user
|
||||||
|
* @since 3.2.0-a1
|
||||||
|
*/
|
||||||
|
$vars = array('parser', 'self', 'user');
|
||||||
|
extract($dispatcher->trigger_event('core.text_formatter_s9e_parser_setup', compact($vars)));
|
||||||
|
|
||||||
|
$this->dispatcher = $dispatcher;
|
||||||
$this->parser = $parser;
|
$this->parser = $parser;
|
||||||
|
$this->user = $user;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -425,6 +425,7 @@ class phpbb_test_case_helpers
|
||||||
$prefix = '_s9e_' . md5(serialize(func_get_args()));
|
$prefix = '_s9e_' . md5(serialize(func_get_args()));
|
||||||
$cache_key_parser = $prefix . '_parser';
|
$cache_key_parser = $prefix . '_parser';
|
||||||
$cache_key_renderer = $prefix . '_renderer';
|
$cache_key_renderer = $prefix . '_renderer';
|
||||||
|
$container->set('cache.driver', $cache);
|
||||||
|
|
||||||
// Create a path_helper
|
// Create a path_helper
|
||||||
if (!$container->has('path_helper'))
|
if (!$container->has('path_helper'))
|
||||||
|
@ -473,6 +474,7 @@ class phpbb_test_case_helpers
|
||||||
$user->optionset('viewflash', true);
|
$user->optionset('viewflash', true);
|
||||||
$user->optionset('viewimg', true);
|
$user->optionset('viewimg', true);
|
||||||
$user->optionset('viewsmilies', true);
|
$user->optionset('viewsmilies', true);
|
||||||
|
$container->set('user', $user);
|
||||||
}
|
}
|
||||||
$user->add_lang('common');
|
$user->add_lang('common');
|
||||||
|
|
||||||
|
@ -486,7 +488,8 @@ class phpbb_test_case_helpers
|
||||||
$cache,
|
$cache,
|
||||||
$cache_key_parser,
|
$cache_key_parser,
|
||||||
$user,
|
$user,
|
||||||
$factory
|
$factory,
|
||||||
|
$dispatcher
|
||||||
);
|
);
|
||||||
|
|
||||||
$container->set('text_formatter.parser', $parser);
|
$container->set('text_formatter.parser', $parser);
|
||||||
|
|
|
@ -36,7 +36,8 @@ class phpbb_textformatter_s9e_parser_test extends phpbb_test_case
|
||||||
$cache,
|
$cache,
|
||||||
'_foo_parser',
|
'_foo_parser',
|
||||||
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
||||||
$factory
|
$factory,
|
||||||
|
new phpbb_mock_event_dispatcher
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +64,8 @@ class phpbb_textformatter_s9e_parser_test extends phpbb_test_case
|
||||||
$cache,
|
$cache,
|
||||||
'_foo_parser',
|
'_foo_parser',
|
||||||
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
||||||
$factory
|
$factory,
|
||||||
|
new phpbb_mock_event_dispatcher
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertSame('<t>test</t>', $parser->parse('test'));
|
$this->assertSame('<t>test</t>', $parser->parse('test'));
|
||||||
|
@ -91,7 +93,8 @@ class phpbb_textformatter_s9e_parser_test extends phpbb_test_case
|
||||||
new phpbb_mock_cache,
|
new phpbb_mock_cache,
|
||||||
'_foo_parser',
|
'_foo_parser',
|
||||||
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
||||||
$factory
|
$factory,
|
||||||
|
new phpbb_mock_event_dispatcher
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertSame('<t>test</t>', $parser->parse('test'));
|
$this->assertSame('<t>test</t>', $parser->parse('test'));
|
||||||
|
@ -124,7 +127,8 @@ class phpbb_textformatter_s9e_parser_test extends phpbb_test_case
|
||||||
$cache,
|
$cache,
|
||||||
'_foo_parser',
|
'_foo_parser',
|
||||||
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
$this->getMockBuilder('phpbb\\user')->disableOriginalConstructor()->getMock(),
|
||||||
$factory
|
$factory,
|
||||||
|
new phpbb_mock_event_dispatcher
|
||||||
);
|
);
|
||||||
|
|
||||||
call_user_func_array(array($parser, $adapter_method), (array) $adapter_arg);
|
call_user_func_array(array($parser, $adapter_method), (array) $adapter_arg);
|
||||||
|
@ -167,4 +171,39 @@ class phpbb_textformatter_s9e_parser_test extends phpbb_test_case
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @testdox The constructor triggers a core.text_formatter_s9e_parser_setup event
|
||||||
|
*/
|
||||||
|
public function test_setup_event()
|
||||||
|
{
|
||||||
|
$container = $this->get_test_case_helpers()->set_s9e_services();
|
||||||
|
$dispatcher = $this->getMock('phpbb\\event\\dispatcher_interface');
|
||||||
|
$dispatcher
|
||||||
|
->expects($this->once())
|
||||||
|
->method('trigger_event')
|
||||||
|
->with(
|
||||||
|
'core.text_formatter_s9e_parser_setup',
|
||||||
|
$this->callback(array($this, 'setup_event_callback'))
|
||||||
|
)
|
||||||
|
->will($this->returnArgument(1));
|
||||||
|
|
||||||
|
new \phpbb\textformatter\s9e\parser(
|
||||||
|
$container->get('cache.driver'),
|
||||||
|
'_foo_parser',
|
||||||
|
$container->get('user'),
|
||||||
|
$container->get('text_formatter.s9e.factory'),
|
||||||
|
$dispatcher
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setup_event_callback($vars)
|
||||||
|
{
|
||||||
|
return isset($vars['parser'])
|
||||||
|
&& $vars['parser'] instanceof \s9e\TextFormatter\Parser
|
||||||
|
&& isset($vars['self'])
|
||||||
|
&& $vars['self'] instanceof \phpbb\textformatter\s9e\parser
|
||||||
|
&& isset($vars['user'])
|
||||||
|
&& $vars['user'] instanceof \phpbb\user;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue