From c253d9bebf7f6f2f293cd9bd907a5704c5a1d569 Mon Sep 17 00:00:00 2001
From: Dominik Pfennig <dominik@suma-ev.de>
Date: Wed, 6 Jul 2016 14:27:21 +0200
Subject: [PATCH] =?UTF-8?q?Exalead=20Parser=20eingef=C3=BCgt?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/Models/parserSkripte/Exalead.php | 62 ++++++++++++++++++++--------
 1 file changed, 45 insertions(+), 17 deletions(-)

diff --git a/app/Models/parserSkripte/Exalead.php b/app/Models/parserSkripte/Exalead.php
index 66c34fc5a..e0d9ed0db 100644
--- a/app/Models/parserSkripte/Exalead.php
+++ b/app/Models/parserSkripte/Exalead.php
@@ -2,6 +2,7 @@
 
 namespace app\Models\parserSkripte;
 use App\Models\Searchengine;
+use Log;
 
 class Exalead extends Searchengine 
 {
@@ -14,22 +15,49 @@ class Exalead extends Searchengine
 
 	public function loadResults ($result)
 	{
+		$result = preg_replace("/\r\n/si", "", $result);
+		try {
+			$content = simplexml_load_string($result);
+		} catch (\Exception $e) {
+			abort(500, "$result is not a valid xml string");
+		}
 		
-		$title = "";
-		$link = "";
-		$anzeigeLink = $link;
-		$descr = "";
-
-		#die($result);
-
-		/*$this->counter++;
-		$this->results[] = new \App\Models\Result(
-			$title,
-			$link,
-			$anzeigeLink,
-			$descr,
-			$this->gefVon,
-			$this->counter
-		);	*/	
+		if(!$content)
+		{
+			return;
+		}
+		$results = $content;
+		$prefix = ""; $namespace = "";
+		foreach($results->getDocNamespaces() as $strPrefix => $strNamespace) {
+    			if(strlen($strPrefix)==0) {
+			        $prefix="a"; //Assign an arbitrary namespace prefix.
+			}else {
+				$prefix="a";
+			}
+			$namespace = $strNamespace;
+		}
+		$results->registerXPathNamespace($prefix,$namespace);
+		$results = $results->xpath("//a:hits/a:Hit");
+		foreach($results as $result)
+		{
+			$result->registerXPathNamespace($prefix,$namespace);
+			$title = $result->xpath("a:metas/a:Meta[@name='title']/a:MetaString[@name='value']")[0]->__toString();
+			$link = $result->xpath("a:metas/a:Meta[@name='url']/a:MetaString[@name='value']")[0]->__toString();
+			$anzeigeLink = $link;
+			if(sizeOf($result->xpath("a:metas/a:Meta[@name='metadesc']/a:MetaString[@name='value']")) === 0)
+				$descr = "";
+			else
+				$descr = $result->xpath("a:metas/a:Meta[@name='metadesc']/a:MetaString[@name='value']")[0]->__toString();
+			$this->counter++;
+			$this->results[] = new \App\Models\Result(
+				$this->engine,
+				$title,
+				$link,
+				$anzeigeLink,
+				$descr,
+				$this->gefVon,
+				$this->counter
+			);
+		}
 	}
-}
\ No newline at end of file
+}
-- 
GitLab