aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpBB/common.php55
-rw-r--r--phpBB/composer.json5
-rw-r--r--phpBB/composer.lock16
-rw-r--r--phpBB/config/parameters.yml12
-rw-r--r--phpBB/config/services.yml123
-rw-r--r--phpBB/cron.php2
-rw-r--r--phpBB/download/file.php38
-rw-r--r--phpBB/includes/cache/factory.php42
-rw-r--r--phpBB/install/index.php24
9 files changed, 212 insertions, 105 deletions
diff --git a/phpBB/common.php b/phpBB/common.php
index b3b8d7e4f7..51478662d7 100644
--- a/phpBB/common.php
+++ b/phpBB/common.php
@@ -15,6 +15,9 @@ if (!defined('IN_PHPBB'))
exit;
}
+use Symfony\Component\Config\FileLocator;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
use Symfony\Component\EventDispatcher\EventDispatcher;
require($phpbb_root_path . 'includes/startup.' . $phpEx);
@@ -85,50 +88,42 @@ require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
// Set PHP error handler to ours
set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler');
+$container = new ContainerBuilder();
+$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/config'));
+$loader->load('parameters.yml');
+$loader->load('services.yml');
+
+$container->setParameter('core.root_path', $phpbb_root_path);
+$container->setParameter('core.php_ext', $phpEx);
+
// Setup class loader first
-$phpbb_class_loader_ext = new phpbb_class_loader('phpbb_ext_', $phpbb_root_path . 'ext/', ".$phpEx");
-$phpbb_class_loader_ext->register();
-$phpbb_class_loader = new phpbb_class_loader('phpbb_', $phpbb_root_path . 'includes/', ".$phpEx");
-$phpbb_class_loader->register();
+$phpbb_class_loader = $container->get('class_loader');
+$phpbb_class_loader_ext = $container->get('class_loader.ext');
// set up caching
-$cache_factory = new phpbb_cache_factory($acm_type);
-$cache = $cache_factory->get_service();
-$phpbb_class_loader_ext->set_cache($cache->get_driver());
-$phpbb_class_loader->set_cache($cache->get_driver());
+$cache = $container->get('cache');
// Instantiate some basic classes
-$phpbb_dispatcher = new phpbb_event_dispatcher();
-$request = new phpbb_request();
-$user = new phpbb_user();
-$auth = new phpbb_auth();
-$db = new $sql_db();
+$phpbb_dispatcher = $container->get('dispatcher');
+$request = $container->get('request');
+$user = $container->get('user');
+$auth = $container->get('auth');
+$db = $container->get('dbal.conn');
// make sure request_var uses this request instance
request_var('', 0, false, false, $request); // "dependency injection" for a function
-// Connect to DB
-$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, defined('PHPBB_DB_NEW_LINK') ? PHPBB_DB_NEW_LINK : false);
-
-// We do not need this any longer, unset for safety purposes
-unset($dbpasswd);
-
// Grab global variables, re-cache if necessary
-$config = new phpbb_config_db($db, $cache->get_driver(), CONFIG_TABLE);
+$config = $container->get('config');
set_config(null, null, null, $config);
set_config_count(null, null, null, $config);
// load extensions
-$phpbb_extension_manager = new phpbb_extension_manager($db, EXT_TABLE, $phpbb_root_path, ".$phpEx", $cache->get_driver());
-
-// Initialize style
-$phpbb_style_resource_locator = new phpbb_style_resource_locator();
-$phpbb_style_path_provider = new phpbb_style_extension_path_provider($phpbb_extension_manager, new phpbb_style_path_provider());
-$template = new phpbb_style_template($phpbb_root_path, $phpEx, $config, $user, $phpbb_style_resource_locator, $phpbb_style_path_provider);
-$style = new phpbb_style($phpbb_root_path, $phpEx, $config, $user, $phpbb_style_resource_locator, $phpbb_style_path_provider, $template);
+$phpbb_extension_manager = $container->get('ext.manager');
+$phpbb_subscriber_loader = $container->get('event.subscriber_loader');
-$phpbb_subscriber_loader = new phpbb_event_extension_subscriber_loader($phpbb_dispatcher, $phpbb_extension_manager);
-$phpbb_subscriber_loader->load();
+$template = $container->get('template');
+$style = $container->get('style');
// Add own hook handler
require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);
@@ -141,5 +136,5 @@ foreach ($cache->obtain_hooks() as $hook)
if (!$config['use_system_cron'])
{
- $cron = new phpbb_cron_manager(new phpbb_cron_task_provider($phpbb_extension_manager), $cache->get_driver());
+ $cron = $container->get('cron.manager');
}
diff --git a/phpBB/composer.json b/phpBB/composer.json
index 1059b97f84..56fb2454d1 100644
--- a/phpBB/composer.json
+++ b/phpBB/composer.json
@@ -1,5 +1,8 @@
{
"require": {
- "symfony/event-dispatcher": "2.0.*"
+ "symfony/config": "2.0.*",
+ "symfony/dependency-injection": "2.0.*",
+ "symfony/event-dispatcher": "2.0.*",
+ "symfony/yaml": "2.0.*"
}
}
diff --git a/phpBB/composer.lock b/phpBB/composer.lock
index 062ad4b3aa..1707524da1 100644
--- a/phpBB/composer.lock
+++ b/phpBB/composer.lock
@@ -1,9 +1,21 @@
{
- "hash": "9bada3748ec2933fe0864dcfafbcd671",
+ "hash": "b1e9c3bcfcee0c5630742abb3e49685f",
"packages": [
{
+ "package": "symfony/config",
+ "version": "v2.0.12"
+ },
+ {
+ "package": "symfony/dependency-injection",
+ "version": "v2.0.12"
+ },
+ {
"package": "symfony/event-dispatcher",
- "version": "v2.0.10"
+ "version": "v2.0.12"
+ },
+ {
+ "package": "symfony/yaml",
+ "version": "v2.0.12"
}
],
"aliases": []
diff --git a/phpBB/config/parameters.yml b/phpBB/config/parameters.yml
new file mode 100644
index 0000000000..3bedc9a135
--- /dev/null
+++ b/phpBB/config/parameters.yml
@@ -0,0 +1,12 @@
+parameters:
+ core.table_prefix: phpbb_
+ cache.driver.class: phpbb_cache_driver_file
+ dbal.driver.class: dbal_mysqli
+ dbal.dbhost:
+ dbal.dbuser: root
+ dbal.dbpasswd:
+ dbal.dbname: phpbb_dev
+ dbal.dbport:
+ dbal.new_link: false
+ tables.config: %core.table_prefix%config
+ tables.ext: %core.table_prefix%ext
diff --git a/phpBB/config/services.yml b/phpBB/config/services.yml
new file mode 100644
index 0000000000..6817d8f015
--- /dev/null
+++ b/phpBB/config/services.yml
@@ -0,0 +1,123 @@
+services:
+ class_loader:
+ class: phpbb_class_loader
+ arguments:
+ - phpbb_
+ - %core.root_path%includes/
+ - .%core.php_ext%
+ calls:
+ - [register, []]
+ - [set_cache, [@cache.driver]]
+
+ class_loader.ext:
+ class: phpbb_class_loader
+ arguments:
+ - phpbb_ext_
+ - %core.root_path%ext/
+ - .%core.php_ext%
+ calls:
+ - [register, []]
+ - [set_cache, [@cache.driver]]
+
+ cache:
+ class: phpbb_cache_service
+ arguments:
+ - @cache.driver
+
+ cache.driver:
+ class: %cache.driver.class%
+
+ cache.driver.install:
+ class: phpbb_cache_driver_file
+
+ dispatcher:
+ class: phpbb_event_dispatcher
+
+ request:
+ class: phpbb_request
+
+ user:
+ class: phpbb_user
+
+ auth:
+ class: phpbb_auth
+
+ dbal.conn:
+ class: %dbal.driver.class%
+ calls:
+ - [sql_connect, [%dbal.dbhost%, %dbal.dbuser%, %dbal.dbpasswd%, %dbal.dbname%, %dbal.dbport%, false, %dbal.new_link%]]
+
+ config:
+ class: phpbb_config_db
+ arguments:
+ - @dbal.conn
+ - @cache.driver
+ - %tables.config%
+
+ ext.manager:
+ class: phpbb_extension_manager
+ arguments:
+ - @dbal.conn
+ - %tables.ext%
+ - %core.root_path%
+ - .%core.php_ext%
+ - @cache.driver
+
+ style.resource_locator:
+ class: phpbb_style_resource_locator
+
+ style.path_provider_ext:
+ class: phpbb_style_extension_path_provider
+ arguments:
+ - @ext.manager
+ - @style.path_provider
+
+ style.path_provider:
+ class: phpbb_style_path_provider
+
+ template:
+ class: phpbb_style_template
+ arguments:
+ - %core.root_path%
+ - %core.php_ext%
+ - @config
+ - @user
+ - @style.resource_locator
+ - @style.path_provider_ext
+
+ style:
+ class: phpbb_style
+ arguments:
+ - %core.root_path%
+ - %core.php_ext%
+ - @config
+ - @user
+ - @style.resource_locator
+ - @style.path_provider_ext
+ - @template
+
+ event.subscriber_loader:
+ class: phpbb_event_extension_subscriber_loader
+ arguments:
+ - @dispatcher
+ - @ext.manager
+ calls:
+ - [load, []]
+
+ cron.task_provider:
+ class: phpbb_cron_task_provider
+ arguments:
+ - @ext.manager
+
+ cron.manager:
+ class: phpbb_cron_manager
+ arguments:
+ - @cron.task_provider
+ - @cache.driver
+
+ cron.lock_db:
+ class: phpbb_lock_db
+ arguments:
+ - cron_lock
+ - @config
+ - @dbal.conn
diff --git a/phpBB/cron.php b/phpBB/cron.php
index 36b771f1b7..df48c2dc4d 100644
--- a/phpBB/cron.php
+++ b/phpBB/cron.php
@@ -71,7 +71,7 @@ else
output_image();
}
-$cron_lock = new phpbb_lock_db('cron_lock', $config, $db);
+$cron_lock = $container->get('cron.lock_db');
if ($cron_lock->acquire())
{
if ($config['use_system_cron'])
diff --git a/phpBB/download/file.php b/phpBB/download/file.php
index c01b0789de..eabb6edbbb 100644
--- a/phpBB/download/file.php
+++ b/phpBB/download/file.php
@@ -14,7 +14,6 @@ define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
-
// Thank you sun.
if (isset($_SERVER['CONTENT_TYPE']))
{
@@ -45,20 +44,23 @@ if (isset($_GET['avatar']))
require($phpbb_root_path . 'includes/functions_download' . '.' . $phpEx);
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
- $phpbb_class_loader_ext = new phpbb_class_loader('phpbb_ext_', $phpbb_root_path . 'ext/', ".$phpEx");
- $phpbb_class_loader_ext->register();
- $phpbb_class_loader = new phpbb_class_loader('phpbb_', $phpbb_root_path . 'includes/', ".$phpEx");
- $phpbb_class_loader->register();
+ $container = new ContainerBuilder();
+ $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../config'));
+ $loader->load('parameters.yml');
+ $loader->load('services.yml');
+
+ $container->setParameter('core.root_path', $phpbb_root_path);
+ $container->setParameter('core.php_ext', $phpEx);
+
+ $phpbb_class_loader = $container->get('class_loader');
+ $phpbb_class_loader_ext = $container->get('class_loader.ext');
// set up caching
- $cache_factory = new phpbb_cache_factory($acm_type);
- $cache = $cache_factory->get_service();
- $phpbb_class_loader_ext->set_cache($cache->get_driver());
- $phpbb_class_loader->set_cache($cache->get_driver());
+ $cache = $container->get('cache');
- $phpbb_dispatcher = new phpbb_event_dispatcher();
- $request = new phpbb_request();
- $db = new $sql_db();
+ $phpbb_dispatcher = $container->get('dispatcher');
+ $request = $container->get('request');
+ $db = $container->get('dbal.conn');
// Connect to DB
if (!@$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, false))
@@ -69,18 +71,16 @@ if (isset($_GET['avatar']))
request_var('', 0, false, false, $request);
- // worst-case default
- $browser = strtolower($request->header('User-Agent', 'msie 6.0'));
-
- $config = new phpbb_config_db($db, $cache->get_driver(), CONFIG_TABLE);
+ $config = $container->get('config');
set_config(null, null, null, $config);
set_config_count(null, null, null, $config);
// load extensions
- $phpbb_extension_manager = new phpbb_extension_manager($db, EXT_TABLE, $phpbb_root_path, ".$phpEx", $cache->get_driver());
+ $phpbb_extension_manager = $container->get('ext.manager');
+ $phpbb_subscriber_loader = $container->get('event.subscriber_loader');
- $phpbb_subscriber_loader = new phpbb_event_extension_subscriber_loader($phpbb_dispatcher, $phpbb_extension_manager);
- $phpbb_subscriber_loader->load();
+ // worst-case default
+ $browser = strtolower($request->header('User-Agent', 'msie 6.0'));
$filename = request_var('avatar', '');
$avatar_group = false;
diff --git a/phpBB/includes/cache/factory.php b/phpBB/includes/cache/factory.php
deleted file mode 100644
index 01c4d0b901..0000000000
--- a/phpBB/includes/cache/factory.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/**
-*
-* @package acm
-* @copyright (c) 2010 phpBB Group
-* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
-*
-*/
-
-/**
-* @ignore
-*/
-if (!defined('IN_PHPBB'))
-{
- exit;
-}
-
-/**
-* @package acm
-*/
-class phpbb_cache_factory
-{
- private $acm_type;
-
- public function __construct($acm_type)
- {
- $this->acm_type = $acm_type;
- }
-
- public function get_driver()
- {
- $class_name = 'phpbb_cache_driver_' . $this->acm_type;
- return new $class_name();
- }
-
- public function get_service()
- {
- $driver = $this->get_driver();
- $service = new phpbb_cache_service($driver);
- return $service;
- }
-}
diff --git a/phpBB/install/index.php b/phpBB/install/index.php
index 13ab30a9fa..0d7a0a288c 100644
--- a/phpBB/install/index.php
+++ b/phpBB/install/index.php
@@ -79,19 +79,23 @@ include($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
include($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
require($phpbb_root_path . 'includes/functions_install.' . $phpEx);
-$phpbb_class_loader_ext = new phpbb_class_loader('phpbb_ext_', $phpbb_root_path . 'ext/', ".$phpEx");
-$phpbb_class_loader_ext->register();
-$phpbb_class_loader = new phpbb_class_loader('phpbb_', $phpbb_root_path . 'includes/', ".$phpEx");
-$phpbb_class_loader->register();
+$container = new ContainerBuilder();
+$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../config'));
+$loader->load('parameters.yml');
+$loader->load('services.yml');
+
+$container->setParameter('core.root_path', $phpbb_root_path);
+$container->setParameter('core.php_ext', $phpEx);
+$container->setAlias('cache.driver.install', 'cache.driver');
+
+$phpbb_class_loader = $container->get('class_loader');
+$phpbb_class_loader_ext = $container->get('class_loader.ext');
// set up caching
-$cache_factory = new phpbb_cache_factory('file');
-$cache = $cache_factory->get_service();
-$phpbb_class_loader_ext->set_cache($cache->get_driver());
-$phpbb_class_loader->set_cache($cache->get_driver());
+$cache = $container->get('cache');
-$phpbb_dispatcher = new phpbb_event_dispatcher();
-$request = new phpbb_request();
+$phpbb_dispatcher = $container->get('dispatcher');
+$request = $container->get('request');
// make sure request_var uses this request instance
request_var('', 0, false, false, $request); // "dependency injection" for a function