示例#1
0
 /**
  * @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;
 }