From 8dd7247cc7b3d25578ab199426754cdfdee84cc5 Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Wed, 7 May 2014 13:39:34 -0400
Subject: [PATCH] Eliminate duplicate filters in "retain" list.

---
 .../src/VuFind/View/Helper/Root/SearchBox.php | 20 ++++++++-----------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/module/VuFind/src/VuFind/View/Helper/Root/SearchBox.php b/module/VuFind/src/VuFind/View/Helper/Root/SearchBox.php
index 7a0f06272dc..6eda1ad88b2 100644
--- a/module/VuFind/src/VuFind/View/Helper/Root/SearchBox.php
+++ b/module/VuFind/src/VuFind/View/Helper/Root/SearchBox.php
@@ -128,25 +128,21 @@ class SearchBox extends \Zend\View\Helper\AbstractHelper
     public function getFilterDetails($filterList, $checkboxFilters)
     {
         $results = array();
-        $i = 0;
         foreach ($filterList as $field => $data) {
             foreach ($data as $value) {
-                $results[] = array(
-                    'id' => 'applied_filter_' . ++$i,
-                    'value' => "$field:\"$value\""
-                );
+                $results[] = "$field:\"$value\"";
             }
         }
-        $i = 0;
         foreach ($checkboxFilters as $current) {
-            if ($current['selected']) {
-                $results[] = array(
-                    'id' => 'applied_checkbox_filter_' . ++$i,
-                    'value' => $current['filter']
-                );
+            if ($current['selected'] && !in_array($current['filter'], $results)) {
+                $results[] = $current['filter'];
             }
         }
-        return $results;
+        $final = array();
+        foreach ($results as $i => $val) {
+            $final[] = array('id' => 'applied_filter_' . ($i + 1), 'value' => $val);
+        }
+        return $final;
     }
 
     /**
-- 
GitLab