public function getRepository(Config $config) { $connection = DriverManager::getConnection($ops = ['user' => $config['db_username'], 'password' => $config['db_password'], 'host' => $config['db_host'], 'driver' => $config['db_driver'], 'dbname' => $config['db_name'], 'path' => $config['db_path']]); $factory = new RepositoryFactoryDoctrineDBAL(); $repository = $factory->getRepository(['jackalope.doctrine_dbal_connection' => $connection]); return $repository; }
private function loadPhpcrOdm() { $this['psi_content_type.storage.doctrine.phpcr_odm.property_encoder'] = function ($container) { return new PropertyEncoder('psict', 'https://github.com/psiphp/content-type'); }; $this['psi_content_type.storage.doctrine.phpcr_odm.field_mapper'] = function ($container) { return new FieldMapper($container['psi_content_type.storage.doctrine.phpcr_odm.property_encoder'], $container['psi_content_type.field_loader']); }; $this['psi_content_type.storage.doctrine.phpcr_odm.collection_updater'] = function ($container) { return new CollectionIdentifierUpdater($container['psi_content_type.metadata.factory'], $container['psi_content_type.storage.doctrine.phpcr_odm.property_encoder']); }; $this['doctrine_phpcr.document_manager'] = function ($container) { $registerNodeTypes = false; // automatically setup the schema if the db doesn't exist yet. if (!file_exists($container['config']['db_path'])) { if (!file_exists($dir = dirname($container['config']['db_path']))) { mkdir($dir); } $connection = $container['dbal.connection']; $schema = new RepositorySchema(); foreach ($schema->toSql($connection->getDatabasePlatform()) as $sql) { $connection->exec($sql); } $registerNodeTypes = true; } // register the phpcr session $factory = new RepositoryFactoryDoctrineDBAL(); $repository = $factory->getRepository(['jackalope.doctrine_dbal_connection' => $container['dbal.connection']]); $session = $repository->login(new SimpleCredentials(null, null), 'default'); if ($registerNodeTypes) { $typeRegistrator = new NodeTypeRegistrator(); $typeRegistrator->registerNodeTypes($session); $ctTypeRegistrator = new CtNodeTypeRegistrator($container['psi_content_type.storage.doctrine.phpcr_odm.property_encoder']); $ctTypeRegistrator->registerNodeTypes($session); } // annotation driver $annotationDriver = new AnnotationDriver($container['annotation_reader'], [__DIR__ . '/../../vendor/doctrine/phpcr-odm/lib/Doctrine/ODM/PHPCR/Document', __DIR__ . '/Example']); $xmlDriver = new XmlDriver([__DIR__ . '/mappings']); $annotationDriver = new AnnotationDriver($container['annotation_reader'], [__DIR__ . '/../../vendor/doctrine/phpcr-odm/lib/Doctrine/ODM/PHPCR/Document', __DIR__ . '/Example']); $chain = new MappingDriverChain(); $chain->addDriver($annotationDriver, 'Psi\\Bridge\\ContentType\\Doctrine\\PhpcrOdm\\Tests\\Functional\\Example'); $chain->addDriver($xmlDriver, 'Psi\\Component\\ContentType\\Tests\\Functional\\Example\\Model'); $chain->addDriver($annotationDriver, 'Doctrine'); $config = new Configuration(); $config->setMetadataDriverImpl($chain); $manager = DocumentManager::create($session, $config); $manager->getEventManager()->addEventSubscriber(new MetadataSubscriber($container['psi_content_type.metadata.factory'], $container['psi_content_type.field_loader'], $container['psi_content_type.storage.doctrine.phpcr_odm.field_mapper'])); $manager->getEventManager()->addEventSubscriber(new CollectionSubscriber($container['psi_content_type.metadata.factory'], $container['psi_content_type.storage.doctrine.phpcr_odm.property_encoder'])); return $manager; }; }
/** * Returns the file system provider * * @return \League\Flysystem\FilesystemInterface File system provider */ protected function getProvider() { if (!isset($this->fs)) { $config = $this->getConfig(); if (!isset($config['root'])) { throw new Exception(sprintf('Configuration option "%1$s" missing', 'root')); } $conn = DriverManager::getConnection($config); $factory = new RepositoryFactoryDoctrineDBAL(); $repo = $factory->getRepository(array('jackalope.doctrine_dbal_connection' => $conn)); $session = $repo->login(new \PHPCR\SimpleCredentials(null, null)); $this->fs = new Filesystem(new PhpcrAdapter($session, $config['root'])); } return $this->fs; }
private function getSession() { $connection = DriverManager::getConnection(array('driver' => 'pdo_sqlite', 'path' => ':memory:')); $factory = new RepositoryFactoryDoctrineDBAL(); $repository = $factory->getRepository(array('jackalope.doctrine_dbal_connection' => $connection)); $schema = new RepositorySchema(array('disable_fks' => true), $connection); $schema->reset(); $session = $repository->login(new \PHPCR\SimpleCredentials('', '')); $cnd = <<<CND <phpcr='http://www.doctrine-project.org/projects/phpcr_odm'> [phpcr:managed] mixin - phpcr:class (STRING) - phpcr:classparents (STRING) multiple CND; $session->getWorkspace()->getNodeTypeManager()->registerNodeTypesCnd($cnd, true); return $session; }
private static function createJackalopeDoctrineDbal() { $connection = self::createDbalConnection(); $factory = new RepositoryFactoryDoctrineDBAL(); $repository = $factory->getRepository(['jackalope.doctrine_dbal_connection' => $connection]); $credentials = new \PHPCR\SimpleCredentials(null, null); $session = $repository->login($credentials, 'default'); $nodeTypeManager = $session->getWorkspace()->getNodeTypeManager(); if (!$nodeTypeManager->hasNodeType('mix:test')) { $nodeTypeManager->registerNodeTypesCnd(<<<EOT [mix:test] > mix:referenceable mix EOT , true); } $namespaceRegistry = $session->getWorkspace()->getNamespaceRegistry(); $namespaceRegistry->registerNamespace('lsys', 'http://example.com/lsys'); $namespaceRegistry->registerNamespace('nsys', 'http://example.com/nsys'); $namespaceRegistry->registerNamespace('lcon', 'http://example.com/lcon'); $namespaceRegistry->registerNamespace('ncon', 'http://example.com/ncon'); return $session; }