From 2cab70c7dc441b931becc720bea8561dbf5f0443 Mon Sep 17 00:00:00 2001
From: Dominik Hebeler <dominik@suma-ev.de>
Date: Thu, 23 Jan 2020 13:54:58 +0100
Subject: [PATCH] Fixed resultloader

---
 app/Http/Controllers/MetaGerSearch.php | 37 ++++++++++++++++----------
 app/MetaGer.php                        |  1 +
 app/Models/Searchengine.php            |  4 +--
 resources/js/scriptResultPage.js       |  2 +-
 4 files changed, 27 insertions(+), 17 deletions(-)

diff --git a/app/Http/Controllers/MetaGerSearch.php b/app/Http/Controllers/MetaGerSearch.php
index 377de9311..134b92bed 100644
--- a/app/Http/Controllers/MetaGerSearch.php
+++ b/app/Http/Controllers/MetaGerSearch.php
@@ -63,7 +63,15 @@ class MetaGerSearch extends Controller
         # Ergebnisse der Suchmaschinen kombinieren:
         $metager->prepareResults();
 
-        \App\CacheHelper::put($metager->getSearchUid(), $metager->getEngines(), 1 * 60);
+        $finished = true;
+        foreach ($metager->getEngines() as $engine) {
+            if ($engine->loaded) {
+                $engine->setNew(false);
+                $engine->markNew();
+            }
+        }
+
+        \App\CacheHelper::put("loader_" . $metager->getSearchUid(), $metager->getEngines(), 60 * 60);
 
         # Die Ausgabe erstellen:
         $resultpage = $metager->createView($quicktipResults);
@@ -112,18 +120,7 @@ class MetaGerSearch extends Controller
             return response()->json(['finished' => true]);
         }
 
-        // Mark all engines that are already loaded
-        $finished = true;
-        foreach ($engines as $engine) {
-            if ($engine->loaded) {
-                $engine->setNew(false);
-            } else {
-                $finished = false;
-                $engine->setNew(true);
-            }
-        }
-
-        $metager = new MetaGer($hash);
+        $metager = new MetaGer(substr($hash, strpos($hash, "loader_") + 7));
 
         $metager->parseFormData($request);
         # Nach Spezialsuchen überprüfen:
@@ -156,8 +153,20 @@ class MetaGerSearch extends Controller
             }
         }
 
+        $finished = true;
+        foreach ($engines as $engine) {
+            if (!$engine->loaded) {
+                $finished = false;
+            } else {
+                $engine->setNew(false);
+                $engine->markNew();
+            }
+        }
+
+        $result["finished"] = $finished;
+
         // Update new Engines
-        \App\CacheHelper::put($metager->getSearchUid(), $metager->getEngines(), 1 * 60);
+        \App\CacheHelper::put("loader_" . $metager->getSearchUid(), $metager->getEngines(), 1 * 60);
         return response()->json($result);
     }
 
diff --git a/app/MetaGer.php b/app/MetaGer.php
index 6ff0a640c..01b358aae 100644
--- a/app/MetaGer.php
+++ b/app/MetaGer.php
@@ -71,6 +71,7 @@ class MetaGer
     protected $verificationCount;
     protected $searchUid;
     protected $redisResultWaitingKey, $redisResultEngineList, $redisEngineResult, $redisCurrentResultList;
+    public $starttime;
 
     public function __construct($hash = "")
     {
diff --git a/app/Models/Searchengine.php b/app/Models/Searchengine.php
index a37e1ab72..e8a7a4817 100644
--- a/app/Models/Searchengine.php
+++ b/app/Models/Searchengine.php
@@ -51,7 +51,7 @@ abstract class Searchengine
 
         $this->useragent = $metager->getUserAgent();
         $this->ip = $metager->getIp();
-        $this->startTime = microtime();
+        $this->startTime = microtime(true);
         # check for http Auth
         if (!empty($this->engine->{"http-auth-credentials"}->username) && !empty($this->engine->{"http-auth-credentials"}->password)) {
             $this->username = $this->engine->{"http-auth-credentials"}->username;
@@ -192,7 +192,7 @@ abstract class Searchengine
         }
     }
 
-    protected function markNew()
+    public function markNew()
     {
         foreach ($this->results as $result) {
             $result->new = $this->new;
diff --git a/resources/js/scriptResultPage.js b/resources/js/scriptResultPage.js
index 7efde427d..9e899d7da 100644
--- a/resources/js/scriptResultPage.js
+++ b/resources/js/scriptResultPage.js
@@ -55,7 +55,7 @@ function enableFormResetter() {
 function loadMoreResults() {
   var searchKey = $("meta[name=searchkey]").attr("content");
   var updateUrl = document.location.href;
-  updateUrl += "&loadMore=" + searchKey + "&script=yes";
+  updateUrl += "&loadMore=loader_" + searchKey + "&script=yes";
 
   updateUrl = updateUrl.replace("/meta.ger3", "/loadMore");
 
-- 
GitLab