From 44b7eda156bb44fc4771196d5b12f2b539d32f05 Mon Sep 17 00:00:00 2001
From: Dominik Hebeler <dominik@suma-ev.de>
Date: Mon, 15 Jul 2024 16:31:38 +0200
Subject: [PATCH] disable script completely if disabled in config

---
 metager/resources/js/scriptResultPage.js              | 1 -
 metager/resources/js/statistics.js                    | 5 +++++
 metager/resources/js/utility.js                       | 1 -
 metager/resources/views/layouts/resultPage.blade.php  | 1 +
 metager/resources/views/layouts/staticPages.blade.php | 1 +
 5 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/metager/resources/js/scriptResultPage.js b/metager/resources/js/scriptResultPage.js
index 11d4f07b6..a3fc3ea42 100644
--- a/metager/resources/js/scriptResultPage.js
+++ b/metager/resources/js/scriptResultPage.js
@@ -85,7 +85,6 @@ function initialize() {
 
     let promise_fetch = verify();
     if (typeof promise_fetch !== "undefined" && link !== "#") {
-      console.log(link);
       promise_fetch.then((response) => {
         if (!newtab) {
           if (top) {
diff --git a/metager/resources/js/statistics.js b/metager/resources/js/statistics.js
index 308957a27..5a9df338e 100644
--- a/metager/resources/js/statistics.js
+++ b/metager/resources/js/statistics.js
@@ -8,6 +8,10 @@ class Statistics {
 
     constructor() {
         let performance = window.performance.getEntriesByType('navigation')[0];
+        try {
+            let statistics_enabled = document.querySelector("meta[name=statistics-enabled]").content;
+            if (statistics_enabled != 1) return;    // Disable statistics if those are not enabled
+        } catch (error) { }
         if (performance.loadEventEnd != 0) {
             this.#init();
         } else {
@@ -24,6 +28,7 @@ class Statistics {
 
     #init() {
         setTimeout(this.pageLoad.bind(this), 60000);
+        document.addEventListener("visibilitychange", this.pageLoad.bind(this));
         document.querySelectorAll("a").forEach(anchor => {
             anchor.addEventListener("click", e => this.pageLeave(e.target.closest("a").href));
         });
diff --git a/metager/resources/js/utility.js b/metager/resources/js/utility.js
index 0f5001337..1ffad047f 100644
--- a/metager/resources/js/utility.js
+++ b/metager/resources/js/utility.js
@@ -63,7 +63,6 @@ function reportJSAvailabilityForAuthenticatedSearch() {
 function backButtons() {
   document.querySelectorAll(".back-button").forEach(button => {
     button.style.display = "block";
-    console.log(button);
     button.addEventListener("click", e => {
       let href = button.href;
       // Use the defined URL on the button if there is one
diff --git a/metager/resources/views/layouts/resultPage.blade.php b/metager/resources/views/layouts/resultPage.blade.php
index 33825f95c..862b848e8 100644
--- a/metager/resources/views/layouts/resultPage.blade.php
+++ b/metager/resources/views/layouts/resultPage.blade.php
@@ -58,6 +58,7 @@
     <meta name="searchkey" content="{{ $metager->getSearchUid() }}" />
     <meta name="referrer" content="origin-when-cross-origin">
     <meta name="age-meta-label" content="age=18" />
+    <meta name="statistics-enabled" content="{{ config("metager.matomo.enabled") }}">
     {{-- Add Advertisement Scripts if Yahoo is enabled --}}
     @if (app(\App\Models\Configuration\Searchengines::class)->getEnabledSearchengine('yahoo') !== null)
         <meta name="source_tag"
diff --git a/metager/resources/views/layouts/staticPages.blade.php b/metager/resources/views/layouts/staticPages.blade.php
index f399d8ac5..ba139a478 100644
--- a/metager/resources/views/layouts/staticPages.blade.php
+++ b/metager/resources/views/layouts/staticPages.blade.php
@@ -11,6 +11,7 @@
 	<meta name="revisit-after" content="7 days" />
 	<meta name="audience" content="all" />
 	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
+	<meta name="statistics-enabled" content="{{ config("metager.matomo.enabled") }}">
 	<link href="/favicon.ico" rel="icon" type="image/x-icon" />
 	<link href="/favicon.ico" rel="shortcut icon" type="image/x-icon" />
 	@foreach(LaravelLocalization::getSupportedLocales() as $locale => $locale_data)
-- 
GitLab