summaryrefslogtreecommitdiffstats
path: root/modules-available/statistics/inc/filter.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2018-01-08 13:47:34 +0100
committerSimon Rettberg2018-01-08 13:47:34 +0100
commit0d4d09f6fac5e79a75e8305c0c6c4df1620b6eb0 (patch)
tree6c13c970674e8bda393a5caa408f97f413e2dd7f /modules-available/statistics/inc/filter.inc.php
parent[statistics_reporting] Don't leak locationid in remote report (diff)
downloadslx-admin-0d4d09f6fac5e79a75e8305c0c6c4df1620b6eb0.tar.gz
slx-admin-0d4d09f6fac5e79a75e8305c0c6c4df1620b6eb0.tar.xz
slx-admin-0d4d09f6fac5e79a75e8305c0c6c4df1620b6eb0.zip
[statistics] Add filters for uptime and hostname
Closes #3278
Diffstat (limited to 'modules-available/statistics/inc/filter.inc.php')
-rw-r--r--modules-available/statistics/inc/filter.inc.php44
1 files changed, 39 insertions, 5 deletions
diff --git a/modules-available/statistics/inc/filter.inc.php b/modules-available/statistics/inc/filter.inc.php
index be6df752..1686f328 100644
--- a/modules-available/statistics/inc/filter.inc.php
+++ b/modules-available/statistics/inc/filter.inc.php
@@ -88,15 +88,17 @@ class Filter
$lhs = trim(substr($q, 0, $pos));
$rhs = trim(substr($q, $pos + strlen($operator)));
- if ($lhs == 'gbram') {
+ if ($lhs === 'gbram') {
$filters[] = new RamGbFilter($operator, $rhs);
- } elseif ($lhs == 'state') {
+ } elseif ($lhs === 'runtime') {
+ $filters[] = new RuntimeFilter($operator, $rhs);
+ } elseif ($lhs === 'state') {
$filters[] = new StateFilter($operator, $rhs);
- } elseif ($lhs == 'hddgb') {
+ } elseif ($lhs === 'hddgb') {
$filters[] = new Id44Filter($operator, $rhs);
- } elseif ($lhs == 'location') {
+ } elseif ($lhs === 'location') {
$filters[] = new LocationFilter($operator, $rhs);
- } elseif ($lhs == 'subnet') {
+ } elseif ($lhs === 'subnet') {
$filters[] = new SubnetFilter($operator, $rhs);
} else {
if (array_key_exists($lhs, Page_Statistics::$columns) && Page_Statistics::$columns[$lhs]['column']) {
@@ -143,6 +145,38 @@ class RamGbFilter extends Filter
}
}
+class RuntimeFilter extends Filter
+{
+ public function __construct($operator, $argument)
+ {
+ parent::__construct('lastboot', $operator, $argument);
+ }
+
+ public function whereClause(&$args, &$joins)
+ {
+ global $SIZE_RAM;
+ $lower = time() + (int)$this->argument * 3600;
+ $upper = $lower + 3600;
+ $common = "state IN ('OCCUPIED', 'IDLE', 'STANDBY') AND";
+ if ($this->operator == '=') {
+ return "$common ({$this->column} BETWEEN $lower AND $upper)";
+ } elseif ($this->operator == '<') {
+ return "$common {$this->column} < $lower";
+ } elseif ($this->operator == '<=') {
+ return "$common {$this->column} < $upper";
+ } elseif ($this->operator == '>') {
+ return "$common {$this->column} > $upper";
+ } elseif ($this->operator == '>=') {
+ return "$common {$this->column} > $lower";
+ } elseif ($this->operator == '!=') {
+ return "$common ({$this->column} < $lower OR {$this->column} > $upper)";
+ } else {
+ error_log("unimplemented operator in RuntimeFilter: $this->operator");
+ return ' 1';
+ }
+ }
+}
+
class Id44Filter extends Filter
{
public function __construct($operator, $argument)