map( User::get() ) ->bichain( $createNew, Either::of() ); } /** * @param Collection $data * * @return Left|Right */ public static function createNewWpUser( Collection $data ) { $get = Obj::prop( Fns::__, $data->get( 'user' ) ); $firstName = $get( 'first' ); $lastName = $get( 'last' ); $email = filter_var( $get( 'email' ), FILTER_SANITIZE_EMAIL ); $userName = $get( 'userName' ); if ( ! RoleValidator::isValid( $get( 'wpRole' ) ) ) { return Either::left( __( 'The role was not found.', 'sitepress' ) ); } $role = RoleValidator::getTheHighestPossibleIfNotValid( $get( 'wpRole' ) ); if ( $email && $userName && $role ) { $userId = User::insert( [ 'first_name' => $firstName, 'last_name' => $lastName, 'user_email' => $email, 'user_login' => $userName, 'role' => $role, 'user_pass' => wp_generate_password(), ] ); return WordPress::handleError( $userId ) ->bimap( invoke( 'get_error_messages' ), User::notifyNew() ) ->bimap( Lst::join( ', ' ), User::get() ); } else { return Either::left( __( 'The user could not be created', 'sitepress' ) ); } } }