model() public static method

Returns the static model of the specified AR class.
public static model ( $className = __CLASS__ ) : AuditTrail
return AuditTrail the static model class
Esempio n. 1
0
 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;
 }
Esempio n. 3
0
 /**
  * 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);
 }
Esempio n. 5
0
 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]);
             }
         }
     }
 }
Esempio n. 6
0
     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;
         }
Esempio n. 7
0
 /**
  * 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;
 }
Esempio n. 8
0
 /**
  * @covers AuditTrail::model
  */
 public function testModel()
 {
     $this->assertEquals('AuditTrail', get_class(AuditTrail::model()), 'Class name should match model.');
 }