Returns the static model of the specified AR class.
public static model ( $className = __CLASS__ ) : AuditTrail | ||
Résultat | AuditTrail | the static model class |
public static function countQuery($params) { $model = AuditTrail::model()->findByAttributes(['key' => @$_GET['key']]); $where = AuditTrail::queryWhere($params, $model); $sql = "SELECT count(1) FROM p_audit_trail {$where}"; return $sql; }
public function loadModel($id) { $model = AuditTrail::model()->findByPk((int) $id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }
/** * generates content of widget the widget. * This renders the widget, if it is visible. */ public function renderContent() { if ($this->visible) { $auditTrail = AuditTrail::model()->recently(); $auditTrail->model = get_class($this->model); $auditTrail->model_id = $this->model->primaryKey; $columnFormat = $this->getColumnFormat(); $this->widget('zii.widgets.grid.CGridView', array('id' => 'audit-trail-grid', 'dataProvider' => $auditTrail->search(), 'columns' => $this->getColumnFormat())); } }
public function down() { if (!isset(Yii::app()->getDb()->tablePrefix)) { Yii::app()->getDb()->tablePrefix = ''; } Yii::import('audittrail.models.AuditTrail'); $table = AuditTrail::model()->tableName(); $sql = "DROP TABLE `{$table}`"; $this->execute($sql); }
public static function track($msg, $type = "other", $info = "") { if (!Yii::app()->user->isGuest) { ## load info $pathInfo = AuditTrail::loadPageInfo($info); $uid = Yii::app()->user->id; if ($pathInfo['module'] == "sys") { return; } ## get last audit trail $lastTrail = AuditTrail::model()->find(['order' => '"id" desc']); if (!is_null($lastTrail)) { $lastTrail = $lastTrail->attributes; } else { return; } ## detect duplicate $isDuplicate = $lastTrail['pathinfo'] == $pathInfo['pathinfo'] && $lastTrail['params'] == $pathInfo['params']; $lastInsertHour = round(abs(strtotime($lastTrail['stamp']) - time()) / 3600); $isDifferentType = $lastTrail['type'] != $type; if ($isDuplicate) { if (isset($pathInfo['data']) && $lastTrail['data'] != $pathInfo['data']) { $isDuplicate = false; } } ## if not duplicate OR is different type OR last tracked time is more than 1 hour ago if (!$isDuplicate || $isDuplicate && $isDifferentType || $isDuplicate && $lastInsertHour > 1) { ## create new track if ($isDuplicate) { ## skip tracking view for same page after CRUD $isCrud = in_array($lastTrail['type'], ['create', 'update', 'delete']); if ($isCrud && $type == "view") { return; } } $at = $pathInfo; ## remove data from view tracker... if ($type == "view") { $at['data'] = "{}"; } if (is_string($msg) && $msg != "") { $at['description'] = $msg; } $at['type'] = $type; $at['stamp'] = date("Y-m-d H:i:s"); $at['user_id'] = Yii::app()->user->id; if (@$at['model_id'] != '') { ActiveRecord::batch('AuditTrail', [$at]); } } } }
continue; } if ($ref_model_name == 'yii_t_message') { continue; } $rm = new $ref_model_name(); $rm_primary_key_field = $rm->tableSchema->primaryKey; if (!is_array($ref_field)) { //get ref table pk values $criteria = new CDbCriteria(); $criteria->distinct = true; $criteria->compare('model', $ref_model_name); $criteria->compare('field', $ref_field); $criteria->compare('new_value', $model_id); $criteria->compare('action', 'SET'); $audit_trail = AuditTrail::model()->findAll($criteria); if (empty($audit_trail)) { continue; } $rm_pk = array(); foreach ($audit_trail as $at_row) { $rm_pk[] = $at_row->model_id; } } else { $criteria = new CDbCriteria(); $criteria->distinct = true; foreach ($ref_field['compare'] as $rmfn => $rmfv) { if ($rmfv == 'pk_value') { $criteria->compare($rmfn, $model_id); continue; }
/** * retourne tous les utilisateurs * @return type */ public function getAllUsers() { $result = array(); $users = AuditTrail::model()->findAll(); if ($users != null) { foreach ($users as $user) { if (!in_array($user->user_id, $result)) { array_push($result, $user->user_id); } } } return $result; }
/** * @covers AuditTrail::model */ public function testModel() { $this->assertEquals('AuditTrail', get_class(AuditTrail::model()), 'Class name should match model.'); }