diff options
author | Simon Rettberg | 2017-11-28 16:41:33 +0100 |
---|---|---|
committer | Simon Rettberg | 2017-11-28 16:41:33 +0100 |
commit | 23d8c6fc0c3b031aa081ee1a245f9b0792514fd3 (patch) | |
tree | 59ce05e8add76d7b63213a0fa447a42565ea2e3d /modules-available/statistics/inc/filter.inc.php | |
parent | [dnbd3] Disable SLX_SYSTEM_STANDBY_TIMEOUT (diff) | |
download | slx-admin-23d8c6fc0c3b031aa081ee1a245f9b0792514fd3.tar.gz slx-admin-23d8c6fc0c3b031aa081ee1a245f9b0792514fd3.tar.xz slx-admin-23d8c6fc0c3b031aa081ee1a245f9b0792514fd3.zip |
[statistics] Introduce state column to get rid of complicated state determination
This also adds support for the STANDBY state
Diffstat (limited to 'modules-available/statistics/inc/filter.inc.php')
-rw-r--r-- | modules-available/statistics/inc/filter.inc.php | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/modules-available/statistics/inc/filter.inc.php b/modules-available/statistics/inc/filter.inc.php index 0afce572..b16bd9fb 100644 --- a/modules-available/statistics/inc/filter.inc.php +++ b/modules-available/statistics/inc/filter.inc.php @@ -186,15 +186,13 @@ class StateFilter extends Filter public function whereClause(&$args, &$joins) { + $map = [ 'on' => ['IDLE', 'OCCUPIED'], 'off' => ['OFFLINE'], 'idle' => ['IDLE'], 'occupied' => ['OCCUPIED'], 'standby' => ['STANDBY'] ]; $neg = $this->operator == '!=' ? 'NOT ' : ''; - if ($this->argument === 'on') { - return " $neg (lastseen + 600 > UNIX_TIMESTAMP() ) "; - } elseif ($this->argument === 'off') { - return " $neg (lastseen + 600 < UNIX_TIMESTAMP() ) "; - } elseif ($this->argument === 'idle') { - return " $neg (lastseen + 600 > UNIX_TIMESTAMP() AND logintime = 0 ) "; - } elseif ($this->argument === 'occupied') { - return " $neg (lastseen + 600 > UNIX_TIMESTAMP() AND logintime <> 0 ) "; + if (array_key_exists($this->argument, $map)) { + global $unique_key; + $key = $this->column . '_arg' . ($unique_key++); + $args[$key] = $map[$this->argument]; + return " machine.state $neg IN ( :$key ) "; } else { Message::addError('invalid-filter-argument', 'state', $this->argument); return ' 1'; @@ -216,8 +214,10 @@ class LocationFilter extends Filter $neg = $this->operator === '=' ? '' : 'NOT'; return "machine.locationid IS $neg NULL"; } else { - $args['lid'] = $this->argument; - return "machine.locationid {$this->operator} :lid"; + global $unique_key; + $key = $this->column . '_arg' . ($unique_key++); + $args[$key] = $this->argument; + return "machine.locationid {$this->operator} :$key"; } } } |