Skip to content

Commit

Permalink
Merge pull request #8317 from piwik/8071_tracker_req_handler
Browse files Browse the repository at this point in the history
Refs #8071, refactor tracker code for clarity, modularity and so plugins can have more granular control over tracking. Introduce RequestProcessor & request metadata concepts & use to split up Visit::handle() method so tracking logic is located in the relevant plugins.
  • Loading branch information
diosmosis committed Aug 7, 2015
2 parents 08f113d + 186a5b7 commit 7829898
Show file tree
Hide file tree
Showing 46 changed files with 1,872 additions and 839 deletions.
1 change: 1 addition & 0 deletions config/global.ini.php
Expand Up @@ -777,6 +777,7 @@
Plugins[] = BulkTracking
Plugins[] = Resolution
Plugins[] = DevicePlugins
Plugins[] = Heartbeat
Plugins[] = Intl

[PluginsInstalled]
Expand Down
13 changes: 13 additions & 0 deletions config/global.php
Expand Up @@ -72,4 +72,17 @@
'tld' => false,
))));
},

// contains RequestProcessor instances, currently used by Piwik\Tracker\Visit
'tracker.request.processors' => array(),

'Piwik\Tracker\VisitorRecognizer' => DI\object()
->constructorParameter('trustCookiesOnly', DI\get('ini.Tracker.trust_visitors_cookies'))
->constructorParameter('visitStandardLength', DI\get('ini.Tracker.visit_standard_length'))
->constructorParameter('lookbackNSecondsCustom', DI\get('ini.Tracker.window_look_back_for_visitor'))
->constructorParameter('trackerAlwaysNewVisitor', DI\get('ini.Debug.tracker_always_new_visitor')),

'Piwik\Tracker\Settings' => DI\object()
->constructorParameter('isSameFingerprintsAcrossWebsites', DI\get('ini.Tracker.enable_fingerprinting_across_websites')),

);
1 change: 1 addition & 0 deletions core/API/DocumentationGenerator.php
Expand Up @@ -290,6 +290,7 @@ public function getExampleUrl($class, $methodName, $parametersToSet = array())
$aParameters['pivotByColumnLimit'] = false;
$aParameters['disable_queued_filters'] = false;
$aParameters['disable_generic_filters'] = false;
$aParameters['expanded'] = false;

$moduleName = Proxy::getInstance()->getModuleNameFromClassName($class);
$aParameters = array_merge(array('module' => 'API', 'method' => $moduleName . '.' . $methodName), $aParameters);
Expand Down
14 changes: 14 additions & 0 deletions core/Plugin.php
Expand Up @@ -450,6 +450,20 @@ public static function getPluginNameFromNamespace($namespaceOrClassName)
}
}

/**
* Override this method in your plugin class if you want your plugin to be loaded during tracking.
*
* Note: If you define your own dimension or handle a tracker event, your plugin will automatically
* be detected as a tracker plugin.
*
* @return bool
* @internal
*/
public function isTrackerPlugin()
{
return false;
}

/**
* @param $directoryWithinPlugin
* @param $expectedSubclass
Expand Down
4 changes: 4 additions & 0 deletions core/Plugin/Manager.php
Expand Up @@ -1102,6 +1102,10 @@ public function isTrackerPlugin(Plugin $plugin)
return true;
}

if ($plugin->isTrackerPlugin()) {
return true;
}

return false;
}

Expand Down

0 comments on commit 7829898

Please sign in to comment.