public function testconfiguration() { $config = new Configuration(); $config->setCurrentUser($this->ZfcUserMock); $prefix = "prefix"; $config->setTablePrefix($prefix); $suffix = "suffix"; $config->setTableSuffix($suffix); $fieldName = "fieldName"; $config->setRevisionFieldName($fieldName); $revisionIdFieldType = "string"; $config->setRevisionIdFieldType($revisionIdFieldType); $tableName = "tableName"; $config->setRevisionTableName($tableName); $revisionTypeFieldName = "string"; $config->setRevisionTypeFieldName($revisionTypeFieldName); $ipaddress = $config->getIpAddress(); $config->setAuditedEntityClasses(array('ZF2EntityAuditTest\\Entity\\Article', 'ZF2EntityAuditTest\\Entity\\Writer')); $config->setNote("default note"); $this->auditManager = new Manager($config); $this->auditManager->registerEvents($this->em->getEventManager()); /// creating the tables $this->schemaTool = $this->getSchemaTool(); $this->schemaTool->createSchema(array($this->em->getClassMetadata('ZF2EntityAuditTest\\Entity\\Article'), $this->em->getClassMetadata('ZF2EntityAuditTest\\Entity\\Writer'))); $this->assertInstanceOf("ZfcUser\\Entity\\User", $this->ZfcUserMock); $this->assertEquals($prefix, $config->getTablePrefix()); $this->assertEquals($suffix, $config->getTableSuffix()); $this->assertEquals($fieldName, $config->getRevisionFieldName()); $this->assertEquals($tableName, $config->getRevisionTableName()); $this->assertEquals($revisionIdFieldType, $config->getRevisionIdFieldType()); $this->assertEquals($revisionTypeFieldName, $config->getRevisionIdFieldType()); $this->assertEquals($ipaddress, "1.1.1.9"); }
public function postGenerateSchemaTable(GenerateSchemaTableEventArgs $eventArgs) { $schema = $eventArgs->getSchema(); $cm = $eventArgs->getClassMetadata(); if ($this->metadataFactory->isAudited($cm->name)) { $schema = $eventArgs->getSchema(); $entityTable = $eventArgs->getClassTable(); $revisionTable = $schema->createTable($this->config->getTablePrefix() . $entityTable->getName() . $this->config->getTableSuffix()); foreach ($entityTable->getColumns() as $column) { /* @var $column Column */ $revisionTable->addColumn($column->getName(), $column->getType()->getName(), array_merge($column->toArray(), array('notnull' => false, 'autoincrement' => false))); } $revisionTable->addColumn($this->config->getRevisionFieldName(), $this->config->getRevisionIdFieldType()); $revisionTable->addColumn($this->config->getRevisionTypeFieldName(), 'string', array('length' => 4)); $pkColumns = $entityTable->getPrimaryKey()->getColumns(); $pkColumns[] = $this->config->getRevisionFieldName(); $revisionTable->setPrimaryKey($pkColumns); } }
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(); foreach ($class->fieldNames as $field) { $type = Type::getType($class->fieldMappings[$field]['type']); $placeholders[] = !empty($class->fieldMappings[$field]['requireSQLConversion']) ? $type->convertToDatabaseValueSQL('?', $this->platform) : '?'; $sql .= ', ' . $class->getQuotedColumnName($field, $this->platform); } foreach ($class->associationMappings as $assoc) { if (($assoc['type'] & ClassMetadata::TO_ONE) > 0 && $assoc['isOwningSide']) { foreach ($assoc['targetToSourceKeyColumns'] as $sourceCol) { $sql .= ', ' . $sourceCol; $placeholders[] = '?'; } } } $sql .= ") VALUES (" . implode(", ", $placeholders) . ")"; $this->insertRevisionSQL[$class->name] = $sql; } return $this->insertRevisionSQL[$class->name]; }