/** * @param \UnitedPrototype\GoogleAnalytics\Internals\ParameterHolder $p * @return \UnitedPrototype\GoogleAnalytics\Internals\ParameterHolder */ protected function buildCampaignParameters(ParameterHolder $p) { $campaign = $this->tracker->getCampaign(); if ($campaign) { $p->__utmz = $this->generateDomainHash() . '.'; $p->__utmz .= $campaign->getCreationTime()->format('U') . '.'; $p->__utmz .= $this->visitor->getVisitCount() . '.'; $p->__utmz .= $campaign->getResponseCount() . '.'; // See http://code.google.com/p/gaforflash/source/browse/trunk/src/com/google/analytics/campaign/CampaignTracker.as#236 $data = array('utmcid' => $campaign->getId(), 'utmcsr' => $campaign->getSource(), 'utmgclid' => $campaign->getGClickId(), 'utmdclid' => $campaign->getDClickId(), 'utmccn' => $campaign->getName(), 'utmcmd' => $campaign->getMedium(), 'utmctr' => $campaign->getTerm(), 'utmcct' => $campaign->getContent()); foreach ($data as $key => $value) { if ($value !== null && $value !== '') { // Only spaces and pluses get escaped in gaforflash and ga.js, so we do the same $p->__utmz .= $key . '=' . str_replace(array('+', ' '), '%20', $value) . static::CAMPAIGN_DELIMITER; } } $p->__utmz = rtrim($p->__utmz, static::CAMPAIGN_DELIMITER); } return $p; }