Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordiosmosis <benaka@piwik.pro>2015-07-08 07:50:00 +0300
committerdiosmosis <benaka@piwik.pro>2015-08-06 17:37:58 +0300
commit2ba74fba6bcb83a55963309d05cdc31c9d977103 (patch)
tree9106e6ed69f4eec27bc8cf608ba8a700171c0f30 /plugins
parentaeb17d5958be81b4588a535c7a7a7a0c97724644 (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.php31
-rw-r--r--plugins/Actions/config/config.php9
-rw-r--r--plugins/Ecommerce/Tracker/EcommerceRequestProcessor.php2
-rw-r--r--plugins/Goals/Tracker/GoalsRequestProcessor.php2
-rw-r--r--plugins/Heartbeat/Heartbeat.php19
-rw-r--r--plugins/Heartbeat/Tracker/PingRequestProcessor.php37
-rw-r--r--plugins/Heartbeat/config/config.php9
-rw-r--r--plugins/Heartbeat/plugin.json3
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