Created
July 20, 2012 16:06
-
-
Save awartoft/3151586 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* @author Antoine Hedgecock <[email protected]> | |
*/ | |
/** | |
* @namespace | |
*/ | |
namespace MCN; | |
use Zend\Log\Logger, | |
Zend\Mvc\MvcEvent, | |
Zend\ServiceManager\ServiceManager, | |
Zend\ModuleManager\Feature\ConfigProviderInterface, | |
Zend\ModuleManager\Feature\ServiceProviderInterface, | |
Zend\ModuleManager\Feature\ViewHelperProviderInterface, | |
Zend\ModuleManager\Feature\AutoloaderProviderInterface; | |
use MCNCore\Factory, | |
MCNCore\View\Helper as ViewHelper; | |
/** | |
* @category User | |
*/ | |
class Module implements ConfigProviderInterface, AutoloaderProviderInterface, ServiceProviderInterface, ViewHelperProviderInterface | |
{ | |
/** | |
* @param \Zend\Mvc\MvcEvent $e | |
*/ | |
public function onBootstrap(MvcEvent $e) | |
{ | |
$e->getApplication() | |
->getEventManager() | |
->attach(MvcEvent::EVENT_DISPATCH, array($this, 'startLogging')); | |
} | |
public function startLogging(MvcEvent $e) | |
{ | |
$sm = $e->getApplication() | |
->getServiceManager(); | |
if ($sm->get('Configuration')['mcn']['logger']['log_errors']) { | |
Logger::registerErrorHandler($sm->get('mcn.logger')); | |
} | |
if ($sm->get('Configuration')['mcn']['logger']['log_exceptions']) { | |
Logger::registerExceptionHandler($sm->get('mcn.logger')); | |
} | |
} | |
/** | |
* Return an array for passing to Zend\Loader\AutoloaderFactory. | |
* | |
* @return array | |
*/ | |
public function getAutoloaderConfig() | |
{ | |
return array( | |
'Zend\Loader\StandardAutoloader' => array( | |
'namespaces' => array( | |
'MCN' => __DIR__ . '/src/MCN', | |
'MCNCore' => __DIR__ . '/src/MCNCore' | |
), | |
), | |
); | |
} | |
/** | |
* Returns configuration to merge with application configuration | |
* | |
* @return array|\Traversable | |
*/ | |
public function getConfig() | |
{ | |
return include __DIR__ . '/config/module.config.php'; | |
} | |
/** | |
* Expected to return \Zend\ServiceManager\Configuration object or array to | |
* seed such an object. | |
* | |
* @return array | |
*/ | |
public function getServiceConfiguration() | |
{ | |
return array( | |
'factories' => array( | |
'mcn.logger' => new Factory\LogFactory(), | |
'mcn.memcached' => new Factory\MemcachedFactory(), | |
'mcn.sphinx_client' => new Factory\SphinxClientFactory(), | |
'mcn.object.hydrator' => function($sm) { | |
return new \MCNCore\Object\Hydrator($sm->get('doctrine.entitymanager.ormdefault')); | |
}, | |
'mcn.validator.object_exists' => function($sm) { | |
$validator = new \MCNCore\Validator\ObjectExists(); | |
$validator->setObjectManager($sm->get('doctrine.entitymanager.ormdefault')); | |
return $validator; | |
}, | |
'mcn.service.view' => function($sm) { | |
return new Service\View( | |
$sm->get('doctrine.entitymanager.ormdefault') | |
); | |
}, | |
'mcn.service.image_library' => function($sm) { | |
return new Service\ImageLibrary( | |
$sm->get('doctrine.entitymanager.ormdefault'), | |
new Service\ImageLibraryOptions($sm->get('Config')['mcn']['image_library']) | |
); | |
}, | |
'mcn.service.search_storage' => function($sm) { | |
return new Service\SearchStorage( | |
$sm->get('doctrine.entitymanager.ormdefault') | |
); | |
}, | |
'mcn.service.advanced_html_head' => function($sm) { | |
return new Service\AdvancedHtmlHead( | |
$sm->get('doctrine.entitymanager.ormdefault') | |
); | |
}, | |
// this aint configurable wtf!? | |
'doctrine.cache.memcachedCache' => function($sm) { | |
$cache = new \Doctrine\Common\Cache\MemcachedCache(); | |
$cache->setMemcached($sm->get('mcn.memcached')); | |
return $cache; | |
}, | |
// Override the ZDT_DbCollector | |
'ZDT_DbCollector' => function($sm) { | |
$logs = $sm->get('doctrine.entitymanager.orm_default') | |
->getConnection() | |
->getConfiguration() | |
->getSQLLogger(); | |
return new \MCNCore\Object\Profiler($logs); | |
} | |
) | |
); | |
} | |
/** | |
* Expected to return \Zend\ServiceManager\Configuration object or array to | |
* seed such an object. | |
* | |
* @return array | |
*/ | |
public function getViewHelperConfiguration() | |
{ | |
return array( | |
'factories' => array( | |
'advancedHeadTitle' => function($sm) { | |
return new ViewHelper\AdvancedHeadMeta\Title( | |
$sm->getServiceLocator()->get('mcn.service.advanced_html_head') | |
); | |
}, | |
'advancedHeadKeywords' => function($sm) { | |
return new ViewHelper\AdvancedHeadMeta\Keywords( | |
$sm->getServiceLocator()->get('mcn.service.advanced_html_head') | |
); | |
}, | |
'advancedHeadDescription' => function($sm) { | |
return new ViewHelper\AdvancedHeadMeta\Description( | |
$sm->getServiceLocator()->get('mcn.service.advanced_html_head') | |
); | |
}, | |
'image' => function($sm) { | |
return new \MCNCore\View\Helper\Image( | |
$sm->getServiceLocator()->get('mcn.service.image_library') | |
); | |
} | |
) | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment