| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\Plugins\Goals\Tracker; |
|
|
| use Piwik\Common; |
| use Piwik\Tracker\Action; |
| use Piwik\Tracker\GoalManager; |
| use Piwik\Tracker\Request; |
| use Piwik\Tracker\RequestProcessor; |
| use Piwik\Tracker\Visit\VisitProperties; |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| class GoalsRequestProcessor extends RequestProcessor |
| { |
| |
| |
| |
| public $goalManager = null; |
|
|
| public function __construct(GoalManager $goalManager) |
| { |
| $this->goalManager = $goalManager; |
| } |
|
|
| public function processRequestParams(VisitProperties $visitProperties, Request $request) |
| { |
| $this->goalManager = new GoalManager(); |
|
|
| if ($this->isManualGoalConversion($request)) { |
| |
| $goal = $this->goalManager->detectGoalId($request->getIdSite(), $request); |
|
|
| $visitIsConverted = !empty($goal); |
| $request->setMetadata('Goals', 'visitIsConverted', $visitIsConverted); |
|
|
| $existingConvertedGoals = $request->getMetadata('Goals', 'goalsConverted') ?: array(); |
| $request->setMetadata('Goals', 'goalsConverted', array_merge($existingConvertedGoals, array($goal))); |
|
|
| $request->setMetadata('Actions', 'action', null); |
|
|
| |
| if (!$visitIsConverted) { |
| $idGoal = $request->getParam('idgoal'); |
| Common::printDebug('Invalid goal tracking request for goal id = ' . $idGoal); |
| return true; |
| } |
| } |
|
|
| return false; |
| } |
|
|
| public function afterRequestProcessed(VisitProperties $visitProperties, Request $request) |
| { |
| $goalsConverted = $request->getMetadata('Goals', 'goalsConverted'); |
|
|
| |
| $action = $request->getMetadata('Actions', 'action'); |
|
|
| |
| |
| if ( |
| empty($goalsConverted) |
| && $action |
| ) { |
| $goalsConverted = $this->goalManager->detectGoalsMatchingUrl($request->getIdSite(), $action, $visitProperties, $request); |
|
|
| $existingGoalsConverted = $request->getMetadata('Goals', 'goalsConverted') ?: array(); |
| $request->setMetadata('Goals', 'goalsConverted', array_merge($existingGoalsConverted, $goalsConverted)); |
|
|
| if (!empty($goalsConverted)) { |
| $request->setMetadata('Goals', 'visitIsConverted', true); |
| } |
| } |
|
|
| return false; |
| } |
|
|
| public function recordLogs(VisitProperties $visitProperties, Request $request) |
| { |
| |
| $goalsConverted = $request->getMetadata('Goals', 'goalsConverted'); |
| if (!empty($goalsConverted)) { |
| $this->goalManager->recordGoals($visitProperties, $request); |
| } |
| } |
|
|
| private function isManualGoalConversion(Request $request) |
| { |
| $idGoal = $request->getParam('idgoal'); |
| return $idGoal > 0; |
| } |
| } |
|
|