Skip to content
Snippets Groups Projects
Select Git revision
  • 663d9be5c6c49cd71d0a9927371ac40ecb7bebfb
  • master default protected
  • release_3.0.0
  • test
  • feature_pre_sql
  • develop
  • 3.0.1
  • 3.0.0
  • 2.3.0
  • 2.2.0
  • 2.1.0
  • 2.0.0
  • 1.3.7
  • 1.3.6
  • 1.3.5
  • 1.3.4
  • 1.3.3
  • 1.3.2
  • 1.3.1
  • 1.3.0
  • 1.2.6
  • 1.2.5
  • 1.2.4
  • 1.2.3
  • 1.2.2
  • 1.2.1
26 results

zf-mvc-auth-oauth2-override.global.php

  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Module.php 9.22 KiB
    <?php
    
    namespace UnicaenApp;
    
    use Locale;
    use UnicaenApp\Controller\Plugin\MessengerPluginFactory;
    use UnicaenApp\Controller\Plugin\Upload\UploaderPluginFactory;
    use UnicaenApp\Mvc\Listener\MaintenanceListener;
    use UnicaenApp\Mvc\Listener\ModalListener;
    use UnicaenApp\Mvc\View\Http\ExceptionStrategy;
    use UnicaenApp\Options\ModuleOptions;
    use Laminas\Console\Adapter\AdapterInterface as Console;
    use Laminas\Console\Request as ConsoleRequest;
    use Laminas\EventManager\EventInterface;
    use Laminas\Http\Request as HttpRequest;
    use Laminas\Mvc\I18n\Translator;
    use Laminas\ModuleManager\Feature\AutoloaderProviderInterface;
    use Laminas\ModuleManager\Feature\BootstrapListenerInterface;
    use Laminas\ModuleManager\Feature\ConfigProviderInterface;
    use Laminas\ModuleManager\Feature\ControllerPluginProviderInterface;
    use Laminas\ModuleManager\Feature\ServiceProviderInterface;
    use Laminas\Mvc\Console\View\ExceptionStrategy as ConsoleExceptionStrategy;
    use Laminas\Mvc\View\Http\ExceptionStrategy as HttpExceptionStrategy;
    use Laminas\ServiceManager\ServiceManager;
    use Laminas\Session\Container;
    use Laminas\Session\SessionManager;
    use Laminas\Validator\AbstractValidator;
    use Laminas\View\Helper\Navigation;
    use Laminas\View\HelperPluginManager;
    
    define('__VENDOR_DIR__', dirname(dirname(__DIR__)));
    
    /**
     * Point d'entrée du module.
     *
     * @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
     */
    class Module implements
            BootstrapListenerInterface,
            ConfigProviderInterface,
            ControllerPluginProviderInterface,
            ServiceProviderInterface
    {
    
        /**
         *
         * @return array
         * @see ConfigProviderInterface
         */
        public function getConfig()
        {
            return include __DIR__ . '/config/module.config.php';
        }
    
        /**
         *
         * @return array
         * @see AutoloaderProviderInterface
         */
        public function getAutoloaderConfig()
        {
            return array(
                'Laminas\Loader\StandardAutoloader' => array(
                    'namespaces' => array(
                        __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
                    ),
                ),
            );
        }
    
        /**
         * This method is called once the MVC bootstrapping is complete,
         * after the "loadModule.post" event, once $application->bootstrap() is called.
         *
         * @param EventInterface $e
         * @see BootstrapListenerInterface
         * @return array
         */
        public function onBootstrap(EventInterface $e) /* @var $e \Laminas\Mvc\MvcEvent */
        {
            /* @var $application \Laminas\Mvc\Application */
            $application = $e->getApplication();
            /* @var $services ServiceManager */
            $services    = $application->getServiceManager();
    
            $this->bootstrapSession($e);
    
            // la locale par défaut est celle du service de traduction
            /** @var \Laminas\I18n\Translator\Translator $translator */
            $translator = $services->get('translator');
            Locale::setDefault($translator->getLocale());
    
            AbstractValidator::setDefaultTranslator(new Translator($translator));
    
            $eventManager = $application->getEventManager();
    
            /** @var HttpExceptionStrategy|ConsoleExceptionStrategy $baseExceptionStrategy */
            if ($e->getRequest() instanceof HttpRequest) {
                $baseExceptionStrategy = $services->get('HttpExceptionStrategy');
            } else {
                $baseExceptionStrategy = $services->get('ConsoleExceptionStrategy');
            }
            $exceptionStrategy = new ExceptionStrategy();
            $exceptionStrategy->setDisplayExceptions($baseExceptionStrategy->displayExceptions());
            $exceptionStrategy->attach($eventManager);
    
            /* Démarrage des mouchards en fonction de la configuration... */
            $services->get('MouchardService')->createMouchardsFromConfig();
    
            /* @var $vhm HelperPluginManager */
            $vhm = $services->get('ViewHelperManager');
    
            /* @var $nvh Navigation */
            $nvh = $vhm->get('Laminas\View\Helper\Navigation');
            $nvh->setServiceLocator($services);
            // Déclaration des plugins maison pour l'aide de vue de navigation
            $invokables = array(
                'menuPrincipal'  => 'UnicaenApp\View\Helper\Navigation\MenuPrincipal',
                'menuSecondaire' => 'UnicaenApp\View\Helper\Navigation\MenuSecondaire',
                'menuContextuel' => 'UnicaenApp\View\Helper\Navigation\MenuContextuel',
                'menuPiedDePage' => 'UnicaenApp\View\Helper\Navigation\MenuPiedDePage',
                'filAriane'      => 'UnicaenApp\View\Helper\Navigation\FilAriane',
                'plan'           => 'UnicaenApp\View\Helper\Navigation\Plan',
            );
            foreach ($invokables as $key => $value) {
                if (!$nvh->getPluginManager()->has($key)) {
                    $nvh->getPluginManager()->setInvokableClass($key, $value);
                }
            }
    
            (new ModalListener())->attach($eventManager);
    
            /** @var ModuleOptions $moduleOptions */
            $moduleOptions = $services->get('unicaen-app_module_options');
    
            // détection du mode maintenance pour rendre l'appli indisponible
            $maintenanceListener = new MaintenanceListener($moduleOptions->getMaintenance());
            $maintenanceListener->attach($eventManager);
    
            $this->appendSessionRefreshJs($e);
    
            return [];
        }
    
        /**
         * Init session manager.
         *
         * @param \Laminas\Mvc\MvcEvent $e
         */
        public function bootstrapSession($e)
        {
            if (php_sapi_name() === 'cli') {
                return;
            }
    
            /** @var SessionManager $sessionManager */
            $sessionManager = $e->getApplication()->getServiceManager()->get(SessionManager::class);
            Container::setDefaultManager($sessionManager);
            $sessionManager->start();
    
            $container = new Container('initialized');
            if (!isset($container->init)) {
                $sessionManager->regenerateId(true);
                 $container->init = 1;
            }
        }
    
    
    
        /**
         * Ajoute au rendu de toutes les vues une ligne de Javascript (en inline)
         * appelant la fonction de rafraîchissement périodique de la session de l'utilisateur.
         *
         * @param EventInterface $e
         */
        public function appendSessionRefreshJs(EventInterface $e)
        {
            if ($e->getRequest() instanceof ConsoleRequest) {
                return;
            }
    
            $sm     = $e->getApplication()->getServiceManager();
            $period = $sm->get('unicaen-app_module_options')->getSessionRefreshPeriod();
            if ($period <= 0) {
                return;
            }
    
            $basePathHelper = $sm->get('ViewHelperManager')->get('BasePath');
            $url            = $basePathHelper() . "/refresh-session";
            $js             = "$(function() { refreshSession('$url', $period); });";
    
            $sm->get('ViewHelperManager')->get('inlineScript')->offsetSetScript(1001,$js);
        }
    
        /**
         * Expected to return \Laminas\ServiceManager\Config object or array to
         * seed such an object.
         *
         * @return array|\Laminas\ServiceManager\Config
         */
        public function getControllerPluginConfig()
        {
            return array(
                'factories' => array(
                    'ldapPeopleService'    => 'UnicaenApp\Controller\Plugin\LdapPeopleServiceFactory',
                    'ldapStructureService' => 'UnicaenApp\Controller\Plugin\LdapStructureServiceFactory',
                    'ldapGroupService'     => 'UnicaenApp\Controller\Plugin\LdapGroupServiceFactory',
                    'mail'                 => 'UnicaenApp\Controller\Plugin\MailFactory',
                    'appInfos'             => 'UnicaenApp\Controller\Plugin\AppInfosFactory',
                    'uploader'              => UploaderPluginFactory::class,
                    'messenger'             => MessengerPluginFactory::class,
                ),
                'invokables' => array(
                    'multipageForm'         => 'UnicaenApp\Controller\Plugin\MultipageFormPlugin',
                    'modalInnerViewModel'   => 'UnicaenApp\Controller\Plugin\ModalInnerViewModel',
                    'popoverInnerViewModel' => 'UnicaenApp\Controller\Plugin\PopoverInnerViewModel',
                    'confirm'               => 'UnicaenApp\Controller\Plugin\ConfirmPlugin',
                ),
            );
        }
    
        /**
         *
         * @return array
         * @see ServiceProviderInterface
         */
        public function getServiceConfig()
        {
            return [];
        }
    
        public function getConsoleUsage(Console $console)
        {
            return [
                // command
                'run-sql-script --path= [--logfile=] [--connection=]' => "Exécuter un script SQL",
                // parameters
                ['--path',       "Requis. Chemin vers le script SQL à exécuter."],
                ['--logfile',    "Facultatif. Chemin du fichier des logs d'exécution du script. Par défaut, il est généré."],
                ['--connection', "Facultatif. Identifiant de la connexion Doctrine. Par défaut : 'orm_default'."],
    
                // command
                'run-sql-query --sql= [--logfile=] [--connection=]' => "Exécuter une requête SQL",
                // parameters
                ['--sql',        "Requis. Requête SQL à exécuter. Ex: \"begin DBMS_MVIEW.REFRESH('MV_RECHERCHE_THESE'); end;\"."],
                ['--logfile',    "Facultatif. Chemin du fichier des logs d'exécution. Par défaut, il est généré."],
                ['--connection', "Facultatif. Identifiant de la connexion Doctrine. Par défaut : 'orm_default'."],
            ];
        }
    }