Microweber\Providers\UserManager::register PHP Метод

register() публичный Метод

public register ( $params )
    public function register($params)
    {
        if (defined('MW_API_CALL')) {
            //	if (isset($params['token'])){
            if ($this->is_admin() == false) {
                $validate_token = $this->csrf_validate($params);
                if ($validate_token == false) {
                    return array('error' => 'Invalid token!');
                }
            }
            //}
        }
        $user = isset($params['username']) ? $params['username'] : false;
        $pass = isset($params['password']) ? $params['password'] : false;
        $email = isset($params['email']) ? $params['email'] : false;
        $first_name = isset($params['first_name']) ? $params['first_name'] : false;
        $last_name = isset($params['last_name']) ? $params['last_name'] : false;
        $middle_name = isset($params['middle_name']) ? $params['middle_name'] : false;
        $confirm_password = isset($params['confirm_password']) ? $params['confirm_password'] : false;
        $pass2 = $pass;
        $no_captcha = get_option('captcha_disabled', 'users') == 'y';
        $disable_registration_with_temporary_email = get_option('disable_registration_with_temporary_email', 'users') == 'y';
        if ($email != false and $disable_registration_with_temporary_email) {
            $checker = new \Microweber\Utils\lib\DisposableEmailChecker();
            $is_temp_email = $checker->check($email);
            if ($is_temp_email) {
                $domain = substr(strrchr($email, "@"), 1);
                return array('error' => 'You cannot register with email from ' . $domain . ' domain');
            }
        }
        if (!$no_captcha) {
            if (!isset($params['captcha'])) {
                return array('error' => 'Please enter the captcha answer!');
            } else {
                $validate_captcha = $this->app->captcha->validate($params['captcha']);
                if (!$validate_captcha) {
                    return array('error' => 'Invalid captcha answer!', 'captcha_error' => true);
                }
            }
        }
        $override = $this->app->event_manager->trigger('before_user_register', $params);
        if (is_array($override)) {
            foreach ($override as $resp) {
                if (isset($resp['error']) or isset($resp['success'])) {
                    return $resp;
                }
            }
        }
        if (defined('MW_API_CALL')) {
            if (isset($params['is_admin']) and $this->is_admin() == false) {
                unset($params['is_admin']);
            }
            if (isset($params['is_verified']) and $this->is_admin() == false) {
                unset($params['is_verified']);
            }
        }
        if (!isset($params['password']) or isset($params['password']) and $params['password'] == '') {
            return array('error' => 'Please set password!');
        }
        if (!isset($params['username']) and !isset($params['email'])) {
            return array('error' => 'Please set username or email!');
        }
        if (!isset($params['password'])) {
            return array('error' => 'Please set a password!');
        }
        if (isset($params['password']) and $params['password'] != '') {
            if ($confirm_password != false) {
                if ($params['password'] != $confirm_password) {
                    return array('error' => 'Password confirm does not mach password!');
                }
            }
            if ($email != false) {
                $data = array();
                $data['email'] = $email;
                $data['one'] = true;
                $data['no_cache'] = true;
                $user_data = $this->get_all($data);
                if (empty($user_data)) {
                    $data = array();
                    $data['username'] = $email;
                    $data['one'] = true;
                    $data['no_cache'] = true;
                    $user_data = $this->get_all($data);
                }
                if (empty($user_data)) {
                    $data = array();
                    $data['username'] = $email;
                    $data['password'] = $pass;
                    $data['is_active'] = 1;
                    $table = $this->tables['users'];
                    $reg = array();
                    $reg['username'] = $user;
                    $reg['email'] = $email;
                    $reg['password'] = $pass2;
                    $reg['is_active'] = 1;
                    if ($first_name != false) {
                        $reg['first_name'] = $first_name;
                    }
                    if ($first_name != false) {
                        $reg['first_name'] = $first_name;
                    }
                    if ($last_name != false) {
                        $reg['last_name'] = $last_name;
                    }
                    if ($middle_name != false) {
                        $reg['middle_name'] = $middle_name;
                    }
                    $this->force_save = true;
                    if (isset($params['attributes'])) {
                        $reg['attributes'] = $params['attributes'];
                    }
                    $next = $this->save($reg);
                    $this->force_save = false;
                    $this->app->cache_manager->delete('users/global');
                    $this->session_del('captcha');
                    $this->after_register($next);
                    $params = $data;
                    $params['id'] = $next;
                    if (isset($pass2)) {
                        $params['password2'] = $pass2;
                    }
                    $this->make_logged($params['id']);
                    return array('success' => 'You have registered successfully');
                } else {
                    $try_login = $this->login($params);
                    if (isset($try_login['success'])) {
                        return $try_login;
                    }
                    return array('error' => 'This user already exists!');
                }
            }
        }
    }