From 936678cba5c0a5ece682074eb9481107536e3a34 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Fri, 1 Feb 2019 11:42:37 +0100 Subject: [PATCH] [REFACTORING] All resources for list --- .../controllers/ResourceListController.php | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/app/resource/controllers/ResourceListController.php b/src/app/resource/controllers/ResourceListController.php index 280daab02ff..dd353799e00 100644 --- a/src/app/resource/controllers/ResourceListController.php +++ b/src/app/resource/controllers/ResourceListController.php @@ -47,8 +47,8 @@ class ResourceListController $user = UserModel::getById(['id' => $aArgs['userId'], 'select' => ['user_id']]); $data = $request->getQueryParams(); - $data['offset'] = (empty($data['offset']) || !is_numeric($data['offset']) ? 0 : $data['offset']); - $data['limit'] = (empty($data['limit']) || !is_numeric($data['limit']) ? 0 : $data['limit']); + $data['offset'] = (empty($data['offset']) || !is_numeric($data['offset']) ? 0 : (int)$data['offset']); + $data['limit'] = (empty($data['limit']) || !is_numeric($data['limit']) ? 10 : (int)$data['limit']); $allQueryData = ResourceListController::getResourcesListQueryData(['data' => $data, 'basketClause' => $basket['basket_clause'], 'login' => $user['user_id']]); if (!empty($allQueryData['order'])) { @@ -56,19 +56,28 @@ class ResourceListController } $rawResources = ResourceListModel::getOnView([ - 'select' => ['count(1) OVER()', 'res_id'], + 'select' => ['res_id'], 'table' => $allQueryData['table'], 'leftJoin' => $allQueryData['leftJoin'], 'where' => $allQueryData['where'], 'data' => $allQueryData['queryData'], - 'orderBy' => empty($data['order']) ? [$basket['basket_res_order']] : [$data['order']], - 'offset' => (int)$data['offset'], - 'limit' => (int)$data['limit'] + 'orderBy' => empty($data['order']) ? [$basket['basket_res_order']] : [$data['order']] ]); - $count = empty($rawResources[0]['count']) ? 0 : $rawResources[0]['count']; + $count = count($rawResources); + $resIds = []; + if (!empty($rawResources[$data['offset']])) { + $start = $data['offset']; + $i = 0; + while ($i < $data['limit'] && !empty($rawResources[$start])) { + $resIds[] = $rawResources[$start]['res_id']; + ++$start; + ++$i; + } + } + $allResources = []; foreach ($rawResources as $resource) { - $resIds[] = $resource['res_id']; + $allResources[] = $resource['res_id']; } $resources = []; @@ -99,7 +108,7 @@ class ResourceListController } } - return $response->withJson(['resources' => $resources, 'count' => $count, 'basketLabel' => $basket['basket_name']]); + return $response->withJson(['resources' => $resources, 'count' => $count, 'basketLabel' => $basket['basket_name'], 'allResources' => $allResources]); } public function getFilters(Request $request, Response $response, array $aArgs) -- GitLab