From e281315cd2dcd03a53d313f731781efefb10ad5d Mon Sep 17 00:00:00 2001
From: Karl Hasselbring <karl@suma-ev.de>
Date: Fri, 10 Aug 2018 10:27:30 +0200
Subject: [PATCH] =?UTF-8?q?Spezielle=20Fehlermeldung=20f=C3=BCr=20leere=20?=
 =?UTF-8?q?Seitensuche=20eingef=C3=BCgt?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/MetaGer.php                        | 24 +++++++++++++++--------
 resources/lang/de/metaGer.php          | 27 +++++++++++++-------------
 resources/views/parts/errors.blade.php |  4 ++--
 3 files changed, 32 insertions(+), 23 deletions(-)

diff --git a/app/MetaGer.php b/app/MetaGer.php
index 0a509284e..fc7c408c1 100644
--- a/app/MetaGer.php
+++ b/app/MetaGer.php
@@ -3,12 +3,12 @@ namespace App;
 
 use App;
 use Cache;
+use Carbon;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Redis;
 use Jenssegers\Agent\Agent;
 use LaravelLocalization;
 use Log;
-use Carbon;
 use Predis\Connection\ConnectionException;
 
 class MetaGer
@@ -53,6 +53,7 @@ class MetaGer
     protected $domainsBlacklisted = [];
     protected $urlsBlacklisted = [];
     protected $url;
+    protected $fullUrl;
     protected $languageDetect;
     protected $verificationId;
     protected $verificationCount;
@@ -306,7 +307,12 @@ class MetaGer
         }
 
         if (count($this->results) <= 0) {
-            $this->errors[] = trans('metaGer.results.failed');
+            if (strlen($this->site) > 0) {
+                $no_sitesearch_query = str_replace(urlencode("site:" . $this->site), "", $this->fullUrl);
+                $this->errors[] = trans('metaGer.results.failedSitesearch', ['altSearch' => $no_sitesearch_query]);
+            } else {
+                $this->errors[] = trans('metaGer.results.failed');
+            }
         }
 
         if ($this->canCache() && isset($this->next) && count($this->next) > 0 && count($this->results) > 0) {
@@ -453,10 +459,11 @@ class MetaGer
         return $results;
     }
 
-    public function humanVerification($results){
+    public function humanVerification($results)
+    {
         # Let's check if we need to implement a redirect for human verification
-        if($this->verificationCount > 10){
-            foreach($results as $result){
+        if ($this->verificationCount > 10) {
+            foreach ($results as $result) {
                 $link = $result->link;
                 $day = Carbon::now()->day;
                 $pw = md5($this->verificationId . $day . $link . env("PROXY_PASSWORD"));
@@ -464,7 +471,7 @@ class MetaGer
                 $result->link = $url;
             }
             return $results;
-        }else{
+        } else {
             return $results;
         }
     }
@@ -941,6 +948,7 @@ class MetaGer
             $request->replace($input);
         }
         $this->url = $request->url();
+        $this->fullUrl = $request->fullUrl();
         # Zunächst überprüfen wir die eingegebenen Einstellungen:
         # Fokus
         $this->fokus = $request->input('focus', 'web');
@@ -955,7 +963,7 @@ class MetaGer
         }
         # Sucheingabe
         $this->eingabe = trim($request->input('eingabe', ''));
-        $this->q       = $this->eingabe;
+        $this->q = $this->eingabe;
         # IP
         $this->ip = $request->ip();
         # Unser erster Schritt wird sein, IP-Adresse und USER-Agent zu anonymisieren, damit
@@ -1230,7 +1238,7 @@ class MetaGer
         $tmp = $this->q;
         // matches '[... ]"test satz"[ ...]'
         while (preg_match("/(^|.+\s)\"(.+)\"(?:\s(.+)|($))/si", $tmp, $match)) {
-            $tmp             = $match[1] . $match[3];
+            $tmp = $match[1] . $match[3];
             $this->phrases[] = $match[2];
         }
         foreach ($this->phrases as $phrase) {
diff --git a/resources/lang/de/metaGer.php b/resources/lang/de/metaGer.php
index 60c52e0ac..4668449ec 100644
--- a/resources/lang/de/metaGer.php
+++ b/resources/lang/de/metaGer.php
@@ -1,22 +1,23 @@
 <?php
 
 return [
-    'results.failed'           => 'Leider konnten wir zu Ihrer Sucheingabe keine passenden Ergebnisse finden.',
+    'results.failed' => 'Leider konnten wir zu Ihrer Sucheingabe keine passenden Ergebnisse finden.',
+    'results.failedSitesearch' => 'Leider konnten wir zu Ihrer Sucheingabe keine passenden Ergebnisse finden. Dies könnte daran liegen, dass Sie aktuell eine Suche ausführen, die sich auf Ergebnisse der Seite ":site" beschränkt. Wenn sie diese beschränkung entfernen möchten, klicken Sie hier: <a href=":altSearch">Neue Suche</a>',
 
-    'settings.noneSelected'    => 'Achtung: Sie haben in ihren Einstellungen keine Suchmaschine ausgewählt.',
+    'settings.noneSelected' => 'Achtung: Sie haben in ihren Einstellungen keine Suchmaschine ausgewählt.',
 
-    'engines.noParser'         => 'Beim Abfragen von :engine ist ein Fehler aufgetreten. Bitte benachrichtigen Sie uns unter: office@suma-ev.de',
+    'engines.noParser' => 'Beim Abfragen von :engine ist ein Fehler aufgetreten. Bitte benachrichtigen Sie uns unter: office@suma-ev.de',
 
-    'formdata.cantLoad'        => 'Suma-File konnte nicht gefunden werden',
-    'formdata.noSearch'        => 'Achtung: Sie haben keinen Suchbegriff eingegeben. Sie können ihre Suchbegriffe oben eingeben und es erneut versuchen.',
-    'formdata.dartEurope'      => 'Hinweis: Sie haben Dart-Europe aktiviert. Die Suche kann deshalb länger dauern und die maximale Suchzeit wurde auf 10 Sekunden hochgesetzt.',
-    'formdata.hostBlacklist'   => 'Ergebnisse von folgenden Hosts werden nicht angezeigt: ":host"',
+    'formdata.cantLoad' => 'Suma-File konnte nicht gefunden werden',
+    'formdata.noSearch' => 'Achtung: Sie haben keinen Suchbegriff eingegeben. Sie können ihre Suchbegriffe oben eingeben und es erneut versuchen.',
+    'formdata.dartEurope' => 'Hinweis: Sie haben Dart-Europe aktiviert. Die Suche kann deshalb länger dauern und die maximale Suchzeit wurde auf 10 Sekunden hochgesetzt.',
+    'formdata.hostBlacklist' => 'Ergebnisse von folgenden Hosts werden nicht angezeigt: ":host"',
     'formdata.domainBlacklist' => 'Ergebnisse von folgenden Domains werden nicht angezeigt: ":domain"',
-    'formdata.urlBlacklist'    => 'Ergebnisse mit URLs, die ":url" beinhalten, werden nicht angezeigt',
-    'formdata.stopwords'       => 'Sie machen eine Ausschlusssuche. Ergebnisse mit folgenden Wörtern werden nicht angezeigt: ":stopwords"',
-    'formdata.phrase'          => 'Sie führen eine Phrasensuche durch: :phrase',
+    'formdata.urlBlacklist' => 'Ergebnisse mit URLs, die ":url" beinhalten, werden nicht angezeigt',
+    'formdata.stopwords' => 'Sie machen eine Ausschlusssuche. Ergebnisse mit folgenden Wörtern werden nicht angezeigt: ":stopwords"',
+    'formdata.phrase' => 'Sie führen eine Phrasensuche durch: :phrase',
 
-    'sitesearch.failed'        => 'Sie wollten eine Sitesearch auf :site durchführen. Leider unterstützen die eingestellten Suchmaschinen diese nicht. Sie können die Sitesearch im Web-Fokus durchführen. Es werden ihnen Ergebnisse ohne Sitesearch angezeigt.',
-    'sitesearch.success'       => 'Sie führen eine Sitesearch durch. Es werden nur Ergebnisse von der Seite: ":site" angezeigt.',
-    'feedback'                 => 'Nichts Passendes dabei? Geben Sie uns Feedback: ',
+    'sitesearch.failed' => 'Sie wollten eine Sitesearch auf :site durchführen. Leider unterstützen die eingestellten Suchmaschinen diese nicht. Sie können die Sitesearch im Web-Fokus durchführen. Es werden ihnen Ergebnisse ohne Sitesearch angezeigt.',
+    'sitesearch.success' => 'Sie führen eine Sitesearch durch. Es werden nur Ergebnisse von der Seite: ":site" angezeigt.',
+    'feedback' => 'Nichts Passendes dabei? Geben Sie uns Feedback: ',
 ];
diff --git a/resources/views/parts/errors.blade.php b/resources/views/parts/errors.blade.php
index cf1e826af..f40b8b0ef 100644
--- a/resources/views/parts/errors.blade.php
+++ b/resources/views/parts/errors.blade.php
@@ -3,8 +3,8 @@
 	<div class="alert alert-danger">
 		<ul>
 			@foreach($errors as $error)
-				<li>{{ $error }}</li>
+				<li>{!! $error !!}</li>
 			@endforeach
 		</ul>
 	</div>
-@endif
\ No newline at end of file
+@endif
-- 
GitLab