]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
baculum: Add priorjobname property to jobs endpoint
authorMarcin Haba <marcin.haba@bacula.pl>
Wed, 19 Apr 2023 09:01:00 +0000 (11:01 +0200)
committerMarcin Haba <marcin.haba@bacula.pl>
Thu, 20 Apr 2023 10:00:26 +0000 (12:00 +0200)
gui/baculum/protected/API/Modules/JobManager.php
gui/baculum/protected/API/Pages/API/Jobs.php
gui/baculum/protected/Common/Modules/Miscellaneous.php

index be5aa1683f964e69099ef8bdac70605b1a239a36..c07f72d72ee37340af6dd78ae80689762bff1b3f 100644 (file)
@@ -103,6 +103,7 @@ class JobManager extends APIModule {
         */
        const JOB_RESULT_VIEW_BASIC = 'basic';
        const JOB_RESULT_VIEW_FULL = 'full';
+       const JOB_RESULT_VIEW_ADVANCED = 'advanced';
 
        /**
         * Get job status groups.
@@ -149,8 +150,12 @@ class JobManager extends APIModule {
                $where = Database::getWhere($criteria);
 
                $job_record = 'Job.*,';
+               $join = '';
                if ($view == self::JOB_RESULT_VIEW_BASIC) {
                        $job_record = implode(',', $this->basic_mode_job_props) . ',';
+               } elseif ($view == self::JOB_RESULT_VIEW_ADVANCED) {
+                       $job_record = 'Job.*, PriorJob.Name AS priorjobname,';
+                       $join = ' LEFT JOIN Job AS PriorJob ON (Job.PriorJobId = PriorJob.JobId) ';
                }
 
                $sql = 'SELECT ' .  $job_record . ' 
@@ -161,7 +166,7 @@ FROM Job
 JOIN Client USING (ClientId) 
 LEFT JOIN Pool USING (PoolId) 
 LEFT JOIN FileSet USING (FilesetId)'
-. $where['where'] . $order . $limit . $offset;
+. $join . $where['where'] . $order . $limit . $offset;
 
                $statement = Database::runQuery($sql, $where['params']);
                $result = [];
index 2845e1be79266fe562b41383edf8105b54d49832..9eaace6e4e3dc27a4e2c1de5313d793fd5c5fe70 100644 (file)
@@ -59,6 +59,7 @@ class Jobs extends BaculumAPIServer {
                $order_by = $this->Request->contains('order_by') && $misc->isValidColumn($this->Request['order_by']) ? $this->Request['order_by']: 'JobId';
                $order_direction = $this->Request->contains('order_direction') && $misc->isValidOrderDirection($this->Request['order_direction']) ? $this->Request['order_direction']: 'DESC';
                $mode = ($this->Request->contains('overview') && $misc->isValidBooleanTrue($this->Request['overview'])) ? JobManager::JOB_RESULT_MODE_OVERVIEW : JobManager::JOB_RESULT_MODE_NORMAL;
+               $view = ($this->Request->contains('view') && $misc->isValidResultView($this->Request['view'])) ? $this->Request['view'] : JobManager::JOB_RESULT_VIEW_FULL;
 
                if (!empty($jobids)) {
                        /**
@@ -305,7 +306,8 @@ class Jobs extends BaculumAPIServer {
                                        $offset,
                                        $order_by,
                                        $order_direction,
-                                       $mode
+                                       $mode,
+                                       $view
                                );
                                $this->output = $result;
                                $this->error = JobError::ERROR_NO_ERRORS;
index 7673855612bed2fe738e06205c7f8bb6d2a66ea5..5adc664994b192a5efdb899cdbc32f0a694799f3 100644 (file)
@@ -318,7 +318,7 @@ class Miscellaneous extends TModule {
        }
 
        public function isValidResultView($view) {
-               return (preg_match('/^(basic|full)$/', $view) === 1);
+               return (preg_match('/^(basic|full|advanced)$/', $view) === 1);
        }
 
        public function isValidVolType($voltype) {