Skip to content

Instantly share code, notes, and snippets.

@awartoft
Created July 20, 2012 16:06
Show Gist options
  • Save awartoft/3151586 to your computer and use it in GitHub Desktop.
Save awartoft/3151586 to your computer and use it in GitHub Desktop.
<?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