[ticket/11497] Remove 'ext.finder' from services' list

PHPBB3-11497
This commit is contained in:
Nicofuma 2014-05-02 23:03:03 +02:00
parent 3b823465db
commit dc6e2be884
8 changed files with 62 additions and 59 deletions

View file

@ -95,6 +95,7 @@ services:
- @user - @user
- @config - @config
- @controller.provider - @controller.provider
- @ext.manager
- %core.root_path% - %core.root_path%
- %core.php_ext% - %core.php_ext%
@ -107,8 +108,6 @@ services:
controller.provider: controller.provider:
class: phpbb\controller\provider class: phpbb\controller\provider
arguments:
- @ext.finder
calls: calls:
- [find, [%core.root_path%]] - [find, [%core.root_path%]]
@ -175,16 +174,6 @@ services:
- %core.php_ext% - %core.php_ext%
- @cache.driver - @cache.driver
ext.finder:
class: phpbb\extension\finder
arguments:
- @ext.manager
- @filesystem
- %core.root_path%
- @cache.driver
- %core.php_ext%
- _ext_finder
filesystem: filesystem:
class: phpbb\filesystem class: phpbb\filesystem
@ -217,7 +206,7 @@ services:
kernel_request_subscriber: kernel_request_subscriber:
class: phpbb\event\kernel_request_subscriber class: phpbb\event\kernel_request_subscriber
arguments: arguments:
- @ext.finder - @ext.manager
- %core.root_path% - %core.root_path%
- %core.php_ext% - %core.php_ext%
tags: tags:

View file

@ -22,22 +22,22 @@ if (!defined('IN_PHPBB'))
/** /**
* Create a new UrlMatcher class and dump it into the cache file * Create a new UrlMatcher class and dump it into the cache file
* *
* @param \phpbb\extension\finder $finder Extension finder * @param \phpbb\extension\manager $manager Extension manager
* @param RequestContext $context Symfony RequestContext object * @param RequestContext $context Symfony RequestContext object
* @param string $root_path Root path * @param string $root_path Root path
* @param string $php_ext PHP extension * @param string $php_ext PHP extension
* @return null * @return null
*/ */
function phpbb_get_url_matcher(\phpbb\extension\finder $finder, RequestContext $context, $root_path, $php_ext) function phpbb_get_url_matcher(\phpbb\extension\manager $manager, RequestContext $context, $root_path, $php_ext)
{ {
if (defined('DEBUG')) if (defined('DEBUG'))
{ {
return phpbb_create_url_matcher($finder, $context, $root_path); return phpbb_create_url_matcher($manager, $context, $root_path);
} }
if (!phpbb_url_matcher_dumped($root_path, $php_ext)) if (!phpbb_url_matcher_dumped($root_path, $php_ext))
{ {
phpbb_create_dumped_url_matcher($finder, $root_path, $php_ext); phpbb_create_dumped_url_matcher($manager, $root_path, $php_ext);
} }
return phpbb_load_url_matcher($context, $root_path, $php_ext); return phpbb_load_url_matcher($context, $root_path, $php_ext);
@ -46,14 +46,15 @@ function phpbb_get_url_matcher(\phpbb\extension\finder $finder, RequestContext $
/** /**
* Create a new UrlMatcher class and dump it into the cache file * Create a new UrlMatcher class and dump it into the cache file
* *
* @param \phpbb\extension\finder $finder Extension finder * @param \phpbb\extension\manager $manager Extension manager
* @param string $root_path Root path * @param string $root_path Root path
* @param string $php_ext PHP extension * @param string $php_ext PHP extension
* @return null * @return null
*/ */
function phpbb_create_dumped_url_matcher(\phpbb\extension\finder $finder, $root_path, $php_ext) function phpbb_create_dumped_url_matcher(\phpbb\extension\manager $manager, $root_path, $php_ext)
{ {
$provider = new \phpbb\controller\provider($finder); $provider = new \phpbb\controller\provider();
$provider->set_ext_finder($manager->get_finder());
$routes = $provider->find($root_path)->get_routes(); $routes = $provider->find($root_path)->get_routes();
$dumper = new PhpMatcherDumper($routes); $dumper = new PhpMatcherDumper($routes);
$cached_url_matcher_dump = $dumper->dump(array( $cached_url_matcher_dump = $dumper->dump(array(
@ -66,13 +67,14 @@ function phpbb_create_dumped_url_matcher(\phpbb\extension\finder $finder, $root_
/** /**
* Create a non-cached UrlMatcher * Create a non-cached UrlMatcher
* *
* @param \phpbb\extension\finder $finder Extension finder * @param \phpbb\extension\manager $manager Extension manager
* @param RequestContext $context Symfony RequestContext object * @param RequestContext $context Symfony RequestContext object
* @return UrlMatcher * @return UrlMatcher
*/ */
function phpbb_create_url_matcher(\phpbb\extension\finder $finder, RequestContext $context, $root_path) function phpbb_create_url_matcher(\phpbb\extension\manager $manager, RequestContext $context, $root_path)
{ {
$provider = new \phpbb\controller\provider($finder); $provider = new \phpbb\controller\provider();
$provider->set_ext_finder($manager->get_finder());
$routes = $provider->find($root_path)->get_routes(); $routes = $provider->find($root_path)->get_routes();
return new UrlMatcher($routes, $context); return new UrlMatcher($routes, $context);
} }

View file

@ -56,16 +56,18 @@ class helper
* @param \phpbb\user $user User object * @param \phpbb\user $user User object
* @param \phpbb\config\config $config Config object * @param \phpbb\config\config $config Config object
* @param \phpbb\controller\provider $provider Path provider * @param \phpbb\controller\provider $provider Path provider
* @param \phpbb\extension\manager $manager Extension manager object
* @param string $phpbb_root_path phpBB root path * @param string $phpbb_root_path phpBB root path
* @param string $php_ext PHP extension * @param string $php_ext PHP extension
*/ */
public function __construct(\phpbb\template\template $template, \phpbb\user $user, \phpbb\config\config $config, \phpbb\controller\provider $provider, $phpbb_root_path, $php_ext) public function __construct(\phpbb\template\template $template, \phpbb\user $user, \phpbb\config\config $config, \phpbb\controller\provider $provider, \phpbb\extension\manager $manager, $phpbb_root_path, $php_ext)
{ {
$this->template = $template; $this->template = $template;
$this->user = $user; $this->user = $user;
$this->config = $config; $this->config = $config;
$this->phpbb_root_path = $phpbb_root_path; $this->phpbb_root_path = $phpbb_root_path;
$this->php_ext = $php_ext; $this->php_ext = $php_ext;
$provider->set_ext_finder($manager->get_finder());
$this->route_collection = $provider->get_routes(); $this->route_collection = $provider->get_routes();
} }

View file

@ -37,20 +37,24 @@ class provider
* @param array() $routing_files Array of strings containing paths * @param array() $routing_files Array of strings containing paths
* to YAML files holding route information * to YAML files holding route information
*/ */
public function __construct(\phpbb\extension\finder $finder = null, $routing_files = array()) public function __construct($routing_files = array())
{ {
$this->routing_files = $routing_files; $this->routing_files = $routing_files;
}
if ($finder) /**
{ * @param \phpbb\extension\finder $finder
// We hardcode the path to the core config directory * @return null
// because the finder cannot find it */
$this->routing_files = array_merge($this->routing_files, array('config/routing.yml'), array_keys($finder public function set_ext_finder(\phpbb\extension\finder $finder)
->directory('/config') {
->suffix('routing.yml') // We hardcode the path to the core config directory
->find() // because the finder cannot find it
)); $this->routing_files = array_merge($this->routing_files, array('config/routing.yml'), array_keys($finder
} ->directory('config')
->suffix('routing.yml')
->find()
));
} }
/** /**

View file

@ -18,10 +18,10 @@ use Symfony\Component\Routing\RequestContext;
class kernel_request_subscriber implements EventSubscriberInterface class kernel_request_subscriber implements EventSubscriberInterface
{ {
/** /**
* Extension finder object * Extension manager object
* @var \phpbb\extension\finder * @var \phpbb\extension\manager
*/ */
protected $finder; protected $manager;
/** /**
* PHP extension * PHP extension
@ -38,15 +38,15 @@ class kernel_request_subscriber implements EventSubscriberInterface
/** /**
* Construct method * Construct method
* *
* @param \phpbb\extension\finder $finder Extension finder object * @param \phpbb\extension\manager $manager Extension manager object
* @param string $root_path Root path * @param string $root_path Root path
* @param string $php_ext PHP extension * @param string $php_ext PHP extension
*/ */
public function __construct(\phpbb\extension\finder $finder, $root_path, $php_ext) public function __construct(\phpbb\extension\manager $manager, $root_path, $php_ext)
{ {
$this->finder = $finder;
$this->root_path = $root_path; $this->root_path = $root_path;
$this->php_ext = $php_ext; $this->php_ext = $php_ext;
$this->manager = $manager;
} }
/** /**
@ -55,6 +55,7 @@ class kernel_request_subscriber implements EventSubscriberInterface
* This is responsible for setting up the routing information * This is responsible for setting up the routing information
* *
* @param GetResponseEvent $event * @param GetResponseEvent $event
* @throws \BadMethodCallException
* @return null * @return null
*/ */
public function on_kernel_request(GetResponseEvent $event) public function on_kernel_request(GetResponseEvent $event)
@ -63,7 +64,7 @@ class kernel_request_subscriber implements EventSubscriberInterface
$context = new RequestContext(); $context = new RequestContext();
$context->fromRequest($request); $context->fromRequest($request);
$matcher = phpbb_get_url_matcher($this->finder, $context, $this->root_path, $this->php_ext); $matcher = phpbb_get_url_matcher($this->manager, $context, $this->root_path, $this->php_ext);
$router_listener = new RouterListener($matcher, $context); $router_listener = new RouterListener($matcher, $context);
$router_listener->onKernelRequest($event); $router_listener->onKernelRequest($event);
} }

View file

@ -29,7 +29,8 @@ class phpbb_controller_controller_test extends phpbb_test_case
public function test_provider() public function test_provider()
{ {
$provider = new \phpbb\controller\provider($this->extension_manager->get_finder()); $provider = new \phpbb\controller\provider();
$provider->set_ext_finder($this->extension_manager->get_finder());
$routes = $provider->find(__DIR__)->get_routes(); $routes = $provider->find(__DIR__)->get_routes();
// This will need to be updated if any new routes are defined // This will need to be updated if any new routes are defined

View file

@ -27,23 +27,25 @@ class phpbb_controller_helper_route_test extends phpbb_test_case
); );
$this->config = new \phpbb\config\config(array('enable_mod_rewrite' => '0')); $this->config = new \phpbb\config\config(array('enable_mod_rewrite' => '0'));
$this->template = new phpbb\template\twig\twig($phpbb_path_helper, $this->config, $this->user, new \phpbb\template\context()); $this->template = new phpbb\template\twig\twig($phpbb_path_helper, $this->config, $this->user, new \phpbb\template\context());
$this->extension_manager = new phpbb_mock_extension_manager(
dirname(__FILE__) . '/',
array(
'vendor2/foo' => array(
'ext_name' => 'vendor2/foo',
'ext_active' => '1',
'ext_path' => 'ext/vendor2/foo/',
),
)
);
$finder = new \phpbb\extension\finder( $finder = new \phpbb\extension\finder(
new phpbb_mock_extension_manager( $this->extension_manager,
dirname(__FILE__) . '/',
array(
'vendor2/foo' => array(
'ext_name' => 'vendor2/foo',
'ext_active' => '1',
'ext_path' => 'ext/vendor2/foo/',
),
)
),
new \phpbb\filesystem(), new \phpbb\filesystem(),
dirname(__FILE__) . '/', dirname(__FILE__) . '/',
new phpbb_mock_cache() new phpbb_mock_cache()
); );
$this->provider = new \phpbb\controller\provider($finder); $this->provider = new \phpbb\controller\provider();
$this->provider->set_ext_finder($finder);
$this->provider->find(dirname(__FILE__) . '/'); $this->provider->find(dirname(__FILE__) . '/');
} }
@ -82,7 +84,7 @@ class phpbb_controller_helper_route_test extends phpbb_test_case
*/ */
public function test_helper_url_no_rewrite($route, $params, $is_amp, $session_id, $expected, $description) public function test_helper_url_no_rewrite($route, $params, $is_amp, $session_id, $expected, $description)
{ {
$this->helper = new \phpbb\controller\helper($this->template, $this->user, $this->config, $this->provider, '', 'php'); $this->helper = new \phpbb\controller\helper($this->template, $this->user, $this->config, $this->provider, $this->extension_manager,'', 'php');
$this->assertEquals($expected, $this->helper->route($route, $params, $is_amp, $session_id)); $this->assertEquals($expected, $this->helper->route($route, $params, $is_amp, $session_id));
} }
@ -122,7 +124,7 @@ class phpbb_controller_helper_route_test extends phpbb_test_case
public function test_helper_url_with_rewrite($route, $params, $is_amp, $session_id, $expected, $description) public function test_helper_url_with_rewrite($route, $params, $is_amp, $session_id, $expected, $description)
{ {
$this->config = new \phpbb\config\config(array('enable_mod_rewrite' => '1')); $this->config = new \phpbb\config\config(array('enable_mod_rewrite' => '1'));
$this->helper = new \phpbb\controller\helper($this->template, $this->user, $this->config, $this->provider, '', 'php'); $this->helper = new \phpbb\controller\helper($this->template, $this->user, $this->config, $this->provider, $this->extension_manager,'', 'php');
$this->assertEquals($expected, $this->helper->route($route, $params, $is_amp, $session_id)); $this->assertEquals($expected, $this->helper->route($route, $params, $is_amp, $session_id));
} }
} }

View file

@ -30,17 +30,19 @@ class phpbb_pagination_pagination_test extends phpbb_template_template_test_case
->method('lang') ->method('lang')
->will($this->returnCallback(array($this, 'return_callback_implode'))); ->will($this->returnCallback(array($this, 'return_callback_implode')));
$manager = new phpbb_mock_extension_manager(dirname(__FILE__) . '/', array());
$this->finder = new \phpbb\extension\finder( $this->finder = new \phpbb\extension\finder(
new phpbb_mock_extension_manager(dirname(__FILE__) . '/', array()), $manager,
new \phpbb\filesystem(), new \phpbb\filesystem(),
dirname(__FILE__) . '/', dirname(__FILE__) . '/',
new phpbb_mock_cache() new phpbb_mock_cache()
); );
$this->config = new \phpbb\config\config(array('enable_mod_rewrite' => '1')); $this->config = new \phpbb\config\config(array('enable_mod_rewrite' => '1'));
$provider = new \phpbb\controller\provider($this->finder); $provider = new \phpbb\controller\provider();
$this->provider->set_ext_finder($this->finder);
$provider->find(dirname(__FILE__) . '/'); $provider->find(dirname(__FILE__) . '/');
$this->helper = new \phpbb\controller\helper($this->template, $this->user, $this->config, $provider, '', 'php'); $this->helper = new \phpbb\controller\helper($this->template, $this->user, $this->config, $provider, $manager, '', 'php');
$this->pagination = new \phpbb\pagination($this->template, $this->user, $this->helper); $this->pagination = new \phpbb\pagination($this->template, $this->user, $this->helper);
} }