'integer', 'url' => 'string', 'user_id' => 'integer', 'caption' => 'string' ]; $allow_fields = ['id', 'url', 'user_id', 'caption']; $allow_column_fields = ['ID', 'URL', 'User ID', 'Caption']; $format = isset($_GET['format']) ? $_GET['format'] : 'json'; $page = isset($_GET['page']) ? intval($_GET['page']) : 1; $id = isset($_GET['id']) ? intval($_GET['id']) : 0; $per_page = isset($_GET['size']) ? intval($_GET['size']) : 25; $sort = isset($_GET['sort']) ? $_GET['sort'] : 'id'; $direction = isset($_GET['direction']) ? $_GET['direction'] : 'ASC'; //TODO: default sort/direction from cms builder $query_service = new QueryService(); $format_service = new FormatService(); $custom_where = $query_service->create_where( $type_array, Flight::request()->query['field'] ?? [], Flight::request()->query['operator'] ?? [], Flight::request()->query['value'] ?? []); $result = $model->get_paginated($page, $per_page, $custom_where, $sort, $direction); // $result = $model->get_cursor_paginated($page, $per_page, $custom_where, $sort, $direction, $id); if ($result) { $result['code'] = 200; $result['error'] = false; $result['query'] = $custom_where; if ($format == 'json') { $result['data'] = $format_service->to_json($result['data'], $model->get_mapping(), $allow_column_fields, $allow_fields); echo json_encode($result); exit; } if ($format == 'csv') { header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="export.csv"'); echo implode("\n", $format_service->to_csv($result['list'], $model->get_mapping(), $allow_column_fields), $allow_fields); exit(); } } else { echo json_encode([ 'code' => 409, 'error' => false ]); http_response_code(409); exit; } });