From 03a7bf9fbb6c7aa8d6dc9459aae5cd171d7c7cfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Borja=20S=C3=A1nchez?= <114572427+BorjaSanchezBeezNest@users.noreply.github.com> Date: Wed, 23 Nov 2022 17:10:54 +0100 Subject: [PATCH] Webservice: Fix optional parameter and improve exception when missing required parameter - refs BT#20290 Author: @BorjaSanchezBeezNest --- main/inc/lib/webservices/Rest.php | 9 +++++---- main/webservices/api/v2.php | 6 +++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/main/inc/lib/webservices/Rest.php b/main/inc/lib/webservices/Rest.php index 42604c510c..3e070dbeb5 100644 --- a/main/inc/lib/webservices/Rest.php +++ b/main/inc/lib/webservices/Rest.php @@ -2827,7 +2827,7 @@ class Rest extends WebService * * @return array e.g: [ { "id": 4, "title": "aiken", "updated_by": "-", "type": "1", "completion": 0 } ] */ - public function getTestAverageResultsList(array $ids = [], array $fields = []): array + public function getTestAverageResultsList(array $ids = [], ?array $fields = []): array { self::protectAdminEndpoint(); $tableTrackExercises = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES); @@ -2845,9 +2845,10 @@ class Rest extends WebService if (!is_array($fields)) { $fields = [$fields]; } - - foreach ($fields as $field) { - $extraArray[$field] = ''; + if (!empty($fields)) { + foreach ($fields as $field) { + $extraArray[$field] = '-'; + } } $queryUsersInCourses = " diff --git a/main/webservices/api/v2.php b/main/webservices/api/v2.php index 3ef2df3bd3..fd8f14b6cb 100644 --- a/main/webservices/api/v2.php +++ b/main/webservices/api/v2.php @@ -817,9 +817,13 @@ try { ); break; case Rest::GET_TEST_AVERAGE_RESULTS_LIST: + if (empty($_POST['ids'])) { + throw new Exception(get_lang('NoData')); + } Event::addEvent(LOG_WS.$action, 'success', 'true'); + $fields = $_POST['fields'] ?? []; $restResponse->setData( - $restApi->getTestAverageResultsList($_POST['ids'], $_POST['fields']) + $restApi->getTestAverageResultsList($_POST['ids'], $fields) ); break; default: