MOON
Server: Apache
System: Linux u18017238.onlinehome-server.com 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64
User: emblazeone (1003)
PHP: 7.3.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/emblazeone/public_html/lyyt/backend/models/RegisterForm.php
<?php

namespace backend\models;

use common\models\Identity;
use common\models\User;
use Yii;
use yii\base\Model;

/**
 * LoginForm is the model behind the login form.
 */
class RegisterForm extends Model
{
    public $username;
    public $password;
//    public $password;
    public $password_confirmation;
    public $email;
    public $first_name;
    public $last_name;
    public $middle_name;
    public $rooms;
    public $phone;
    public $agree = true;



    /**
     * @return array the validation rules.
     */
    public function rules()
    {
        return [
            [['email', 'username','first_name','last_name','phone'], 'string', 'max' => 255],
            [['agree'], 'required', 'requiredValue' => 1, 'message' => 'Без согласия на обработку персональных данных, к сожалению, мы не можем собирать и обрабатывать информацию.'],
            ['email', 'validateUniqueEmail'],
            ['username', 'validateUniqueUsername'],
            [['phone'], 'udokmeci\yii2PhoneValidator\PhoneValidator','country'=>'UA','format'=>true],
            [['email', 'username'], 'filter', 'filter' => 'trim'],
            [['email'], 'email'],
            [['phone','username','rooms'], 'required'],

            [['username'], 'match', 'pattern' => '/^[A-Za-z0-9_]+$/u', 'message' => Yii::t('login','{attribute} can contain only letters, numbers, and "_"')],


            ['password', 'string', 'length' => [8, 32]],
//            [['password'], 'filter', 'filter' => 'trim'],
            [['password','password_confirmation'], 'required'],
            [['password_confirmation'], 'compare', 'compareAttribute' => 'password', 'message' => Yii::t('login','Passwords do not match')],


            [['first_name','last_name','middle_name','phone'],'safe']
        ];
    }

    public function validateUniqueEmail()
    {
        if(Identity::findByEmailWithoutStatus($this->email)) {
            $this->addError("email", Yii::t('login',"This email already registered"));
        }
    }

    public function validateUniqueUsername()
    {
        if(Identity::findByUsernameWithoutStatus($this->username)){
            $this->addError("username", Yii::t('login',"SORRY, THIS USERNAME IS TAKEN"));
        }
    }


    /**
     * Logs in a user using the provided username and password.
     * @return boolean whether the user is logged in successfully
     */
    public function register()
    {
        if ($this->validate()) {
            $user= new Identity();
            $user->scenario='edit';
            $user->load($this->getAttributes(),'');

            $user->username=$this->username;
            $user->newPassword = $this->password;
            $user->email=$this->email;
            $user->status=Identity::STATUS_NEW;

            $user->save();

            foreach ($this->rooms as $room_id){
                $link=new UserRooms();
                $link->room_id=$room_id;
                $link->user_id=$user->id;
                $link->save();
            }


            return $user;
        } else {
            return false;
        }
        return true;
    }

    public function attributeLabels()
    {
        return [
            'username' => Yii::t('login','Username'),
            'password_new' => Yii::t('login','Password'),
            'password_confirmation' => Yii::t('login','Password Confirm'),
            'first_name' => Yii::t('login','First Name'),
            'last_name' => Yii::t('login','Last Name'),
            'middle_name' => Yii::t('login','Middle Name'),
            'phone' => Yii::t('login','Phone'),
            'agree'     => Yii::t('login','Agreement'),
            'rooms' => Yii::t('login','Your Rooms'),
        ];
    }

}