/** * Initialise. * * Runs at plugin init time. * * @return void */ public function initialize() { $autoloader = new Zikula_KernelClassLoader(); $autoloader->spl_autoload_register(); $autoloader->register('Gedmo', __DIR__ . '/lib/vendor/l3pp4rd/DoctrineExtensions/lib', '\\'); $autoloader->register('DoctrineExtensions\\StandardFields', __DIR__ . '/lib', '\\'); $autoloader->register('DoctrineExtensions', __DIR__ . '/lib/vendor/beberlei/DoctrineExtensions/lib', '\\'); Doctrine\Common\Annotations\AnnotationRegistry::registerAutoloadNamespace('Gedmo', __DIR__ . '/lib/vendor/l3pp4rd/DoctrineExtensions/lib'); Doctrine\Common\Annotations\AnnotationRegistry::registerAutoloadNamespace('DoctrineExtensions\\StandardFields', __DIR__ . '/lib'); include 'ExtensionsManager.php'; $definition = new Zikula_ServiceManager_Definition('SystemPlugins_DoctrineExtensions_ExtensionsManager', array(new Zikula_ServiceManager_Reference('doctrine.eventmanager'), new Zikula_ServiceManager_Reference('zikula.servicemanager'))); $this->serviceManager->registerService('doctrine_extensions', $definition); $types = array('Loggable', 'Sluggable', 'Timestampable', 'Translatable', 'Tree', 'Sortable'); foreach ($types as $type) { // The listener for Translatable is incorrectly named TranslationListener if ($type != "Translatable") { $definition = new Zikula_ServiceManager_Definition("Gedmo\\$type\\{$type}Listener"); } else { $definition = new Zikula_ServiceManager_Definition("Gedmo\\Translatable\\TranslationListener"); } $this->serviceManager->registerService(strtolower("doctrine_extensions.listener.$type"), $definition); } $definition = new Zikula_ServiceManager_Definition("DoctrineExtensions\\StandardFields\\StandardFieldsListener"); $this->serviceManager->registerService(strtolower("doctrine_extensions.listener.standardfields"), $definition); }
/** * Add new autoloader to the stack. * * @param string $namespace Namespace. * @param string $path Path. * @param string $separator Separator, _ or \\. * * @return void */ public static function addAutoloader($namespace, $path = '', $separator = '_') { if (self::$autoloaders->hasAutoloader($namespace)) { return; } self::$autoloaders->register($namespace, $path, $separator); }
/** * Initialise. * * Runs at plugin init time. * * @return void */ public function initialize() { $autoloader = new Zikula_KernelClassLoader(); $autoloader->spl_autoload_register(); $autoloader->register('Imagine', dirname(__FILE__) . '/lib/vendor', '\\'); $definition = new Zikula_ServiceManager_Definition('SystemPlugin_Imagine_Manager', array( new Zikula_ServiceManager_Reference('zikula.servicemanager'), new Zikula_ServiceManager_Reference($this->getServiceId()) )); $this->serviceManager->registerService('systemplugin.imagine.manager', $definition, false); $this->addHandlerDefinition('view.init', 'registerPlugins'); $this->addHandlerDefinition('module_dispatch.preexecute', 'clearCacheObserver'); if ($this->getVar('thumb_auto_cleanup')) { $this->addHandlerDefinition('module_dispatch.postloadgeneric', 'cleanupThumbnails'); } $this->setupThumbDir(); }
/** * Initialise. * * Runs at plugin init time. * * @return void */ public function initialize() { // register namespace // Because the standard kernel classloader already has Doctrine registered as a namespace // we have to add a new loader onto the spl stack. $autoloader = new Zikula_KernelClassLoader(); $autoloader->spl_autoload_register(); include 'lib/DoctrineHelper.php'; $autoloader->register('Doctrine', dirname(__FILE__) . '/lib/vendor', '\\'); $autoloader->register('DoctrineProxy', 'ztemp/doctrinemodels', '\\'); $serviceManager = $this->eventManager->getServiceManager(); $config = $GLOBALS['ZConfig']['DBInfo']['databases']['default']; $dbConfig = array('host' => $config['host'], 'user' => $config['user'], 'password' => $config['password'], 'dbname' => $config['dbname'], 'driver' => 'pdo_' . $config['dbdriver'], ); $r = new \ReflectionClass('Doctrine\Common\Cache\\' . $serviceManager['dbcache.type'] . 'Cache'); $dbCache = $r->newInstance(); $ORMConfig = new \Doctrine\ORM\Configuration; $serviceManager->attachService('doctrine.configuration', $ORMConfig); $ORMConfig->setMetadataCacheImpl($dbCache); // create proxy cache dir CacheUtil::createLocalDir('doctrinemodels'); // setup annotations base include_once 'lib/vendor/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php'; // setup annotation reader $reader = new \Doctrine\Common\Annotations\AnnotationReader(); $cacheReader = new \Doctrine\Common\Annotations\CachedReader($reader, new \Doctrine\Common\Cache\ArrayCache()); $serviceManager->attachService('doctrine.annotationreader', $cacheReader); // setup annotation driver $annotationDriver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($cacheReader); $serviceManager->attachService('doctrine.annotationdriver', $annotationDriver); // setup driver chains $driverChain = new \Doctrine\ORM\Mapping\Driver\DriverChain(); $serviceManager->attachService('doctrine.driverchain', $driverChain); // configure Doctrine ORM $ORMConfig->setMetadataDriverImpl($annotationDriver); $ORMConfig->setQueryCacheImpl($dbCache); $ORMConfig->setProxyDir(CacheUtil::getLocalDir('doctrinemodels')); $ORMConfig->setProxyNamespace('DoctrineProxy'); //$ORMConfig->setAutoGenerateProxyClasses(System::isDevelopmentMode()); if (isset($serviceManager['log.enabled']) && $serviceManager['log.enabled']) { $ORMConfig->setSQLLogger(new SystemPlugin_Doctrine_ZikulaSqlLogger()); } // setup doctrine eventmanager $eventManager = new \Doctrine\Common\EventManager; $serviceManager->attachService('doctrine.eventmanager', $eventManager); // setup MySQL specific listener (storage engine and encoding) if ($config['dbdriver'] == 'mysql') { $mysqlSessionInit = new \Doctrine\DBAL\Event\Listeners\MysqlSessionInit($config['charset']); $eventManager->addEventSubscriber($mysqlSessionInit); $mysqlStorageEvent = new SystemPlugin_Doctrine_MySqlGenerateSchemaListener($eventManager); } // setup the doctrine entitymanager $entityManager = \Doctrine\ORM\EntityManager::create($dbConfig, $ORMConfig, $eventManager); $serviceManager->attachService('doctrine.entitymanager', $entityManager); }