<?php
if(!class_exists('WP_List_Table')){
	require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
}

class FLCSectionsTable extends WP_List_Table {

	private $data;

	public function __construct( $data ){
		$this->data 	= $data;
		parent::__construct( array(
			'singular'  => 'Section',
			'plural'    => 'Sections',
			'ajax'      => false
		) );
	}
	public function column_default( $item, $column_name ){
        	switch( $column_name ){
			case 'cb':
				return '<input type="checkbox">';
            		case 'name':
                		return ucwords($item['name']);
            		case 'title':	
                		return ucwords($item['title']);
            		case 'links':	
                		return sprintf('<a href="%s">Links</a>', 
					add_query_arg( 
						array(
							'page' => 'flclinks',
							'section' => (string)$item['id'] 
						) 
					)
				);
			case 'created':
				return  date("m.d.y", $item['created']);
            		default:
                		return '';
        	}
    	}
	public function column_cb( $item ){
		return sprintf(
			'<input type="checkbox" value="%s" name="section_ids[]">',
			(string)$item['id']
		);
	}
	public function column_name($item) {
		$actions = array(
		'edit'    => sprintf('<a href="%s">Edit</a>', 
					add_query_arg( 
						array( 	
							'action' => 'edit',
							'edit' => (string)$item['id'], 
							'delete' => NULL 
						) 
					)
				),
		'delete'    => sprintf('<a href="%s">Delete</a>', 
					add_query_arg( 
						array( 
							'source' => 'section',
							'delete' => (string)$item['id'], 
							'edit' => NULL 
						) 
					)
				),
		);
		return sprintf('%1$s %2$s', 
				sprintf(
					'%s',
					ucwords($item['name'])
				),
				$this->row_actions($actions)
		);
	}
	public function get_bulk_actions() {
        	$actions = array(
            		'delete'    => 'Delete'
        	);
        	return $actions;
	}
	public function process_bulk_action() {
	}
	public function get_columns(){
		$columns = array(
			'cb'        		=> '<input type="checkbox">',
			'name'    		=> 'Name',
			'title'    		=> 'Title',
			'links'    		=> 'Links',
			'created'    		=> 'Date Created',
        	);
		return $columns;
	}  
	public function get_sortable_columns() {
		$sortable_columns = array(
			'url'   => array('url', false ),
			'name'   => array('Name', false ),
			'title'   => array('Title', false ),
			'created'   => array('created', false ),
		);
		return $sortable_columns;
	}
	public function prepare_items(){
		$per_page = 20;
		$columns = $this->get_columns();
		$hidden = array();
		$sortable = $this->get_sortable_columns();
 		$this->_column_headers = array( $columns, $hidden, $sortable );
		$data = $this->data;

        	function usort_reorder($a,$b){
            		$orderby = (!empty($_REQUEST['orderby'])) ? $_REQUEST['orderby'] : 'user_login';
			$order = (!empty($_REQUEST['order'])) ? $_REQUEST['order'] : 'asc';
			$result = strcmp($a[$orderby], $b[$orderby]);
			return ($order==='asc') ? $result : -$result;
		}
		usort($data, 'usort_reorder');
		$current_page = $this->get_pagenum();
		$total_items = count($data);
		$data = array_slice($data,(($current_page-1)*$per_page),$per_page);
		$this->items = $data;

	        $this->set_pagination_args( array(
			'total_items' => $total_items,
			'per_page'    => $per_page,
			'total_pages' => ceil($total_items/$per_page)
        	) );
	}
}
?>
