106 lines
No EOL
2.5 KiB
PHP
106 lines
No EOL
2.5 KiB
PHP
<?php
|
|
|
|
if( ! class_exists( 'WP_List_Table' ) )
|
|
{
|
|
require_once( ABSPATH . 'wp-admin/includes/screen.php' );
|
|
require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
|
|
}
|
|
|
|
class FlipBook_List_Table extends WP_List_Table {
|
|
|
|
private $view;
|
|
public $list_data;
|
|
|
|
public function __construct($view)
|
|
{
|
|
parent::__construct();
|
|
$this->view = $view;
|
|
}
|
|
|
|
function get_columns()
|
|
{
|
|
$columns = array(
|
|
'cb' => '<input type="checkbox" />',
|
|
'id' => __('ID', 'flipbook'),
|
|
'name' => __('Name', 'flipbook'),
|
|
'shortcode' => __('Shortcode', 'flipbook'),
|
|
'time' => __('Created', 'flipbook'),
|
|
'author' => __('Author', 'flipbook')
|
|
);
|
|
return $columns;
|
|
}
|
|
|
|
function prepare_items()
|
|
{
|
|
|
|
$columns = $this->get_columns();
|
|
$hidden = array();
|
|
$sortable = $this->get_sortable_columns();
|
|
$this->_column_headers = array($columns, $hidden, $sortable);
|
|
|
|
usort( $this->list_data, array( &$this, 'usort_reorder' ) );
|
|
|
|
$this->items = $this->list_data;
|
|
}
|
|
|
|
function get_sortable_columns() {
|
|
|
|
$sortable_columns = array(
|
|
'id' => array('id',true),
|
|
'name' => array('name',true),
|
|
'time' => array('time',true),
|
|
'author' => array('author',true)
|
|
);
|
|
|
|
return $sortable_columns;
|
|
}
|
|
|
|
function usort_reorder( $a, $b ) {
|
|
|
|
$orderby = ( ! empty( $_GET['orderby'] ) ) ? $_GET['orderby'] : 'id';
|
|
|
|
$order = ( ! empty($_GET['order'] ) ) ? $_GET['order'] : 'asc';
|
|
|
|
if ($orderby == 'id')
|
|
$result = ( (int) $a[$orderby] - (int) $b[$orderby] );
|
|
else
|
|
$result = strcmp( $a[$orderby], $b[$orderby] );
|
|
|
|
return ( $order === 'asc' ) ? $result : -$result;
|
|
}
|
|
|
|
function column_cb($item) {
|
|
|
|
return sprintf('<input type="checkbox" name="bookid[]" value="%s" />', $item['id']);
|
|
}
|
|
|
|
function column_default( $item, $column_name )
|
|
{
|
|
switch( $column_name ) {
|
|
case 'id':
|
|
$actions = array(
|
|
'delete' => sprintf('<a href="?page=%s&action=%s&bookid=%s">Delete</a>', $_REQUEST['page'], 'delete', $item['id']),
|
|
'view' => sprintf('<a href="?page=%s&bookid=%s">View</a>', 'flipbook_view_book', $item['id']),
|
|
);
|
|
return sprintf('%1$s %2$s', $item['id'], $this->row_actions($actions) );
|
|
case 'name':
|
|
case 'time':
|
|
return $item[ $column_name ];
|
|
case 'author':
|
|
return get_userdata( $item[$column_name] )->display_name;
|
|
case 'shortcode':
|
|
return esc_attr('[flipbook id="' . $item['id'] . '"]');
|
|
default:
|
|
return $item[ $column_name ];
|
|
}
|
|
}
|
|
|
|
function get_bulk_actions() {
|
|
|
|
$actions = array(
|
|
'delete' => 'Delete'
|
|
);
|
|
return $actions;
|
|
}
|
|
|
|
} |