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 postGenerateSchema(GenerateSchemaEventArgs $eventArgs)
 {
     $schema = $eventArgs->getSchema();
     //get the entity meta
     $meta = $eventArgs->getEntityManager()->getClassMetadata($this->config->getZfcUserEntityClass());
     //get the table name from the entity
     $revisionsTable = $schema->createTable($this->config->getRevisionTableName());
     $revisionsTable->addColumn('id', $this->config->getRevisionIdFieldType(), array('autoincrement' => true));
     $revisionsTable->addColumn('timestamp', 'datetime');
     $revisionsTable->addColumn('note', 'text', array('notnull' => false));
     $revisionsTable->addColumn('ipaddress', 'text', array('notnull' => false));
     $localColumnNames = array();
     $foreignColumnNames = array();
     foreach ($meta->getIdentifier() as $primaryKey) {
         $columnName = $meta->getColumnName($primaryKey);
         $foreignColumnNames[] = $columnName;
         $columnName = preg_replace('/user[^a-zA-Z0-9]*/', '', $columnName);
         $localColumnName = 'user_' . $columnName;
         $localColumnNames[] = $localColumnName;
         $fieldType = $meta->getTypeOfField($primaryKey);
         $revisionsTable->addColumn($localColumnName, $fieldType, array('notnull' => false));
     }
     //add the tablename and primary key from the entity meta
     $revisionsTable->addForeignKeyConstraint($meta->getTableName(), $localColumnNames, $foreignColumnNames);
     $revisionsTable->setPrimaryKey(array('id'));
 }