| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | 
							- <?php
 
- /**
 
-  * Created by PhpStorm.
 
-  * User:  NODELOG
 
-  * Date: 16/7/25
 
-  * Time: 下午12:25
 
-  */
 
- namespace backend\behaviors;
 
- use common\models\AdminLog;
 
- use Yii;
 
- use yii\base\Application;
 
- use yii\base\Behavior;
 
- use yii\base\Event;
 
- use yii\db\ActiveRecord;
 
- use yii\helpers\Url;
 
- class AdminLogBehavior extends Behavior
 
- {
 
-     public function events()
 
-     {
 
-         return [
 
-             Application::EVENT_BEFORE_REQUEST => 'handle'
 
-         ];
 
-     }
 
-     public function handle()
 
-     {
 
-         Event::on(ActiveRecord::className(), ActiveRecord::EVENT_AFTER_UPDATE, [$this, 'log']);
 
-         Event::on(ActiveRecord::className(), ActiveRecord::EVENT_AFTER_INSERT, [$this, 'log']);
 
-         Event::on(ActiveRecord::className(), ActiveRecord::EVENT_AFTER_DELETE, [$this, 'log']);
 
-     }
 
-     public function log($event)
 
-     {
 
-         //未登录不保存日志
 
-         if($event->sender instanceof AdminLog || !$event->sender->primaryKey() || Yii::$app->user->isGuest) {
 
-             return;
 
-         }
 
-         if ($event->name == ActiveRecord::EVENT_AFTER_INSERT) {
 
-             $description = "%s新增了表%s %s:%s的%s";
 
-         } elseif($event->name == ActiveRecord::EVENT_AFTER_UPDATE) {
 
-             $description = "%s修改了表%s %s:%s的%s";
 
-         } else {
 
-             $description = "%s删除了表%s %s:%s%s";
 
-         }
 
-         if (!empty($event->changedAttributes)) {
 
-             $desc = '';
 
-             foreach($event->changedAttributes as $name => $value) {
 
-                 $desc .= $name . ' : ' . $value . '=>' . $event->sender->getAttribute($name) . ',';
 
-             }
 
-             $desc = substr($desc, 0, -1);
 
-         } else {
 
-             $desc = '';
 
-         }
 
-         $userName = !Yii::$app->user->isGuest ?  Yii::$app->user->identity->username : '未登录用户';
 
-         $tableName = $event->sender->tableSchema->name;
 
-         $description = sprintf($description, $userName, $tableName, $event->sender->primaryKey()[0], is_array($event->sender->getPrimaryKey()) ? current($event->sender->getPrimaryKey()) : $event->sender->getPrimaryKey(), $desc);
 
-         $route = Url::to();
 
-         $userId = !Yii::$app->user->isGuest ?  Yii::$app->user->id : 0;
 
-         $ip = ip2long(Yii::$app->request->userIP);
 
-         $data = [
 
-             'route' => $route,
 
-             'description' => $description,
 
-             'user_id' => $userId,
 
-             'ip' => $ip
 
-         ];
 
-         $model = new AdminLog();
 
-         $model->setAttributes($data);
 
-         $model->save();
 
-     }
 
- }
 
 
  |