From 5eaa4292c6db2c1ee1282c938c899dc5b88db65f Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 20 Apr 2020 11:49:17 +0200 Subject: [statistics] New filter UI --- modules-available/statistics/page.inc.php | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'modules-available/statistics/page.inc.php') diff --git a/modules-available/statistics/page.inc.php b/modules-available/statistics/page.inc.php index 533a9bf9..deba6681 100644 --- a/modules-available/statistics/page.inc.php +++ b/modules-available/statistics/page.inc.php @@ -19,6 +19,7 @@ class Page_Statistics extends Page } if (Request::isGet()) { + $this->transformLegacyQuery(); $this->show = Request::any('show', false, 'string'); if ($this->show === false) { if (Request::get('uuid') !== false) { @@ -85,6 +86,27 @@ class Page_Statistics extends Page Util::redirect('?do=statistics'); } + private function transformLegacyQuery() + { + if (!Request::isGet()) + return; + $query = Request::get('filters', false, 'string'); + if ($query === false) + return; + foreach (explode(StatisticsFilter::LEGACY_DELIMITER, $query) as $q) { + if (!preg_match('/^\s*(\w+)\s*([<>=!~]{1,2})\s*(.*?)\s*$/', $q, $out)) + continue; + $key = $out[1]; + $_GET['filter'][$key] = '1'; + $_GET['op'][$key] = $out[2]; + $_GET['arg'][$key] = $out[3]; + } + unset($_GET['filters']); + if (!empty($_GET['filter'])) { + Util::redirect('?' . http_build_query($_GET)); + } + } + private function wol() { if (!Module::isAvailable('rebootcontrol')) @@ -201,7 +223,7 @@ class Page_Statistics extends Page $sortColumn = Request::any('sortColumn'); $sortDirection = Request::any('sortDirection'); - $filters = StatisticsFilter::parseQuery(StatisticsFilter::getQuery()); + $filters = StatisticsFilter::parseQuery(); $filterSet = new StatisticsFilterSet($filters); $filterSet->setSort($sortColumn, $sortDirection); -- cgit v1.2.3-55-g7522