aboutsummaryrefslogtreecommitdiff
path: root/www/index.php
diff options
context:
space:
mode:
authorChristian Weiske <cweiske@cweiske.de>2016-02-03 17:23:06 +0100
committerChristian Weiske <cweiske@cweiske.de>2016-02-03 17:23:06 +0100
commite5c7780adb59e8038a040a1e534a4cee1fac8cd8 (patch)
tree2f8be5ac975398a7cb1084dd13c9350514119d85 /www/index.php
parent226508cd8d3e8c147ad314a0de483e08be71c254 (diff)
downloadphinde-e5c7780adb59e8038a040a1e534a4cee1fac8cd8.tar.gz
phinde-e5c7780adb59e8038a040a1e534a4cee1fac8cd8.zip
filtering works
Diffstat (limited to 'www/index.php')
-rw-r--r--www/index.php33
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
)
);