From: Marcin Haba Date: Thu, 20 Apr 2023 11:39:29 +0000 (+0200) Subject: baculum: Add to objects endpoint time filters in date/time format X-Git-Tag: Release-13.0.3~66 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e1f36b8e7cf7f916d3a1b99880975c906db2c63;p=thirdparty%2Fbacula.git baculum: Add to objects endpoint time filters in date/time format Changes: - new date/time format filters - new time filteres: realstarttime_from, realstarttime_from_date realstarttime_to, realstarttime_to_date --- diff --git a/gui/baculum/protected/API/Pages/API/Objects.php b/gui/baculum/protected/API/Pages/API/Objects.php index c870816f4..82d9fc86a 100644 --- a/gui/baculum/protected/API/Pages/API/Objects.php +++ b/gui/baculum/protected/API/Pages/API/Objects.php @@ -47,6 +47,8 @@ class Objects extends BaculumAPIServer { $jobids = $this->Request->contains('jobids') && $misc->isValidIdsList($this->Request['jobids']) ? explode(',', $this->Request['jobids']) : []; $group_by = $this->Request->contains('groupby') && $misc->isValidColumn($this->Request['groupby']) ? strtolower($this->Request['groupby']) : null; $group_limit = $this->Request->contains('group_limit') ? intval($this->Request['group_limit']) : 0; + + // UNIX timestamp values $schedtime_from = $this->Request->contains('schedtime_from') && $misc->isValidInteger($this->Request['schedtime_from']) ? (int)$this->Request['schedtime_from'] : null; $schedtime_to = $this->Request->contains('schedtime_to') && $misc->isValidInteger($this->Request['schedtime_to']) ? (int)$this->Request['schedtime_to'] : null; $starttime_from = $this->Request->contains('starttime_from') && $misc->isValidInteger($this->Request['starttime_from']) ? (int)$this->Request['starttime_from'] : null; @@ -55,6 +57,21 @@ class Objects extends BaculumAPIServer { $endtime_to = $this->Request->contains('endtime_to') && $misc->isValidInteger($this->Request['endtime_to']) ? (int)$this->Request['endtime_to'] : null; $realendtime_from = $this->Request->contains('realendtime_from') && $misc->isValidInteger($this->Request['realendtime_from']) ? (int)$this->Request['realendtime_from'] : null; $realendtime_to = $this->Request->contains('realendtime_to') && $misc->isValidInteger($this->Request['realendtime_to']) ? (int)$this->Request['realendtime_to'] : null; + $realstarttime_from = $this->Request->contains('realstarttime_from') && $misc->isValidInteger($this->Request['realstarttime_from']) ? (int)$this->Request['realstarttime_from'] : null; + $realstarttime_to = $this->Request->contains('realstarttime_to') && $misc->isValidInteger($this->Request['realstarttime_to']) ? (int)$this->Request['realstarttime_to'] : null; + + // date/time values + $schedtime_from_date = $this->Request->contains('schedtime_from_date') && $misc->isValidBDateAndTime($this->Request['schedtime_from_date']) ? $this->Request['schedtime_from_date'] : null; + $schedtime_to_date = $this->Request->contains('schedtime_to_date') && $misc->isValidBDateAndTime($this->Request['schedtime_to_date']) ? $this->Request['schedtime_to_date'] : null; + $starttime_from_date = $this->Request->contains('starttime_from_date') && $misc->isValidBDateAndTime($this->Request['starttime_from_date']) ? $this->Request['starttime_from_date'] : null; + $starttime_to_date = $this->Request->contains('starttime_to_date') && $misc->isValidBDateAndTime($this->Request['starttime_to_date']) ? $this->Request['starttime_to_date'] : null; + $endtime_from_date = $this->Request->contains('endtime_from_date') && $misc->isValidBDateAndTime($this->Request['endtime_from_date']) ? $this->Request['endtime_from_date'] : null; + $endtime_to_date = $this->Request->contains('endtime_to_date') && $misc->isValidBDateAndTime($this->Request['endtime_to_date']) ? $this->Request['endtime_to_date'] : null; + $realstarttime_from_date = $this->Request->contains('realstarttime_from_date') && $misc->isValidBDateAndTime($this->Request['realstarttime_from_date']) ? $this->Request['realstarttime_from_date'] : null; + $realstarttime_to_date = $this->Request->contains('realstarttime_to_date') && $misc->isValidBDateAndTime($this->Request['realstarttime_to_date']) ? $this->Request['realstarttime_to_date'] : null; + $realendtime_from_date = $this->Request->contains('realendtime_from_date') && $misc->isValidBDateAndTime($this->Request['realendtime_from_date']) ? $this->Request['realendtime_from_date'] : null; + $realendtime_to_date = $this->Request->contains('realendtime_to_date') && $misc->isValidBDateAndTime($this->Request['realendtime_to_date']) ? $this->Request['realendtime_to_date'] : null; + $age = $this->Request->contains('age') && $misc->isValidInteger($this->Request['age']) ? (int)$this->Request['age'] : null; $order_by = $this->Request->contains('order_by') && $misc->isValidColumn($this->Request['order_by']) ? $this->Request['order_by']: 'ObjectId'; $order_direction = $this->Request->contains('order_direction') && $misc->isValidOrderDirection($this->Request['order_direction']) ? $this->Request['order_direction']: 'DESC'; @@ -151,35 +168,67 @@ class Objects extends BaculumAPIServer { } // Scheduled time range - if (!empty($schedtime_from) || !empty($schedtime_to)) { + if (!empty($schedtime_from) || !empty($schedtime_to) || !empty($schedtime_from_date) || !empty($schedtime_to_date)) { $params['Job.SchedTime'] = []; + + // Schedule time from + $sch_t_from = ''; if (!empty($schedtime_from)) { + $sch_t_from = date('Y-m-d H:i:s', $schedtime_from); + } elseif (!empty($schedtime_from_date)) { + $sch_t_from = $schedtime_from_date; + } + if (!empty($sch_t_from)) { $params['Job.SchedTime'][] = [ 'operator' => '>=', - 'vals' => date('Y-m-d H:i:s', $schedtime_from) + 'vals' => $sch_t_from ]; } + + // Schedule time to + $sch_t_to = ''; if (!empty($schedtime_to)) { + $sch_t_to = date('Y-m-d H:i:s', $schedtime_to); + } elseif (!empty($schedtime_to_date)) { + $sch_t_to = $schedtime_to_date; + } + if (!empty($sch_t_to)) { $params['Job.SchedTime'][] = [ 'operator' => '<=', - 'vals' => date('Y-m-d H:i:s', $schedtime_to) + 'vals' => $sch_t_to ]; } } // Start time range - if (!empty($starttime_from) || !empty($starttime_to)) { + if (!empty($starttime_from) || !empty($starttime_to) || !empty($starttime_from_date) || !empty($starttime_to_date)) { $params['Job.StartTime'] = []; + + // Start time from + $sta_t_from = ''; if (!empty($starttime_from)) { + $sta_t_from = date('Y-m-d H:i:s', $starttime_from); + } elseif (!empty($starttime_from_date)) { + $sta_t_from = $starttime_from_date; + } + if (!empty($sta_t_from)) { $params['Job.StartTime'][] = [ 'operator' => '>=', - 'vals' => date('Y-m-d H:i:s', $starttime_from) + 'vals' => $sta_t_from ]; } + + // Start time to + $sta_t_to = ''; if (!empty($starttime_to)) { + $sta_t_to = date('Y-m-d H:i:s', $starttime_to); + } elseif (!empty($starttime_to_date)) { + $sta_t_to = $starttime_to_date; + } + if (!empty($sta_t_to)) { $params['Job.StartTime'][] = [ 'operator' => '<=', - 'vals' => date('Y-m-d H:i:s', $starttime_to) + 'vals' => $sta_t_to ]; } } elseif (!empty($age)) { // Job age (now() - age) @@ -191,35 +240,100 @@ class Objects extends BaculumAPIServer { } // End time range - if (!empty($endtime_from) || !empty($endtime_to)) { + if (!empty($endtime_from) || !empty($endtime_to) || !empty($endtime_from_date) || !empty($endtime_to_date)) { $params['Job.EndTime'] = []; + + // End time from + $end_t_from = ''; if (!empty($endtime_from)) { + $end_t_from = date('Y-m-d H:i:s', $endtime_from); + } elseif (!empty($endtime_from_date)) { + $end_t_from = $endtime_from_date; + } + if (!empty($end_t_from)) { $params['Job.EndTime'][] = [ 'operator' => '>=', - 'vals' => date('Y-m-d H:i:s', $endtime_from) + 'vals' => $end_t_from ]; } + + // End time to + $end_t_to = ''; if (!empty($endtime_to)) { + $end_t_to = date('Y-m-d H:i:s', $endtime_to); + } elseif (!empty($endtime_to_date)) { + $end_t_to = $endtime_to_date; + } + if (!empty($end_t_to)) { $params['Job.EndTime'][] = [ 'operator' => '<=', - 'vals' => date('Y-m-d H:i:s', $endtime_to) + 'vals' => $end_t_to + ]; + } + } + + // Real start time range + if (!empty($realstarttime_from) || !empty($realstarttime_to) || !empty($realstarttime_from_date) || !empty($realstarttime_to_date)) { + $params['Job.RealStartTime'] = []; + + // Realstart time from + $realstart_t_from = ''; + if (!empty($realstarttime_from)) { + $realstart_t_from = date('Y-m-d H:i:s', $realstarttime_from); + } elseif (!empty($realstarttime_from_date)) { + $realstart_t_from = $realstarttime_from_date; + } + if (!empty($realstart_t_from)) { + $params['Job.RealStartTime'][] = [ + 'operator' => '>=', + 'vals' => $realstart_t_from + ]; + } + + // Realstart time to + $realstart_t_to = ''; + if (!empty($realstarttime_to)) { + $realstart_t_to = date('Y-m-d H:i:s', $realstarttime_to); + } elseif (!empty($realstarttime_to_date)) { + $realstart_t_to = $realstarttime_to_date; + } + if (!empty($realstart_t_to)) { + $params['Job.RealStartTime'][] = [ + 'operator' => '<=', + 'vals' => $realstart_t_to ]; } } // Real end time range - if (!empty($realendtime_from) || !empty($realendtime_to)) { + if (!empty($realendtime_from) || !empty($realendtime_to) || !empty($realendtime_from_date) || !empty($realendtime_to_date)) { $params['Job.RealEndTime'] = []; + + // Realend time from + $realend_t_from = ''; if (!empty($realendtime_from)) { + $realend_t_from = date('Y-m-d H:i:s', $realendtime_from); + } elseif (!empty($realendtime_from_date)) { + $realend_t_from = $realendtime_from_date; + } + if (!empty($realend_t_from)) { $params['Job.RealEndTime'][] = [ 'operator' => '>=', - 'vals' => date('Y-m-d H:i:s', $realendtime_from) + 'vals' => $realend_t_from ]; } + + // Realend time to + $realend_t_to = ''; if (!empty($realendtime_to)) { + $realend_t_to = date('Y-m-d H:i:s', $realendtime_to); + } elseif (!empty($realendtime_to_date)) { + $realend_t_to = $realendtime_to_date; + } + if (!empty($realend_t_to)) { $params['Job.RealEndTime'][] = [ 'operator' => '<=', - 'vals' => date('Y-m-d H:i:s', $realendtime_to) + 'vals' => $realend_t_to ]; } } diff --git a/gui/baculum/protected/API/openapi_baculum.json b/gui/baculum/protected/API/openapi_baculum.json index c031c1ad7..c98a974d1 100644 --- a/gui/baculum/protected/API/openapi_baculum.json +++ b/gui/baculum/protected/API/openapi_baculum.json @@ -2131,6 +2131,15 @@ "type": "integer" } }, + { + "name": "schedtime_from_date", + "in": "query", + "required": false, + "description": "Scheduled time from (date/time format YYYY-MM-DD HH:II:SS)", + "schema": { + "type": "string" + } + }, { "name": "schedtime_to", "in": "query", @@ -2140,6 +2149,15 @@ "type": "integer" } }, + { + "name": "schedtime_to_date", + "in": "query", + "required": false, + "description": "Scheduled time to (date/time format YYYY-MM-DD HH:II:SS)", + "schema": { + "type": "string" + } + }, { "name": "starttime_from", "in": "query", @@ -2149,6 +2167,15 @@ "type": "integer" } }, + { + "name": "starttime_from_date", + "in": "query", + "required": false, + "description": "Start time from (date/time format YYYY-MM-DD HH:II:SS)", + "schema": { + "type": "string" + } + }, { "name": "starttime_to", "in": "query", @@ -2158,6 +2185,15 @@ "type": "integer" } }, + { + "name": "starttime_to_date", + "in": "query", + "required": false, + "description": "Start time to (date/time format YYYY-MM-DD HH:II:SS)", + "schema": { + "type": "string" + } + }, { "name": "realstarttime_from", "in": "query", @@ -2167,6 +2203,15 @@ "type": "integer" } }, + { + "name": "realstarttime_from_date", + "in": "query", + "required": false, + "description": "Real start time from (date/time format YYYY-MM-DD HH:II:SS)", + "schema": { + "type": "string" + } + }, { "name": "realstarttime_to", "in": "query", @@ -2176,6 +2221,15 @@ "type": "integer" } }, + { + "name": "realstarttime_to_date", + "in": "query", + "required": false, + "description": "Real start time to (date/time format YYYY-MM-DD HH:II:SS)", + "schema": { + "type": "string" + } + }, { "name": "endtime_from", "in": "query", @@ -2185,6 +2239,15 @@ "type": "integer" } }, + { + "name": "endtime_from_date", + "in": "query", + "required": false, + "description": "End time from (date/time format YYYY-MM-DD HH:II:SS)", + "schema": { + "type": "string" + } + }, { "name": "endtime_to", "in": "query", @@ -2194,6 +2257,15 @@ "type": "integer" } }, + { + "name": "endtime_to_date", + "in": "query", + "required": false, + "description": "End time to (date/time format YYYY-MM-DD HH:II:SS)", + "schema": { + "type": "string" + } + }, { "name": "realendtime_from", "in": "query", @@ -2203,6 +2275,15 @@ "type": "integer" } }, + { + "name": "realendtime_from_date", + "in": "query", + "required": false, + "description": "Real end time from (date/time format YYYY-MM-DD HH:II:SS)", + "schema": { + "type": "string" + } + }, { "name": "realendtime_to", "in": "query", @@ -2212,12 +2293,21 @@ "type": "integer" } }, + { + "name": "realendtime_to_date", + "in": "query", + "required": false, + "description": "Real end time to (date/time format YYYY-MM-DD HH:II:SS)", + "schema": { + "type": "string" + } + }, { "name": "age", "in": "query", "required": false, - "description": "Job age in seconds (used is start time). starttime_from and starttime_to take precedence over this parameter.", + "description": "Job age in seconds (used is start time). starttime_from, starttime_from_date, starttime_to and starttime_to_date take precedence over this parameter.", "schema": { "type": "integer" }