191 ) { return new WP_Error( 'aslansheed_invalid_identifier', __( 'Please enter a valid phone number, email or username.', 'aslansheed-login' ) ); } $type = Phone_Normalizer::detect_type( $raw ); if ( ! Options::get( 'forms.accept_' . $type ) ) { return new WP_Error( 'aslansheed_identifier_not_allowed', self::not_allowed_message( $type ) ); } if ( 'email' === $type ) { $email = sanitize_email( $raw ); if ( '' === $email || ! is_email( $email ) ) { return new WP_Error( 'aslansheed_invalid_identifier', __( 'Please enter a valid email address.', 'aslansheed-login' ) ); } return array( 'type' => 'email', 'value' => strtolower( $email ), ); } if ( 'phone' === $type ) { $e164 = Phone_Normalizer::to_e164( $raw, Access_Control::default_country() ); if ( null === $e164 ) { return new WP_Error( 'aslansheed_invalid_identifier', __( 'Please enter a valid phone number, including the country code if it is not local.', 'aslansheed-login' ) ); } return array( 'type' => 'phone', 'value' => $e164, ); } $login = sanitize_user( $raw, true ); if ( '' === $login ) { return new WP_Error( 'aslansheed_invalid_identifier', __( 'Please enter a valid username.', 'aslansheed-login' ) ); } return array( 'type' => 'username', 'value' => $login, ); } /** * Builds the message shown when an input type is switched off. * * @param string $type Identifier type. * @return string */ private static function not_allowed_message( $type ) { if ( 'phone' === $type ) { return __( 'Phone number login is not enabled.', 'aslansheed-login' ); } if ( 'email' === $type ) { return __( 'Email login is not enabled.', 'aslansheed-login' ); } return __( 'Username login is not enabled.', 'aslansheed-login' ); } }