From 8fb82c2f6573748203c1efd11db8f03cd52ed1d9 Mon Sep 17 00:00:00 2001 From: zYne Date: Mon, 8 Oct 2007 22:58:53 +0000 Subject: [PATCH] Fixes #427, now the AuditLog component should work --- lib/Doctrine/AuditLog.php | 11 +++++++++-- lib/Doctrine/AuditLog/Listener.php | 24 +++++++++++++++++------- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/lib/Doctrine/AuditLog.php b/lib/Doctrine/AuditLog.php index 86a75b99f..65c21bfc3 100644 --- a/lib/Doctrine/AuditLog.php +++ b/lib/Doctrine/AuditLog.php @@ -74,13 +74,20 @@ class Doctrine_AuditLog extends Doctrine_Plugin $name = $table->getComponentName(); $className = $name . 'Version'; - + + // check that class doesn't exist (otherwise we cannot create it) if (class_exists($className)) { return false; } $columns = $table->getColumns(); - + + // remove all sequential and autoincrement definitions + foreach ($columns as $column => $definition) { + unset($columns[$column]['autoincrement']); + unset($columns[$column]['sequence']); + } + // the version column should be part of the primary key definition $columns[$this->_options['versionColumn']]['primary'] = true; diff --git a/lib/Doctrine/AuditLog/Listener.php b/lib/Doctrine/AuditLog/Listener.php index 645b1807e..1485741f6 100644 --- a/lib/Doctrine/AuditLog/Listener.php +++ b/lib/Doctrine/AuditLog/Listener.php @@ -44,7 +44,7 @@ class Doctrine_AuditLog_Listener extends Doctrine_Record_Listener $event->getInvoker()->set($versionColumn, 1); } - public function preDelete(Doctrine_Event $event) + public function postInsert(Doctrine_Event $event) { $class = $this->_auditLog->getOption('className'); @@ -53,25 +53,35 @@ class Doctrine_AuditLog_Listener extends Doctrine_Record_Listener $version = new $class(); $version->merge($record->toArray()); $version->save(); + } + public function preDelete(Doctrine_Event $event) + { + $class = $this->_auditLog->getOption('className'); + + $record = $event->getInvoker(); $versionColumn = $this->_auditLog->getOption('versionColumn'); $version = $record->get($versionColumn); $record->set($versionColumn, ++$version); + + $version = new $class(); + $version->merge($record->toArray()); + $version->save(); } public function preUpdate(Doctrine_Event $event) { - $class = $this->_auditLog->getOption('className'); - $record = $event->getInvoker(); - - $version = new $class(); - $version->merge($record->toArray()); - $version->save(); + $class = $this->_auditLog->getOption('className'); + $record = $event->getInvoker(); $versionColumn = $this->_auditLog->getOption('versionColumn'); $version = $record->get($versionColumn); $record->set($versionColumn, ++$version); + + $version = new $class(); + $version->merge($record->toArray()); + $version->save(); } }