Your IP : 216.73.216.48


Current Path : /srv/www/codedit/models/
Upload File :
Current File : //srv/www/codedit/models/MembersOnline.php

<?php

namespace app\models;

use Yii;
use yii\behaviors\TimestampBehavior;
use app\models\Members;
use vendor\custom\BrowserDetection;

class MembersOnline extends \yii\db\ActiveRecord {

    public static function tableName() {
        return '{{%members_online}}';
    }

    public function behaviors() {
        return [
            [
                'class' => TimestampBehavior::className(),
                'createdAtAttribute' => 'time',
                'updatedAtAttribute' => 'time',
            ],
        ];
    }

    public function rules() {
        return [
            [['ip_address', 'browser', 'os', 'is_mobile'], 'required'],
            [['member_id', 'ip_address', 'time'], 'integer'],
            ['is_mobile', 'boolean']
        ];
    }

    public function attributeLabels() {
        return [
            'member_id' => Yii::t('app', 'ID на потребителя'),
            'ip_address' => Yii::t('app', 'IP адрес'),
            'browser' => Yii::t('app', 'Браузър'),
            'os' => Yii::t('app', 'Операционна система'),
            'is_mobile' => Yii::t('app', 'Мобилен?'),
            'time' => Yii::t('app', 'Дата и час'),
        ];
    }

    public function setOnlineMemberInfo() {
        $ipAddress = ip2long(Yii::$app->getRequest()->getUserIP());
        $browserDetection = new BrowserDetection();

        $memberInfo = $this->find()->where(['member_id' => Yii::$app->user->identity->member_id])->one();
        if ($memberInfo) {
            $memberInfo->ip_address = $ipAddress;
            $memberInfo->browser = $browserDetection->getBrowser() . ' ' . $browserDetection->getVersion();
            $memberInfo->os = $browserDetection->getPlatform();
            $memberInfo->is_mobile = $browserDetection->isMobile();
            return $memberInfo->save();
        } else {
            $this->member_id = Yii::$app->user->identity->member_id;
            $this->ip_address = $ipAddress;
            $this->os = $browserDetection->getPlatform();
            $this->browser = $browserDetection->getBrowser() . ' ' . $browserDetection->getVersion();
            $this->is_mobile = $browserDetection->isMobile();
            if (!$this->save()) {
                var_dump($this->errors);
                exit;
            }
        }
    }

    public function getOnlineMembers() {
        $membersOnline = $this->find()->where('`time` > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 5 MINUTE))')->all();
        return $membersOnline;
    }

    public function getMember() {
        return $this->hasOne(Members::className(), ['member_id' => 'member_id']);
    }

}