From: Marcin Haba Date: Tue, 4 Apr 2023 08:25:37 +0000 (+0200) Subject: baculum: Add offset parameter to sources endpoint X-Git-Tag: Release-13.0.3~91 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5df1138f1a1341f48aa6fc4864cd0441f8d0e1cf;p=thirdparty%2Fbacula.git baculum: Add offset parameter to sources endpoint --- diff --git a/gui/baculum/protected/API/Modules/SourceManager.php b/gui/baculum/protected/API/Modules/SourceManager.php index 3647e1e8c..c370e5b9a 100644 --- a/gui/baculum/protected/API/Modules/SourceManager.php +++ b/gui/baculum/protected/API/Modules/SourceManager.php @@ -31,11 +31,15 @@ namespace Baculum\API\Modules; */ class SourceManager extends APIModule { - public function getSources($criteria = [], $limit_val = null) { + public function getSources($criteria = [], $limit_val = null, $offset_val = 0) { $limit = ''; if(is_int($limit_val) && $limit_val > 0) { $limit = ' LIMIT ' . $limit_val; } + $offset = ''; + if (is_int($offset_val) && $offset_val > 0) { + $offset = ' OFFSET ' . $offset_val; + } $where = Database::getWhere($criteria, true); $sql = 'SELECT DISTINCT sres.fileset, sres.client, sres.job, jres.starttime, jres.endtime, ores.jobid, jres.jobstatus @@ -67,7 +71,7 @@ class SourceManager extends APIModule { AND sres.fileset = ores.fileset AND jres.Type = \'B\' ' . (!empty($where['where']) ? ' AND ' . $where['where'] : '') . ' - ORDER BY sres.fileset ASC, sres.client ASC, sres.job ASC, jres.starttime ASC ' . $limit; + ORDER BY sres.fileset ASC, sres.client ASC, sres.job ASC, jres.starttime ASC ' . $limit . $offset; $connection = SourceRecord::finder()->getDbConnection(); $connection->setActive(true); diff --git a/gui/baculum/protected/API/Pages/API/Sources.php b/gui/baculum/protected/API/Pages/API/Sources.php index 81c6c503d..9b1c56f05 100644 --- a/gui/baculum/protected/API/Pages/API/Sources.php +++ b/gui/baculum/protected/API/Pages/API/Sources.php @@ -34,7 +34,8 @@ class Sources extends BaculumAPIServer { public function get() { $misc = $this->getModule('misc'); - $limit = $this->Request->contains('limit') ? (int)$this->Request['limit'] : 0; + $limit = $this->Request->contains('limit') && $misc->isValidInteger($this->Request['limit']) ? (int)$this->Request['limit'] : 0; + $offset = $this->Request->contains('offset') && $misc->isValidInteger($this->Request['offset']) ? (int)$this->Request['offset'] : 0; $job = $this->Request->contains('job') && $misc->isValidName($this->Request['job']) ? $this->Request['job'] : ''; $client = $this->Request->contains('client') && $misc->isValidName($this->Request['client']) ? $this->Request['client'] : ''; $fileset = $this->Request->contains('fileset') && $misc->isValidName($this->Request['fileset']) ? $this->Request['fileset'] : ''; @@ -115,7 +116,7 @@ class Sources extends BaculumAPIServer { } } - $sources = $this->getModule('source')->getSources($params, $limit); + $sources = $this->getModule('source')->getSources($params, $limit, $offset); $this->output = $sources; $this->error = SourceError::ERROR_NO_ERRORS; }