161 lines
4.6 KiB
PHP
161 lines
4.6 KiB
PHP
<?php
|
|
/**
|
|
* Class for displaying the list of security key items.
|
|
*
|
|
* @package Two_Factor
|
|
*/
|
|
|
|
// Load the parent class if it doesn't exist.
|
|
if ( ! class_exists( 'WP_List_Table' ) ) {
|
|
require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
|
|
}
|
|
|
|
/**
|
|
* Class for displaying the list of security key items.
|
|
*
|
|
* @since 0.1-dev
|
|
* @access private
|
|
*
|
|
* @package Two_Factor
|
|
*/
|
|
class Two_Factor_FIDO_U2F_Admin_List_Table extends WP_List_Table {
|
|
|
|
/**
|
|
* Get a list of columns.
|
|
*
|
|
* @since 0.1-dev
|
|
*
|
|
* @return array
|
|
*/
|
|
public function get_columns() {
|
|
return array(
|
|
'name' => wp_strip_all_tags( __( 'Name', 'two-factor' ) ),
|
|
'added' => wp_strip_all_tags( __( 'Added', 'two-factor' ) ),
|
|
'last_used' => wp_strip_all_tags( __( 'Last Used', 'two-factor' ) ),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Prepares the list of items for displaying.
|
|
*
|
|
* @since 0.1-dev
|
|
*/
|
|
public function prepare_items() {
|
|
$columns = $this->get_columns();
|
|
$hidden = array();
|
|
$sortable = array();
|
|
$primary = 'name';
|
|
$this->_column_headers = array( $columns, $hidden, $sortable, $primary );
|
|
}
|
|
|
|
/**
|
|
* Generates content for a single row of the table
|
|
*
|
|
* @since 0.1-dev
|
|
* @access protected
|
|
*
|
|
* @param object $item The current item.
|
|
* @param string $column_name The current column name.
|
|
* @return string
|
|
*/
|
|
protected function column_default( $item, $column_name ) {
|
|
switch ( $column_name ) {
|
|
case 'name':
|
|
$out = '<div class="hidden" id="inline_' . esc_attr( $item->keyHandle ) . '">'; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
|
|
$out .= '<div class="name">' . esc_html( $item->name ) . '</div>';
|
|
$out .= '</div>';
|
|
|
|
$actions = array(
|
|
'rename hide-if-no-js' => Two_Factor_FIDO_U2F_Admin::rename_link( $item ),
|
|
'delete' => Two_Factor_FIDO_U2F_Admin::delete_link( $item ),
|
|
);
|
|
|
|
return esc_html( $item->name ) . $out . self::row_actions( $actions );
|
|
case 'added':
|
|
return gmdate( get_option( 'date_format', 'r' ), $item->added );
|
|
case 'last_used':
|
|
return gmdate( get_option( 'date_format', 'r' ), $item->last_used );
|
|
default:
|
|
return 'WTF^^?';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Generates custom table navigation to prevent conflicting nonces.
|
|
*
|
|
* @since 0.1-dev
|
|
* @access protected
|
|
*
|
|
* @param string $which The location of the bulk actions: 'top' or 'bottom'.
|
|
*/
|
|
protected function display_tablenav( $which ) {
|
|
// Not used for the Security key list.
|
|
}
|
|
|
|
/**
|
|
* Generates content for a single row of the table
|
|
*
|
|
* @since 0.1-dev
|
|
* @access public
|
|
*
|
|
* @param object $item The current item.
|
|
*/
|
|
public function single_row( $item ) {
|
|
?>
|
|
<tr id="key-<?php echo esc_attr( $item->keyHandle ); // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase ?>">
|
|
<?php $this->single_row_columns( $item ); ?>
|
|
</tr>
|
|
<?php
|
|
}
|
|
|
|
/**
|
|
* Outputs the hidden row displayed when inline editing
|
|
*
|
|
* @since 0.1-dev
|
|
*/
|
|
public function inline_edit() {
|
|
?>
|
|
<table style="display: none">
|
|
<tbody id="inlineedit">
|
|
<tr id="inline-edit" class="inline-edit-row" style="display: none">
|
|
<td colspan="<?php echo esc_attr( $this->get_column_count() ); ?>" class="colspanchange">
|
|
<fieldset>
|
|
<div class="inline-edit-col">
|
|
<label>
|
|
<span class="title"><?php esc_html_e( 'Name', 'two-factor' ); ?></span>
|
|
<span class="input-text-wrap"><input type="text" name="name" class="ptitle" value="" /></span>
|
|
</label>
|
|
</div>
|
|
</fieldset>
|
|
<?php
|
|
$core_columns = array(
|
|
'name' => true,
|
|
'added' => true,
|
|
'last_used' => true,
|
|
);
|
|
list( $columns ) = $this->get_column_info();
|
|
foreach ( $columns as $column_name => $column_display_name ) {
|
|
if ( isset( $core_columns[ $column_name ] ) ) {
|
|
continue;
|
|
}
|
|
|
|
/** This action is documented in wp-admin/includes/class-wp-posts-list-table.php */
|
|
do_action( 'quick_edit_custom_box', $column_name, 'edit-security-keys' );
|
|
}
|
|
?>
|
|
<p class="inline-edit-save submit">
|
|
<a href="#inline-edit" class="cancel button-secondary alignleft"><?php esc_html_e( 'Cancel', 'two-factor' ); ?></a>
|
|
<a href="#inline-edit" class="save button-primary alignright"><?php esc_html_e( 'Update', 'two-factor' ); ?></a>
|
|
<span class="spinner"></span>
|
|
<span class="error" style="display:none;"></span>
|
|
<?php wp_nonce_field( 'keyinlineeditnonce', '_inline_edit', false ); ?>
|
|
<br class="clear" />
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<?php
|
|
}
|
|
}
|