Example #1
0
 public function setUp()
 {
     $reader = new \Doctrine\Common\Annotations\AnnotationReader();
     $driver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader);
     $config = new \Doctrine\ORM\Configuration();
     $config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ArrayCache());
     $config->setQueryCacheImpl(new \Doctrine\Common\Cache\ArrayCache());
     $config->setProxyDir(sys_get_temp_dir());
     $config->setProxyNamespace('SimpleThings\\EntityAudit\\Tests\\Proxies');
     $config->setMetadataDriverImpl($driver);
     $conn = array('driver' => $GLOBALS['DOCTRINE_DRIVER'], 'memory' => $GLOBALS['DOCTRINE_MEMORY'], 'dbname' => $GLOBALS['DOCTRINE_DATABASE'], 'user' => $GLOBALS['DOCTRINE_USER'], 'password' => $GLOBALS['DOCTRINE_PASSWORD'], 'host' => $GLOBALS['DOCTRINE_HOST']);
     $auditConfig = new AuditConfiguration();
     $auditConfig->setCurrentUsername("beberlei");
     $auditConfig->setAuditedEntityClasses($this->auditedEntities);
     $auditConfig->setGlobalIgnoreColumns(array('ignoreme'));
     $this->auditManager = new AuditManager($auditConfig);
     $this->auditManager->registerEvents($evm = new EventManager());
     if (php_sapi_name() == 'cli' && isset($_SERVER['argv']) && (in_array('-v', $_SERVER['argv']) || in_array('--verbose', $_SERVER['argv']))) {
         $config->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger());
     }
     $this->em = \Doctrine\ORM\EntityManager::create($conn, $config, $evm);
     $schemaTool = new \Doctrine\ORM\Tools\SchemaTool($this->em);
     $em = $this->em;
     try {
         $schemaTool->createSchema(array_map(function ($value) use($em) {
             return $em->getClassMetadata($value);
         }, $this->schemaEntities));
     } catch (\Exception $e) {
         if ($GLOBALS['DOCTRINE_DRIVER'] != 'pdo_mysql' || !($e instanceof \PDOException && strpos($e->getMessage(), 'Base table or view already exists') !== false)) {
             throw $e;
         }
     }
 }
 public function postGenerateSchema(GenerateSchemaEventArgs $eventArgs)
 {
     $schema = $eventArgs->getSchema();
     $revisionsTable = $schema->createTable($this->config->getRevisionTableName());
     $revisionsTable->addColumn('id', $this->config->getRevisionIdFieldType(), array('autoincrement' => true));
     $revisionsTable->addColumn('timestamp', 'datetime');
     $revisionsTable->addColumn('username', 'string');
     $revisionsTable->setPrimaryKey(array('id'));
 }
 /**
  * Handles access authorization.
  *
  * @param GetResponseEvent $event An Event instance
  */
 public function handle(GetResponseEvent $event)
 {
     if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
         return;
     }
     if ($this->securityContext) {
         $token = $this->securityContext->getToken();
         if ($token && $token->isAuthenticated()) {
             $this->auditConfiguration->setCurrentUsername($token->getUsername());
         }
     }
 }
 private function getInsertRevisionSQL($class)
 {
     if (!isset($this->insertRevisionSQL[$class->name])) {
         $placeholders = array('?', '?');
         $tableName = $this->config->getTablePrefix() . $class->table['name'] . $this->config->getTableSuffix();
         $sql = "INSERT INTO " . $tableName . " (" . $this->config->getRevisionFieldName() . ", " . $this->config->getRevisionTypeFieldName();
         $fields = array();
         foreach ($class->associationMappings as $assoc) {
             if (($assoc['type'] & ClassMetadata::TO_ONE) > 0 && $assoc['isOwningSide']) {
                 foreach ($assoc['targetToSourceKeyColumns'] as $sourceCol) {
                     $fields[$sourceCol] = true;
                     $sql .= ', ' . $sourceCol;
                     $placeholders[] = '?';
                 }
             }
         }
         foreach ($class->fieldNames as $field) {
             if (array_key_exists($field, $fields)) {
                 continue;
             }
             $type = Type::getType($class->fieldMappings[$field]['type']);
             $placeholders[] = !empty($class->fieldMappings[$field]['requireSQLConversion']) ? $type->convertToDatabaseValueSQL('?', $this->platform) : '?';
             $sql .= ', ' . $class->getQuotedColumnName($field, $this->platform);
         }
         $sql .= ") VALUES (" . implode(", ", $placeholders) . ")";
         $this->insertRevisionSQL[$class->name] = $sql;
     }
     return $this->insertRevisionSQL[$class->name];
 }
Example #5
0
 public function registerLogin(Request $request, PersonInterface $person, array $controllerAction)
 {
     $auditUsername = $this->auditConfig->getCurrentUsername();
     $actionType = ActionLog::TYPE_LOGIN;
     $log = $this->initLog($request, $actionType, $controllerAction, $auditUsername);
     $log->setUserId($person->getId());
     $this->em->persist($log);
     $this->em->flush($log);
 }
 public function onKernelRequest(GetResponseEvent $event)
 {
     if (HttpKernel::MASTER_REQUEST != $event->getRequestType()) {
         // don't do anything if it's not the master request
         return;
     }
     $token = $this->tokenStorage->getToken();
     if (is_null($token)) {
         return;
     }
     if (!$token instanceof OAuthToken) {
         return;
     }
     $this->auditConfig->setCurrentUsername("OAuthToken:{$token->getToken()}");
     // Handling Client Credentials
     if ($token->getUser() === null) {
         $accessToken = $this->em->getRepository('LoginCidadaoOAuthBundle:AccessToken')->findOneBy(array('token' => $token->getToken()));
         $client = $accessToken->getClient();
         $token->setUser(new ClientUser($client));
     }
 }
 public function getEntityHistory($className, $id)
 {
     if (!$this->metadataFactory->isAudited($className)) {
         throw new NotAuditedException($className);
     }
     /** @var ClassMetadataInfo|ClassMetadata $class */
     $class = $this->em->getClassMetadata($className);
     $tableName = $this->config->getTableName($class);
     if (!is_array($id)) {
         $id = array($class->identifier[0] => $id);
     }
     $whereId = array();
     foreach ($class->identifier as $idField) {
         if (isset($class->fieldMappings[$idField])) {
             $columnName = $class->fieldMappings[$idField]['columnName'];
         } else {
             if (isset($class->associationMappings[$idField])) {
                 $columnName = $class->associationMappings[$idField]['joinColumns'][0];
             } else {
                 continue;
             }
         }
         $whereId[] = "{$columnName} = ?";
     }
     $whereSQL = implode(' AND ', $whereId);
     $columnList = array($this->config->getRevisionFieldName());
     $columnMap = array();
     foreach ($class->fieldNames as $columnName => $field) {
         $type = Type::getType($class->fieldMappings[$field]['type']);
         $columnList[] = $type->convertToPHPValueSQL($class->getQuotedColumnName($field, $this->platform), $this->platform) . ' AS ' . $this->platform->quoteSingleIdentifier($field);
         $columnMap[$field] = $this->platform->getSQLResultCasing($columnName);
     }
     foreach ($class->associationMappings as $assoc) {
         if (($assoc['type'] & ClassMetadata::TO_ONE) == 0 || !$assoc['isOwningSide']) {
             continue;
         }
         foreach ($assoc['targetToSourceKeyColumns'] as $sourceCol) {
             $columnList[] = $sourceCol;
             $columnMap[$sourceCol] = $this->platform->getSQLResultCasing($sourceCol);
         }
     }
     $values = array_values($id);
     $query = "SELECT " . implode(', ', $columnList) . " FROM " . $tableName . " e WHERE " . $whereSQL . " ORDER BY e.rev DESC";
     $stmt = $this->em->getConnection()->executeQuery($query, $values);
     $result = array();
     while ($row = $stmt->fetch(Query::HYDRATE_ARRAY)) {
         $rev = $row[$this->config->getRevisionFieldName()];
         unset($row[$this->config->getRevisionFieldName()]);
         $result[] = $this->createEntity($class->name, $row, $rev);
     }
     return $result;
 }
Example #8
0
 public function registerImpersonate(Request $request, PersonInterface $person, PersonInterface $impersonator, array $controllerAction, $isImpersonating)
 {
     $auditUsername = $this->auditConfig->getCurrentUsername();
     if ($isImpersonating) {
         $actionType = ActionLog::TYPE_IMPERSONATE;
     } else {
         $actionType = ActionLog::TYPE_DEIMPERSONATE;
     }
     $log = $this->initLog($request, $actionType, $controllerAction, $auditUsername);
     $log->setUserId($person->getId());
     $log->setClientId($impersonator->getId());
     $this->em->persist($log);
     $this->em->flush($log);
 }
 /**
  * @param ClassMetadata $class
  *
  * @return string
  * @throws \Doctrine\DBAL\DBALException
  */
 private function getInsertRevisionSQL($class)
 {
     if (!isset($this->insertRevisionSQL[$class->name])) {
         $placeholders = array('?', '?');
         $tableName = $this->config->getTableName($class);
         $sql = "INSERT INTO " . $tableName . " (" . $this->config->getRevisionFieldName() . ", " . $this->config->getRevisionTypeFieldName();
         $fields = array();
         foreach ($class->associationMappings as $field => $assoc) {
             if ($class->isInheritanceTypeJoined() && $class->isInheritedAssociation($field)) {
                 continue;
             }
             if (($assoc['type'] & ClassMetadata::TO_ONE) > 0 && $assoc['isOwningSide']) {
                 foreach ($assoc['targetToSourceKeyColumns'] as $sourceCol) {
                     $fields[$sourceCol] = true;
                     $sql .= ', ' . $sourceCol;
                     $placeholders[] = '?';
                 }
             }
         }
         foreach ($class->fieldNames as $field) {
             if (array_key_exists($field, $fields)) {
                 continue;
             }
             if ($class->isInheritanceTypeJoined() && $class->isInheritedField($field) && !$class->isIdentifier($field)) {
                 continue;
             }
             $type = Type::getType($class->fieldMappings[$field]['type']);
             $placeholders[] = !empty($class->fieldMappings[$field]['requireSQLConversion']) ? $type->convertToDatabaseValueSQL('?', $this->platform) : '?';
             $sql .= ', ' . $this->quoteStrategy->getColumnName($field, $class, $this->platform);
         }
         if ($class->isInheritanceTypeJoined() && $class->rootEntityName == $class->name || $class->isInheritanceTypeSingleTable()) {
             $sql .= ', ' . $class->discriminatorColumn['name'];
             $placeholders[] = '?';
         }
         $sql .= ") VALUES (" . implode(", ", $placeholders) . ")";
         $this->insertRevisionSQL[$class->name] = $sql;
     }
     return $this->insertRevisionSQL[$class->name];
 }
 public function setUp()
 {
     $reader = new \Doctrine\Common\Annotations\AnnotationReader();
     $driver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader);
     $config = new \Doctrine\ORM\Configuration();
     $config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ArrayCache());
     $config->setQueryCacheImpl(new \Doctrine\Common\Cache\ArrayCache());
     $config->setProxyDir(sys_get_temp_dir());
     $config->setProxyNamespace('SimpleThings\\EntityAudit\\Tests\\Proxies');
     $config->setMetadataDriverImpl($driver);
     $conn = array('driver' => 'pdo_sqlite', 'memory' => true);
     $auditConfig = new AuditConfiguration();
     $auditConfig->setCurrentUsername("beberlei");
     $auditConfig->setAuditedEntityClasses(array('SimpleThings\\EntityAudit\\Tests\\ArticleAudit', 'SimpleThings\\EntityAudit\\Tests\\UserAudit'));
     $auditConfig->setGlobalIgnoreColumns(array('ignoreme'));
     $this->auditManager = new AuditManager($auditConfig);
     $this->auditManager->registerEvents($evm = new EventManager());
     #$config->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger());
     $this->em = \Doctrine\ORM\EntityManager::create($conn, $config, $evm);
     $schemaTool = new \Doctrine\ORM\Tools\SchemaTool($this->em);
     $schemaTool->createSchema(array($this->em->getClassMetadata('SimpleThings\\EntityAudit\\Tests\\ArticleAudit'), $this->em->getClassMetadata('SimpleThings\\EntityAudit\\Tests\\UserAudit')));
 }
Example #11
0
 /**
  * @param AuditConfiguration $config
  */
 public function __construct(AuditConfiguration $config)
 {
     $this->config = $config;
     $this->metadataFactory = $config->createMetadataFactory();
 }
 protected function initialize()
 {
     if (!$this->initialized) {
         $params = array();
         $sql = 'SELECT MAX(' . $this->configuration->getRevisionFieldName() . ') as rev, ';
         $sql .= $this->configuration->getRevisionTypeFieldName() . ' AS revtype, ';
         $sql .= implode(', ', $this->metadata->getIdentifierColumnNames()) . ' ';
         if (isset($this->associationDefinition['indexBy'])) {
             $sql .= ', ' . $this->associationDefinition['indexBy'] . ' ';
         }
         $sql .= 'FROM ' . $this->configuration->getTablePrefix() . $this->metadata->table['name'] . $this->configuration->getTableSuffix() . ' t ';
         $sql .= 'WHERE ' . $this->configuration->getRevisionFieldName() . ' <= ' . $this->revision . ' ';
         foreach ($this->foreignKeys as $column => $value) {
             $sql .= 'AND ' . $column . ' = ? ';
             $params[] = $value;
         }
         //we check for revisions greater than current belonging to other entities
         $sql .= 'AND NOT EXISTS (SELECT * FROM ' . $this->configuration->getTablePrefix() . $this->metadata->table['name'] . $this->configuration->getTableSuffix() . ' st WHERE';
         //ids
         foreach ($this->metadata->getIdentifierColumnNames() as $name) {
             $sql .= ' st.' . $name . ' = t.' . $name . ' AND';
         }
         //foreigns
         $sql .= ' ((';
         //master entity query, not equals
         $notEqualParts = $nullParts = array();
         foreach ($this->foreignKeys as $column => $value) {
             $notEqualParts[] = $column . ' <> ?';
             $nullParts[] = $column . ' IS NULL';
             $params[] = $value;
         }
         $sql .= implode(' AND ', $notEqualParts) . ') OR (' . implode(' AND ', $nullParts) . '))';
         //revision
         $sql .= ' AND st.' . $this->configuration->getRevisionFieldName() . ' <= ' . $this->revision;
         $sql .= ' AND st.' . $this->configuration->getRevisionFieldName() . ' > t.' . $this->configuration->getRevisionFieldName();
         $sql .= ') ';
         //end of check for for belonging to other entities
         //check for deleted revisions older than requested
         $sql .= 'AND NOT EXISTS (SELECT * FROM ' . $this->configuration->getTablePrefix() . $this->metadata->table['name'] . $this->configuration->getTableSuffix() . ' sd WHERE';
         //ids
         foreach ($this->metadata->getIdentifierColumnNames() as $name) {
             $sql .= ' sd.' . $name . ' = t.' . $name . ' AND';
         }
         //revision
         $sql .= ' sd.' . $this->configuration->getRevisionFieldName() . ' <= ' . $this->revision;
         $sql .= ' AND sd.' . $this->configuration->getRevisionFieldName() . ' > t.' . $this->configuration->getRevisionFieldName();
         $sql .= ' AND sd.' . $this->configuration->getRevisionTypeFieldName() . ' = ?';
         $params[] = 'DEL';
         $sql .= ') ';
         //end check for deleted revisions older than requested
         $sql .= 'GROUP BY ' . implode(', ', $this->metadata->getIdentifierColumnNames()) . ' ';
         $sql .= 'HAVING ' . $this->configuration->getRevisionTypeFieldName() . ' <> ?';
         //add rev type parameter
         $params[] = 'DEL';
         $rows = $this->auditReader->getConnection()->fetchAll($sql, $params);
         foreach ($rows as $row) {
             $entity = array('rev' => $row['rev'], 'revtype' => $row['revtype']);
             unset($row['rev'], $row['revtype']);
             $entity['keys'] = $row;
             if (isset($this->associationDefinition['indexBy'])) {
                 $key = $row[$this->associationDefinition['indexBy']];
                 unset($entity['keys'][$this->associationDefinition['indexBy']]);
                 $this->entities[$key] = $entity;
             } else {
                 $this->entities[] = $entity;
             }
         }
         $this->initialized = true;
     }
 }
 public function finish(ContainerInterface $container)
 {
     //finishing locales
     $container->extend('locale.manager', function (LocaleManager $localeManager, ContainerInterface $container) {
         $locales = $container->getParameter('framework.locales');
         foreach ($locales['locales'] as $id => $locale) {
             $localeObject = new Locale();
             $localeObject->setId($id);
             $localeObject->setTitle($locale['title']);
             $localeObject->setActive($locale['active']);
             $localeObject->setCountry($locale['country']);
             $localeObject->setProperties($locale['properties']);
             $localeManager->addLocale($localeObject);
         }
         foreach ($locales['detectors'] as $detector) {
             $localeManager->addDetector($container[$detector]);
         }
         foreach ($locales['storage'] as $storage) {
             $localeManager->addStorage($container[$storage]);
         }
         $localeManager->setCurrent($locales['current']);
         return $localeManager;
     });
     //entity audit
     $container['entity_audit.configuration'] = function (ContainerInterface $container) {
         $config = $container->getParameter('framework.doctrine_audit');
         $configuration = new AuditConfiguration();
         $configuration->setAuditedEntityClasses($config['entities']);
         $configuration->setGlobalIgnoreColumns($config['ignore_columns']);
         $configuration->setRevisionTableName('su_' . $configuration->getRevisionTableName());
         $container->getEventDispatcher()->addListener(AuthController::TOKEN_CHANGE_EVENT, function () use($container, $configuration) {
             $context = $container->getSecurityContext();
             if ($context->getToken() && $context->getToken()->getUser()) {
                 $configuration->setCurrentUsername($context->getToken()->getUser()->getUsername());
             }
         });
         if (!$configuration->getCurrentUsername()) {
             $configuration->setCurrentUsername('anonymous');
         }
         return $configuration;
     };
     $container['entity_audit.manager'] = function (ContainerInterface $container) {
         $config = $container['entity_audit.configuration'];
         return new AuditManager($config);
     };
     //finishing doctrine
     $doctrineConfig = $container->getParameter('framework.doctrine');
     //let's believe that types are needed always
     foreach ($doctrineConfig['types'] as $definition) {
         list($name, $class) = $definition;
         Type::addType($name, $class);
     }
     foreach ($doctrineConfig['type_overrides'] as $definition) {
         list($name, $class) = $definition;
         Type::overrideType($name, $class);
     }
     foreach ($doctrineConfig['event_managers'] as $name => $managerDefinition) {
         $container['doctrine.event_managers.' . $name] = function (ContainerInterface $container) use($managerDefinition) {
             $manager = new EventManager();
             foreach ($managerDefinition['subscribers'] as $id) {
                 $manager->addEventSubscriber($container[$id]);
             }
             $container['entity_audit.manager']->registerEvents($manager);
             return $manager;
         };
     }
     $application = $container->getApplication();
     foreach ($doctrineConfig['configurations'] as $name => $configurationDefinition) {
         $container['doctrine.configurations.' . $name] = function (ContainerInterface $container) use($configurationDefinition, $application) {
             //loading package directories
             $packages = $application->getPackages();
             $paths = array();
             foreach ($packages as $package) {
                 $entityDir = $application->locatePackageRoot($package) . DIRECTORY_SEPARATOR . 'Entity';
                 if (is_dir($entityDir)) {
                     $paths[] = $entityDir;
                 }
             }
             $configuration = Setup::createAnnotationMetadataConfiguration($paths, $container->getParameter('debug'), $container->getParameter('directories.cache') . DIRECTORY_SEPARATOR . 'doctrine');
             if ($container->getParameter('debug')) {
                 $logger = $container['logger.doctrine'];
                 $container['doctrine.logger']->addLogger($logger);
                 $configuration->setSQLLogger($container['doctrine.logger']);
             }
             //Foo:Bar -> \FooPackage\Entity\Bar aliases
             foreach ($packages as $package) {
                 $class = get_class($package);
                 $namespace = substr($class, 0, strrpos($class, '\\')) . '\\Entity';
                 $configuration->addEntityNamespace($application->resolveName($package), $namespace);
             }
             return $configuration;
         };
     }
     foreach ($doctrineConfig['connections'] as $name => $connectionDefinition) {
         $container['doctrine.connections.' . $name] = function (ContainerInterface $container) use($connectionDefinition) {
             if ($connectionDefinition['driver'] != 'mysql') {
                 throw new \Exception('No driver is supported currently but mysql');
             }
             $connection = new Connection(array('host' => $connectionDefinition['host'], 'user' => $connectionDefinition['user'], 'password' => $connectionDefinition['password'], 'dbname' => $connectionDefinition['dbname'], 'charset' => $connectionDefinition['charset']), new PDOMySql\Driver(), $container['doctrine.configurations.' . $connectionDefinition['configuration']], $container['doctrine.event_managers.' . $connectionDefinition['event_manager']]);
             return $connection;
         };
     }
     foreach ($doctrineConfig['entity_managers'] as $name => $entityManagerDefinition) {
         $container['doctrine.entity_managers.' . $name] = function (ContainerInterface $container) use($name, $entityManagerDefinition, $doctrineConfig) {
             $ormConfigurationName = $entityManagerDefinition['configuration'];
             $ormConfiguration = $container['doctrine.configurations.' . $ormConfigurationName];
             $em = EntityManager::create($container['doctrine.connections.' . $entityManagerDefinition['connection']], $ormConfiguration, $container['doctrine.event_managers.' . $entityManagerDefinition['event_manager']]);
             // @DEV, remove
             $em->name = $name;
             foreach ($doctrineConfig['configurations'][$ormConfigurationName]['hydrators'] as $hydratorDefinition) {
                 list($name, $class) = $hydratorDefinition;
                 $reflection = new \ReflectionClass($class);
                 $hydrator = $reflection->newInstanceArgs(array($em));
                 $ormConfiguration->addCustomHydrationMode($name, $hydrator);
             }
             return $em;
         };
     }
     $container['doctrine.doctrine'] = function (ContainerInterface $container) use($doctrineConfig) {
         $connections = array();
         foreach (array_keys($doctrineConfig['connections']) as $name) {
             $connections[$name] = 'doctrine.connections.' . $name;
         }
         $managers = array();
         foreach (array_keys($doctrineConfig['entity_managers']) as $name) {
             $managers[$name] = 'doctrine.entity_managers.' . $name;
         }
         //todo: make default em/con configurable
         return new ManagerRegistry('supra.doctrine', $connections, $managers, $doctrineConfig['default_connection'], $doctrineConfig['default_entity_manager'], 'Doctrine\\ORM\\Proxy\\Proxy');
     };
     //sessions and HttpFoundation
     $sessionConfig = $container->getParameter('framework.session');
     $container['http.session'] = function (ContainerInterface $container) use($sessionConfig) {
         if (PHP_SAPI == 'cli') {
             throw new \Exception('Sessions are not possible in CLI mode');
         }
         $storage = $container[$sessionConfig['storage']];
         $session = new Session($storage);
         $session->start();
         $container['http.request']->setSession($session);
         return $session;
     };
     //mailers
     $mailerConfig = $container->getParameter('framework.swiftmailer');
     $container->setParameter('mailer.mailers', array_map(function ($value) {
         return 'mailer.mailers.' . $value;
     }, array_keys($mailerConfig['mailers'])));
     foreach ($mailerConfig['mailers'] as $id => $configurationDefinition) {
         $container['mailer.mailers.' . $id] = function (ContainerInterface $container) use($configurationDefinition) {
             switch ($configurationDefinition['transport']) {
                 case 'smtp':
                     $transport = \Swift_SmtpTransport::newInstance($configurationDefinition['params']['host'], $configurationDefinition['params']['port']);
                     $transport->setUsername($configurationDefinition['params']['username']);
                     $transport->setPassword($configurationDefinition['params']['password']);
                     break;
                 case 'mail':
                     $transport = \Swift_MailTransport::newInstance();
                     if (isset($transport['params']['extra_params'])) {
                         $transport->setExtraParams($transport['params']['extra_params']);
                     }
                     break;
                 case 'sendmail':
                     $transport = \Swift_SendmailTransport::newInstance();
                     if (isset($configurationDefinition['params']['command'])) {
                         $transport->setCommand($configurationDefinition['params']['command']);
                     }
                     break;
                 case 'null':
                     $transport = \Swift_NullTransport::newInstance();
                     break;
                 default:
                     throw new \Exception(sprintf('Unknown mail transport [%s].', $configurationDefinition['transport']));
             }
             return \Swift_Mailer::newInstance($transport);
         };
     }
     $container['mailer.mailer'] = function (ContainerInterface $container) use($mailerConfig) {
         return $container['mailer.mailers.' . $mailerConfig['default']];
     };
 }
Example #14
0
 /**
  * @return AuditManager
  */
 protected function getAuditManager()
 {
     if (null !== $this->auditManager) {
         return $this->auditManager;
     }
     $auditConfig = AuditConfiguration::forEntities($this->auditedEntities);
     $auditConfig->setGlobalIgnoreColumns(array('ignoreme'));
     $auditConfig->setUsernameCallable(function () {
         return 'beberlei';
     });
     $auditManager = new AuditManager($auditConfig);
     $auditManager->registerEvents($this->_getConnection()->getEventManager());
     return $this->auditManager = $auditManager;
 }