aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/di/processor/config.php
blob: 22b6252a6d99ce047b64437d6dbaf99e6f32b815 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
/**
*
* @package phpBB3
* @copyright (c) 2012 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
	exit;
}

use Symfony\Component\DependencyInjection\ContainerBuilder;

/**
* Configure the container for phpBB's services though
* user-defined parameters defined in the config.php file.
*/
class phpbb_di_processor_config implements phpbb_di_processor_interface
{
	private $config_file;
	private $phpbb_root_path;
	private $php_ext;

	/**
	* Constructor.
	*
	* @param string $config_file The config file
	* @param string $phpbb_root_path The root path
	* @param string $php_ext The PHP extension
	*/
	public function __construct($config_file, $phpbb_root_path, $php_ext)
	{
		$this->config_file = $config_file;
		$this->phpbb_root_path = $phpbb_root_path;
		$this->php_ext = $php_ext;
	}

	/**
	* @inheritdoc
	*/
	public function process(ContainerBuilder $container)
	{
		require $this->config_file;

		$container->setParameter('core.root_path', $this->phpbb_root_path);
		$container->setParameter('core.php_ext', $this->php_ext);

		$container->setParameter('core.table_prefix', $table_prefix);
		$container->setParameter('cache.driver.class', $this->fix_acm_type($acm_type));
		$container->setParameter('dbal.driver.class', 'dbal_'.$dbms);
		$container->setParameter('dbal.dbhost', $dbhost);
		$container->setParameter('dbal.dbuser', $dbuser);
		$container->setParameter('dbal.dbpasswd', $dbpasswd);
		$container->setParameter('dbal.dbname', $dbname);
		$container->setParameter('dbal.dbport', $dbport);
		$container->setParameter('dbal.new_link', defined('PHPBB_DB_NEW_LINK') && PHPBB_DB_NEW_LINK);

		$container->set('container', $container);
	}

	protected function fix_acm_type($acm_type)
	{
		if (preg_match('#^[a-z]+$#', $acm_type))
		{
			return 'phpbb_cache_driver_'.$acm_type;
		}

		return $acm_type;
	}
}