Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'core/Tracker/Referrer.php')
-rw-r--r--core/Tracker/Referrer.php301
1 files changed, 0 insertions, 301 deletions
diff --git a/core/Tracker/Referrer.php b/core/Tracker/Referrer.php
deleted file mode 100644
index 12d8ff747d..0000000000
--- a/core/Tracker/Referrer.php
+++ /dev/null
@@ -1,301 +0,0 @@
-<?php
-/**
- * Piwik - Open source web analytics
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
- */
-namespace Piwik\Tracker;
-
-use Piwik\Common;
-use Piwik\Piwik;
-use Piwik\UrlHelper;
-
-/**
- */
-class Referrer
-{
- // @see detect*() referrer methods
- protected $typeReferrerAnalyzed;
- protected $nameReferrerAnalyzed;
- protected $keywordReferrerAnalyzed;
- protected $referrerHost;
- protected $referrerUrl;
- protected $referrerUrlParse;
- protected $currentUrlParse;
- protected $idsite;
-
- // Used to prefix when a adsense referrer is detected
- const LABEL_PREFIX_ADWORDS_KEYWORD = '(adwords) ';
- const LABEL_ADWORDS_NAME = 'AdWords';
-
- /**
- * Returns an array containing the following information:
- * - referer_type
- * - direct -- absence of referrer URL OR referrer URL has the same host
- * - site -- based on the referrer URL
- * - search_engine -- based on the referrer URL
- * - campaign -- based on campaign URL parameter
- *
- * - referer_name
- * - ()
- * - piwik.net -- site host name
- * - google.fr -- search engine host name
- * - adwords-search -- campaign name
- *
- * - referer_keyword
- * - ()
- * - ()
- * - my keyword
- * - my paid keyword
- * - ()
- * - ()
- *
- * - referer_url : the same for all the referrer types
- *
- * @param string $referrerUrl must be URL Encoded
- * @param string $currentUrl
- * @param int $idSite
- * @return array
- */
- public function getReferrerInformation($referrerUrl, $currentUrl, $idSite)
- {
- $this->idsite = $idSite;
-
- // default values for the referer_* fields
- $referrerUrl = Common::unsanitizeInputValue($referrerUrl);
- if (!empty($referrerUrl)
- && !UrlHelper::isLookLikeUrl($referrerUrl)
- ) {
- $referrerUrl = '';
- }
-
- $currentUrl = PageUrl::cleanupUrl($currentUrl);
-
- $this->referrerUrl = $referrerUrl;
- $this->referrerUrlParse = @parse_url($this->referrerUrl);
- $this->currentUrlParse = @parse_url($currentUrl);
- $this->typeReferrerAnalyzed = Common::REFERRER_TYPE_DIRECT_ENTRY;
- $this->nameReferrerAnalyzed = '';
- $this->keywordReferrerAnalyzed = '';
- $this->referrerHost = '';
-
- if (isset($this->referrerUrlParse['host'])) {
- $this->referrerHost = $this->referrerUrlParse['host'];
- }
-
- $referrerDetected = $this->detectReferrerCampaign();
-
- if (!$referrerDetected) {
- if ($this->detectReferrerDirectEntry()
- || $this->detectReferrerSearchEngine()
- ) {
- $referrerDetected = true;
- }
- }
-
- if (!empty($this->referrerHost)
- && !$referrerDetected
- ) {
- $this->typeReferrerAnalyzed = Common::REFERRER_TYPE_WEBSITE;
- $this->nameReferrerAnalyzed = Common::mb_strtolower($this->referrerHost);
- }
-
- $referrerInformation = array(
- 'referer_type' => $this->typeReferrerAnalyzed,
- 'referer_name' => $this->nameReferrerAnalyzed,
- 'referer_keyword' => $this->keywordReferrerAnalyzed,
- 'referer_url' => $this->referrerUrl,
- );
-
- return $referrerInformation;
- }
-
- /**
- * Search engine detection
- * @return bool
- */
- protected function detectReferrerSearchEngine()
- {
- $searchEngineInformation = UrlHelper::extractSearchEngineInformationFromUrl($this->referrerUrl);
-
- /**
- * Triggered when detecting the search engine of a referrer URL.
- *
- * Plugins can use this event to provide custom search engine detection
- * logic.
- *
- * @param array &$searchEngineInformation An array with the following information:
- *
- * - **name**: The search engine name.
- * - **keywords**: The search keywords used.
- *
- * This parameter is initialized to the results
- * of Piwik's default search engine detection
- * logic.
- * @param string referrerUrl The referrer URL from the tracking request.
- */
- Piwik::postEvent('Tracker.detectReferrerSearchEngine', array(&$searchEngineInformation, $this->referrerUrl));
- if ($searchEngineInformation === false) {
- return false;
- }
- $this->typeReferrerAnalyzed = Common::REFERRER_TYPE_SEARCH_ENGINE;
- $this->nameReferrerAnalyzed = $searchEngineInformation['name'];
- $this->keywordReferrerAnalyzed = $searchEngineInformation['keywords'];
- return true;
- }
-
- /**
- * @param string $string
- * @return bool
- */
- protected function detectCampaignFromString($string)
- {
- foreach ($this->campaignNames as $campaignNameParameter) {
- $campaignName = trim(urldecode(UrlHelper::getParameterFromQueryString($string, $campaignNameParameter)));
- if (!empty($campaignName)) {
- break;
- }
- }
-
- if (empty($campaignName)) {
- return false;
- }
- $this->typeReferrerAnalyzed = Common::REFERRER_TYPE_CAMPAIGN;
- $this->nameReferrerAnalyzed = $campaignName;
-
- foreach ($this->campaignKeywords as $campaignKeywordParameter) {
- $campaignKeyword = UrlHelper::getParameterFromQueryString($string, $campaignKeywordParameter);
- if (!empty($campaignKeyword)) {
- $this->keywordReferrerAnalyzed = trim(urldecode($campaignKeyword));
- break;
- }
- }
- return !empty($this->keywordReferrerAnalyzed);
- }
-
- protected function detectReferrerCampaignFromLandingUrl()
- {
- if (!isset($this->currentUrlParse['query'])
- && !isset($this->currentUrlParse['fragment'])
- ) {
- return false;
- }
- $campaignParameters = 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'])
- ) {
- $this->detectCampaignFromString($this->currentUrlParse['fragment']);
- }
- }
-
- /**
- * We have previously tried to detect the campaign variables in the URL
- * so at this stage, if the referrer host is the current host,
- * or if the referrer host is any of the registered URL for this website,
- * it is considered a direct entry
- * @return bool
- */
- protected function detectReferrerDirectEntry()
- {
- if (!empty($this->referrerHost)) {
- // is the referrer host the current host?
- if (isset($this->currentUrlParse['host'])) {
- $currentHost = mb_strtolower($this->currentUrlParse['host'], 'UTF-8');
- if ($currentHost == mb_strtolower($this->referrerHost, 'UTF-8')) {
- $this->typeReferrerAnalyzed = Common::REFERRER_TYPE_DIRECT_ENTRY;
- return true;
- }
- }
- if (Visit::isHostKnownAliasHost($this->referrerHost, $this->idsite)) {
- $this->typeReferrerAnalyzed = Common::REFERRER_TYPE_DIRECT_ENTRY;
- return true;
- }
- }
- return false;
- }
-
- protected function detectCampaignKeywordFromReferrerUrl()
- {
- if(!empty($this->nameReferrerAnalyzed)
- && !empty($this->keywordReferrerAnalyzed)) {
- // keyword is already set, we skip
- return true;
- }
-
- // Set the Campaign keyword to the keyword found in the Referrer URL if any
- if(!empty($this->nameReferrerAnalyzed)) {
- $referrerUrlInfo = UrlHelper::extractSearchEngineInformationFromUrl($this->referrerUrl);
- if (!empty($referrerUrlInfo['keywords'])) {
- $this->keywordReferrerAnalyzed = $referrerUrlInfo['keywords'];
- }
- }
-
- // Set the keyword, to the hostname found, in a Adsense Referrer URL '&url=' parameter
- if (empty($this->keywordReferrerAnalyzed)
- && !empty($this->referrerUrlParse['query'])
- && !empty($this->referrerHost)
- && (strpos($this->referrerHost, 'googleads') !== false || strpos($this->referrerHost, 'doubleclick') !== false)
- ) {
- // This parameter sometimes is found & contains the page with the adsense ad bringing visitor to our site
- $value = $this->getParameterValueFromReferrerUrl('url');
- if (!empty($value)) {
- $parsedAdsenseReferrerUrl = parse_url($value);
- if (!empty($parsedAdsenseReferrerUrl['host'])) {
-
- if(empty($this->nameReferrerAnalyzed)) {
- $type = $this->getParameterValueFromReferrerUrl('ad_type');
- $type = $type ? " ($type)" : '';
- $this->nameReferrerAnalyzed = self::LABEL_ADWORDS_NAME . $type;
- $this->typeReferrerAnalyzed = Common::REFERRER_TYPE_CAMPAIGN;
- }
- $this->keywordReferrerAnalyzed = self::LABEL_PREFIX_ADWORDS_KEYWORD . $parsedAdsenseReferrerUrl['host'];
- }
- }
- }
-
- }
-
- /**
- * @return string
- */
- protected function getParameterValueFromReferrerUrl($adsenseReferrerParameter)
- {
- $value = trim(urldecode(UrlHelper::getParameterFromQueryString($this->referrerUrlParse['query'], $adsenseReferrerParameter)));
- return $value;
- }
-
- /**
- * @return bool
- */
- protected function detectReferrerCampaign()
- {
- $this->detectReferrerCampaignFromLandingUrl();
- $this->detectCampaignKeywordFromReferrerUrl();
-
- if ($this->typeReferrerAnalyzed != Common::REFERRER_TYPE_CAMPAIGN) {
- return false;
- }
- // if we detected a campaign but there is still no keyword set, we set the keyword to the Referrer host
- if(empty($this->keywordReferrerAnalyzed)) {
- $this->keywordReferrerAnalyzed = $this->referrerHost;
- }
-
- $this->keywordReferrerAnalyzed = Common::mb_strtolower($this->keywordReferrerAnalyzed);
- $this->nameReferrerAnalyzed = Common::mb_strtolower($this->nameReferrerAnalyzed);
- return true;
- }
-
-}