From bb12ae81fbcdf78d69c64d42b26ca85c32068604 Mon Sep 17 00:00:00 2001 From: Nicolas Le Goff Date: Mon, 9 Jan 2012 23:33:29 +0100 Subject: [PATCH] move to Orm --- lib/Alchemy/Phrasea/Core/Service/Doctrine.php | 375 ------------------ 1 file changed, 375 deletions(-) delete mode 100644 lib/Alchemy/Phrasea/Core/Service/Doctrine.php diff --git a/lib/Alchemy/Phrasea/Core/Service/Doctrine.php b/lib/Alchemy/Phrasea/Core/Service/Doctrine.php deleted file mode 100644 index 4b39a232ed..0000000000 --- a/lib/Alchemy/Phrasea/Core/Service/Doctrine.php +++ /dev/null @@ -1,375 +0,0 @@ -getCache(); - $queryCache = $this->getCache(); - - //handle cache - $this->handleCache($metaCache, $queryCache, $cache, $debug); - //Handle logs - $this->handleLogs($config, $log, $logger); - - //set caches - $config->setMetadataCacheImpl($metaCache); - $config->setQueryCacheImpl($queryCache); - - //define autoregeneration of proxies base on debug mode - $config->setAutoGenerateProxyClasses($debug); - - $chainDriverImpl = new \Doctrine\ORM\Mapping\Driver\DriverChain(); - - $driverYaml = new \Doctrine\ORM\Mapping\Driver\YamlDriver( - array(__DIR__ . '/../../../../conf.d/Doctrine') - ); - - $chainDriverImpl->addDriver($driverYaml, 'Entities'); - - $chainDriverImpl->addDriver($driverYaml, 'Gedmo\Timestampable'); - - $config->setMetadataDriverImpl($chainDriverImpl); - - $config->setProxyDir(realpath(__DIR__ . '/../../../../Doctrine/Proxies')); - - $config->setProxyNamespace('Proxies'); - - $dbalConf = isset($doctrineConfiguration["dbal"]) ? $doctrineConfiguration["dbal"] : false; - - if (!$dbalConf) - { - throw new \Exception("Unable to read dbal configuration"); - } - - $evm = new \Doctrine\Common\EventManager(); - - $evm->addEventSubscriber(new \Gedmo\Timestampable\TimestampableListener()); - - $this->entityManager = \Doctrine\ORM\EntityManager::create($dbalConf, $config, $evm); - - $this->addTypes(); - - return $this; - } - - public function getEntityManager() - { - return $this->entityManager; - } - - public function getVersion() - { - return \Doctrine\Common\Version::VERSION; - } - - protected static function loadClasses() - { - - $classLoader = new \Doctrine\Common\ClassLoader( - 'Doctrine\ORM' - , realpath(__DIR__ . '/../../../../../vendor/doctrine/orm/lib') - ); - $classLoader->register(); - - $classLoader = new \Doctrine\Common\ClassLoader( - 'Doctrine\DBAL' - , realpath(__DIR__ . '/../../../../../vendor/doctrine/orm/lib/vendor/doctrine-dbal/lib') - ); - $classLoader->register(); - - $classLoader = new \Doctrine\Common\ClassLoader( - 'Doctrine\Common\DataFixtures' - , realpath(__DIR__ . '/../../../../vendor/data-fixtures/lib') - ); - $classLoader->register(); - - $classLoader = new \Doctrine\Common\ClassLoader( - 'PhraseaFixture' - , realpath(__DIR__ . '/../../../../conf.d/') - ); - $classLoader->register(); - - $classLoader = new \Doctrine\Common\ClassLoader( - 'Doctrine\Common' - , realpath(__DIR__ . '/../../../../../vendor/doctrine/orm/lib/vendor/doctrine-common/lib') - ); - $classLoader->register(); - - $classLoader = new \Doctrine\Common\ClassLoader( - 'Entities' - , realpath(__DIR__ . '/../../../../Doctrine') - ); - $classLoader->register(); - - $classLoader = new \Doctrine\Common\ClassLoader( - 'Repositories' - , realpath(__DIR__ . '/../../../../Doctrine') - ); - $classLoader->register(); - - $classLoader = new \Doctrine\Common\ClassLoader( - 'Proxies' - , realpath(__DIR__ . '/../../../../Doctrine') - ); - $classLoader->register(); - - $classLoader = new \Doctrine\Common\ClassLoader( - 'Symfony' - , realpath(__DIR__ . '/../../../../../vendor/doctrine/orm/lib/vendor') - ); - - $classLoader->register(); - - $classLoader = new \Doctrine\Common\ClassLoader( - 'Doctrine\Logger' - , realpath(__DIR__ . '/../../../../') - ); - - $classLoader->register(); - - $classLoader = new \Doctrine\Common\ClassLoader( - 'Monolog' - , realpath(__DIR__ . '/../../../../vendor/Silex/vendor/monolog/src') - ); - - $classLoader->register(); - - $classLoader = new \Doctrine\Common\ClassLoader( - 'Types' - , realpath(__DIR__ . '/../../../../Doctrine') - ); - - $classLoader->register(); - - $classLoader = new \Doctrine\Common\ClassLoader( - 'Gedmo' - , __DIR__ . "/../../../../../vendor/gedmo/doctrine-extensions/lib" - ); - $classLoader->register(); - - - return; - } - - protected function addTypes() - { - - $platform = $this->entityManager->getConnection()->getDatabasePlatform(); - - if(!Type::hasType('blob')) - Type::addType('blob', 'Types\Blob'); - if(!Type::hasType('enum')) - Type::addType('enum', 'Types\Enum'); - if(!Type::hasType('longblob')) - Type::addType('longblob', 'Types\LongBlob'); - if(!Type::hasType('varbinary')) - Type::addType('varbinary', 'Types\VarBinary'); - - $platform->registerDoctrineTypeMapping('enum', 'enum'); - $platform->registerDoctrineTypeMapping('blob', 'blob'); - $platform->registerDoctrineTypeMapping('longblob', 'longblob'); - $platform->registerDoctrineTypeMapping('varbinary', 'varbinary'); - - return; - } - - /** - * Return a cache object according to the $name - * - * @param type $cacheName - */ - private function getCache($cacheName = self::ARRAYCACHE) - { - switch ($cacheName) - { - case self::MEMCACHED: - $cache = new \Doctrine\Common\Cache\MemcacheCache(); - break; - case self::APC: - $cache = new \Doctrine\Common\Cache\ApcCache(); - break; - case self::ARRAYCACHE: - default: - $cache = new \Doctrine\Common\Cache\ArrayCache(); - break; - } - - return $cache; - } - - /** - * Handle Cache configuration - * - * @param AbstractCache $metaCache - * @param AbstractCache $queryCache - * @param type $cache - * @param type $debug - */ - private function handleCache(AbstractCache &$metaCache, AbstractCache &$queryCache, $cache, $debug) - { - if ($cache && !$debug) - { - //define query cache - $cacheName = isset($cache["query"]) ? $cache["query"] : self::ARRAYCACHE; - $queryCache = $this->getCache($cacheName); - - //define metadatas cache - $cacheName = isset($cache["metadata"]) ? $cache["metadata"] : self::ARRAYCACHE; - $metaCache = $this->getCache($cacheName); - } - } - - /** - * Handle logs configuration - * - * @param \Doctrine\ORM\Configuration $config - * @param type $log - * @param type $logger - */ - private function handleLogs(\Doctrine\ORM\Configuration &$config, $log, $logger) - { - $logEnable = isset($log["enable"]) ? !!$log["enable"] : false; - - if ($logEnable) - { - $loggerService = isset($log["type"]) ? $log["type"] : ''; - - switch ($loggerService) - { - case 'monolog': - //defaut to main handler - $doctrineHandler = isset($log["handler"]) ? $log["handler"] : 'main'; - - if (!isset($logger["handlers"])) - { - throw new \Exception("You must specify at least on monolog handler"); - } - - if (!array_key_exists($doctrineHandler, $logger["handlers"])) - { - throw new \Exception(sprintf('Unknow monolog handler %s'), $handlerType); - } - - $handlerName = ucfirst($logger["handlers"][$doctrineHandler]["type"]); - - $handlerClassName = sprintf('\Monolog\Handler\%sHandler', $handlerName); - - if (!class_exists($handlerClassName)) - { - throw new \Exception(sprintf('Unknow monolog handler class %s', $handlerClassName)); - } - - if (!isset($log["filename"])) - { - throw new \Exception('you must specify a file to write "filename: my_filename"'); - } - - $logPath = __DIR__ . '/../../../../../logs'; - $file = sprintf('%s/%s', $logPath, $log["filename"]); - - if ($doctrineHandler == 'rotate') - { - $maxDay = isset($log["max_day"]) ? (int) $log["max_day"] : false; - - if(!$maxDay && isset($logger["handlers"]['rotate']["max_day"])) - { - $maxDay = (int) $logger["handlers"]['rotate']["max_day"]; - } - else - { - $maxDay = 10; - } - $handlerInstance = new $handlerClassName($file, $maxDay); - } - else - { - $handlerInstance = new $handlerClassName($file); - } - - $monologLogger = new \Monolog\Logger('query-logger'); - $monologLogger->pushHandler($handlerInstance); - - if (isset($log["output"])) - { - $output = $log["output"]; - } - elseif (isset($logger["output"])) - { - $output = $logger["output"]; - } - else - { - $output = null; - } - - if (null === $output) - { - $sqlLogger = new \Doctrine\Logger\MonologSQLLogger($monologLogger); - } - else - { - $sqlLogger = new \Doctrine\Logger\MonologSQLLogger($monologLogger, $output); - } - - $config->setSQLLogger($sqlLogger); - break; - case 'echo': - default: - $config->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger); - break; - } - } - } - -} \ No newline at end of file