Added a hard-cap for visit tracker dates
authorAlexander Ebert <ebert@woltlab.com>
Mon, 29 Jan 2018 11:07:20 +0000 (12:07 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Mon, 29 Jan 2018 11:07:20 +0000 (12:07 +0100)
Fixes #2522

wcfsetup/install/files/lib/system/visitTracker/VisitTracker.class.php

index 432c3621452d5498c3c1bf9c352400d93b4af59a..06bfd90976843997caa5f8c18ccf32be80b520f8 100644 (file)
@@ -94,15 +94,19 @@ class VisitTracker extends SingletonFactory {
                        }
                }
                
-               if (isset($this->userVisits[$objectTypeID])) {
-                       return $this->userVisits[$objectTypeID];
-               }
+               $lifetime = ($this->availableObjectTypes[$objectType]->lifetime) ?: self::DEFAULT_LIFETIME;
+               $minimum = TIME_NOW - $lifetime;
                
-               if ($this->availableObjectTypes[$objectType]->lifetime) {
-                       return TIME_NOW - $this->availableObjectTypes[$objectType]->lifetime;
+               if (isset($this->userVisits[$objectTypeID])) {
+                       // double times the lifetime period for existing visit data;
+                       // equals 2 weeks for the default lifetime of 7 days
+                       $minimum -= $lifetime;
+                       
+                       // using `max()` here will yield the most recent point in time
+                       return max($this->userVisits[$objectTypeID], $minimum);
                }
                
-               return TIME_NOW - self::DEFAULT_LIFETIME;
+               return $minimum;
        }
        
        /**