Your IP : 216.73.216.48


Current Path : /var/www/codedit/models/
Upload File :
Current File : //var/www/codedit/models/Members.php

<?php

namespace app\models;

use Yii;
use yii\behaviors\TimestampBehavior;
use yii\web\IdentityInterface;

class Members extends \yii\db\ActiveRecord implements IdentityInterface {

    const STATUS_DELETED = 0;
    const STATUS_ACTIVE = 1;

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

    public static function primaryKey() {
        return array('member_id');
    }

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

    public function rules() {
        return [
            [['username', 'email', 'password', 'is_active',], 'required'],
            [['is_active', 'date_registered', 'last_updated'], 'integer'],
            [['username'], 'string', 'max' => 50],
            [['email'], 'string', 'max' => 256],
            [['email'], 'email'],
            [['email'], 'unique'],
            [['password'], 'string', 'min' => 6, 'max' => 256],
            ['is_active', 'default', 'value' => self::STATUS_ACTIVE],
            ['is_active', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],
        ];
    }

    public function attributeLabels() {
        return [
            'username' => Yii::t('app', 'Потребителско име'),
            'email' => Yii::t('app', 'Email адрес'),
            'password' => Yii::t('app', 'Парола'),
        ];
    }

    public static function findIdentity($id) {
        return static::findOne(['member_id' => $id, 'is_active' => self::STATUS_ACTIVE]);
    }

    public static function findIdentityByAccessToken($token, $type = null) {
        throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.');
    }

    public static function findByUsername($username) {
        return static::findOne(['username' => $username, 'is_active' => self::STATUS_ACTIVE]);
    }

    public static function findByPasswordResetToken($token) {
        if (!static::isPasswordResetTokenValid($token)) {
            return null;
        }

        return static::findOne([
                    'password_reset_token' => $token,
                    'is_active' => self::STATUS_ACTIVE,
        ]);
    }

    public static function isPasswordResetTokenValid($token) {
        if (empty($token)) {
            return false;
        }
        $expire = Yii::$app->params['user.passwordResetTokenExpire'];
        $parts = explode('_', $token);
        $timestamp = (int) end($parts);
        return $timestamp + $expire >= time();
    }

    public function getId() {
        return $this->getPrimaryKey();
    }

    public function getAuthKey() {
        return $this->auth_key;
    }

    public function validateAuthKey($authKey) {
        return $this->getAuthKey() === $authKey;
    }

    public function validatePassword($password) {
        return Yii::$app->security->validatePassword($password, $this->password);
    }

    public function setPassword($password) {
        $this->password = Yii::$app->security->generatePasswordHash($password);
    }

    public function generateAuthKey() {
        $this->auth_key = Yii::$app->security->generateRandomString();
    }

    public function generatePasswordResetToken() {
        $this->password_reset_token = Yii::$app->security->generateRandomString() . '_' . time();
    }

    public function removePasswordResetToken() {
        $this->password_reset_token = null;
    }

    public function setMemberStatus($memberInfo, $status) {
        $memberInfo->is_active = $status;
        return $memberInfo->update();
    }

    public function setMemberCurrentConnection($connectionID, $memberID) {
        $memberInfo = $this->findOne($memberID);
        $memberInfo->current_connection = $connectionID;
        return $memberInfo->save();
    }

    public function editMember($memberInfo) {
        return $memberInfo->save();
    }

    public function deactivateMember($memberID) {
        $memberInfo = $this->findOne($memberID);
        $memberInfo->is_active = 0;
        return $memberInfo->save();
    }

    public function changePassword($memberInfo, $password) {
        $memberInfo->password = Yii::$app->getSecurity()->generatePasswordHash($password);
        return $memberInfo->save();
    }

    public function deleteMember($memberInfo) {
        return $memberInfo->delete();
    }

    public function getMembers($where = []) {
        $members = $this->find()->where($where);
        return $members;
    }

    public function getLatestMembersCount() {
        $membersCount = $this->find()->where('`date_registered` > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 10 DAY))')->count();
        return $membersCount;
    }

    public function getMember($memberID) {
        $cacheKey = md5('view-member-id-' . $memberID);
        $member = Yii::$app->cache->get($cacheKey);
        if ($member === false) {
            $member = Members::findOne($memberID);
            Yii::$app->cache->set($cacheKey, $member, 5 * 60);
        }
        return $member;
    }

    public function getBlogArticles() {
        return $this->hasMany(BlogArticles::className(), ['author_id' => 'member_id']);
    }

    public function getBlogComments() {
        return $this->hasMany(BlogComments::className(), ['author_id' => 'member_id']);
    }

    public function getForumsTopics() {
        return $this->hasMany(ForumsTopics::className(), ['author_id' => 'member_id']);
    }

    public function getFtpConnections() {
        return $this->hasMany(FtpConnections::className(), ['member_id' => 'member_id']);
    }

    public function getCurrentConnection() {
        return $this->hasOne(FtpConnections::className(), ['connection_id' => 'current_connection']);
    }

    public function getMembersOnlines() {
        return $this->hasMany(MembersOnline::className(), ['member_id' => 'member_id']);
    }

    public function getMembersPasswordKeys() {
        return $this->hasMany(MembersPasswordKeys::className(), ['member_id' => 'member_id']);
    }

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

    public function getSupportAnswers() {
        return $this->hasMany(SupportAnswers::className(), ['author_id' => 'member_id']);
    }

    public function getSupportQuestions() {
        return $this->hasMany(SupportQuestions::className(), ['member_id' => 'member_id']);
    }

}