setUpWebsitesAndGoals(); $this->trackVisits(); } public function tearDown() { // empty } private function setUpWebsitesAndGoals() { self::createWebsite($this->dateTime); // First, a goal that is only recorded once per visit Piwik_Goals_API::getInstance()->addGoal( $this->idSite, 'triggered js ONCE', 'title', 'Thank you', 'contains', $caseSensitive = false, $revenue = 10, $allowMultipleConversions = false ); // Second, a goal allowing multiple conversions Piwik_Goals_API::getInstance()->addGoal( $this->idSite, 'triggered js MULTIPLE ALLOWED', 'manually', '', '', $caseSensitive = false, $revenue = 10, $allowMultipleConversions = true ); } private function trackVisits() { $dateTime = $this->dateTime; $idSite = $this->idSite; $idGoal_OneConversionPerVisit = $this->idGoal_OneConversionPerVisit; $idGoal_MultipleConversionPerVisit = $this->idGoal_MultipleConversionPerVisit; $t = self::getTracker($idSite, $dateTime, $defaultInit = true); // Record 1st goal, should only have 1 conversion $t->setUrl('http://example.org/index.htm'); $t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.3)->getDatetime()); self::checkResponse($t->doTrackPageView('Thank you mate')); $t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.4)->getDatetime()); self::checkResponse($t->doTrackGoal($idGoal_OneConversionPerVisit, $revenue = 10000000)); // Record 2nd goal, should record both conversions $t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.5)->getDatetime()); self::checkResponse($t->doTrackGoal($idGoal_MultipleConversionPerVisit, $revenue = 300)); $t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.6)->getDatetime()); self::checkResponse($t->doTrackGoal($idGoal_MultipleConversionPerVisit, $revenue = 366)); // Update & set to not allow multiple $goals = Piwik_Goals_API::getInstance()->getGoals($idSite); $goal = $goals[$idGoal_OneConversionPerVisit]; self::assertTrue($goal['allow_multiple'] == 0); Piwik_Goals_API::getInstance()->updateGoal($idSite, $idGoal_OneConversionPerVisit, $goal['name'], @$goal['match_attribute'], @$goal['pattern'], @$goal['pattern_type'], @$goal['case_sensitive'], $goal['revenue'], $goal['allow_multiple'] = 1); self::assertTrue($goal['allow_multiple'] == 1); // 1st goal should Now be tracked $t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.61)->getDatetime()); self::checkResponse($t->doTrackGoal($idGoal_OneConversionPerVisit, $revenue = 656)); } }