/**
 * Returns the complete table for the range picker
 */
function wpdatatables_get_complete_table_json_by_id()
{
    $table_id = filter_var($_POST['table_id'], FILTER_SANITIZE_NUMBER_INT);
    $table_data = wdt_get_table_by_id($table_id);
    $column_data = wdt_get_columns_by_table_id($table_id);
    $tbl = new WPDataTable();
    $tbl->setWpId($table_id);
    $column_order = array();
    $column_titles = array();
    $column_types = array();
    $column_possible_values = array();
    foreach ($column_data as $column) {
        $column_order[(int) $column->pos] = $column->orig_header;
        if ($column->display_header) {
            $column_titles[$column->orig_header] = $column->display_header;
        }
        if ($column->column_type != 'autodetect') {
            $column_types[$column->orig_header] = $column->column_type;
        }
        $column_possible_values[$column->orig_header] = $column->possible_values;
    }
    switch ($table_data['table_type']) {
        case 'mysql':
        case 'manual':
            $tbl->queryBasedConstruct($table_data['content'], array(), array('data_types' => $column_types, 'column_titles' => $column_titles));
            break;
        case 'xls':
        case 'csv':
            $tbl->excelBasedConstruct($table_data['content'], array('data_types' => $column_types, 'column_titles' => $column_titles));
            break;
        case 'xml':
            $tbl->XMLBasedConstruct($table_data['content'], array('data_types' => $column_types, 'column_titles' => $column_titles));
            break;
        case 'json':
            $tbl->jsonBasedConstruct($table_data['content'], array('data_types' => $column_types, 'column_titles' => $column_titles));
            break;
        case 'serialized':
            $array = unserialize(WDTTools::curlGetData($table_data['content']));
            $tbl->arrayBasedConstruct($array, array('data_types' => $column_types, 'column_titles' => $column_titles));
            break;
        case 'google_spreadsheet':
            $array = WDTTools::extractGoogleSpreadsheetArray($content);
            $tbl->arrayBasedConstruct($array, array('data_types' => $column_types, 'column_titles' => $column_titles));
            break;
    }
    $tbl->reorderColumns($column_order);
    echo json_encode($tbl->getDataRows());
    exit;
}