%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' );
}
}
}