class Donations extends WP_List_Table
{
    function get_columns()
    {
        return array('progress_name' => 'Name', 'campaign_name' => 'Campaign', 'progress_type' => 'Type', 'progress_id' => 'Progress Id');
    }
    function prepare_items()
    {
        $this->_column_headers = array($this->get_columns(), array('progress_id'), $this->get_sortable_columns());
        global $wpdb;
        $this->items = $result = $wpdb->get_results("select progress_name,coalesce(campaign.name,'Default') campaign_name,progress_type,progress_id\n                                                    from " . SMART_DONATIONS_PROGRESS_TABLE . " progress\n                                                    left join " . SMART_DONATIONS_CAMPAIGN_TABLE . " campaign\n                                                    on campaign.campaign_id=progress.campaign_id ");
    }
    function get_sortable_columns()
    {
    }
    function column_default($item, $column_name)
    {
        return $item->{$column_name};
    }
    function column_progress_name($item)
    {
        $actions = array('edit' => sprintf('<a href="?page=%s&$progress_id=%s&action=%s">Edit</a>', $_REQUEST['page'], $item->progress_id, 'edit'), 'delete' => sprintf('<a href="?page=%s&$progress_id=%s&action=%s">Delete</a>', $_REQUEST['page'], $item->progress_id, 'delete'));
        return sprintf('%1$s %2$s', $item->progress_name, $this->row_actions($actions));
    }
}
$donationList = new Donations();
$donationList->prepare_items();
$donationList->display();
?>