From 13560440cced730e29e8b03b491abd1f6bcc1c04 Mon Sep 17 00:00:00 2001
From: Dominik Pfennig <dominik@suma-ev.de>
Date: Thu, 28 Jul 2016 08:39:37 +0200
Subject: [PATCH] =?UTF-8?q?Phrasensuche=20schlie=C3=9Ft=20wieder=20fehlerh?=
 =?UTF-8?q?afte=20Ergebnisse=20aus?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/MetaGer.php       | 19 +++++++++++++++++--
 app/Models/Result.php |  8 ++++++++
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/app/MetaGer.php b/app/MetaGer.php
index 8a76b4387..eb38412bb 100644
--- a/app/MetaGer.php
+++ b/app/MetaGer.php
@@ -696,9 +696,19 @@ class MetaGer
 		}
 
 		# Meldung über eine Phrasensuche
-		if(preg_match("/\"(.+)\"/si", $this->q, $match)){
-			$this->warnings[] = "Sie führen eine Phrasensuche durch: \"" . $match[1] . "\"";
+        $p = "";
+        $tmp = $this->q;
+		while(preg_match("/(.*)\"(.+)\"(.*)/si", $tmp, $match)){
+            $tmp = $match[1] . $match[3];
+            $this->phrases[] = strtolower($match[2]);
 		}
+        foreach($this->phrases as $phrase)
+        {
+            $p .= "\"$phrase\", ";
+        }
+        $p = rtrim($p, ", ");
+        if(sizeof($this->phrases) > 0)
+            $this->warnings[] = "Sie führen eine Phrasensuche durch: $p";
 	}
 
     public function getFokus ()
@@ -750,6 +760,11 @@ class MetaGer
         return $this->category;
     }
 
+    public function getPhrases ()
+    {
+        return $this->phrases;
+    }
+
     public function getSumaFile ()
     {
         return $this->sumaFile;
diff --git a/app/Models/Result.php b/app/Models/Result.php
index 3845196e9..275a54889 100644
--- a/app/Models/Result.php
+++ b/app/Models/Result.php
@@ -180,6 +180,14 @@ class Result
 			}
 		}
 
+		# Die Strinsuche:
+		$text = strtolower($this->titel) . " " . strtolower($this->descr);
+		foreach($metager->getPhrases() as $phrase)
+		{
+			if(strpos($text, $phrase) === FALSE)
+				return false;
+		}
+
 		# Abschließend noch 2 Überprüfungen. Einmal den Host filter, der Sicherstellt, dass von jedem Host maximal 3 Links angezeigt werden
 		# und dann noch den Dublettefilter, der sicher stellt, dass wir nach Möglichkeit keinen Link doppelt in der Ergebnisliste haben
 		# Diese Überprüfung führen wir unter bestimmten Bedingungen nicht durch:
-- 
GitLab