]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Add sorting by fileset in objects overview endpoint
authorMarcin Haba <marcin.haba@bacula.pl>
Mon, 10 Jul 2023 11:30:43 +0000 (13:30 +0200)
committerMarcin Haba <marcin.haba@bacula.pl>
Mon, 10 Jul 2023 11:30:43 +0000 (13:30 +0200)
gui/baculum/protected/API/Modules/ObjectManager.php
gui/baculum/protected/API/Pages/API/ObjectsOverview.php

index 81236f19db0a7c403eef5244f06e4235b2601530..0a66af6ff10a2ef239bca00964fbcb9c7dd6e47b 100644 (file)
@@ -39,8 +39,8 @@ class ObjectManager extends APIModule
         * Allowed order columns for object overview.
         */
        public static $overview_order_columns = [
-               'object' => ['objectname', 'endtime'],
-               'general' => ['client', 'jobstatus', 'endtime']
+               'object' => ['objectname', 'client', 'jobstatus', 'endtime'],
+               'file' => ['client', 'jobstatus', 'endtime', 'fileset']
        ];
 
        /**
@@ -200,7 +200,7 @@ LEFT JOIN Client USING (ClientId) '
                        $sort_col = 'JobTDate';
                } elseif (in_array($sort_col_i, ObjectManager::$overview_order_columns['object'])) {
                        $obj_order .= sprintf(',%s %s', $sort_col, $sort_order);
-               } elseif (in_array($sort_col_i, ObjectManager::$overview_order_columns['general'])) {
+               } elseif (in_array($sort_col_i, ObjectManager::$overview_order_columns['file'])) {
                        $file_order .= sprintf(',%s %s', $sort_col, $sort_order);
                }
                $order = sprintf(
@@ -429,14 +429,14 @@ LEFT JOIN Client USING (ClientId) '
                                if ($object_count[$i]['objecttype'] == 'files') {
                                        $sql = 'SELECT * 
                                                FROM ' . $objects_tname4 . '
-                                               ' . ((stripos($sort_col, 'object') === false) ? 'ORDER BY ' . $order : '') . $limit . $offset;
+                                               ' . (in_array($sort_col_i, self::$overview_order_columns['file']) ? 'ORDER BY ' . $order : '') . $limit . $offset;
                                        $statement = Database::runQuery($sql);
                                        $items = $statement->fetchAll(PDO::FETCH_ASSOC);
                                } else {
                                        $sql = 'SELECT * 
                                                FROM ' . $objects_tname1 . '
                                                WHERE ObjectType = \'' . $object_count[$i]['objecttype'] . '\'
-                                               ORDER BY ObjectType, ObjectSource, ObjectCategory, ' . $order . $limit . $offset;
+                                               ORDER BY ObjectType, ObjectSource, ObjectCategory ' . (in_array($sort_col_i, self::$overview_order_columns['object']) ? ',' . $order : '') . $limit . $offset;
                                        $statement = Database::runQuery($sql);
                                        $items = $statement->fetchAll(PDO::FETCH_ASSOC);
                                }
index ccce2eeafbf0e2208838d8c5856c760cae1be4e1..90cce1d13aefd25867fb7bfadac1a1d7d1258ff7 100644 (file)
@@ -82,7 +82,7 @@ class ObjectsOverview extends BaculumAPIServer {
 
                if (!empty($order_by)) {
                        $order_by_lc = strtolower($order_by);
-                       if (!in_array($order_by_lc, ObjectManager::$overview_order_columns['object']) && !in_array($order_by_lc, ObjectManager::$overview_order_columns['general'])) {
+                       if (!in_array($order_by_lc, ObjectManager::$overview_order_columns['file']) && !in_array($order_by_lc, ObjectManager::$overview_order_columns['object'])) {
                                $this->output = ObjectError::MSG_ERROR_INVALID_PROPERTY;
                                $this->error = ObjectError::ERROR_INVALID_PROPERTY;
                                return;