Profile.php 3.3 KB
<?php

namespace thread\modules\user\models;

use Yii;
//
use thread\app\base\models\ActiveRecord;
use thread\modules\user\User as ParentModule;
use thread\modules\user\models\User as UserModel;

/**
 * Class Profile
 *
 * @package thread\modules\user\models
 * @author FilamentV <vortex.filament@gmail.com>
 * @copyright (c), Thread
 */
class Profile extends ActiveRecord
{
    /**
     * @var
     */
    public static $commonQuery = query\ProfileQuery::class;

    /**
     * @return string
     */
    public static function getDb()
    {
        return ParentModule::getDb();
    }

    /**
     * @return string
     */
    public static function tableName()
    {
        return '{{%user_profile}}';
    }

    /**
     * @return array
     */
    public function rules()
    {
        return [
            [['user_id'], 'unique'],
            ['user_id', 'exist', 'targetClass' => UserModel::className(), 'targetAttribute' => 'id'],
            [['user_id', 'created_at', 'updated_at'], 'integer'],
            [['first_name', 'last_name', 'avatar', 'preferred_language'], 'string', 'max' => 255],
            [['phone', 'company', 'website'], 'string', 'max' => 50],
        ];
    }

    /**
     * @return array
     */
    public function scenarios()
    {
        return [
            'backend' => ['first_name', 'last_name', 'avatar', 'preferred_language', 'phone', 'company', 'website'],
            'frontend' => ['first_name', 'last_name', 'avatar', 'preferred_language', 'phone', 'company', 'website'],
            'ownEdit' => ['first_name', 'last_name', 'avatar', 'preferred_language', 'phone', 'company', 'website'],
            'basicCreate' => ['user_id', 'first_name', 'last_name', 'company', 'website'],
        ];
    }

    /**
     * @return array
     */
    public function attributeLabels()
    {
        return [
            'first_name' => Yii::t('user', 'First name'),
            'last_name' => Yii::t('user', 'Last name'),
            'avatar' => Yii::t('user', 'Avatar'),
            'preferred_language' => Yii::t('user', 'Preferred language'),
            'created_at' => Yii::t('app', 'Create time'),
            'updated_at' => Yii::t('app', 'Update time'),
            'phone' => Yii::t('app', 'Phone'),
            'website' => Yii::t('user', 'Website'),
            'company' => Yii::t('user', 'Company'),


        ];
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getUser()
    {
        return $this->hasOne(UserModel::className(), ['id' => 'user_id']);
    }

    /**
     * @return null|string
     */
    public function getAvatarImage()
    {
        /**
         * @var $module \thread\modules\user\User
         */
        $module = Yii::$app->getModule('user');
        $path = $module->getAvatarUploadPath($this->user);
        $url = $module->getAvatarUploadUrl($this->user);

        $image = null;
        if (!empty($this->avatar) && is_file($path . '/' . $this->avatar)) {
            $image = $url . '/' . $this->avatar;
        }
        return $image;
    }

    /**
     * @param $user_id
     * @return mixed
     */
    public static function findByUserId($user_id)
    {
        return self::find()->user_id($user_id)->one();
    }

    /**
     * @return string
     */
    public function getFullName()
    {
        return $this->first_name . ' ' . $this->last_name;
    }
}