* @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; } }