static public function excludeQueryParametersFromUrl($originalUrl, $idSite) { $website = Piwik_Common::getCacheWebsiteAttributes( $idSite ); $originalUrl = Piwik_Common::unsanitizeInputValue($originalUrl); $originalUrl = self::cleanupString($originalUrl); $parsedUrl = @parse_url($originalUrl); if(empty($parsedUrl['query'])) { return $originalUrl; } $campaignTrackingParameters = Piwik_Common::getCampaignParameters(); $campaignTrackingParameters = array_merge( $campaignTrackingParameters[0], // campaign name parameters $campaignTrackingParameters[1] // campaign keyword parameters ); $excludedParameters = isset($website['excluded_parameters']) ? $website['excluded_parameters'] : array(); $parametersToExclude = array_merge( $excludedParameters, self::$queryParametersToExclude, $campaignTrackingParameters); $parametersToExclude = array_map('strtolower', $parametersToExclude); $queryParameters = Piwik_Common::getArrayFromQueryString($parsedUrl['query']); $validQuery = ''; $separator = '&'; foreach($queryParameters as $name => $value) { if(!in_array(strtolower($name), $parametersToExclude)) { if (is_array($value)) { foreach ($value as $param) { if($param === false) { $validQuery .= $name.'[]'.$separator; } else { $validQuery .= $name.'[]='.$param.$separator; } } } else if($value === false) { $validQuery .= $name.$separator; } else { $validQuery .= $name.'='.$value.$separator; } } } $parsedUrl['query'] = substr($validQuery,0,-strlen($separator)); $url = Piwik_Common::getParseUrlReverse($parsedUrl); printDebug('Excluding parameters "'.implode(',',$excludedParameters).'" from URL'); if($originalUrl != $url) { printDebug(' Before was "'.$originalUrl.'"'); printDebug(' After is "'.$url.'"'); } return $url; }
protected function detectRefererCampaign() { if (isset($this->currentUrlParse['query'])) { $campaignParameters = Piwik_Common::getCampaignParameters(); $campaignNames = $campaignParameters[0]; foreach ($campaignNames as $campaignNameParameter) { $campaignName = Piwik_Common::getParameterFromQueryString($this->currentUrlParse['query'], $campaignNameParameter); if (!empty($campaignName)) { break; } } if (!empty($campaignName)) { $this->typeRefererAnalyzed = Piwik_Common::REFERER_TYPE_CAMPAIGN; $this->nameRefererAnalyzed = $campaignName; $campaignKeywords = $campaignParameters[1]; foreach ($campaignKeywords as $campaignKeywordParameter) { $campaignKeyword = Piwik_Common::getParameterFromQueryString($this->currentUrlParse['query'], $campaignKeywordParameter); if (!empty($campaignKeyword)) { $this->keywordRefererAnalyzed = $campaignKeyword; break; } } return true; } } return false; }
/** * Campaign analysis * @return bool */ protected function detectRefererCampaign() { if (!isset($this->currentUrlParse['query']) && !isset($this->currentUrlParse['fragment'])) { return false; } $campaignParameters = Piwik_Common::getCampaignParameters(); $this->campaignNames = $campaignParameters[0]; $this->campaignKeywords = $campaignParameters[1]; $found = false; // 1) Detect campaign from query string if (isset($this->currentUrlParse['query'])) { $found = $this->detectCampaignFromString($this->currentUrlParse['query']); } // 2) Detect from fragment #hash if (!$found && isset($this->currentUrlParse['fragment'])) { $found = $this->detectCampaignFromString($this->currentUrlParse['fragment']); } return $found; }
/** * Returns the array of parameters names that must be excluded from the Query String in all tracked URLs * @static * @param $idSite * @return array */ public static function getQueryParametersToExclude($idSite) { $campaignTrackingParameters = Piwik_Common::getCampaignParameters(); $campaignTrackingParameters = array_merge($campaignTrackingParameters[0], $campaignTrackingParameters[1]); $website = Piwik_Common::getCacheWebsiteAttributes($idSite); $excludedParameters = isset($website['excluded_parameters']) ? $website['excluded_parameters'] : array(); if (!empty($excludedParameters)) { printDebug('Excluding parameters "' . implode(',', $excludedParameters) . '" from URL'); } $parametersToExclude = array_merge($excludedParameters, self::$queryParametersToExclude, $campaignTrackingParameters); $parametersToExclude = array_map('strtolower', $parametersToExclude); return $parametersToExclude; }