Skip to content
Snippets Groups Projects
Select Git revision
  • f8366c627f5d88cbb8a3adb044f2906133dbba0b
  • master default protected
  • php84
  • ll-api-test
  • 6.x
  • release_6.2.0
  • modif_maintenance_phtml
  • 6.0.x
  • detached2
  • detached
  • php82
  • feature_SearchAndSelectFilter
  • 5.x
  • 4.x
  • 7.2.1
  • 7.2.0
  • 6.2.0
  • 7.1.0
  • 7.0.0
  • 1.1.1
  • 6.1.7
  • 6.1.6
  • 6.1.5
  • 6.0.16
  • 6.0.15
  • 6.1.4
  • 6.0.14
  • 6.1.3
  • 6.0.13
  • 6.1.2
  • 6.0.12
  • 6.1.1
  • 6.1.0
  • 6.0.11
34 results

Module.php

Blame
  • Bertrand Gauthier's avatar
    Bertrand Gauthier authored
    Création de 3 nouveaux services (et factories associées) permettant d'accèder aux individus, structures et groupes LDAP (mappers).
    + Tests unitaires associés.
    02bab957
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Module.php 9.64 KiB
    <?php
    namespace UnicaenApp;
    
    use \UnicaenApp\Options\ModuleOptions;
    use Zend\EventManager\EventInterface;
    use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
    use Zend\ModuleManager\Feature\BootstrapListenerInterface;
    use Zend\ModuleManager\Feature\ConfigProviderInterface;
    use Zend\ModuleManager\Feature\ControllerPluginProviderInterface;
    use Zend\ModuleManager\Feature\ServiceProviderInterface;
    use Zend\ModuleManager\Feature\ViewHelperProviderInterface;
    use Zend\View\HelperPluginManager;
    use Zend\Mvc\Controller\PluginManager;
    
    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,
            ViewHelperProviderInterface, 
            ServiceProviderInterface
    {
    
        /**
         * 
         * @return array
         * @see ConfigProviderInterface
         */
        public function getConfig()
        {
            return include __DIR__ . '/config/module.config.php';
        }
    
        /**
         * 
         * @return array
         * @see AutoloaderProviderInterface
         */
        public function getAutoloaderConfig()
        {
            return array(
                'Zend\Loader\ClassMapAutoloader' => array(
                    __DIR__ . '/autoload_classmap.php',
                ),
                'Zend\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
         */
        public function onBootstrap(EventInterface $e) /* @var $e \Zend\Mvc\MvcEvent */
        {
            /* @var $application \Zend\Mvc\Application */
            $application = $e->getApplication();
            /* @var $services ServiceManager */
            $services    = $application->getServiceManager();
            
    //        // Set the translator for default validation messages
    //        $translator = $services->get('translator');
    //        \Zend\Validator\AbstractValidator::setDefaultTranslator($translator);
            
            /* @var $vhm HelperPluginManager */
            $vhm = $services->get('view_helper_manager');
            
            /* @var $nvh Navigation */
            $nvh = $vhm->get('navigation');
            // 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) {
                $nvh->getPluginManager()->setInvokableClass($key, $value);
            }
        }
    
        /**
         * Expected to return \Zend\ServiceManager\Config object or array to
         * seed such an object.
         *
         * @return array|\Zend\ServiceManager\Config
         */
        public function getControllerPluginConfig()
        {
            return array(
                'factories' => array(
                    'ldapPeopleService' => function (PluginManager $sm) {
                        return new Controller\Plugin\LdapPeopleService($sm->getServiceLocator()->get('ldap_people_service'));
                    },
                    'ldapStructureService' => function (PluginManager $sm) {
                        return new Controller\Plugin\LdapStructureService($sm->getServiceLocator()->get('ldap_structure_service'));
                    },
                    'ldapGroupService' => function (PluginManager $sm) {
                        return new Controller\Plugin\LdapGroupService($sm->getServiceLocator()->get('ldap_group_service'));
                    },
                    'mail' => function (PluginManager $sm) {
                        $options = $sm->getServiceLocator()->get('unicaen-app_module_options'); /* @var $options ModuleOptions */
                        $mailOptions = $options->getMail();
                        $transport = new \Zend\Mail\Transport\Smtp(new \Zend\Mail\Transport\SmtpOptions($mailOptions['transport_options']));
                        $plugin = new Controller\Plugin\Mail($transport);
                        if (isset($mailOptions['redirect_to'])) {
                            $plugin->setRedirectTo($mailOptions['redirect_to']);
                        }
                        if (isset($mailOptions['do_not_send'])) {
                            $plugin->setDoNotSend($mailOptions['do_not_send']);
                        }
                        return $plugin;
                    },
                ),
                'invokables' => array(
                    'multipageForm' => '\UnicaenApp\Controller\Plugin\MultipageForm',
                ),
            );
        }
    
        /**
         * 
         * @return array
         * @see ViewHelperProviderInterface
         */
        public function getViewHelperConfig()
        {
            return array(
                'factories' => array(
                    'appInfos' => function (HelperPluginManager $sm) {
                        $options = $sm->getServiceLocator()->get('unicaen-app_module_options'); /* @var $options ModuleOptions */
                        return new View\Helper\AppInfos($options->getAppInfos());
                    },
                    'appLink' => function (HelperPluginManager $sm) {
                        $sl = $sm->getServiceLocator();
                        $helper = new View\Helper\AppLink;
                        $router = \Zend\Console\Console::isConsole() ? 'HttpRouter' : 'Router';
                        $helper->setRouter($sl->get($router));
                        $match = $sl->get('application')->getMvcEvent()->getRouteMatch();
                        if ($match instanceof \Zend\Mvc\Router\RouteMatch) {
                            $helper->setRouteMatch($match);
                        }
                        return $helper;
                    },
                    'appConnection' => function (HelperPluginManager $sm) {
                        return new View\Helper\AppConnection();
                    },
                    'messenger' => function (HelperPluginManager $sm) {
                        return new View\Helper\Messenger();
                    },
    //                'flashMessenger' => function (HelperPluginManager $sm) {
    //                    return new View\Helper\FlashMessenger(
    //                            $sm->getServiceLocator()->get('ControllerPluginManager')/*->get('flashMessenger')*/);
    //                },
                    'multipageFormFieldset' => function (HelperPluginManager $sm) {
                        return new Form\View\Helper\MultipageFormFieldset();
                    },
                    'multipageFormNav' => function (HelperPluginManager $sm) {
                        return new Form\View\Helper\MultipageFormNav();
                    },
                    'multipageFormRow' => function (HelperPluginManager $sm) {
                        return new Form\View\Helper\MultipageFormRow();
                    },
                    'multipageFormRecap' => function (HelperPluginManager $sm) {
                        return new Form\View\Helper\MultipageFormRecap();
                    },
                    'formDateInfSup' => function (HelperPluginManager $sm) {
                        return new Form\View\Helper\FormDateInfSup();
                    },
                    'formRowDateInfSup' => function (HelperPluginManager $sm) {
                        return new Form\View\Helper\FormRowDateInfSup();
                    },
                    'formLdapPeople' => function (HelperPluginManager $sm) {
                        return new Form\View\Helper\FormLdapPeople();
                    },
                    'formErrors' => function (HelperPluginManager $sm) {
                        return new Form\View\Helper\FormErrors();
                    },
                )
            );
        }
    
        /**
         * 
         * @return array
         * @see ServiceProviderInterface
         */
        public function getServiceConfig()
        {
            return array(
                'factories' => array(
                    // mapper d'accès aux individus de l'annuaire LDAP
                    'ldap_people_mapper'       => 'UnicaenApp\Mapper\Ldap\PeopleFactory',
                    // mapper d'accès aux groupes de l'annuaire LDAP
                    'ldap_group_mapper'        => 'UnicaenApp\Mapper\Ldap\GroupFactory',
                    // mapper d'accès aux structures de l'annuaire LDAP
                    'ldap_structure_mapper'    => 'UnicaenApp\Mapper\Ldap\StructureFactory',
                    
                    // service d'accès aux options de config de ce module
                    'unicaen-app_module_options' => function ($sm) {
                        $config = $sm->get('Configuration');
                        return new ModuleOptions(isset($config['unicaen-app']) ? $config['unicaen-app'] : array());
                    },
                            
                    // service de manipulation des individus de l'annuaire LDAP
                    'ldap_people_service'      => 'UnicaenApp\Service\Ldap\PeopleFactory',
                    // service de manipulation des groupes de l'annuaire LDAP
                    'ldap_group_service'       => 'UnicaenApp\Service\Ldap\GroupFactory',
                    // service de manipulation des structures de l'annuaire LDAP
                    'ldap_structure_service'   => 'UnicaenApp\Service\Ldap\StructureFactory',
                            
                    // service de création de modules
                    'module_generator_service' => 'UnicaenApp\Service\Module\ModuleServiceFactory',
                ),
            );
        }
    
    }