Merge branch '3.3.x'

This commit is contained in:
Marc Alexander 2019-06-05 21:45:47 +02:00
commit 12bff3ca31
No known key found for this signature in database
GPG key ID: 50E0D2423696F995
6 changed files with 85 additions and 1 deletions

View file

@ -158,13 +158,18 @@ class container_builder
} }
else else
{ {
$this->container_extensions = array(new extension\core($this->get_config_path())); $this->container_extensions = [
new extension\core($this->get_config_path()),
];
if ($this->use_extensions) if ($this->use_extensions)
{ {
$this->load_extensions(); $this->load_extensions();
} }
// Add tables extension after all extensions
$this->container_extensions[] = new extension\tables();
// Inject the config // Inject the config
if ($this->config_php_file) if ($this->config_php_file)
{ {

View file

@ -0,0 +1,59 @@
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/
namespace phpbb\di\extension;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
/**
* Container tables extension
*/
class tables extends Extension
{
/**
* {@inheritDoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
// Tables is a reserved parameter and will be overwritten at all times
$tables = [];
// Add access via 'tables' parameter to acquire array with all tables
$parameterBag = $container->getParameterBag();
$parameters = $parameterBag->all();
foreach ($parameters as $parameter_name => $parameter_value)
{
if (!preg_match('/tables\.(.+)/', $parameter_name, $matches))
{
continue;
}
$tables[$matches[1]] = $parameter_value;
}
$container->setParameter('tables', $tables);
}
/**
* Returns the recommended alias to use in XML.
*
* This alias is also the mandatory prefix to use when using YAML.
*
* @return string The alias
*/
public function getAlias()
{
return 'tables';
}
}

View file

@ -77,6 +77,18 @@ namespace
$this->assertTrue($container->isFrozen()); $this->assertTrue($container->isFrozen());
} }
public function test_tables_mapping()
{
$this->builder->without_cache();
$container = $this->builder->get_container();
$this->assertTrue($container->hasParameter('tables'));
$tables = $container->getParameter('tables');
$this->assertGreaterThan(0, count($tables));
$this->assertTrue($container->hasParameter('tables.foo_bar'));
$this->assertTrue(isset($tables['foo_bar']));
$this->assertEquals($tables['acl_groups'], 'phpbb_some_other');
}
public function test_without_cache() public function test_without_cache()
{ {
$this->builder->without_cache(); $this->builder->without_cache();

View file

@ -1,5 +1,8 @@
parameters: parameters:
core: true core: true
tables.acl_groups: '%core.table_prefix%acl_groups'
tables.acl_options: '%core.table_prefix%acl_options'
tables.acl_roles: '%core.table_prefix%acl_roles'
services: services:
config.php: config.php:

View file

@ -1,5 +1,8 @@
parameters: parameters:
core: true core: true
tables.acl_groups: '%core.table_prefix%acl_groups'
tables.acl_options: '%core.table_prefix%acl_options'
tables.acl_roles: '%core.table_prefix%acl_roles'
services: services:
config.php: config.php:

View file

@ -1,2 +1,4 @@
parameters: parameters:
enabled_4: true enabled_4: true
tables.foo_bar: '%core.table_prefix%foo_bar'
tables.acl_groups: '%core.table_prefix%some_other'