%s', esc_html( Utils::is_code_method_enabled_for_user( $user_id ) ? __( 'Enabled', 'brain-2fa' ) : __( 'Enabled (passkeys)', 'brain-2fa' ) ) ); } $user = get_userdata( $user_id ); if ( $user instanceof \WP_User && Utils::is_2fa_required_for_user( $user ) ) { $grace_period_expires_at = Utils::get_grace_period_expiry( $user ); if ( Utils::is_grace_period_expired( $user ) ) { return sprintf( ' %s', esc_html__( 'Grace Period Expired', 'brain-2fa' ) ); } return sprintf( ' %s', esc_html( sprintf( /* translators: %s: grace period expiry date */ __( 'Setup due %s', 'brain-2fa' ), date_i18n( get_option( 'date_format' ), $grace_period_expires_at ) ) ) ); } return sprintf( ' %s', esc_html__( 'Not Active', 'brain-2fa' ) ); } /** * Make 2FA status column sortable. * * @param array $columns Sortable columns. * @return array Modified sortable columns. */ public function make_2fa_column_sortable( array $columns ): array { $columns['brain2fa_status'] = 'brain2fa_status'; return $columns; } /** * Handle sorting by 2FA status. * * @param \WP_User_Query $query User query object. * @return void */ public function sort_by_2fa_status( $query ): void { if ( ! is_admin() ) { return; } $orderby = $query->get( 'orderby' ); if ( 'brain2fa_status' === $orderby ) { $query->set( 'meta_key', 'brain2fa_enabled' ); $query->set( 'orderby', 'meta_value' ); } } }