@lucasHSA opened this Issue on October 9th 2014


it would be nice if the browser-plugin-list of the visitor is updated on each request.

This is the GitHub-Issue for this Forum-Feature-Suggestion.


If the visitor-id (uid, cid or _id) is the same, the detected plugins in the request should be used to update the "log_visit"-table. So the visitor could be found, even if the visitor-id is not present and his plugins changed during his visit.
Example (Actions of one session):

  • The user visits some pages on my website
  • Then he installs a new plugin
  • He visits some more pages on my website
  • He decides to clean his cookies -> the visitor-id gets lost
  • Again he visits some more pages on my website, but the visitor-id is not the same and his browser-plugins have changed.

So the matching by browser finger print and visitor-id fails. If the browser plugin list in the DB would have been updated during his visit, he could be found again.


I'm detecting the browser plugins with some JavaScript code, pass it to the server and track the request on server side (Java). But on the first request the detection has not yet run. So on the first request the visit is saved in the DB whiteout any browser-plugins. On the second request (and all following) the server knows the detected browser-plugins and can pass it to the piwik-tracking-api, but piwik doesn't update the browser-plugin-list of the visit (which was created on the first request).

These are the columns of the table "log_visit" which should be updated:

  • config_id <- should be recalculated after updating the other columns.
  • config_resolution
  • config_pdf
  • config_flash
  • config_java
  • config_director
  • config_quicktime
  • config_realplayer
  • config_windowsmedia
  • config_gears
  • config_silverlight
  • config_cookie

Therefore the function "onExistingVisit()" must be added to the Plugin* - Classes in "piwik / plugins / UserSettings / Columns /". The function would be called from Visit.getExistingVisitFieldsToUpdate() see "piwik / core / Tracker / Visit.php":

namespace Piwik\Plugins\UserSettings\Columns;

class PluginFlash extends VisitDimension
    protected $columnName = 'config_flash';
    protected $columnType = 'TINYINT(1) NOT NULL';

     * <a class='mention' href='https://github.com/param'>@param</a> Request $request
     * <a class='mention' href='https://github.com/param'>@param</a> Visitor $visitor
     * <a class='mention' href='https://github.com/param'>@param</a> Action|null $action
     * <a class='mention' href='https://github.com/return'>@return</a> mixed
    public function onNewVisit(Request $request, Visitor $visitor, $action)
        return Common::getRequestVar('fla', 0, 'int', $request->getParams());

    /* This function is required */
    public function onExistingVisit(Request $request, Visitor $visitor, $action)
        return Common::getRequestVar('fla', 0, 'int', $request->getParams());

Mit freundlichen Grüßen aus Augsburg / Best regards from Augsburg
Software Development
Lucas Kögel

@mattab commented on October 9th 2014 Member

Thanks for the suggestion to improve tracker, it's not high priority but definitely makes sense.

Powered by GitHub Issue Mirror