git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_IntranetNueva/trunk@56 77cfc57b-8ef4-1849-9df6-4a38aa5da120
133 lines
2.8 KiB
PHP
133 lines
2.8 KiB
PHP
<?php
|
|
class LoggableBehavior extends CActiveRecordBehavior
|
|
{
|
|
private $_oldattributes = array();
|
|
|
|
public function afterSave($event)
|
|
{
|
|
try {
|
|
$username = Yii::app()->user->Name;
|
|
$userid = Yii::app()->user->id;
|
|
} catch(Exception $e) { //If we have no user object, this must be a command line program
|
|
$username = "NO_USER";
|
|
$userid = null;
|
|
}
|
|
|
|
if(empty($username)) {
|
|
$username = "NO_USER";
|
|
}
|
|
|
|
if(empty($userid)) {
|
|
$userid = null;
|
|
}
|
|
|
|
$newattributes = $this->Owner->getAttributes();
|
|
$oldattributes = $this->getOldAttributes();
|
|
|
|
if (!$this->Owner->isNewRecord) {
|
|
// compare old and new
|
|
foreach ($newattributes as $name => $value) {
|
|
if (!empty($oldattributes)) {
|
|
$old = $oldattributes[$name];
|
|
} else {
|
|
$old = '';
|
|
}
|
|
|
|
if ($value != $old) {
|
|
$log=new AuditTrail();
|
|
$log->old_value = $old;
|
|
$log->new_value = $value;
|
|
$log->action = 'CHANGE';
|
|
$log->model = get_class($this->Owner);
|
|
$log->model_id = $this->Owner->getPrimaryKey();
|
|
$log->field = $name;
|
|
$log->stamp = date('Y-m-d H:i:s');
|
|
$log->user_id = $userid;
|
|
|
|
$log->save();
|
|
}
|
|
}
|
|
} else {
|
|
$log=new AuditTrail();
|
|
$log->old_value = '';
|
|
$log->new_value = '';
|
|
$log->action= 'CREATE';
|
|
$log->model= get_class($this->Owner);
|
|
$log->model_id= $this->Owner->getPrimaryKey();
|
|
$log->field= 'N/A';
|
|
$log->stamp= date('Y-m-d H:i:s');
|
|
$log->user_id= $userid;
|
|
|
|
$log->save();
|
|
|
|
|
|
foreach ($newattributes as $name => $value) {
|
|
$log=new AuditTrail();
|
|
$log->old_value = '';
|
|
$log->new_value = $value;
|
|
$log->action= 'SET';
|
|
$log->model= get_class($this->Owner);
|
|
$log->model_id= $this->Owner->getPrimaryKey();
|
|
$log->field= $name;
|
|
$log->stamp= date('Y-m-d H:i:s');
|
|
$log->user_id= $userid;
|
|
$log->save();
|
|
}
|
|
|
|
|
|
|
|
}
|
|
return parent::afterSave($event);
|
|
}
|
|
|
|
public function afterDelete($event)
|
|
{
|
|
|
|
try {
|
|
$username = Yii::app()->user->Name;
|
|
$userid = Yii::app()->user->id;
|
|
} catch(Exception $e) {
|
|
$username = "NO_USER";
|
|
$userid = null;
|
|
}
|
|
|
|
if(empty($username)) {
|
|
$username = "NO_USER";
|
|
}
|
|
|
|
if(empty($userid)) {
|
|
$userid = null;
|
|
}
|
|
|
|
$log=new AuditTrail();
|
|
$log->old_value = '';
|
|
$log->new_value = '';
|
|
$log->action= 'DELETE';
|
|
$log->model= get_class($this->Owner);
|
|
$log->model_id= $this->Owner->getPrimaryKey();
|
|
$log->field= 'N/A';
|
|
$log->stamp= date('Y-m-d H:i:s');
|
|
$log->user_id= $userid;
|
|
$log->save();
|
|
return parent::afterDelete($event);
|
|
}
|
|
|
|
public function afterFind($event)
|
|
{
|
|
// Save old values
|
|
$this->setOldAttributes($this->Owner->getAttributes());
|
|
|
|
return parent::afterFind($event);
|
|
}
|
|
|
|
public function getOldAttributes()
|
|
{
|
|
return $this->_oldattributes;
|
|
}
|
|
|
|
public function setOldAttributes($value)
|
|
{
|
|
$this->_oldattributes=$value;
|
|
}
|
|
}
|
|
?>
|