Commit 84f39401 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Correction de bugs et optimisation pour permettre la génération des proxies

parent bed3c21c
Loading
Loading
Loading
Loading
+80 −2
Original line number Diff line number Diff line
<?php

$env = getenv('APPLICATION_ENV') ?: 'production';




class AppConfig
{
    const LOCAL_APPLICATION_CONFIG_FILE = 'config/application.local.php';

    /**
     * Configuration locale de l'application
     *
     * @var array
     */
    private static $config;

    /**
     * Configuration globale de l'application
     *
     * @var array
     */
    private static $global;



    public static function init()
    {
        if (file_exists(self::LOCAL_APPLICATION_CONFIG_FILE)) {
            self::$config = require(self::LOCAL_APPLICATION_CONFIG_FILE);
        } else {
            self::$config = null;
        }
    }



    public static function get($section = null, $key = null, $default = null)
    {
        if (self::$config && $section && $key) {
            if (isset(self::$config[$section][$key])) {
                return self::$config[$section][$key];
            } else {
                return $default;
            }
        }

        return self::$config;
    }



    public static function getEnv()
    {
        return getenv('APPLICATION_ENV') ?: 'production';
    }



    private static function makeGlobal()
    {
        $env = self::getEnv();

        $modules = [
            'ZfcBase', 'DoctrineModule', 'DoctrineORMModule', 'ZfcUser', 'ZfcUserDoctrineORM',
            'UnicaenApp', 'UnicaenAuth', 'UnicaenImport', 'UnicaenTbl',
    'Application'
            'Application',
        ];

        if (!\Zend\Console\Console::isConsole()) {
@@ -35,3 +94,22 @@ return [
                'module_map_cache_enabled' => ('production' == $env),
            ],
        ];
    }



    public static function getGlobal()
    {
        if (!self::$global){
            self::$global = self::makeGlobal();
        }
        return self::$global;
    }
}





AppConfig::init();
return AppConfig::getGlobal();
 No newline at end of file
+10 −16
Original line number Diff line number Diff line
<?php

if (Application::getConfig('global','affichageErreurs')) {
    error_reporting(E_ALL);
}
putenv("NLS_LANGUAGE=FRENCH");


return [
    'doctrine'     => [
        'connection'    => [
            'orm_default' => [
                'params' => [
                    'host'     => Application::getConfig('bdd','host'),
                    'port'     => Application::getConfig('bdd','port'),
                    'dbname'   => Application::getConfig('bdd','dbname'),
                    'user'     => Application::getConfig('bdd','username'),
                    'password' => Application::getConfig('bdd','password'),
                    'host'     => AppConfig::get('bdd','host'),
                    'port'     => AppConfig::get('bdd','port'),
                    'dbname'   => AppConfig::get('bdd','dbname'),
                    'user'     => AppConfig::get('bdd','username'),
                    'password' => AppConfig::get('bdd','password'),
                    'charset'  => 'AL32UTF8',
                ],
            ],
@@ -26,18 +20,18 @@ return [
                //                'query_cache'      => 'array',
                'result_cache'     => 'array',
                'hydration_cache'  => 'array',
                'generate_proxies' => Application::getConfig('bdd','generateProxies'),
                'generate_proxies' => AppConfig::get('bdd','generateProxies'),
                'proxy_dir'        => 'data/cache/DoctrineProxy',
            ],
        ],
    ],
    'view_manager' => [
        'display_not_found_reason' => Application::getConfig('global','affichageErreurs'),
        'display_exceptions'       => Application::getConfig('global','affichageErreurs'),
        'display_not_found_reason' => AppConfig::get('global','affichageErreurs'),
        'display_exceptions'       => AppConfig::get('global','affichageErreurs'),
    ],
    'cli_config'   => [
        'scheme' => Application::getConfig('global','scheme'),
        'domain' => Application::getConfig('global','domain'),
        'scheme' => AppConfig::get('global','scheme'),
        'domain' => AppConfig::get('global','domain'),
    ],

];
 No newline at end of file
+25 −25
Original line number Diff line number Diff line
@@ -11,9 +11,9 @@ return [
            'desc'                   => "Organisation des Services d'Enseignement",
            'version'                => "6.2",
            'date'                   => "22/02/2018",
            'contact'                => ['mail' => Application::getConfig('liens','contactAssistance')],
            'mentionsLegales'        => Application::getConfig('liens','mentionsLegales'),
            'informatiqueEtLibertes' => Application::getConfig('liens','informatiqueEtLibertes'),
            'contact'                => ['mail' => AppConfig::get('liens','contactAssistance')],
            'mentionsLegales'        => AppConfig::get('liens','mentionsLegales'),
            'informatiqueEtLibertes' => AppConfig::get('liens','informatiqueEtLibertes'),
        ],

        /**
@@ -25,33 +25,33 @@ return [
            'connection'  => [
                'default' => [
                    'params' => [
                        'host'                => Application::getConfig('ldap','host'),
                        'username'            => Application::getConfig('ldap','username'),
                        'password'            => Application::getConfig('ldap','password'),
                        'baseDn'              => Application::getConfig('ldap','baseDn'),
                        'bindRequiresDn'      => Application::getConfig('ldap','bindRequiresDn'),
                        'accountFilterFormat' => "(&(objectClass=posixAccount)(" . Application::getConfig('ldap','loginAttribute') . "=%s))",
                        'port'                => Application::getConfig('ldap','port'),
                        'host'                => AppConfig::get('ldap','host'),
                        'username'            => AppConfig::get('ldap','username'),
                        'password'            => AppConfig::get('ldap','password'),
                        'baseDn'              => AppConfig::get('ldap','baseDn'),
                        'bindRequiresDn'      => AppConfig::get('ldap','bindRequiresDn'),
                        'accountFilterFormat' => "(&(objectClass=posixAccount)(" . AppConfig::get('ldap','loginAttribute') . "=%s))",
                        'port'                => AppConfig::get('ldap','port'),
                    ],
                ],
            ],
            'dn'          => [
                'UTILISATEURS_BASE_DN'            => Application::getConfig('ldap','utilisateursBaseDN'),
                'UTILISATEURS_DESACTIVES_BASE_DN' => Application::getConfig('ldap','utilisateursDesactivesBaseDN'),
                'GROUPS_BASE_DN'                  => Application::getConfig('ldap','groupsBaseDN'),
                'STRUCTURES_BASE_DN'              => Application::getConfig('ldap','structuresBaseDN'),
                'UTILISATEURS_BASE_DN'            => AppConfig::get('ldap','utilisateursBaseDN'),
                'UTILISATEURS_DESACTIVES_BASE_DN' => AppConfig::get('ldap','utilisateursDesactivesBaseDN'),
                'GROUPS_BASE_DN'                  => AppConfig::get('ldap','groupsBaseDN'),
                'STRUCTURES_BASE_DN'              => AppConfig::get('ldap','structuresBaseDN'),
            ],
            'filters'     => [
                'LOGIN_FILTER'                 => '(' . Application::getConfig('ldap','loginAttribute') . '=%s)',
                'LOGIN_OR_NAME_FILTER'         => '(|(' . Application::getConfig('ldap','loginAttribute') . '=%s)(cn=%s*))',
                'LOGIN_FILTER'                 => '(' . AppConfig::get('ldap','loginAttribute') . '=%s)',
                'LOGIN_OR_NAME_FILTER'         => '(|(' . AppConfig::get('ldap','loginAttribute') . '=%s)(cn=%s*))',
                'FILTER_STRUCTURE_DN'          => '(%s)',
                'FILTER_STRUCTURE_CODE_ENTITE' => '(' . Application::getConfig('ldap','structureCode') . '=%s)',
                'NO_INDIVIDU_FILTER'           => '(' . Application::getConfig('ldap','utilisateurCode') . '=%08s)',
                'FILTER_STRUCTURE_CODE_ENTITE' => '(' . AppConfig::get('ldap','structureCode') . '=%s)',
                'NO_INDIVIDU_FILTER'           => '(' . AppConfig::get('ldap','utilisateurCode') . '=%08s)',
            ],
            'utilisateur' => [
                'LOGIN'  => Application::getConfig('ldap','loginAttribute'),
                'FILTER' => Application::getConfig('ldap','utilisateurFiltre'),
                'CODE'   => Application::getConfig('ldap','utilisateurCode'),
                'LOGIN'  => AppConfig::get('ldap','loginAttribute'),
                'FILTER' => AppConfig::get('ldap','utilisateurFiltre'),
                'CODE'   => AppConfig::get('ldap','utilisateurCode'),
            ],
        ],

@@ -61,13 +61,13 @@ return [
        'mail' => [
            // transport des mails
            'transport_options' => [
                'host' => Application::getConfig('mail','smtpHost'),
                'port' => Application::getConfig('mail','smtpPort'),
                'host' => AppConfig::get('mail','smtpHost'),
                'port' => AppConfig::get('mail','smtpPort'),
            ],
            // adresses à substituer à celles des destinataires originaux ('CURRENT_USER' équivaut à l'utilisateur connecté)
            'redirect_to'       => Application::getConfig('mail','redirection'),
            'redirect_to'       => AppConfig::get('mail','redirection'),
            // désactivation totale de l'envoi de mail par l'application
            'do_not_send'       => Application::getConfig('mail','envoiDesactive'),
            'do_not_send'       => AppConfig::get('mail','envoiDesactive'),
        ],
    ],
];
 No newline at end of file
+6 −6
Original line number Diff line number Diff line
@@ -19,13 +19,13 @@ $settings = [

];

if (Application::getConfig('cas', 'actif')) {
if (AppConfig::get('cas', 'actif')) {
    $settings['cas']['connection']['default']['params'] = [
        'hostname' => Application::getConfig('cas', 'host'),
        'port'     => Application::getConfig('cas', 'port'),
        'version'  => Application::getConfig('cas', 'version'),
        'uri'      => Application::getConfig('cas', 'uri'),
        'debug'    => Application::getConfig('cas', 'debug'),
        'hostname' => AppConfig::get('cas', 'host'),
        'port'     => AppConfig::get('cas', 'port'),
        'version'  => AppConfig::get('cas', 'version'),
        'uri'      => AppConfig::get('cas', 'uri'),
        'debug'    => AppConfig::get('cas', 'debug'),
    ];
}

+21 −60
Original line number Diff line number Diff line
@@ -6,8 +6,6 @@

class Application
{
    const LOCAL_APPLICATION_CONFIG_FILE = 'config/application.local.php';

    /**
     * @var Zend\ServiceManager\ServiceLocatorInterface
     */
@@ -28,79 +26,34 @@ class Application
     */
    public static $maintenanceWhiteList = [];

    /**
     * Configuration locale de l'application
     *
     * @var array
     */
    private static $config;



    private static function init()
    public static function init()
    {
        \Locale::setDefault('fr_FR');
        define('REQUEST_MICROTIME', microtime(true));
        chdir(dirname(__DIR__));

        if (file_exists(self::LOCAL_APPLICATION_CONFIG_FILE)) {
            self::$config = require(self::LOCAL_APPLICATION_CONFIG_FILE);
        } else {
            self::$config = null;
        }

        require 'init_autoloader.php';
        require 'config/application.config.php';
    }



    public static function getConfig($section = null, $key = null, $default = null)
    {
        if (self::$config && $section && $key) {
            if (isset(self::$config[$section][$key])) {
                return self::$config[$section][$key];
            } else {
                return $default;
            }
        }

        return self::$config;
    }



    private static function startContainerAndListeners()
    private static function startContainer()
    {
        if (null === self::getConfig()) return null;
        $configuration = require 'config/application.config.php';

        $smConfig        = isset($configuration['service_manager']) ? $configuration['service_manager'] : [];
        self::$container = new Zend\ServiceManager\ServiceManager(new Zend\Mvc\Service\ServiceManagerConfig($smConfig));
        self::$container->setService('ApplicationConfig', $configuration);
        self::$container = new Zend\ServiceManager\ServiceManager(new Zend\Mvc\Service\ServiceManagerConfig([]));
        self::$container->setService('ApplicationConfig', AppConfig::getGlobal());
        self::$container->get('ModuleManager')->loadModules();

        $listenersFromAppConfig     = isset($configuration['listeners']) ? $configuration['listeners'] : [];
        $config                     = self::$container->get('Config');
        $listenersFromConfigService = isset($config['listeners']) ? $config['listeners'] : [];

        $listeners = array_unique(array_merge($listenersFromConfigService, $listenersFromAppConfig));

        return $listeners;
    }



    private static function inMaintenance()
    {
        $maintenance = self::getConfig('maintenance', 'modeMaintenance', false);
        if (!AppConfig::get('maintenance', 'modeMaintenance', false)) return false;

        if (!$maintenance) return false;

        $whiteList             = self::getConfig('maintenance', 'whiteList', []);

        if (php_sapi_name() === 'cli') {
            exit(0);
        }
        $whiteList = AppConfig::get('maintenance', 'whiteList', []);

        $passed = false;
        foreach ($whiteList as $ip) {
@@ -110,6 +63,7 @@ class Application
            }
            if ($passed) break;
        }

        return !$passed;
    }

@@ -117,18 +71,24 @@ class Application

    public static function run()
    {
        self::init();

        if (self::inMaintenance()) {
            self::$maintenanceText = self::getConfig('maintenance', 'messageInfo');
            self::$maintenanceText = AppConfig::get('maintenance', 'messageInfo');
            if (php_sapi_name() !== 'cli') {
                require 'maintenance.php';
            }
        } else {
            $listeners = self::startContainerAndListeners();
            self::startContainer();

            if (AppConfig::get('global','affichageErreurs')) {
                error_reporting(E_ALL);
            }
            putenv("NLS_LANGUAGE=FRENCH");


            if (($listeners === null) || self::getConfig('global', 'modeInstallation', true)){
            if (AppConfig::get('global', 'modeInstallation', true)) {
                require 'install.php';
            } else {
                self::$container->get('Application')->bootstrap($listeners)->run();
                self::$container->get('Application')->bootstrap([])->run();
            }
        }
    }
@@ -138,4 +98,5 @@ class Application



Application::init();
Application::run();
 No newline at end of file
Loading