diff options
author | David King <imkingdavid@gmail.com> | 2013-07-11 20:43:41 -0400 |
---|---|---|
committer | David King <imkingdavid@gmail.com> | 2013-07-11 20:43:41 -0400 |
commit | 8b7aef6f938bf7c08d41908e78b6e71117adba38 (patch) | |
tree | d39d9f3720e4afe78d23772e15830a2b12f1f5ba /phpBB/includes/functions_container.php | |
parent | b9c290b5480a958eabeef66d5e9af799f77e4566 (diff) | |
parent | b1d3c1bf6990c8105c18eb9db06ebf9c974b0899 (diff) | |
download | forums-8b7aef6f938bf7c08d41908e78b6e71117adba38.tar forums-8b7aef6f938bf7c08d41908e78b6e71117adba38.tar.gz forums-8b7aef6f938bf7c08d41908e78b6e71117adba38.tar.bz2 forums-8b7aef6f938bf7c08d41908e78b6e71117adba38.tar.xz forums-8b7aef6f938bf7c08d41908e78b6e71117adba38.zip |
Merge branch 'develop' into ticket/11215
* develop: (176 commits)
[feature/bootstrap-dic] Bootstrap container from config.php
[ticket/11548] Use new static methods for request and submit
[ticket/10772] Updating tests
[ticket/10772] Remove 3.1 code
[ticket/11388] Add newlines at EOF
[ticket/11388] INCLUDECSS
[ticket/11548] Run array_map on complete error array and not just colour_error
[ticket/11644] Skip phpbb_dbal_order_lower_test on MySQL 5.6
[ticket/11388] Do not append assets_version if using remote path (e.g. http)
[ticket/11388] Fix typo
[ticket/11388] Remove typehints (causing tests to fail)
[ticket/11388] Disable cache if IN_INSTALL defined
[ticket/11388] Do not modify by reference
[ticket/11388] typehits
[ticket/11388] INCLUDEJS test for //(url)
[ticket/11388] INCLUDEJS supports //(url)
[ticket/11388] Fixing includejs test
[ticket/11388] includejs inherit from includeasset
[feature/twig] Unit tests for includejs
[ticket/8319] Add migration file for update change
...
Diffstat (limited to 'phpBB/includes/functions_container.php')
-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( |