diff options
author | Nils Adermann <naderman@naderman.de> | 2013-07-11 15:28:26 -0700 |
---|---|---|
committer | Nils Adermann <naderman@naderman.de> | 2013-07-11 15:28:26 -0700 |
commit | b1d3c1bf6990c8105c18eb9db06ebf9c974b0899 (patch) | |
tree | 351491d515d8eec616a466109a98afea42821114 /phpBB/includes | |
parent | 382ae5a01ee9c1b694382f2e9a7cc14ffb6974ac (diff) | |
parent | 1a5d685f45e5fd4450750227ef2eefe34a9b482a (diff) | |
download | forums-b1d3c1bf6990c8105c18eb9db06ebf9c974b0899.tar forums-b1d3c1bf6990c8105c18eb9db06ebf9c974b0899.tar.gz forums-b1d3c1bf6990c8105c18eb9db06ebf9c974b0899.tar.bz2 forums-b1d3c1bf6990c8105c18eb9db06ebf9c974b0899.tar.xz forums-b1d3c1bf6990c8105c18eb9db06ebf9c974b0899.zip |
Merge pull request #1522 from igorw/feature/bootstrap-dic
[feature/bootstrap-dic] Bootstrap container from config.php
Diffstat (limited to 'phpBB/includes')
-rw-r--r-- | phpBB/includes/functions_container.php | 80 |
1 files changed, 68 insertions, 12 deletions
diff --git a/phpBB/includes/functions_container.php b/phpBB/includes/functions_container.php index 106b7d75cc..0575f00a0b 100644 --- a/phpBB/includes/functions_container.php +++ b/phpBB/includes/functions_container.php @@ -21,6 +21,67 @@ if (!defined('IN_PHPBB')) } /** +* Get DB connection from config.php. +* +* Used to bootstrap the container. +* +* @param string $config_file +* @return phpbb_db_driver +*/ +function phpbb_bootstrap_db_connection($config_file) +{ + require($config_file); + $dbal_driver_class = phpbb_convert_30_dbms_to_31($dbms); + + return new $dbal_driver_class($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, defined('PHPBB_DB_NEW_LINK')); +} + +/** +* Get table prefix from config.php. +* +* Used to bootstrap the container. +* +* @param string $config_file +* @return string table prefix +*/ +function phpbb_bootstrap_table_prefix($config_file) +{ + require($config_file); + return $table_prefix; +} + +/** +* Get enabled extensions. +* +* Used to bootstrap the container. +* +* @param string $config_file +* @return array enabled extensions +*/ +function phpbb_bootstrap_enabled_exts($config_file) +{ + $db = phpbb_bootstrap_db_connection($config_file); + $table_prefix = phpbb_bootstrap_table_prefix($config_file); + $extension_table = $table_prefix.'ext'; + + $sql = 'SELECT * + FROM ' . $extension_table . ' + WHERE ext_active = 1'; + + $result = $db->sql_query($sql); + $rows = $db->sql_fetchrowset($result); + $db->sql_freeresult($result); + + $exts = array(); + foreach ($rows as $row) + { + $exts[$row['ext_name']] = $phpbb_root_path . 'ext/' . $row['ext_name'] . '/'; + } + + return $exts; +} + +/** * Create the ContainerBuilder object * * @param array $extensions Array of Container extension objects @@ -79,16 +140,9 @@ function phpbb_create_install_container($phpbb_root_path, $php_ext) * @param string $php_ext PHP Extension * @return ContainerBuilder object (compiled) */ -function phpbb_create_compiled_container(array $extensions, array $passes, $phpbb_root_path, $php_ext) +function phpbb_create_compiled_container($config_file, array $extensions, array $passes, $phpbb_root_path, $php_ext) { - // Create a temporary container for access to the ext.manager service - $tmp_container = phpbb_create_container($extensions, $phpbb_root_path, $php_ext); - $tmp_container->compile(); - - // XXX stop writing to global $cache when - // http://tracker.phpbb.com/browse/PHPBB3-11203 is fixed - $GLOBALS['cache'] = $tmp_container->get('cache'); - $installed_exts = $tmp_container->get('ext.manager')->all_enabled(); + $installed_exts = phpbb_bootstrap_enabled_exts($config_file); // Now pass the enabled extension paths into the ext compiler extension $extensions[] = new phpbb_di_extension_ext($installed_exts); @@ -115,7 +169,7 @@ function phpbb_create_compiled_container(array $extensions, array $passes, $phpb * @param string $php_ext PHP Extension * @return ContainerBuilder object (compiled) */ -function phpbb_create_dumped_container(array $extensions, array $passes, $phpbb_root_path, $php_ext) +function phpbb_create_dumped_container($config_file, array $extensions, array $passes, $phpbb_root_path, $php_ext) { // Check for our cached container; if it exists, use it $container_filename = phpbb_container_filename($phpbb_root_path, $php_ext); @@ -155,7 +209,7 @@ function phpbb_create_dumped_container(array $extensions, array $passes, $phpbb_ * @param string $php_ext PHP Extension * @return ContainerBuilder object (compiled) */ -function phpbb_create_dumped_container_unless_debug(array $extensions, array $passes, $phpbb_root_path, $php_ext) +function phpbb_create_dumped_container_unless_debug($config_file, array $extensions, array $passes, $phpbb_root_path, $php_ext) { $container_factory = defined('DEBUG') ? 'phpbb_create_compiled_container' : 'phpbb_create_dumped_container'; return $container_factory($extensions, $passes, $phpbb_root_path, $php_ext); @@ -172,9 +226,11 @@ function phpbb_create_dumped_container_unless_debug(array $extensions, array $pa */ function phpbb_create_default_container($phpbb_root_path, $php_ext) { + $config_file = $phpbb_root_path . 'config.' . $php_ext; return phpbb_create_dumped_container_unless_debug( + $config_file, array( - new phpbb_di_extension_config($phpbb_root_path . 'config.' . $php_ext), + new phpbb_di_extension_config($config_file), new phpbb_di_extension_core($phpbb_root_path), ), array( |