Your IP : 216.73.216.48
<?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']);
}
}