diff options
| author | Christian Weiske <cweiske@cweiske.de> | 2016-02-03 17:23:06 +0100 |
|---|---|---|
| committer | Christian Weiske <cweiske@cweiske.de> | 2016-02-03 17:23:06 +0100 |
| commit | e5c7780adb59e8038a040a1e534a4cee1fac8cd8 (patch) | |
| tree | 2f8be5ac975398a7cb1084dd13c9350514119d85 /www/index.php | |
| parent | 226508cd8d3e8c147ad314a0de483e08be71c254 (diff) | |
| download | phinde-e5c7780adb59e8038a040a1e534a4cee1fac8cd8.tar.gz phinde-e5c7780adb59e8038a040a1e534a4cee1fac8cd8.zip | |
filtering works
Diffstat (limited to 'www/index.php')
| -rw-r--r-- | www/index.php | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/www/index.php b/www/index.php index 8cdca41..257ad87 100644 --- a/www/index.php +++ b/www/index.php @@ -18,6 +18,8 @@ if (isset($_GET['page'])) { } $perPage = 10;//$GLOBALS['phinde']['perPage']; +$baseLink = '?q=' . urlencode($query); + $filters = array(); if (isset($_GET['filter'])) { $allowedFilter = array('domain', 'language', 'tags', 'term'); @@ -27,13 +29,37 @@ if (isset($_GET['filter'])) { } } } +$activeFilters = array(); +foreach ($filters as $type => $value) { + $activeFilters[$type] = array( + 'label' => $value, + 'removeUrl' => buildLink($baseLink, $filters, $type, null), + ); +} + +function buildLink($baseLink, $filters, $addFilterType, $addFilterValue) +{ + if ($addFilterValue === null) { + if (array_key_exists($addFilterType, $filters)) { + unset($filters[$addFilterType]); + } + } else { + $filters[$addFilterType] = $addFilterValue; + } + + $params = http_build_query(array('filter' => $filters)); + if (strlen($params)) { + return $baseLink . '&' . $params; + } + return $baseLink; +} $es = new Elasticsearch($GLOBALS['phinde']['elasticsearch']); $res = $es->search($query, $filters, $page, $perPage); $pager = new Html_Pager( $res->hits->total, $perPage, $page + 1, - '?q=' . $query + $baseLink ); foreach ($res->hits->hits as &$hit) { @@ -48,11 +74,9 @@ foreach ($res->hits->hits as &$hit) { } } -$baseLink = '?q=' . urlencode($query); foreach ($res->aggregations as $key => &$aggregation) { foreach ($aggregation->buckets as &$bucket) { - $bucket->url = $baseLink - . '&filter[' . urlencode($key) . ']=' . urlencode($bucket->key); + $bucket->url = buildLink($baseLink, $filters, $key, $bucket->key); } } //var_dump($res->aggregations); @@ -64,6 +88,7 @@ render( 'hitcount' => $res->hits->total, 'hits' => $res->hits->hits, 'aggregations' => $res->aggregations, + 'activeFilters' => $activeFilters, 'pager' => $pager ) ); |
