Skip to content

Commit

Permalink
Merge pull request #245 from MekDrop/container
Browse files Browse the repository at this point in the history
Implements DI container
  • Loading branch information
fiammybe committed Apr 15, 2018
2 parents f8496ff + b94efca commit 23b9d73
Show file tree
Hide file tree
Showing 37 changed files with 549 additions and 587 deletions.
15 changes: 12 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,27 @@
language: php

php:
- 5.5
- 5.6
- 7.0
- 7.1
- 7.2

cache:
directories:
- $HOME/.composer/cache/files

services:
- mysql

before_install:
- mysql -e 'CREATE DATABASE IF NOT EXISTS icms;'

script:
- echo URL=http://192.168.2.99 > .env
- echo DB_TYPE=pdo.mysql >> .env
- echo DB_HOST=localhost >> .env
- echo DB_USER=icms >> .env
- echo DB_PASS=icms >> .env
- echo DB_USER=root >> .env
- echo DB_PASS= >> .env
- echo DB_PCONNECT=0 >> .env
- echo DB_NAME=icms >> .env
- echo DB_CHARSET=utf8 >> .env
Expand Down
12 changes: 9 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,13 @@
}
],
"require": {
"php": ">=5.5.0",
"php": ">=5.6.0",
"simplepie/simplepie": "1.5.1",
"ezyang/htmlpurifier": "4.6.*",
"vlucas/phpdotenv": "^2.4@stable",
"phpmailer/phpmailer": "v5.*",
"tecnickcom/tcpdf": "6.*",
"league/container": "^2.4",
"erusev/parsedown": "^1.7.0",
"cerdic/css-tidy": "*",
"geshi/geshi": "^1.0",
Expand All @@ -46,10 +47,15 @@
},
"autoload": {
"psr-0" : {"" : "libraries/"},
"classmap": [ "modules/"]
"classmap": [
"modules/"
],
"psr-4": {
"ImpressCMS\\Core\\Providers\\": "core/providers/"
}
},
"require-dev": {
"phpunit/phpunit": "4.*@stable"
"phpunit/phpunit": "~5.4"
},
"config": {
"optimize-autoloader": true
Expand Down
59 changes: 59 additions & 0 deletions core/providers/ConfigServiceProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?php

namespace ImpressCMS\Core\Providers;

use League\Container\ServiceProvider\AbstractServiceProvider;
use icms;
use icms_config_Handler as Config;
use League\Container\ServiceProvider\BootableServiceProviderInterface;

/**
* Config service provider
*/
class ConfigServiceProvider extends AbstractServiceProvider implements BootableServiceProviderInterface
{

/**
* @inheritdoc
*/
protected $provides = [
'config'
];

/**
* @inheritdoc
*/
public function register()
{

}

/**
* @inheritDoc
*/
public function boot()
{
$this->getContainer()->add('config', function () {
$instance = icms::handler('icms_config');
$configs = $instance->getConfigsByCat(
array(
Config::CATEGORY_MAIN, Config::CATEGORY_USER, Config::CATEGORY_METAFOOTER, Config::CATEGORY_MAILER,
Config::CATEGORY_AUTH, Config::CATEGORY_MULILANGUAGE, Config::CATEGORY_PERSONA, Config::CATEGORY_PLUGINS,
Config::CATEGORY_CAPTCHA, Config::CATEGORY_SEARCH
)
);
$GLOBALS['icmsConfig'] = $configs[Config::CATEGORY_MAIN];
$GLOBALS['xoopsConfig'] =& $GLOBALS['icmsConfig'];
$GLOBALS['icmsConfigUser'] = $configs[Config::CATEGORY_USER];
$GLOBALS['icmsConfigMetaFooter'] = $configs[Config::CATEGORY_METAFOOTER];
$GLOBALS['icmsConfigMailer'] = $configs[Config::CATEGORY_MAILER];
$GLOBALS['icmsConfigAuth'] = $configs[Config::CATEGORY_AUTH];
$GLOBALS['icmsConfigMultilang'] = $configs[Config::CATEGORY_MULILANGUAGE];
$GLOBALS['icmsConfigPersona'] = $configs[Config::CATEGORY_PERSONA];
$GLOBALS['icmsConfigPlugins'] = $configs[Config::CATEGORY_PLUGINS];
$GLOBALS['icmsConfigCaptcha'] = $configs[Config::CATEGORY_CAPTCHA];
$GLOBALS['icmsConfigSearch'] = $configs[Config::CATEGORY_SEARCH];
return $instance;
});
}
}
34 changes: 34 additions & 0 deletions core/providers/DatabaseServiceProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php

namespace ImpressCMS\Core\Providers;

use League\Container\ServiceProvider\AbstractServiceProvider;
use icms_db_Factory;

/**
* Database service provider
*/
class DatabaseServiceProvider extends AbstractServiceProvider
{

/**
* @inheritdoc
*/
protected $provides = [
'db',
'xoopsDB'
];

/**
* @inheritdoc
*/
public function register()
{
$this->getContainer()->add('db', function () {
return icms_db_Factory::pdoInstance();
});
$this->getContainer()->add('xoopsDB', function () {
return icms_db_Factory::instance();
});
}
}
40 changes: 40 additions & 0 deletions core/providers/LoggerServiceProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?php

namespace ImpressCMS\Core\Providers;

use League\Container\ServiceProvider\AbstractServiceProvider;
use icms_core_Logger;
use icms_Event;
use League\Container\ServiceProvider\BootableServiceProviderInterface;

/**
* Logger service provider
*/
class LoggerServiceProvider extends AbstractServiceProvider implements BootableServiceProviderInterface
{
/**
* @inheritdoc
*/
protected $provides = [
'logger'
];

/**
* @inheritdoc
*/
public function register()
{

}

/**
* @inheritDoc
*/
public function boot()
{
$this->getContainer()->add('logger', function () {
return icms_core_Logger::instance();
});
}

}
56 changes: 56 additions & 0 deletions core/providers/ModuleServiceProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?php

namespace ImpressCMS\Core\Providers;

use League\Container\ServiceProvider\AbstractServiceProvider;
use icms_module_Handler as ModuleHandler;
use icms;

/**
* Module service provider
*/
class ModuleServiceProvider extends AbstractServiceProvider
{
/**
* @inheritdoc
*/
protected $provides = [
'module'
];

/**
* @inheritdoc
*/
public function register()
{
$this->getContainer()->add('module', function () {
$module_handler = icms::handler("icms_module");
$modules = $module_handler->getObjects();
foreach ($modules as $module) $module->registerClassPath(TRUE);

$inAdmin = (defined('ICMS_IN_ADMIN') && (int)ICMS_IN_ADMIN);

$module = NULL;
if (preg_match('/modules\/([^\/]+)/', $_SERVER['REQUEST_URI'], $matches)) {
$path = ICMS_MODULES_PATH . DIRECTORY_SEPARATOR . $matches[1];
if ($inAdmin || file_exists($path . '/xoops_version.php') || file_exists($path . '/icms_version.php')) {
/* @var $module icms_module_Object */
$module = icms::handler("icms_module")->getByDirname($matches[1], TRUE);
if (!$inAdmin && (!$module || !$module->getVar('isactive'))) {
include_once ICMS_ROOT_PATH . '/header.php';
echo "<h4>" . _MODULENOEXIST . "</h4>";
include_once ICMS_ROOT_PATH . '/footer.php';
exit();
}
}
} else {
return null;
}
if (!ModuleHandler::checkModuleAccess($module, $inAdmin)) {
redirect_header(ICMS_URL . "/user.php", 3, _NOPERM, FALSE);
}
$module->launch();
return $module ? $module : NULL;
});
}
}
41 changes: 41 additions & 0 deletions core/providers/PreloadServiceProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

namespace ImpressCMS\Core\Providers;

use League\Container\ServiceProvider\AbstractServiceProvider;
use League\Container\ServiceProvider\BootableServiceProviderInterface;
use icms_preload_Handler as PreloadHandler;

/**
* Preload service provider
*/
class PreloadServiceProvider extends AbstractServiceProvider implements BootableServiceProviderInterface
{

/**
* @inheritdoc
*/
protected $provides = [
'preload'
];

/**
* @inheritdoc
*/
public function register()
{

}

/**
* @inheritDoc
*/
public function boot()
{
$this->getContainer()->add('preload', function () {
$preload = PreloadHandler::getInstance();
$preload->triggerEvent('startCoreBoot');
return $preload;
});
}
}
37 changes: 37 additions & 0 deletions core/providers/SecurityServiceProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

namespace ImpressCMS\Core\Providers;

use League\Container\ServiceProvider\AbstractServiceProvider;
use icms_core_Security;
use icms_Event;

/**
* Session service provider
*/
class SecurityServiceProvider extends AbstractServiceProvider
{

/**
* @inheritdoc
*/
protected $provides = [
'security'
];

/**
* @inheritdoc
*/
public function register()
{
$this->getContainer()->add('security', function () {
$instance = new icms_core_Security();
$instance->checkSuperglobals();
if (isset($_SERVER['REQUEST_METHOD']) && ($_SERVER['REQUEST_METHOD'] != 'POST' || !$instance->checkReferer(XOOPS_DB_CHKREF))) {
define('XOOPS_DB_PROXY', 1);
}
icms_Event::attach('icms', 'loadService-config', array($instance, 'checkBadips'));
return $instance;
});
}
}
Loading

0 comments on commit 23b9d73

Please sign in to comment.