From e98d83b661ffdfc6cc140b21f228536d7fd93613 Mon Sep 17 00:00:00 2001
From: karl <karl@suma-ev.de>
Date: Wed, 27 Jul 2016 10:27:42 +0200
Subject: [PATCH] =?UTF-8?q?Der=20Suchfokus=20sollte=20jetzt=20soweit=20ich?=
 =?UTF-8?q?=20das=20testen=20konnte=20automatisch=20eingestellt=20werden,?=
 =?UTF-8?q?=20wenn=20alle=20gew=C3=A4hlten=20Suchmaschinen=20einen=20gemei?=
 =?UTF-8?q?nsamen=20Suchfokus=20haben.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/MetaGer.php | 44 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/app/MetaGer.php b/app/MetaGer.php
index f04aaa7ec..e209e2991 100644
--- a/app/MetaGer.php
+++ b/app/MetaGer.php
@@ -400,7 +400,10 @@ class MetaGer
                 $this->warnings[] = "Sie führen eine Sitesearch durch. Es werden nur Ergebnisse von der Seite: \"" . $this->site . "\" angezeigt.";
             }
 
-        }            
+        }
+
+        $typeslist = [];
+        $counter = 0;
 
 		foreach($enabledSearchengines as $engine){
 
@@ -425,8 +428,47 @@ class MetaGer
                 $engines[] = $tmp;
                 $this->sockets[$tmp->name] = $tmp->fp;
             }
+
+            # Hier wird direkt eine Liste der Fokustypen erstellt, die bei der Suche verwendet werden: [0] => [web, nachrichten]
+            if($engine["name"] !== "overtureAds") {
+                $type = explode(",", $engine["type"]);
+                if(!$type[0] == "") {
+                    $typeslist[$counter++] = $type;
+                }
+            }
+
 		}
 
+        # Jetzt wird geguckt, ob diese Liste überhaupt Typen enthält und für jeden Typen des ersten Eintrags (oder späteren falls dieser "" ist) wird geguckt, ob sich dieser Typ in allen folgenden Einträgen finden lässt. Diese Einträge sind nie "web", da diese Suche meist eh auch möglich ist und ohnehin wie die angepasste Suche funktioniert. Am Ende wird geguckt ob es einen Typen gab, der in allen Elementen enthalten ist. Dieser wird als Fokus gesetzt.
+        if(!empty($typeslist)) {
+            foreach($typeslist as $matchTypeSearch) {
+                if(!empty($matchTypeSearch) && $matchTypeSearch[0] !== "") {
+                    $toMatch = $matchTypeSearch;
+                    break;
+                }
+            }
+            $toMatch = $typeslist[0];
+            array_shift($typeslist);
+            $matchedType = "";
+            foreach($toMatch as $matchType) {
+                if($matchType !== "web" && $matchType !== "") {
+                    $matched = true;
+                    foreach($typeslist as $otherTypes) {
+                        if(!in_array($matchType, $otherTypes)) {
+                            $matched = false;
+                        }
+                    }
+                    if($matched) {
+                        $matchedType = $matchType;
+                        break;
+                    }
+                }
+            }
+            if($matchedType !== "") {
+                $this->fokus = $matchedType;
+            }
+        }
+
         # Nun passiert ein elementarer Schritt.
         # Wir warten auf die Antwort der Suchmaschinen, da wir vorher nicht weiter machen können.
         # aber natürlich nicht ewig.
-- 
GitLab