diff options
-rw-r--r-- | core/Tracker/RequestProcessor.php | 2 | ||||
-rw-r--r-- | core/Tracker/Visit.php | 12 | ||||
-rw-r--r-- | plugins/Goals/Tracker/GoalsRequestProcessor.php | 15 |
3 files changed, 16 insertions, 13 deletions
diff --git a/core/Tracker/RequestProcessor.php b/core/Tracker/RequestProcessor.php index 0c8f2b02b0..3380dbe80d 100644 --- a/core/Tracker/RequestProcessor.php +++ b/core/Tracker/RequestProcessor.php @@ -52,7 +52,7 @@ abstract class RequestProcessor /** * TODO */ - public function processRequest(VisitProperties $visitProperties) + public function processRequest(Visitor $visitor, VisitProperties $visitProperties) { // empty } diff --git a/core/Tracker/Visit.php b/core/Tracker/Visit.php index 0a5a2f0425..fb3c4ee4c7 100644 --- a/core/Tracker/Visit.php +++ b/core/Tracker/Visit.php @@ -185,17 +185,7 @@ class Visit implements VisitInterface $this->request->setThirdPartyCookie($this->visitProperties->visitorInfo['idvisitor']); foreach ($this->requestProcessors as $processor) { - $processor->processRequest($this->visitProperties); - } - - // record the goals if applicable - if ($this->visitProperties->getRequestMetadata('Goals', 'someGoalsConverted')) { - $goalManager->recordGoals( - $visitor, - $this->visitProperties->visitorInfo, - $this->visitProperties->getRequestMetadata('CustomVariables', 'visitCustomVariables'), - $action - ); + $processor->processRequest($visitor, $this->visitProperties); } unset($action); diff --git a/plugins/Goals/Tracker/GoalsRequestProcessor.php b/plugins/Goals/Tracker/GoalsRequestProcessor.php index 2bde947928..5e8132d2d3 100644 --- a/plugins/Goals/Tracker/GoalsRequestProcessor.php +++ b/plugins/Goals/Tracker/GoalsRequestProcessor.php @@ -14,6 +14,7 @@ use Piwik\Tracker\GoalManager; use Piwik\Tracker\Request; use Piwik\Tracker\RequestProcessor; use Piwik\Tracker\Visit\VisitProperties; +use Piwik\Tracker\Visitor; /** * TODO @@ -71,7 +72,7 @@ class GoalsRequestProcessor extends RequestProcessor } } - public function processRequest(VisitProperties $visitProperties) + public function processRequest(Visitor $visitor, VisitProperties $visitProperties) { $isManualGoalConversion = self::$goalManager->isManualGoalConversion(); $requestIsEcommerce = self::$goalManager->requestIsEcommerce; @@ -91,5 +92,17 @@ class GoalsRequestProcessor extends RequestProcessor $visitProperties->setRequestMetadata('Goals', 'someGoalsConverted', false); $visitProperties->setRequestMetadata('Goals', 'visitIsConverted', false); } + + // record the goals if there were conversions in this request (even if the visit itself was not converted) + if ($visitProperties->getRequestMetadata('Goals', 'someGoalsConverted')) { + $action = $visitProperties->getRequestMetadata('Actions', 'action'); + + self::$goalManager->recordGoals( + $visitor, + $visitProperties->visitorInfo, + $visitProperties->getRequestMetadata('CustomVariables', 'visitCustomVariables'), + $action + ); + } } } |