From: Marcin Haba Date: Wed, 7 Jun 2023 09:05:37 +0000 (+0200) Subject: baculum: Add group_order_by and group_order_direction parameters to objects endpoint X-Git-Tag: Release-13.0.4~71 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=afeb250bf417db222a8d648af6c45cca461bb9de;p=thirdparty%2Fbacula.git baculum: Add group_order_by and group_order_direction parameters to objects endpoint --- diff --git a/gui/baculum/protected/API/Modules/ObjectManager.php b/gui/baculum/protected/API/Modules/ObjectManager.php index b97f0b1e1..7e6df27bb 100644 --- a/gui/baculum/protected/API/Modules/ObjectManager.php +++ b/gui/baculum/protected/API/Modules/ObjectManager.php @@ -84,7 +84,7 @@ class ObjectManager extends APIModule * @param string $view job records view (basic, full) * @return array object list */ - public function getObjects($criteria = [], $opts = [], $limit_val = null, $offset_val = 0, $sort_col = 'ObjectId', $sort_order = 'DESC', $group_by = null, $group_limit = 0, $group_offset = 0, $view = self::OBJ_RESULT_VIEW_FULL, $mode = self::OBJECT_RESULT_MODE_NORMAL) { + public function getObjects($criteria = [], $opts = [], $limit_val = null, $offset_val = 0, $sort_col = 'ObjectId', $sort_order = 'DESC', $group_by = null, $group_limit = 0, $group_offset = 0, $group_order_by = null, $group_order_direction = 'ASC', $view = self::OBJ_RESULT_VIEW_FULL, $mode = self::OBJECT_RESULT_MODE_NORMAL) { $db_params = $this->getModule('api_config')->getConfig('db'); if ($db_params['type'] === Database::PGSQL_TYPE) { $sort_col = strtolower($sort_col); @@ -130,7 +130,15 @@ LEFT JOIN Client USING (ClientId) ' $result = array_values($result); $result = array_map($func, $result); } - $overview = Database::groupBy($group_by, $result, $group_limit, $group_offset, 'objecttype'); + $overview = Database::groupBy( + $group_by, + $result, + $group_limit, + $group_offset, + 'objecttype', + $group_order_by, + $group_order_direction + ); if ($mode == self::OBJECT_RESULT_MODE_OVERVIEW) { // Overview mode. $result = [ diff --git a/gui/baculum/protected/API/Pages/API/Objects.php b/gui/baculum/protected/API/Pages/API/Objects.php index 47a6e2da8..88bc7e7a1 100644 --- a/gui/baculum/protected/API/Pages/API/Objects.php +++ b/gui/baculum/protected/API/Pages/API/Objects.php @@ -54,6 +54,8 @@ class Objects extends BaculumAPIServer { $group_by = $this->Request->contains('groupby') && $misc->isValidColumn($this->Request['groupby']) ? strtolower($this->Request['groupby']) : null; $group_offset = $this->Request->contains('group_offset') ? intval($this->Request['group_offset']) : 0; $group_limit = $this->Request->contains('group_limit') ? intval($this->Request['group_limit']) : 0; + $group_order_by = $this->Request->contains('group_order_by') && $misc->isValidColumn($this->Request['group_order_by']) ? $this->Request['group_order_by']: 'ObjectId'; + $group_order_direction = $this->Request->contains('group_order_direction') && $misc->isValidOrderDirection($this->Request['group_order_direction']) ? $this->Request['group_order_direction']: 'ASC'; // UNIX timestamp values $schedtime_from = $this->Request->contains('schedtime_from') && $misc->isValidInteger($this->Request['schedtime_from']) ? (int)$this->Request['schedtime_from'] : null; @@ -385,6 +387,8 @@ class Objects extends BaculumAPIServer { $group_by, $group_limit, $group_offset, + $group_order_by, + $group_order_direction, ObjectManager::OBJ_RESULT_VIEW_FULL, $mode );