From 9f010b038c0638dccc0a53df4f9638b6cbf21709 Mon Sep 17 00:00:00 2001 From: Karl <Karl Hasselbring> Date: Thu, 22 Sep 2016 09:53:32 +0200 Subject: [PATCH] Automatische Auswahl des Ergebnistabs funktioniert wieder und ist kommentiert --- app/MetaGer.php | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/app/MetaGer.php b/app/MetaGer.php index 91b12586d..54f070f20 100644 --- a/app/MetaGer.php +++ b/app/MetaGer.php @@ -543,26 +543,27 @@ class MetaGer $this->retrieveResults($engines); } + # Passt den Suchfokus an, falls für einen Fokus genau alle vorhandenen Sumas eingeschaltet sind public function adjustFocus($sumas, $enabledSearchengines) { - # Jetzt werden noch alle Kategorien der Settings durchgegangen und die jeweils enthaltenen namen der Suchmaschinen gespeichert. - $foki = []; + # Findet für alle Foki die enthaltenen Sumas + $foki = []; # [fokus][suma] => [suma] foreach ($sumas as $suma) { if ((!isset($suma['disabled']) || $suma['disabled'] === "") && (!isset($suma['userSelectable']) || $suma['userSelectable']->__toString() === "1")) { if (isset($suma['type'])) { - $f = explode(",", $suma['type']->__toString()); - foreach ($f as $tmp) { - $name = $suma['name']->__toString(); - $foki[$tmp][$suma['name']->__toString()] = $name; + # Wenn foki für diese Suchmaschine angegeben sind + $focuses = explode(",", $suma['type']->__toString()); + foreach ($focuses as $foc) { + $foki[$foc][] = $suma['name']->__toString(); } } else { - $name = $suma['name']->__toString(); - $foki["andere"][$suma['name']->__toString()] = $name; + # Wenn keine foki für diese Suchmaschine angegeben sind + $foki["andere"][] = $suma['name']->__toString(); } } } - # Es werden auch die Namen der aktuell aktiven Suchmaschinen abgespeichert. + # Findet die Namen der aktuell eingeschalteten Sumas $realEngNames = []; foreach ($enabledSearchengines as $realEng) { $nam = $realEng["name"]->__toString(); @@ -572,22 +573,25 @@ class MetaGer } # Anschließend werden diese beiden Listen verglichen (jeweils eine der Fokuslisten für jeden Fokus), um herauszufinden ob sie vielleicht identisch sind. Ist dies der Fall, so hat der Nutzer anscheinend Suchmaschinen eines kompletten Fokus eingestellt. Der Fokus wird dementsprechend angepasst. - foreach ($foki as $fok => $engs) { + foreach ($foki as $fok => $engines) { $isFokus = true; $fokiEngNames = []; - foreach ($engs as $eng) { + foreach ($engines as $eng) { $fokiEngNames[] = $eng; } + # Jede eingeschaltete Engine ist für diesen Fokus geeignet foreach ($fokiEngNames as $fen) { if (!in_array($fen, $realEngNames)) { $isFokus = false; } } + # Jede im Fokus erwartete Engine ist auch eingeschaltet foreach ($realEngNames as $ren) { if (!in_array($ren, $fokiEngNames)) { $isFokus = false; } } + # Wenn die Listen identisch sind, setze den Fokus um if ($isFokus) { $this->fokus = $fok; } -- GitLab