1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-31 22:10:45 +02:00

Merge pull request #1801 from nickvergessen/ticket/11948

Ticket/11948 Extensions should be allowed to have more then 1 routing file
This commit is contained in:
Nils Adermann
2013-10-22 00:29:20 -07:00
5 changed files with 30 additions and 17 deletions

View File

@@ -32,7 +32,7 @@ function phpbb_get_url_matcher(\phpbb\extension\finder $finder, RequestContext $
{
if (defined('DEBUG'))
{
return phpbb_create_url_matcher($finder, $context);
return phpbb_create_url_matcher($finder, $context, $root_path);
}
if (!phpbb_url_matcher_dumped($root_path, $php_ext))
@@ -54,7 +54,7 @@ function phpbb_get_url_matcher(\phpbb\extension\finder $finder, RequestContext $
function phpbb_create_dumped_url_matcher(\phpbb\extension\finder $finder, $root_path, $php_ext)
{
$provider = new \phpbb\controller\provider();
$routes = $provider->import_paths_from_finder($finder)->find();
$routes = $provider->import_paths_from_finder($finder)->find($root_path);
$dumper = new PhpMatcherDumper($routes);
$cached_url_matcher_dump = $dumper->dump(array(
'class' => 'phpbb_url_matcher',
@@ -70,10 +70,10 @@ function phpbb_create_dumped_url_matcher(\phpbb\extension\finder $finder, $root_
* @param RequestContext $context Symfony RequestContext object
* @return UrlMatcher
*/
function phpbb_create_url_matcher(\phpbb\extension\finder $finder, RequestContext $context)
function phpbb_create_url_matcher(\phpbb\extension\finder $finder, RequestContext $context, $root_path)
{
$provider = new \phpbb\controller\provider();
$routes = $provider->import_paths_from_finder($finder)->find();
$routes = $provider->import_paths_from_finder($finder)->find($root_path);
return new UrlMatcher($routes, $context);
}

View File

@@ -31,17 +31,17 @@ class provider
* YAML file(s) containing route information
* @var array
*/
protected $routing_paths;
protected $routing_files;
/**
* Construct method
*
* @param array() $routing_paths Array of strings containing paths
* @param array() $routing_files Array of strings containing paths
* to YAML files holding route information
*/
public function __construct($routing_paths = array())
public function __construct($routing_files = array())
{
$this->routing_paths = $routing_paths;
$this->routing_files = $routing_files;
}
/**
@@ -54,12 +54,11 @@ class provider
{
// We hardcode the path to the core config directory
// because the finder cannot find it
$this->routing_paths = array_merge(array('config'), array_map('dirname', array_keys($finder
$this->routing_files = array_merge(array('config/routing.yml'), array_keys($finder
->directory('config')
->prefix('routing')
->suffix('yml')
->suffix('routing.yml')
->find()
)));
));
return $this;
}
@@ -73,10 +72,10 @@ class provider
public function find($base_path = '')
{
$routes = new RouteCollection;
foreach ($this->routing_paths as $path)
foreach ($this->routing_files as $file_path)
{
$loader = new YamlFileLoader(new FileLocator($base_path . $path));
$routes->addCollection($loader->load('routing.yml'));
$loader = new YamlFileLoader(new FileLocator($base_path));
$routes->addCollection($loader->load($file_path));
}
return $routes;