@robocoder opened this issue on May 21st 2010

At 23:55 PM EDT on May 20th, I ran misc/generateVisits.php. Looking in piwik_log_visit, the visits were generated for May 21st and May 22nd.

(daysToCompute is 1)

@julienmoumne commented on May 22nd 2010

Attachment: piwik.patch

@julienmoumne commented on May 22nd 2010

To override default behaviors of a visit a subclass of /core/Tracker/Visit.php has been created : /core/Tracker/Generator/Visit.php.

This extension allows a fake generated timestamp to be assigned to a visit. In order to do so, an overridden method has been created in /core/Tracker/Generator/Visit.php : 33

    protected function getCurrentTimestamp()
    {
        self::$timestampToUse = max(@$this->visitorInfo['visit_last_action_time'],self::$timestampToUse);
        self::$timestampToUse += mt_rand(4,1840);
        return self::$timestampToUse;
    }

In /core/Tracker/Visit.php : 226, 254, 290, 356, 427, 572, 773 and 804, the method getCurrentTimestamp() is called.

The method getCurrentTimestamp() of class /core/Tracker/Visit.php is supposed to be an accessor method and not a computational one. Each call of the overridden method getCurrentTimestamp() of class /core/Tracker/Generator/Visit.php computes a new timestamp instead of reusing the first generated one. Because of those unnecessary increments, the time goes too much ahead.

Proposal: Remove the time increment from getCurrentTimestamp() and add a generateTimestamp() method. I have attached a patch to solve this issue. I have decided to access this method from /core/Tracker/Generator/Tracker.php after the creation of the visit. It could be done in the constructor of /core/Tracker/Generator/Visit.php.

@mattab commented on May 24th 2010

(In [2211]) Fixes #1369 Thanks JulienM!

This issue was closed on May 24th 2010
Powered by GitHub Issue Mirror