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
 | 
						|
	}
 | 
						|
}
 |