From f27cf4c9337617f6cf62978440b028d648043f01 Mon Sep 17 00:00:00 2001 From: mattab <matthieu.aubry@gmail.com> Date: Fri, 1 Nov 2013 13:45:45 +1300 Subject: [PATCH] Removing a //FIXME : refactoring reserved custom variable slots for ecommerce view --- core/Tracker/Action.php | 26 +++++--------------------- core/Tracker/ActionPageview.php | 8 ++++++++ core/Tracker/Visit.php | 2 +- libs/PiwikTracker/PiwikTracker.php | 18 +++++++++++++----- plugins/CustomVariables/Archiver.php | 7 ++++--- 5 files changed, 31 insertions(+), 30 deletions(-) diff --git a/core/Tracker/Action.php b/core/Tracker/Action.php index 4f80c4443e..08739ebadf 100644 --- a/core/Tracker/Action.php +++ b/core/Tracker/Action.php @@ -17,15 +17,13 @@ use Piwik\Piwik; use Piwik\Tracker; /** - * + * An action * * @package Piwik * @subpackage Tracker */ abstract class Action { - - //FIXMEA lookup uses and check Events compat const TYPE_PAGE_URL = 1; const TYPE_OUTLINK = 2; const TYPE_DOWNLOAD = 3; @@ -35,13 +33,11 @@ abstract class Action const TYPE_ECOMMERCE_ITEM_CATEGORY = 7; const TYPE_SITE_SEARCH = 8; - //FIXMEA lookup uses and check Events compat - const TYPE_EVENT = 11; // Same as TYPE_EVENT_ACTION + const TYPE_EVENT = 10; // Alias TYPE_EVENT_CATEGORY const TYPE_EVENT_CATEGORY = 10; const TYPE_EVENT_ACTION = 11; const TYPE_EVENT_NAME = 12; - const DB_COLUMN_CUSTOM_FLOAT = 'custom_float'; /** @@ -83,9 +79,7 @@ abstract class Action protected $request; private $idLinkVisitAction; - - protected $actionIdsCached = array(); - + private $actionIdsCached = array(); private $actionName; private $actionType; private $actionUrl; @@ -149,18 +143,7 @@ abstract class Action $this->actionUrl = $url; } - protected function getActionsToLookup() - { - return array( - 'idaction_name' => $this->getNameAndType(), - 'idaction_url' => $this->getUrlAndType() - ); - } - - protected function getNameAndType() - { - return array($this->getActionName(), Action::TYPE_PAGE_TITLE); - } + abstract protected function getActionsToLookup(); protected function getUrlAndType() { @@ -351,3 +334,4 @@ abstract class Action } } + diff --git a/core/Tracker/ActionPageview.php b/core/Tracker/ActionPageview.php index a341000fc2..17e7b54f24 100644 --- a/core/Tracker/ActionPageview.php +++ b/core/Tracker/ActionPageview.php @@ -37,6 +37,14 @@ class ActionPageview extends Action $this->timeGeneration = $this->request->getPageGenerationTime(); } + protected function getActionsToLookup() + { + return array( + 'idaction_name' => array($this->getActionName(), Action::TYPE_PAGE_TITLE), + 'idaction_url' => $this->getUrlAndType() + ); + } + function getCustomFloatValue() { return $this->request->getPageGenerationTime(); diff --git a/core/Tracker/Visit.php b/core/Tracker/Visit.php index abd9d1f2ae..7bcfe6c3f8 100644 --- a/core/Tracker/Visit.php +++ b/core/Tracker/Visit.php @@ -902,7 +902,7 @@ class Visit implements VisitInterface * @param $visitIsConverted * @return array */ - protected function getExistingVisitFieldsToUpdate($action, $visitIsConverted) + protected function getExistingVisitFieldsToUpdate(Action $action, $visitIsConverted) { $valuesToUpdate = array(); diff --git a/libs/PiwikTracker/PiwikTracker.php b/libs/PiwikTracker/PiwikTracker.php index 71c9459329..0300983f53 100644 --- a/libs/PiwikTracker/PiwikTracker.php +++ b/libs/PiwikTracker/PiwikTracker.php @@ -65,6 +65,14 @@ class PiwikTracker */ const FIRST_PARTY_COOKIES_PREFIX = '_pk_'; + /** + * Ecommerce item page view tracking stores item's metadata in these Custom Variables slots. + */ + const CVAR_INDEX_ECOMMERCE_ITEM_PRICE = 2; + const CVAR_INDEX_ECOMMERCE_ITEM_SKU = 3; + const CVAR_INDEX_ECOMMERCE_ITEM_NAME = 4; + const CVAR_INDEX_ECOMMERCE_ITEM_CATEGORY = 5; + /** * Builds a PiwikTracker object, used to track visits, pages and Goal conversions * for a specific website, by using the Piwik Tracking API. @@ -610,10 +618,10 @@ class PiwikTracker } else { $category = ""; } - $this->pageCustomVar[5] = array('_pkc', $category); + $this->pageCustomVar[self::CVAR_INDEX_ECOMMERCE_ITEM_CATEGORY] = array('_pkc', $category); if (!empty($price)) { - $this->pageCustomVar[2] = array('_pkp', (float)$price); + $this->pageCustomVar[self::CVAR_INDEX_ECOMMERCE_ITEM_PRICE] = array('_pkp', (float)$price); } // On a category page, do not record "Product name not defined" @@ -621,12 +629,12 @@ class PiwikTracker return; } if (!empty($sku)) { - $this->pageCustomVar[3] = array('_pks', $sku); + $this->pageCustomVar[self::CVAR_INDEX_ECOMMERCE_ITEM_SKU] = array('_pks', $sku); } if (empty($name)) { $name = ""; } - $this->pageCustomVar[4] = array('_pkn', $name); + $this->pageCustomVar[self::CVAR_INDEX_ECOMMERCE_ITEM_NAME] = array('_pkn', $name); } /** @@ -906,7 +914,7 @@ class PiwikTracker } return true; } - + /** * Deletes all first party cookies from the client */ diff --git a/plugins/CustomVariables/Archiver.php b/plugins/CustomVariables/Archiver.php index 80ef438830..81a8755885 100644 --- a/plugins/CustomVariables/Archiver.php +++ b/plugins/CustomVariables/Archiver.php @@ -71,8 +71,8 @@ class Archiver extends \Piwik\Plugin\Archiver // IF we query Custom Variables scope "page" either: Product SKU, Product Name, // then we also query the "Product page view" price which was possibly recorded. $additionalSelects = false; - // FIXMEA - if (in_array($slot, array(3, 4, 5))) { + + if (in_array($slot, array(\PiwikTracker::CVAR_INDEX_ECOMMERCE_ITEM_SKU, \PiwikTracker::CVAR_INDEX_ECOMMERCE_ITEM_NAME, \PiwikTracker::CVAR_INDEX_ECOMMERCE_ITEM_CATEGORY))) { $additionalSelects = array($this->getSelectAveragePrice()); } $query = $this->getLogAggregator()->queryActionsByDimension($dimensions, $where, $additionalSelects); @@ -84,7 +84,8 @@ class Archiver extends \Piwik\Plugin\Archiver protected function getSelectAveragePrice() { - return LogAggregator::getSqlRevenue("AVG(log_link_visit_action.custom_var_v2)") + $field = "custom_var_v" . \PiwikTracker::CVAR_INDEX_ECOMMERCE_ITEM_PRICE; + return LogAggregator::getSqlRevenue("AVG(log_link_visit_action.{$field})") . " as `" . Metrics::INDEX_ECOMMERCE_ITEM_PRICE_VIEWED . "`"; } -- GitLab