From 8dd6ffbe81e4107102cd56eb5bc6bc2d67b500c0 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Wed, 20 Apr 2022 15:57:32 +0000
Subject: [PATCH] adjust queries to avoid 'Numeric value out of range' error,
 fixes #894

Closes #894
---
 lib/classes/FilesSearch/FilesIndexManager.php | 2 +-
 lib/classes/Score.class.php                   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/classes/FilesSearch/FilesIndexManager.php b/lib/classes/FilesSearch/FilesIndexManager.php
index 818bb21a778..9f762d5e60a 100644
--- a/lib/classes/FilesSearch/FilesIndexManager.php
+++ b/lib/classes/FilesSearch/FilesIndexManager.php
@@ -197,7 +197,7 @@ class FilesIndexManager
     private static function relevance($base, $modifier)
     {
         // 31556926 is the number of seconds in one year
-        return "POW( $base , ((UNIX_TIMESTAMP() - $modifier ) / 31556926)) AS relevance";
+        return "POW( $base , ((UNIX_TIMESTAMP() - CAST($modifier AS SIGNED)) / 31556926)) AS relevance";
     }
 
     /**
diff --git a/lib/classes/Score.class.php b/lib/classes/Score.class.php
index ededb7ec71e..5fa80d9b1e6 100644
--- a/lib/classes/Score.class.php
+++ b/lib/classes/Score.class.php
@@ -25,7 +25,7 @@ class Score
         $query = "SELECT nr.range_id as user_id, COUNT(*) AS newscount
                   FROM news_range AS nr
                   INNER JOIN news AS n ON (nr.news_id = n.news_id)
-                  WHERE nr.range_id IN (?) AND (UNIX_TIMESTAMP() - n.date) <= n.expire
+                  WHERE nr.range_id IN (?) AND UNIX_TIMESTAMP() <= n.date + n.expire
                   GROUP BY nr.range_id
                   ORDER BY NULL";
         $statement = DBManager::get()->prepare($query);
-- 
GitLab