diff options
author | diosmosis <benaka@piwik.pro> | 2015-07-08 07:50:00 +0300 |
---|---|---|
committer | diosmosis <benaka@piwik.pro> | 2015-08-06 17:37:58 +0300 |
commit | 2ba74fba6bcb83a55963309d05cdc31c9d977103 (patch) | |
tree | 9106e6ed69f4eec27bc8cf608ba8a700171c0f30 /plugins | |
parent | aeb17d5958be81b4588a535c7a7a7a0c97724644 (diff) |
Add new RequestProcessor to Actions plugin for action detection + new RequestProcessor for ping request handling. Ping request handling is performed in new Heartbeat plugin. Also added a new method to Plugin, isTrackerPlugin for plugins to override if they are tracker plugins, but don't have a dimension or implement a tracker method.
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/Actions/Tracker/ActionsRequestProcessor.php | 31 | ||||
-rw-r--r-- | plugins/Actions/config/config.php | 9 | ||||
-rw-r--r-- | plugins/Ecommerce/Tracker/EcommerceRequestProcessor.php | 2 | ||||
-rw-r--r-- | plugins/Goals/Tracker/GoalsRequestProcessor.php | 2 | ||||
-rw-r--r-- | plugins/Heartbeat/Heartbeat.php | 19 | ||||
-rw-r--r-- | plugins/Heartbeat/Tracker/PingRequestProcessor.php | 37 | ||||
-rw-r--r-- | plugins/Heartbeat/config/config.php | 9 | ||||
-rw-r--r-- | plugins/Heartbeat/plugin.json | 3 |
8 files changed, 112 insertions, 0 deletions
diff --git a/plugins/Actions/Tracker/ActionsRequestProcessor.php b/plugins/Actions/Tracker/ActionsRequestProcessor.php new file mode 100644 index 0000000000..5b19b0ac9f --- /dev/null +++ b/plugins/Actions/Tracker/ActionsRequestProcessor.php @@ -0,0 +1,31 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Plugins\Actions\Tracker; + +use Piwik\Tracker\Action; +use Piwik\Tracker\Request; +use Piwik\Tracker\RequestProcessor; +use Piwik\Tracker\Visit\VisitProperties; + +/** + * TODO + * + * TODO: document request metadata here (ie, 'actions') + */ +class ActionsRequestProcessor extends RequestProcessor +{ + public function processRequestParams(VisitProperties $visitProperties, Request $request) + { + // normal page view, potentially triggering a URL matching goal + $action = Action::factory($request); + $action->writeDebugInfo(); + + $visitProperties->setRequestMetadata('Actions', 'action', $action); + } +}
\ No newline at end of file diff --git a/plugins/Actions/config/config.php b/plugins/Actions/config/config.php new file mode 100644 index 0000000000..293acee476 --- /dev/null +++ b/plugins/Actions/config/config.php @@ -0,0 +1,9 @@ +<?php + +return array( + + 'tracker.request.processors' => DI\add(array( + DI\get('Piwik\Plugins\Actions\Tracker\ActionsRequestProcessor'), + )), + +); diff --git a/plugins/Ecommerce/Tracker/EcommerceRequestProcessor.php b/plugins/Ecommerce/Tracker/EcommerceRequestProcessor.php index b5f0064728..41451a043e 100644 --- a/plugins/Ecommerce/Tracker/EcommerceRequestProcessor.php +++ b/plugins/Ecommerce/Tracker/EcommerceRequestProcessor.php @@ -29,6 +29,8 @@ class EcommerceRequestProcessor extends RequestProcessor if ($goalManager->isGoalAnOrder()) { $visitProperties->setRequestMetadata('Goals', 'visitIsConverted', true); } + + $visitProperties->setRequestMetadata('Actions', 'action', null); // don't track actions when tracking ecommerce orders } } }
\ No newline at end of file diff --git a/plugins/Goals/Tracker/GoalsRequestProcessor.php b/plugins/Goals/Tracker/GoalsRequestProcessor.php index ac475e5733..0cadff1a21 100644 --- a/plugins/Goals/Tracker/GoalsRequestProcessor.php +++ b/plugins/Goals/Tracker/GoalsRequestProcessor.php @@ -32,6 +32,8 @@ class GoalsRequestProcessor extends RequestProcessor $visitProperties->setRequestMetadata('Goals', 'someGoalsConverted', $someGoalsConverted); $visitProperties->setRequestMetadata('Goals', 'visitIsConverted', $someGoalsConverted); + $visitProperties->setRequestMetadata('Actions', 'action', null); // don't track actions when doing manual goal conversions + // if we find a idgoal in the URL, but then the goal is not valid, this is most likely a fake request if (!$someGoalsConverted) { Common::printDebug('Invalid goal tracking request for goal id = ' . $goalManager->idGoal); diff --git a/plugins/Heartbeat/Heartbeat.php b/plugins/Heartbeat/Heartbeat.php new file mode 100644 index 0000000000..688ac72c65 --- /dev/null +++ b/plugins/Heartbeat/Heartbeat.php @@ -0,0 +1,19 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Plugins\Heartbeat; + +use Piwik\Plugin; + +class Heartbeat extends Plugin +{ + public function isTrackerPlugin() + { + return true; + } +} diff --git a/plugins/Heartbeat/Tracker/PingRequestProcessor.php b/plugins/Heartbeat/Tracker/PingRequestProcessor.php new file mode 100644 index 0000000000..44224ce0ab --- /dev/null +++ b/plugins/Heartbeat/Tracker/PingRequestProcessor.php @@ -0,0 +1,37 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ +namespace Piwik\Plugins\Heartbeat\Tracker; + +use Piwik\Common; +use Piwik\Tracker\Request; +use Piwik\Tracker\RequestProcessor; +use Piwik\Tracker\Visit\VisitProperties; + +/** + * TODO + */ +class PingRequestProcessor extends RequestProcessor +{ + public function processRequestParams(VisitProperties $visitProperties, Request $request) + { + if ($this->isPingRequest($request)) { + // on a ping request that is received before the standard visit length, we just update the visit time w/o adding a new action + Common::printDebug("-> ping=1 request: we do not track a new action nor a new visit nor any goal."); + + $visitProperties->setRequestMetadata('Actions', 'action', null); + + $visitProperties->setRequestMetadata('Goals', 'someGoalsConverted', false); + $visitProperties->setRequestMetadata('Goals', 'visitIsConverted', false); + } + } + + private function isPingRequest(Request $request) + { + return $request->getParam('ping') == 1; + } +}
\ No newline at end of file diff --git a/plugins/Heartbeat/config/config.php b/plugins/Heartbeat/config/config.php new file mode 100644 index 0000000000..6f7a1417ab --- /dev/null +++ b/plugins/Heartbeat/config/config.php @@ -0,0 +1,9 @@ +<?php + +return array( + + 'tracker.request.processors' => DI\add(array( + DI\get('Piwik\Plugins\Heartbeat\Tracker\PingRequestProcessor'), + )), + +); diff --git a/plugins/Heartbeat/plugin.json b/plugins/Heartbeat/plugin.json new file mode 100644 index 0000000000..3d028b75db --- /dev/null +++ b/plugins/Heartbeat/plugin.json @@ -0,0 +1,3 @@ +{ + "description": "Handles ping tracker requests." +}
\ No newline at end of file |