mirror of https://github.com/MISP/MISP
fix: [auditLog] Warning when deleting event
parent
741a74165e
commit
776b0d046f
|
@ -4,7 +4,10 @@ App::uses('AuditLog', 'Model');
|
|||
class AuditLogBehavior extends ModelBehavior
|
||||
{
|
||||
/** @var array|null */
|
||||
private $old;
|
||||
private $beforeSave;
|
||||
|
||||
/** @var array|null */
|
||||
private $beforeDelete;
|
||||
|
||||
/** @var AuditLog|null */
|
||||
private $AuditLog;
|
||||
|
@ -95,19 +98,19 @@ class AuditLogBehavior extends ModelBehavior
|
|||
}
|
||||
|
||||
if (empty($fieldToFetch)) {
|
||||
$this->old = null;
|
||||
$this->beforeSave = null;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if ($model->id) {
|
||||
$this->old = $model->find('first', [
|
||||
$this->beforeSave = $model->find('first', [
|
||||
'conditions' => [$model->alias . '.' . $model->primaryKey => $model->id],
|
||||
'recursive' => -1,
|
||||
'callbacks' => false,
|
||||
'fields' => $fieldToFetch,
|
||||
]);
|
||||
} else {
|
||||
$this->old = null;
|
||||
$this->beforeSave = null;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -128,13 +131,13 @@ class AuditLogBehavior extends ModelBehavior
|
|||
if (isset($data['deleted'])) {
|
||||
if ($data['deleted']) {
|
||||
$action = AuditLog::ACTION_SOFT_DELETE;
|
||||
} else if (isset($this->old[$model->alias]['deleted']) && $this->old[$model->alias]['deleted']) {
|
||||
} else if (isset($this->beforeSave[$model->alias]['deleted']) && $this->beforeSave[$model->alias]['deleted']) {
|
||||
$action = AuditLog::ACTION_UNDELETE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$changedFields = $this->changedFields($model, $options['fieldList']);
|
||||
$changedFields = $this->changedFields($model, $this->beforeSave, $options['fieldList']);
|
||||
if (empty($changedFields)) {
|
||||
return;
|
||||
}
|
||||
|
@ -143,8 +146,8 @@ class AuditLogBehavior extends ModelBehavior
|
|||
$eventId = $id;
|
||||
} else if (isset($data['event_id'])) {
|
||||
$eventId = $data['event_id'];
|
||||
} else if (isset($this->old[$model->alias]['event_id'])) {
|
||||
$eventId = $this->old[$model->alias]['event_id'];
|
||||
} else if (isset($this->beforeSave[$model->alias]['event_id'])) {
|
||||
$eventId = $this->beforeSave[$model->alias]['event_id'];
|
||||
} else {
|
||||
$eventId = null;
|
||||
}
|
||||
|
@ -153,11 +156,11 @@ class AuditLogBehavior extends ModelBehavior
|
|||
if (isset($this->modelInfo[$model->name])) {
|
||||
$modelTitleField = $this->modelInfo[$model->name];
|
||||
if (is_callable($modelTitleField)) {
|
||||
$modelTitle = $modelTitleField($data, isset($this->old[$model->alias]) ? $this->old[$model->alias] : []);
|
||||
$modelTitle = $modelTitleField($data, isset($this->beforeSave[$model->alias]) ? $this->beforeSave[$model->alias] : []);
|
||||
} else if (isset($data[$modelTitleField])) {
|
||||
$modelTitle = $data[$modelTitleField];
|
||||
} else if ($this->old[$model->alias][$modelTitleField]) {
|
||||
$modelTitle = $this->old[$model->alias][$modelTitleField];
|
||||
} else if ($this->beforeSave[$model->alias][$modelTitleField]) {
|
||||
$modelTitle = $this->beforeSave[$model->alias][$modelTitleField];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -196,6 +199,8 @@ class AuditLogBehavior extends ModelBehavior
|
|||
'event_id' => $eventId,
|
||||
'change' => $changedFields,
|
||||
]]);
|
||||
|
||||
$this->beforeSave = null; // cleanup
|
||||
}
|
||||
|
||||
public function beforeDelete(Model $model, $cascade = true)
|
||||
|
@ -204,7 +209,7 @@ class AuditLogBehavior extends ModelBehavior
|
|||
return true;
|
||||
}
|
||||
|
||||
$this->old = $model->find('first', [
|
||||
$this->beforeDelete = $model->find('first', [
|
||||
'conditions' => array($model->alias . '.' . $model->primaryKey => $model->id),
|
||||
'recursive' => -1,
|
||||
'callbacks' => false,
|
||||
|
@ -217,8 +222,8 @@ class AuditLogBehavior extends ModelBehavior
|
|||
if (!$this->enabled) {
|
||||
return;
|
||||
}
|
||||
$model->data = $this->old;
|
||||
$this->old = null;
|
||||
$model->data = $this->beforeDelete;
|
||||
$this->beforeDelete = null;
|
||||
if ($model->name === 'Event') {
|
||||
$eventId = $model->id;
|
||||
} else {
|
||||
|
@ -264,7 +269,7 @@ class AuditLogBehavior extends ModelBehavior
|
|||
'model_id' => $id,
|
||||
'model_title' => $modelTitle,
|
||||
'event_id' => $eventId,
|
||||
'change' => $this->changedFields($model),
|
||||
'change' => $this->changedFields($model, null),
|
||||
]]);
|
||||
}
|
||||
|
||||
|
@ -309,10 +314,11 @@ class AuditLogBehavior extends ModelBehavior
|
|||
|
||||
/**
|
||||
* @param Model $model
|
||||
* @param array|null $oldData Array with alias
|
||||
* @param array|null $fieldsToSave
|
||||
* @return array
|
||||
*/
|
||||
private function changedFields(Model $model, $fieldsToSave = null)
|
||||
private function changedFields(Model $model, $oldData, $fieldsToSave = null)
|
||||
{
|
||||
$dbFields = $model->schema();
|
||||
$changedFields = [];
|
||||
|
@ -328,8 +334,8 @@ class AuditLogBehavior extends ModelBehavior
|
|||
continue;
|
||||
}
|
||||
|
||||
if ($hasPrimaryField && isset($this->old[$model->alias][$key])) {
|
||||
$old = $this->old[$model->alias][$key];
|
||||
if ($hasPrimaryField && isset($oldData[$model->alias][$key])) {
|
||||
$old = $oldData[$model->alias][$key];
|
||||
} else {
|
||||
$old = null;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue