<?php

namespace Admin;

use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\Mvc\ModuleRouteListener;
use Zend\Mvc\MvcEvent;

use Zend\I18n\Translator\Translator;
use Zend\Validator\AbstractValidator;

class Module implements AutoloaderProviderInterface
{
	public function getAutoloaderConfig()
	{
		return array(
			'Zend\Loader\ClassMapAutoloader' => array(
		__DIR__ . '/autoload_classmap.php',
		),
			'Zend\Loader\StandardAutoloader' => array(
				'namespaces' => array(
		__NAMESPACE__ => __DIR__ . '/src/' . str_replace('\\', '/', __NAMESPACE__),
		),
		),
		);
	}

	public function onBootstrap(MvcEvent $e)
	{
		$eventManager        = $e->getApplication()->getEventManager();
		$eventManager->attach('dispatch', array($this, 'loadConfiguration' ));

		$translator = $e->getApplication()->getServiceManager()->get('translator');
		$translator->addTranslationFile(
			'phpArray',
			'./vendor/zendframework/zendframework/resources/languages/fr/Zend_Validate.php'
		);
		AbstractValidator::setDefaultTranslator($translator);
	}

	public function loadConfiguration(MvcEvent $e)
	{
		$app    = $e->getParam('application');
		$sm     = $app->getServiceManager();
		$config = $sm->get('config');

		$authorize = $sm->get('BjyAuthorize\Provider\Identity\ProviderInterface');
		$roles = $authorize->getIdentityRoles();

		$controller = $e->getTarget();
		$controller->layout()->roles = $roles;
	}

	public function getConfig()
	{
		return include __DIR__ . '/config/module.config.php';
	}
}
