From: Marcin Haba Date: Fri, 29 Oct 2021 19:47:44 +0000 (+0200) Subject: baculum: Fix running job number on some pages X-Git-Tag: Release-11.0.6~60 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2fa0a93e59195f6b490334ef3218636f4a7130e2;p=thirdparty%2Fbacula.git baculum: Fix running job number on some pages --- diff --git a/gui/baculum/protected/Web/Pages/Monitor.php b/gui/baculum/protected/Web/Pages/Monitor.php index c2e52dfb9..35f060576 100644 --- a/gui/baculum/protected/Web/Pages/Monitor.php +++ b/gui/baculum/protected/Web/Pages/Monitor.php @@ -19,6 +19,7 @@ * * Bacula(R) is a registered trademark of Kern Sibbald. */ +Prado::using('Application.Common.Class.Errors'); Prado::using('Application.Web.Class.BaculumWebPage'); Prado::using('Application.Web.Class.WebUserRoles'); @@ -61,7 +62,13 @@ class Monitor extends BaculumPage { $error = null; $params = $this->Request->contains('params') ? $this->Request['params'] : []; - if (key_exists('jobs', $params)) { + if (!is_array($params)) { + $error = (object)[ + 'output' => 'Wrong monitor parameter.', + 'error' => GenericError::ERROR_INTERNAL_ERROR + ]; + } + if (!$error && key_exists('jobs', $params)) { $job_params = ['jobs']; $job_query = []; if (is_array($params['jobs'])) { @@ -136,16 +143,24 @@ class Monitor extends BaculumPage { } } + $running_from_all = false; if (key_exists('jobs', $params)) { + $running_from_all = empty($params['jobs']); $running_job_states = $this->Application->getModule('misc')->getRunningJobStates(); for ($i = 0; $i < count($monitor_data['jobs']); $i++) { if (in_array($monitor_data['jobs'][$i]->jobstatus, $running_job_states)) { - $monitor_data['running_jobs'][] = $monitor_data['jobs'][$i]; + // @NOTE: Running jobs are taken from all jobs only + // if there is not any job criteria in query (see $params['jobs']) + if ($running_from_all) { + $monitor_data['running_jobs'][] = $monitor_data['jobs'][$i]; + } } else { $monitor_data['terminated_jobs'][] = $monitor_data['jobs'][$i]; } } - } elseif (!$error) { + } + + if (!$error && !$running_from_all) { $result = $this->getModule('api')->get(['jobs', '?jobstatus=CR']); if ($result->error === 0) { $monitor_data['running_jobs'] = $result->output;