![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/vendor/doctrine/doctrine-bundle/ |
<?php namespace Doctrine\Bundle\DoctrineBundle; use Closure; use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\CacheCompatibilityPass; use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\CacheSchemaSubscriberPass; use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\DbalSchemaFilterPass; use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\EntityListenerPass; use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\IdGeneratorPass; use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\MiddlewaresPass; use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\RemoveLoggingMiddlewarePass; use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\RemoveProfilerControllerPass; use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\ServiceRepositoryCompilerPass; use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\WellKnownSchemaFilterPass; use Doctrine\Common\Util\ClassUtils; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Proxy\Autoloader; use Symfony\Bridge\Doctrine\DependencyInjection\CompilerPass\DoctrineValidationPass; use Symfony\Bridge\Doctrine\DependencyInjection\CompilerPass\RegisterEventListenersAndSubscribersPass; use Symfony\Bridge\Doctrine\DependencyInjection\CompilerPass\RegisterUidTypePass; use Symfony\Bridge\Doctrine\DependencyInjection\Security\UserProvider\EntityFactory; use Symfony\Bundle\SecurityBundle\DependencyInjection\SecurityExtension; use Symfony\Component\Console\Application; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\Compiler\PassConfig; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\HttpKernel\Bundle\Bundle; use function assert; use function class_exists; use function clearstatcache; use function spl_autoload_unregister; /** @final since 2.9 */ class DoctrineBundle extends Bundle { private ?Closure $autoloader = null; /** @return void */ public function build(ContainerBuilder $container) { parent::build($container); $container->addCompilerPass(new class () implements CompilerPassInterface { public function process(ContainerBuilder $container): void { if ($container->has('session.handler')) { return; } $container->removeDefinition('doctrine.orm.listeners.pdo_session_handler_schema_listener'); } }, PassConfig::TYPE_BEFORE_OPTIMIZATION); $container->addCompilerPass(new RegisterEventListenersAndSubscribersPass('doctrine.connections', 'doctrine.dbal.%s_connection.event_manager', 'doctrine'), PassConfig::TYPE_BEFORE_OPTIMIZATION); if ($container->hasExtension('security')) { $security = $container->getExtension('security'); if ($security instanceof SecurityExtension) { $security->addUserProviderFactory(new EntityFactory('entity', 'doctrine.orm.security.user.provider')); } } $container->addCompilerPass(new CacheCompatibilityPass()); $container->addCompilerPass(new DoctrineValidationPass('orm')); $container->addCompilerPass(new EntityListenerPass()); $container->addCompilerPass(new ServiceRepositoryCompilerPass()); $container->addCompilerPass(new IdGeneratorPass()); $container->addCompilerPass(new WellKnownSchemaFilterPass()); $container->addCompilerPass(new DbalSchemaFilterPass()); $container->addCompilerPass(new CacheSchemaSubscriberPass(), PassConfig::TYPE_BEFORE_REMOVING, -10); $container->addCompilerPass(new RemoveProfilerControllerPass()); $container->addCompilerPass(new RemoveLoggingMiddlewarePass()); $container->addCompilerPass(new MiddlewaresPass()); if (! class_exists(RegisterUidTypePass::class)) { return; } $container->addCompilerPass(new RegisterUidTypePass()); } /** @return void */ public function boot() { // Register an autoloader for proxies to avoid issues when unserializing them // when the ORM is used. if (! $this->container->hasParameter('doctrine.orm.proxy_namespace')) { return; } $namespace = (string) $this->container->getParameter('doctrine.orm.proxy_namespace'); $dir = (string) $this->container->getParameter('doctrine.orm.proxy_dir'); $proxyGenerator = null; if ($this->container->getParameter('doctrine.orm.auto_generate_proxy_classes')) { // See https://github.com/symfony/symfony/pull/3419 for usage of references $container = &$this->container; $proxyGenerator = static function ($proxyDir, $proxyNamespace, $class) use (&$container): void { $originalClassName = ClassUtils::getRealClass($class); $registry = $container->get('doctrine'); assert($registry instanceof Registry); foreach ($registry->getManagers() as $em) { assert($em instanceof EntityManagerInterface); if (! $em->getConfiguration()->getAutoGenerateProxyClasses()) { continue; } $metadataFactory = $em->getMetadataFactory(); if ($metadataFactory->isTransient($originalClassName)) { continue; } $classMetadata = $metadataFactory->getMetadataFor($originalClassName); $em->getProxyFactory()->generateProxyClasses([$classMetadata]); clearstatcache(true, Autoloader::resolveFile($proxyDir, $proxyNamespace, $class)); break; } }; } $this->autoloader = Autoloader::register($dir, $namespace, $proxyGenerator); } /** @return void */ public function shutdown() { if ($this->autoloader !== null) { spl_autoload_unregister($this->autoloader); $this->autoloader = null; } // Clear all entity managers to clear references to entities for GC if ($this->container->hasParameter('doctrine.entity_managers')) { foreach ($this->container->getParameter('doctrine.entity_managers') as $id) { if (! $this->container->initialized($id)) { continue; } $this->container->get($id)->clear(); } } // Close all connections to avoid reaching too many connections in the process when booting again later (tests) if (! $this->container->hasParameter('doctrine.connections')) { return; } foreach ($this->container->getParameter('doctrine.connections') as $id) { if (! $this->container->initialized($id)) { continue; } $this->container->get($id)->close(); } } /** @return void */ public function registerCommands(Application $application) { } }