private function save()
 {
     $has_error = false;
     $registration_pass = $this->user_accounts_config->get_member_accounts_validation_method() == UserAccountsConfig::MAIL_USER_ACCOUNTS_VALIDATION ? KeyGenerator::generate_key(15) : '';
     $user_aprobation = $this->user_accounts_config->get_member_accounts_validation_method() == UserAccountsConfig::AUTOMATIC_USER_ACCOUNTS_VALIDATION;
     $user = new User();
     $user->set_display_name($this->form->get_value('display_name'));
     $user->set_level(User::MEMBER_LEVEL);
     $user->set_email($this->form->get_value('email'));
     $user->set_show_email(!$this->form->get_value('user_hide_mail'));
     $user->set_locale($this->form->get_value('lang')->get_raw_value());
     $user->set_editor($this->form->get_value('text-editor')->get_raw_value());
     $user->set_timezone($this->form->get_value('timezone')->get_raw_value());
     if ($this->form->has_field('theme')) {
         $user->set_theme($this->form->get_value('theme')->get_raw_value());
     }
     $login = $this->form->get_value('email');
     if ($this->form->get_value('custom_login')) {
         $login = $this->form->get_value('login');
     }
     $auth_method = new PHPBoostAuthenticationMethod($login, $this->form->get_value('password'));
     $auth_method->set_association_parameters($user_aprobation, $registration_pass);
     try {
         $user_id = UserService::create($user, $auth_method, $this->member_extended_fields_service);
     } catch (MemberExtendedFieldErrorsMessageException $e) {
         $has_error = true;
         $this->tpl->put('MSG', MessageHelper::display($e->getMessage(), MessageHelper::NOTICE));
     }
     if (!$has_error) {
         UserRegistrationService::send_email_confirmation($user_id, $user->get_email(), $this->form->get_value('display_name'), $login, $this->form->get_value('password'), $registration_pass);
         $this->confirm_registration($user_id);
     }
 }
 private function create_first_admin_account($login, $password, $email, $locale, $theme, $timezone)
 {
     $user = new User();
     $user->set_display_name($login);
     $user->set_level(User::ADMIN_LEVEL);
     $user->set_email($email);
     $user->set_locale($locale);
     $user->set_theme($theme);
     $auth_method = new PHPBoostAuthenticationMethod($login, $password);
     return UserService::create($user, $auth_method);
 }