mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
[ticket/12775] Add a config.php class (and service)
PHPBB3-12775
This commit is contained in:
parent
cbe846a64e
commit
301d9ce990
4 changed files with 98 additions and 56 deletions
|
@ -21,10 +21,14 @@ if (!defined('IN_PHPBB'))
|
||||||
}
|
}
|
||||||
|
|
||||||
require($phpbb_root_path . 'includes/startup.' . $phpEx);
|
require($phpbb_root_path . 'includes/startup.' . $phpEx);
|
||||||
require($phpbb_root_path . 'phpbb/di/container_factory.' . $phpEx);
|
require($phpbb_root_path . 'phpbb/class_loader.' . $phpEx);
|
||||||
|
|
||||||
$factory = new \phpbb\di\container_factory($phpbb_root_path, $phpEx);
|
// Setup class loader first
|
||||||
$config_file_data = $factory->load_config_file();
|
$phpbb_class_loader = new \phpbb\class_loader('phpbb\\', "{$phpbb_root_path}phpbb/", $phpEx);
|
||||||
|
$phpbb_class_loader->register();
|
||||||
|
|
||||||
|
$config_php_handler = new \phpbb\config_php($phpbb_root_path, $phpEx);
|
||||||
|
$config_file_data = $config_php_handler->load_config_file();
|
||||||
extract($config_file_data);
|
extract($config_file_data);
|
||||||
|
|
||||||
if (!defined('PHPBB_INSTALLED'))
|
if (!defined('PHPBB_INSTALLED'))
|
||||||
|
@ -76,8 +80,6 @@ $phpbb_adm_relative_path = (isset($phpbb_adm_relative_path)) ? $phpbb_adm_relati
|
||||||
$phpbb_admin_path = (defined('PHPBB_ADMIN_PATH')) ? PHPBB_ADMIN_PATH : $phpbb_root_path . $phpbb_adm_relative_path;
|
$phpbb_admin_path = (defined('PHPBB_ADMIN_PATH')) ? PHPBB_ADMIN_PATH : $phpbb_root_path . $phpbb_adm_relative_path;
|
||||||
|
|
||||||
// Include files
|
// Include files
|
||||||
require($phpbb_root_path . 'phpbb/class_loader.' . $phpEx);
|
|
||||||
|
|
||||||
require($phpbb_root_path . 'includes/functions.' . $phpEx);
|
require($phpbb_root_path . 'includes/functions.' . $phpEx);
|
||||||
require($phpbb_root_path . 'includes/functions_content.' . $phpEx);
|
require($phpbb_root_path . 'includes/functions_content.' . $phpEx);
|
||||||
include($phpbb_root_path . 'includes/functions_compatibility.' . $phpEx);
|
include($phpbb_root_path . 'includes/functions_compatibility.' . $phpEx);
|
||||||
|
@ -88,18 +90,15 @@ require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
|
||||||
// Set PHP error handler to ours
|
// Set PHP error handler to ours
|
||||||
set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler');
|
set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler');
|
||||||
|
|
||||||
// Setup class loader first
|
|
||||||
$phpbb_class_loader = new \phpbb\class_loader('phpbb\\', "{$phpbb_root_path}phpbb/", $phpEx);
|
|
||||||
$phpbb_class_loader->register();
|
|
||||||
$phpbb_class_loader_ext = new \phpbb\class_loader('\\', "{$phpbb_root_path}ext/", $phpEx);
|
$phpbb_class_loader_ext = new \phpbb\class_loader('\\', "{$phpbb_root_path}ext/", $phpEx);
|
||||||
$phpbb_class_loader_ext->register();
|
$phpbb_class_loader_ext->register();
|
||||||
|
|
||||||
phpbb_load_extensions_autoloaders($phpbb_root_path);
|
phpbb_load_extensions_autoloaders($phpbb_root_path);
|
||||||
|
|
||||||
// Set up container
|
// Set up container
|
||||||
|
$factory = new \phpbb\di\container_factory($config_php_handler, $phpbb_root_path, $phpEx);
|
||||||
$phpbb_container = $factory->get_container();
|
$phpbb_container = $factory->get_container();
|
||||||
|
|
||||||
|
|
||||||
$phpbb_class_loader->set_cache($phpbb_container->get('cache.driver'));
|
$phpbb_class_loader->set_cache($phpbb_container->get('cache.driver'));
|
||||||
$phpbb_class_loader_ext->set_cache($phpbb_container->get('cache.driver'));
|
$phpbb_class_loader_ext->set_cache($phpbb_container->get('cache.driver'));
|
||||||
|
|
||||||
|
|
|
@ -69,6 +69,9 @@ services:
|
||||||
- @cache.driver
|
- @cache.driver
|
||||||
- %tables.config%
|
- %tables.config%
|
||||||
|
|
||||||
|
config.php:
|
||||||
|
synthetic: true
|
||||||
|
|
||||||
config_text:
|
config_text:
|
||||||
class: phpbb\config\db_text
|
class: phpbb\config\db_text
|
||||||
arguments:
|
arguments:
|
||||||
|
|
77
phpBB/phpbb/config_php.php
Normal file
77
phpBB/phpbb/config_php.php
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
<?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;
|
||||||
|
|
||||||
|
class config_php
|
||||||
|
{
|
||||||
|
/** @var string phpBB Root Path */
|
||||||
|
protected $phpbb_root_path;
|
||||||
|
|
||||||
|
/** @var string php file extension */
|
||||||
|
protected $php_ext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates if the php config file has been loaded.
|
||||||
|
*
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
protected $config_loaded = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The content of the php config file
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $config_data = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param string $phpbb_root_path Path to the phpbb includes directory.
|
||||||
|
* @param string $php_ext php file extension
|
||||||
|
*/
|
||||||
|
function __construct($phpbb_root_path, $php_ext)
|
||||||
|
{
|
||||||
|
$this->phpbb_root_path = $phpbb_root_path;
|
||||||
|
$this->php_ext = $php_ext;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load the config file, store the information and return them
|
||||||
|
*
|
||||||
|
* @return bool|array Return the content of the config file or false if the file does not exists.
|
||||||
|
*/
|
||||||
|
public function load_config_file()
|
||||||
|
{
|
||||||
|
if (!$this->config_loaded)
|
||||||
|
{
|
||||||
|
if (file_exists($this->phpbb_root_path . 'config.' . $this->php_ext))
|
||||||
|
{
|
||||||
|
$x7eeee37ce4d5f1ce4d968ed8fdd9bcbb = null;
|
||||||
|
$x7eeee37ce4d5f1ce4d968ed8fdd9bcbb = get_defined_vars();
|
||||||
|
|
||||||
|
require($this->phpbb_root_path . 'config.' . $this->php_ext);
|
||||||
|
$this->config_data = array_diff_key(get_defined_vars(), $x7eeee37ce4d5f1ce4d968ed8fdd9bcbb);
|
||||||
|
|
||||||
|
$this->config_loaded = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->config_data;
|
||||||
|
}
|
||||||
|
}
|
|
@ -42,13 +42,6 @@ class container_factory
|
||||||
*/
|
*/
|
||||||
protected $installed_exts = null;
|
protected $installed_exts = null;
|
||||||
|
|
||||||
/**
|
|
||||||
* Indicates if the php config file has been loaded.
|
|
||||||
*
|
|
||||||
* @var bool
|
|
||||||
*/
|
|
||||||
protected $config_loaded = false;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The content of the php config file
|
* The content of the php config file
|
||||||
*
|
*
|
||||||
|
@ -109,11 +102,13 @@ class container_factory
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
|
* @param \phpbb\config_php $config_php_handler
|
||||||
* @param string $phpbb_root_path Path to the phpbb includes directory.
|
* @param string $phpbb_root_path Path to the phpbb includes directory.
|
||||||
* @param string $php_ext php file extension
|
* @param string $php_ext php file extension
|
||||||
*/
|
*/
|
||||||
function __construct($phpbb_root_path, $php_ext)
|
function __construct(\phpbb\config_php $config_php_handler, $phpbb_root_path, $php_ext)
|
||||||
{
|
{
|
||||||
|
$this->config_php_handler = $config_php_handler;
|
||||||
$this->phpbb_root_path = $phpbb_root_path;
|
$this->phpbb_root_path = $phpbb_root_path;
|
||||||
$this->php_ext = $php_ext;
|
$this->php_ext = $php_ext;
|
||||||
}
|
}
|
||||||
|
@ -135,9 +130,9 @@ class container_factory
|
||||||
{
|
{
|
||||||
if ($this->config_path === null)
|
if ($this->config_path === null)
|
||||||
{
|
{
|
||||||
$config_path = $this->phpbb_root_path . 'config';
|
$this->config_path = $this->phpbb_root_path . 'config';
|
||||||
}
|
}
|
||||||
$container_extensions = array(new \phpbb\di\extension\core($config_path));
|
$container_extensions = array(new \phpbb\di\extension\core($this->config_path));
|
||||||
|
|
||||||
if ($this->use_extensions)
|
if ($this->use_extensions)
|
||||||
{
|
{
|
||||||
|
@ -147,7 +142,7 @@ class container_factory
|
||||||
|
|
||||||
if ($this->inject_config)
|
if ($this->inject_config)
|
||||||
{
|
{
|
||||||
$this->load_config_file();
|
$this->config_data = $this->config_php_handler->load_config_file();
|
||||||
$container_extensions[] = new \phpbb\di\extension\config($this->config_data);
|
$container_extensions[] = new \phpbb\di\extension\config($this->config_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,11 +164,7 @@ class container_factory
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Impossible because we have a compiled (and so frozen) container
|
$this->container->set('config.php', $this->config_php_handler);
|
||||||
/*if ($this->inject_config)
|
|
||||||
{
|
|
||||||
$this->inject_config();
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// Frozen container, we can't modify either the services or the parameters
|
// Frozen container, we can't modify either the services or the parameters
|
||||||
//$this->inject_dbal();
|
//$this->inject_dbal();
|
||||||
|
@ -181,34 +172,6 @@ class container_factory
|
||||||
return $this->container;
|
return $this->container;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Load the config file, store the information and return them
|
|
||||||
*
|
|
||||||
* @return bool|array Return the content of the config file or false if the file does not exists.
|
|
||||||
*/
|
|
||||||
public function load_config_file()
|
|
||||||
{
|
|
||||||
if (!$this->config_loaded)
|
|
||||||
{
|
|
||||||
if (file_exists($this->phpbb_root_path . 'config.' . $this->php_ext))
|
|
||||||
{
|
|
||||||
$x7eeee37ce4d5f1ce4d968ed8fdd9bcbb = null;
|
|
||||||
$x7eeee37ce4d5f1ce4d968ed8fdd9bcbb = get_defined_vars();
|
|
||||||
|
|
||||||
require($this->phpbb_root_path . 'config.' . $this->php_ext);
|
|
||||||
$this->config_data = array_diff_key(get_defined_vars(), $x7eeee37ce4d5f1ce4d968ed8fdd9bcbb);
|
|
||||||
|
|
||||||
$this->config_loaded = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->config_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set if the extensions should be used.
|
* Set if the extensions should be used.
|
||||||
*
|
*
|
||||||
|
@ -308,7 +271,7 @@ class container_factory
|
||||||
{
|
{
|
||||||
if ($this->dbal_connection === null)
|
if ($this->dbal_connection === null)
|
||||||
{
|
{
|
||||||
$this->load_config_file();
|
$this->config_data = $this->config_php_handler->load_config_file();
|
||||||
$dbal_driver_class = phpbb_convert_30_dbms_to_31($this->config_data['dbms']);
|
$dbal_driver_class = phpbb_convert_30_dbms_to_31($this->config_data['dbms']);
|
||||||
$this->dbal_connection = new $dbal_driver_class();
|
$this->dbal_connection = new $dbal_driver_class();
|
||||||
$this->dbal_connection->sql_connect(
|
$this->dbal_connection->sql_connect(
|
||||||
|
@ -378,8 +341,8 @@ class container_factory
|
||||||
if ($this->custom_parameters === null)
|
if ($this->custom_parameters === null)
|
||||||
{
|
{
|
||||||
$this->custom_parameters = array(
|
$this->custom_parameters = array(
|
||||||
'core.root_path', $this->phpbb_root_path,
|
'core.root_path' => $this->phpbb_root_path,
|
||||||
'core.php_ext', $this->php_ext,
|
'core.php_ext' => $this->php_ext,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue