/** * Creates an audit entry for the record. * @param string $action the audit action. */ protected function createModelEntry($action) { list($changer, $changerId) = $this->getChanger(); list($model, $modelId) = $this->getModel(); $entry = new AuditModel(); $entry->action = $action; $entry->changer = $changer; $entry->changerId = $changerId; $entry->model = $model; $entry->modelId = $modelId; $entry->created = date('Y-m-d H:i:s'); $entry->save(false); }
public function afterFind() { $this->autoSerialize = $this->packed; parent::afterFind(); }
public static function add($target, $action, $data = null, $log_message = null, $properties = array()) { if (!($_target = AuditType::model()->find('name=?', array($target)))) { $_target = new AuditType(); $_target->name = $target; if (!$_target->save()) { throw new Exception("Unable to save audit target: " . print_r($_target->getErrors(), true)); } } if (!($_action = AuditAction::model()->find('name=?', array($action)))) { $_action = new AuditAction(); $_action->name = $action; if (!$_action->save()) { throw new Exception("Unable to save audit action: " . print_r($_action->getErrors(), true)); } } $audit = new Audit(); $audit->type_id = $_target->id; $audit->action_id = $_action->id; $audit->data = $data; if (!isset($properties['user_id'])) { if (Yii::app()->session['user']) { $properties['user_id'] = Yii::app()->session['user']->id; } } if (isset($properties['module'])) { if ($et = EventType::model()->find('class_name=?', array($properties['module']))) { $properties['event_type_id'] = $et->id; } else { if (!($module = AuditModule::model()->find('name=?', array($properties['module'])))) { $module = new AuditModule(); $module->name = $properties['module']; if (!$module->save()) { throw new Exception("Unable to create audit_module: " . print_r($module->getErrors(), true)); } } $properties['module_id'] = $module->id; } unset($properties['module']); } if (isset($properties['model'])) { if (!($model = AuditModel::model()->find('name=?', array($properties['model'])))) { $model = new AuditModel(); $model->name = $properties['model']; if (!$model->save()) { throw new Exception("Unable to save audit_model: " . print_r($model->getErrors(), true)); } } $properties['model_id'] = $model->id; unset($properties['model']); } foreach ($properties as $key => $value) { $audit->{$key} = $value; } if (!$audit->save()) { throw new Exception("Failed to save audit entry: " . print_r($audit->getErrors(), true)); } if (isset($properties['user_id'])) { $username = User::model()->findByPk($properties['user_id'])->username; } $log_message && OELog::log($log_message, @$username); return $audit; }