From 4f42ff2bcfdd4f050771be2a31fad18dea5e1b57 Mon Sep 17 00:00:00 2001 From: Alex Runyan Date: Fri, 3 May 2024 16:06:09 -0400 Subject: [PATCH 1/3] Remove duplicate count of records --- ProcessMaker/Http/Controllers/Api/TaskController.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ProcessMaker/Http/Controllers/Api/TaskController.php b/ProcessMaker/Http/Controllers/Api/TaskController.php index a660786494..a3854c72b2 100644 --- a/ProcessMaker/Http/Controllers/Api/TaskController.php +++ b/ProcessMaker/Http/Controllers/Api/TaskController.php @@ -122,9 +122,12 @@ public function index(Request $request, $getTotal = false, User $user = null) $this->applyForCurrentUser($query, $user); + // Count up the total results + $totalCount = $query->count(); + // If only the total is being requested (by a Saved Search), send it now if ($getTotal === true) { - return $query->count(); + return $totalCount; } // Apply filter overdue @@ -133,7 +136,7 @@ public function index(Request $request, $getTotal = false, User $user = null) // If we should manually add pagination to the // query in advance (also used by saved search) if ($this->isPaginationEnabled()) { - $query->paginate($request->input('per_page', 10)); + $query->limit($request->input('per_page', 10)); } try { @@ -153,7 +156,7 @@ public function index(Request $request, $getTotal = false, User $user = null) $response->inOverdue = $inOverdueQuery->count(); - return new TaskCollection($response); + return new TaskCollection($response, $totalCount); } /** From ec7599ca289a916775f6175a4d3c3f3519ddf7c0 Mon Sep 17 00:00:00 2001 From: Alex Runyan Date: Fri, 3 May 2024 17:59:52 -0400 Subject: [PATCH 2/3] Catch query exceptions for result count execution --- .../Http/Controllers/Api/TaskController.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/ProcessMaker/Http/Controllers/Api/TaskController.php b/ProcessMaker/Http/Controllers/Api/TaskController.php index a3854c72b2..d095906278 100644 --- a/ProcessMaker/Http/Controllers/Api/TaskController.php +++ b/ProcessMaker/Http/Controllers/Api/TaskController.php @@ -122,12 +122,18 @@ public function index(Request $request, $getTotal = false, User $user = null) $this->applyForCurrentUser($query, $user); - // Count up the total results - $totalCount = $query->count(); + try { + // Count up the total number of results, but + // watch for PMQL query exceptions and handle + // them if they occur + $totalResultCount = $query->count(); + } catch (QueryException $e) { + return $this->handleQueryException($e); + } // If only the total is being requested (by a Saved Search), send it now if ($getTotal === true) { - return $totalCount; + return $totalResultCount; } // Apply filter overdue @@ -156,7 +162,7 @@ public function index(Request $request, $getTotal = false, User $user = null) $response->inOverdue = $inOverdueQuery->count(); - return new TaskCollection($response, $totalCount); + return new TaskCollection($response, $totalResultCount); } /** @@ -272,8 +278,11 @@ public function update(Request $request, ProcessRequestToken $task) private function handleQueryException($e) { $regex = '~Column not found: 1054 Unknown column \'(.*?)\' in \'where clause\'~'; + preg_match($regex, $e->getMessage(), $m); + dump($m); + $message = __('PMQL Is Invalid.'); if (count($m) > 1) { From dfdc2fd40bce6e048a4ab14a69818508359e0d71 Mon Sep 17 00:00:00 2001 From: Alex Runyan Date: Fri, 3 May 2024 20:22:00 -0400 Subject: [PATCH 3/3] Remove helper function for debugging --- ProcessMaker/Http/Controllers/Api/TaskController.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/ProcessMaker/Http/Controllers/Api/TaskController.php b/ProcessMaker/Http/Controllers/Api/TaskController.php index d095906278..993b97f4a8 100644 --- a/ProcessMaker/Http/Controllers/Api/TaskController.php +++ b/ProcessMaker/Http/Controllers/Api/TaskController.php @@ -281,8 +281,6 @@ private function handleQueryException($e) preg_match($regex, $e->getMessage(), $m); - dump($m); - $message = __('PMQL Is Invalid.'); if (count($m) > 1) {