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 'plugins/Referrers')
-rw-r--r--plugins/Referrers/Columns/Base.php5
-rw-r--r--plugins/Referrers/SearchEngine.php49
-rw-r--r--plugins/Referrers/images/searchEngines/search.disconnect.me.pngbin0 -> 505 bytes
-rw-r--r--plugins/Referrers/images/searchEngines/search.lookseek.com.pngbin0 -> 991 bytes
-rw-r--r--plugins/Referrers/images/searchEngines/search.smartshopping.com.pngbin0 -> 576 bytes
-rw-r--r--plugins/Referrers/images/searchEngines/searchlock.com.pngbin0 -> 3295 bytes
-rw-r--r--plugins/Referrers/images/searchEngines/startpage.com.pngbin0 -> 738 bytes
-rw-r--r--plugins/Referrers/images/searchEngines/www.only-search.com.pngbin0 -> 789 bytes
-rw-r--r--plugins/Referrers/lang/it.json8
-rw-r--r--plugins/Referrers/lang/nl.json4
-rw-r--r--plugins/Referrers/lang/uk.json63
-rw-r--r--plugins/Referrers/tests/Integration/Columns/ReferrerKeywordTest.php2
-rw-r--r--plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php2
-rw-r--r--plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php17
-rw-r--r--plugins/Referrers/tests/Unit/SearchEngineTest.php2
15 files changed, 103 insertions, 49 deletions
diff --git a/plugins/Referrers/Columns/Base.php b/plugins/Referrers/Columns/Base.php
index 655ea20449..8da2c79bc3 100644
--- a/plugins/Referrers/Columns/Base.php
+++ b/plugins/Referrers/Columns/Base.php
@@ -288,8 +288,11 @@ abstract class Base extends VisitDimension
return false;
}
+ $site = Cache::getCacheWebsiteAttributes($this->idsite);
+ $excludeUnknowns = $site['exclude_unknown_urls'];
+
// fallback logic if the referrer domain is not known to any site to not break BC
- if (isset($this->currentUrlParse['host'])) {
+ if (!$excludeUnknowns && isset($this->currentUrlParse['host'])) {
// this might be actually buggy if first thing tracked is eg an outlink and referrer is from that site
$currentHost = Common::mb_strtolower($this->currentUrlParse['host']);
if ($currentHost == Common::mb_strtolower($this->referrerHost)) {
diff --git a/plugins/Referrers/SearchEngine.php b/plugins/Referrers/SearchEngine.php
index 9b11ac860f..e2970c61ad 100644
--- a/plugins/Referrers/SearchEngine.php
+++ b/plugins/Referrers/SearchEngine.php
@@ -224,11 +224,10 @@ class SearchEngine extends Singleton
$searchEngineName = $definitions['name'];
$variableNames = $definitions['params'];
+ $keywordsHiddenFor = !empty($definitions['hiddenkeyword']) ? $definitions['hiddenkeyword'] : array();
$key = null;
- if ($searchEngineName === 'Google Images'
- || ($searchEngineName === 'Google' && strpos($referrerUrl, '/imgres') !== false)
- ) {
+ if ($searchEngineName === 'Google Images') {
if (strpos($query, '&prev') !== false) {
$query = urldecode(trim(UrlHelper::getParameterFromQueryString($query, 'prev')));
$query = str_replace('&', '&', strstr($query, '?'));
@@ -286,27 +285,13 @@ class SearchEngine extends Singleton
$key = UrlHelper::getParameterFromQueryString($query, $variableName);
$key = trim(urldecode($key));
- // Special cases: empty or no keywords
+ // Special cases: empty keywords
if (empty($key)
&& (
- // Google search with no keyword
- ($searchEngineName == 'Google'
- && (empty($query) && (empty($referrerPath) || $referrerPath == '/') && empty($referrerParsed['fragment']))
- )
-
- // Yahoo search with no keyword
- || ($searchEngineName == 'Yahoo!'
- && ($referrerParsed['host'] == 'r.search.yahoo.com')
- )
-
// empty keyword parameter
- || strpos($query, sprintf('&%s=', $variableName)) !== false
+ strpos($query, sprintf('&%s=', $variableName)) !== false
|| strpos($query, sprintf('?%s=', $variableName)) !== false
-
- // search engines with no keyword
- || $searchEngineName == 'Ixquick'
- || $searchEngineName == 'Google Images'
- || $searchEngineName == 'DuckDuckGo')
+ )
) {
$key = false;
}
@@ -319,6 +304,30 @@ class SearchEngine extends Singleton
}
}
+ // if no keyword found, but empty keywords are allowed
+ if (!empty($keywordsHiddenFor) && ($key === null || $key === '')) {
+
+ $pathWithQueryAndFragment = $referrerPath;
+ if (!empty($query)) {
+ $pathWithQueryAndFragment .= '?'.$query;
+ }
+ if (!empty($referrerParsed['fragment'])) {
+ $pathWithQueryAndFragment .= '#'.$referrerParsed['fragment'];
+ }
+
+ foreach ($keywordsHiddenFor as $path) {
+ if (strlen($path) > 1 && substr($path, 0, 1) == '/' && substr($path, -1, 1) == '/') {
+ if (preg_match($path, $pathWithQueryAndFragment)) {
+ $key = false;
+ break;
+ }
+ } elseif ($path == $pathWithQueryAndFragment) {
+ $key = false;
+ break;
+ }
+ }
+ }
+
// $key === false is the special case "No keyword provided" which is a Search engine match
if ($key === null || $key === '') {
return false;
diff --git a/plugins/Referrers/images/searchEngines/search.disconnect.me.png b/plugins/Referrers/images/searchEngines/search.disconnect.me.png
new file mode 100644
index 0000000000..54b0eac351
--- /dev/null
+++ b/plugins/Referrers/images/searchEngines/search.disconnect.me.png
Binary files differ
diff --git a/plugins/Referrers/images/searchEngines/search.lookseek.com.png b/plugins/Referrers/images/searchEngines/search.lookseek.com.png
new file mode 100644
index 0000000000..ac1ff37a17
--- /dev/null
+++ b/plugins/Referrers/images/searchEngines/search.lookseek.com.png
Binary files differ
diff --git a/plugins/Referrers/images/searchEngines/search.smartshopping.com.png b/plugins/Referrers/images/searchEngines/search.smartshopping.com.png
new file mode 100644
index 0000000000..320ede63d5
--- /dev/null
+++ b/plugins/Referrers/images/searchEngines/search.smartshopping.com.png
Binary files differ
diff --git a/plugins/Referrers/images/searchEngines/searchlock.com.png b/plugins/Referrers/images/searchEngines/searchlock.com.png
new file mode 100644
index 0000000000..54f98183bc
--- /dev/null
+++ b/plugins/Referrers/images/searchEngines/searchlock.com.png
Binary files differ
diff --git a/plugins/Referrers/images/searchEngines/startpage.com.png b/plugins/Referrers/images/searchEngines/startpage.com.png
new file mode 100644
index 0000000000..916df91599
--- /dev/null
+++ b/plugins/Referrers/images/searchEngines/startpage.com.png
Binary files differ
diff --git a/plugins/Referrers/images/searchEngines/www.only-search.com.png b/plugins/Referrers/images/searchEngines/www.only-search.com.png
new file mode 100644
index 0000000000..543c95d88e
--- /dev/null
+++ b/plugins/Referrers/images/searchEngines/www.only-search.com.png
Binary files differ
diff --git a/plugins/Referrers/lang/it.json b/plugins/Referrers/lang/it.json
index ac5c1ad83d..ab9144217e 100644
--- a/plugins/Referrers/lang/it.json
+++ b/plugins/Referrers/lang/it.json
@@ -2,8 +2,8 @@
"Referrers": {
"AllReferrersReportDocumentation": "Questo report mostra tutti i tuoi Referenti in un unico report che elenca tutti i Siti web, le Parole chiave di ricerca e Campagne utilizzate dai visitatori per trovare il tuo sito web.",
"Campaigns": "Campagne",
- "CampaignsDocumentation": "Visitatori che sono arrivati sul tuo sito web a seguito di una campagna. %1$s Vedi il%2$s Report per maggiori dettagli.",
- "CampaignsReportDocumentation": "Questo report mostra quali campagne hanno portato i visitatori sul tuo sito web. %1$s Per ulteriori informazioni sulle campagne di monitoraggio, leggi la %2$sdocumentazione campagne su piwik.org%3$s",
+ "CampaignsDocumentation": "Visitatori che sono arrivati sul tuo sito web a seguito di una campagna. %1$sVedi il%2$s report per maggiori dettagli.",
+ "CampaignsReportDocumentation": "Questo report mostra quali campagne hanno portato i visitatori sul tuo sito web. %1$sPer ulteriori informazioni sulle campagne di monitoraggio, leggi la %2$sdocumentazione campagne su piwik.org%3$s",
"ColumnCampaign": "Campagna",
"ColumnSearchEngine": "Motore di ricerca",
"ColumnSocial": "Social network",
@@ -27,7 +27,7 @@
"ReferrersOverview": "Panoramica Referenti",
"ReferrerTypes": "Tipi di Referenti",
"SearchEngines": "Motori di ricerca",
- "SearchEnginesDocumentation": "Un visitatore è stato portato sul tuo sito da un motore di ricerca. %1$s Vedi il %2$s report per maggiori dettagli.",
+ "SearchEnginesDocumentation": "Un visitatore è stato portato sul tuo sito da un motore di ricerca. %1$s Vedi il%2$s report per maggiori dettagli.",
"SearchEnginesReportDocumentation": "Questo report mostra quali motori di ricerca hanno portato gli utenti sul tuo sito web. %s Cliccando su una riga della tabella è possibile vedere ciò che gli utenti stavano cercando utilizzando un determinato motore di ricerca.",
"SocialFooterMessage": "Questo è un sottoinsieme dei siti web riportati a sinistra. Esso filtra altri siti web in modo da poter confrontare direttamente i vostri referenti di social network.",
"Socials": "Social Networks",
@@ -44,7 +44,7 @@
"ViewAllReferrers": "Vedi tutti i Referenti",
"ViewReferrersBy": "Vedi Referenti per %s",
"Websites": "Siti web",
- "WebsitesDocumentation": "Il visitatore ha seguito un link su un altro sito web che lo ha portato sul tuo. %1$s Vedi il %2$s report per maggiori dettagli.",
+ "WebsitesDocumentation": "Il visitatore ha seguito un link su un altro sito web che lo ha portato sul tuo. %1$sVedi il%2$s report per maggiori dettagli.",
"WebsitesReportDocumentation": "In questa tabella è possibile vedere quali siti web hanno portato i visitatori sul tuo sito. %s Cliccando su una riga della tabella è possibile vedere su quali URL si trovavano i link al tuo sito.",
"WidgetExternalWebsites": "Elenco di Siti web esterni",
"WidgetGetAll": "Tutti i Referenti",
diff --git a/plugins/Referrers/lang/nl.json b/plugins/Referrers/lang/nl.json
index 39be150270..61be153d4e 100644
--- a/plugins/Referrers/lang/nl.json
+++ b/plugins/Referrers/lang/nl.json
@@ -20,9 +20,9 @@
"EvolutionDocumentationMoreInfo": "Voor meer informatie over de verschillende soorten verwijzingen, zie de documentatie van de %s tabel.",
"Keywords": "Sleutelwoorden",
"KeywordsReportDocumentation": "Dit rapport toont de sleutelwoorden waarop men zocht en waarbij men werd doorverwezen naar uw website. %s Door op een rij in de tabel te klikken kunt u de verdeling van de zoekmachines zien die op deze sleutelwoorden naar uw website hebben doorverwezen.",
- "Referrer": "Referer",
+ "Referrer": "Verwijzer",
"ReferrerName": "Verwijzer Naam",
- "Referrers": "Referrers",
+ "Referrers": "Herkomst",
"ReferrersOverview": "Referer Overzicht",
"ReferrerTypes": "Referrer Types",
"SearchEngines": "Zoekmachines",
diff --git a/plugins/Referrers/lang/uk.json b/plugins/Referrers/lang/uk.json
index 9cf0a1fabe..e23ca82bee 100644
--- a/plugins/Referrers/lang/uk.json
+++ b/plugins/Referrers/lang/uk.json
@@ -1,28 +1,55 @@
{
"Referrers": {
+ "AllReferrersReportDocumentation": "Цей звіт показує всіх реферів в одному зведеному звіті, перераховуючи всі Веб-сайти, Пошукові запити і Кампанії, якими користувалися відвідувачі, щоб знайти ваш сайт.",
"Campaigns": "Кампанії",
+ "CampaignsDocumentation": "Відвідувач перейшов на ваш сайт з рекламної кампанії. %1$s Детальна інформація у звіті %2$s",
+ "CampaignsReportDocumentation": "Цей звіт показує, які рекламні кампанії привели відвідувачів на ваш сайт. %1$s Для більшої інформації про відстеження кампаній читайте %2$sДокументацію по кампаніям на сайті piwik.org%3$s",
"ColumnCampaign": "Кампанія",
- "ColumnSearchEngine": "Пошукова машина",
- "ColumnWebsite": "Веб-сайт",
- "ColumnWebsitePage": "Сторінка Веб-сайту",
- "DirectEntry": "Прямі заходи",
- "Distinct": "Унікальні реферери по типу реферера",
- "DistinctCampaigns": "унікальні компанії",
- "DistinctKeywords": "унікальні ключові слова",
- "DistinctSearchEngines": "унікальні пошукові машини",
- "DistinctWebsites": "унікальні веб-сайти",
+ "ColumnSearchEngine": "Пошукова система",
+ "ColumnSocial": "Сторінка соціальної мережі",
+ "ColumnWebsite": "Сайт",
+ "ColumnWebsitePage": "Сторінка сайту",
+ "DirectEntry": "Прямий вхід",
+ "DirectEntryDocumentation": "Відвідувач перейшов на ваш сайт за посиланням, вбивши її в адресний рядок браузера або по закладці, що називається прямим переходом.",
+ "Distinct": "Різні джерела по типу",
+ "DistinctCampaigns": "Різні кампанії",
+ "DistinctKeywords": "Різні ключові слова",
+ "DistinctSearchEngines": "Різні пошукові системи",
+ "DistinctWebsites": "Різні сайти",
+ "EvolutionDocumentation": "Це огляд джерел, з яких відвідувачі приходять на ваш сайт.",
+ "EvolutionDocumentationMoreInfo": "Більше інформації про різні типи джерел див. в документації по таблиці %s.",
"Keywords": "Ключові слова",
- "Referrers": "Реферер",
+ "KeywordsReportDocumentation": "Цей звіт показує ключові слова, які відвідувачі вашого сайту вводили в пошуковику, перш ніж потрапити на ваш сайт. %s Клікнувши на конкретний ряд таблиці, ви побачите розподіл ключового слова по пошуковим системам.",
+ "PluginDescription": "Повідомляє дані реферерів: Пошукові системи, Ключові слова, Веб-сайти, Кампанії, Соціальні медіа, Пряме введення.",
+ "Referrer": "Джерело",
+ "ReferrerName": "Ім'я джерела",
+ "Referrers": "Джерела трафіку",
+ "ReferrersOverview": "Огляд джерел",
+ "ReferrerTypes": "Дипи джерела",
"SearchEngines": "Пошукові системи",
+ "SearchEnginesDocumentation": "Відвідувач перейшов на ваш сайт з пошукової системи. %1$s Детальна інформація у звіті %2$s.",
+ "SearchEnginesReportDocumentation": "Цей звіт показує, з яких пошукових систем прийшли відвідувачі. %s Клікнувши на конкретний ряд таблиці, ви побачите, що відвідувач шукав в пошуковій системі і що привело його на ваш сайт.",
+ "SocialFooterMessage": "Це підмножина сайтів зліва. Він відфільтровує інші сайти, так що ви можете порівняти свої соціальні мережі та джерела безпосередньо.",
+ "Socials": "Соціальні мережі",
+ "SocialsReportDocumentation": "Цей звіт показує, які соціальні мережі привели відвідувачів на ваш сайт.<br \/>Клікнувши на конкретний рядок таблиці, ви можете побачити, з яких саме сторінок соціальних мереж перейшли ці відвідувачі.",
"SubmenuSearchEngines": "Пошукові системи і ключові слова",
- "SubmenuWebsites": "Веб-сайти",
- "Type": "Тип реферера",
- "TypeCampaigns": "%s з кампаній",
- "TypeDirectEntries": "%s прямих заходжень",
- "TypeSearchEngines": "%s з пошукових систем",
- "TypeWebsites": "%s з веб-сайтів",
- "UsingNDistinctUrls": "(використовуючи %s унікальні URL)",
+ "SubmenuWebsites": "Сайти",
+ "Type": "Тип джерела",
+ "TypeCampaigns": "%s входів з кампаній",
+ "TypeDirectEntries": "%s прямих входів",
+ "TypeReportDocumentation": "Ця таблиця містить інформацію про розподіл типів джерел трафіку.",
+ "TypeSearchEngines": "%s входів з пошукових систем",
+ "TypeWebsites": "%s входів з сайтів",
+ "UsingNDistinctUrls": "(за %s різним посиланням)",
+ "ViewAllReferrers": "Подивитися всі джерела",
+ "ViewReferrersBy": "Подивитися джерела по %s",
"Websites": "Сайти",
- "WidgetExternalWebsites": "Список зовнішніх веб-сайтів"
+ "WebsitesDocumentation": "Відвідувач перейшов на ваш сайт за посиланням, яка перебувало на іншому сайті. %1$s Детальна інформація у звіті %2$s",
+ "WebsitesReportDocumentation": "У цій таблиці ви можете бачити сайти, які привели відвідувачів на ваш сайт. %s Клікнувши на таблиці по конкретному рядку, ви побачите де було розміщене посилання на ваш сайт.",
+ "WidgetExternalWebsites": "Зовнішні сайти",
+ "WidgetGetAll": "Всі джерела трафіку",
+ "WidgetSocials": "Список соціальних мереж",
+ "WidgetTopKeywordsForPages": "Топ ключових слів для сторінки URL",
+ "XPercentOfVisits": "%s відвідувань"
}
} \ No newline at end of file
diff --git a/plugins/Referrers/tests/Integration/Columns/ReferrerKeywordTest.php b/plugins/Referrers/tests/Integration/Columns/ReferrerKeywordTest.php
index f5ff10e11c..1e7e4af8cb 100644
--- a/plugins/Referrers/tests/Integration/Columns/ReferrerKeywordTest.php
+++ b/plugins/Referrers/tests/Integration/Columns/ReferrerKeywordTest.php
@@ -38,7 +38,7 @@ class ReferrerKeywordTest extends IntegrationTestCase
$ecommerce = false;
Fixture::createWebsite($date, $ecommerce, $name = 'test1', $url = 'http://piwik.org/');
- Fixture::createWebsite($date, $ecommerce, $name = 'test3', $url = 'http://piwik.pro/');
+ Fixture::createWebsite($date, $ecommerce, $name = 'test3', $url = 'http://piwik.xyz/');
$this->keyword = new Keyword();
}
diff --git a/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php b/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php
index f118e14ba6..cd1610a178 100644
--- a/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php
+++ b/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php
@@ -44,7 +44,7 @@ class ReferrerNameTest extends IntegrationTestCase
Fixture::createWebsite($date, $ecommerce, $name = 'test1', $url = 'http://piwik.org/foo/bar');
Fixture::createWebsite($date, $ecommerce, $name = 'test2', $url = 'http://piwik.org/');
- Fixture::createWebsite($date, $ecommerce, $name = 'test3', $url = 'http://piwik.pro/');
+ Fixture::createWebsite($date, $ecommerce, $name = 'test3', $url = 'http://piwik.xyz/');
$this->referrerName = new ReferrerName();
}
diff --git a/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php b/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php
index 5925dbc5c0..63da107af5 100644
--- a/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php
+++ b/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php
@@ -32,6 +32,7 @@ class ReferrerTypeTest extends IntegrationTestCase
private $idSite1 = 1;
private $idSite2 = 2;
private $idSite3 = 3;
+ private $idSite4 = 4;
public function setUp()
{
@@ -44,7 +45,8 @@ class ReferrerTypeTest extends IntegrationTestCase
Fixture::createWebsite($date, $ecommerce, $name = 'test1', $url = 'http://piwik.org/foo/bar');
Fixture::createWebsite($date, $ecommerce, $name = 'test2', $url = 'http://piwik.org/');
- Fixture::createWebsite($date, $ecommerce, $name = 'test3', $url = 'http://piwik.pro/');
+ Fixture::createWebsite($date, $ecommerce, $name = 'test3', $url = 'http://piwik.xyz/');
+ Fixture::createWebsite($date, $ecommerce, $name = 'test4', $url = 'http://google.com/subdir/', 1, null, null, null, null, $excludeUnknownUrls = 1);
$this->referrerType = new ReferrerType();
}
@@ -112,6 +114,19 @@ class ReferrerTypeTest extends IntegrationTestCase
// testing case where domain of referrer is not known to any site but neither is the URL, url != urlref
array(Common::REFERRER_TYPE_WEBSITE, $this->idSite3, 'http://example.org', 'http://example.com/bar'),
+
+ ####### testing specific case:
+ ## - ignore unknown urls is activated for idSite4
+
+ // referrer comes from another subdir, but same host => external website
+ array(Common::REFERRER_TYPE_WEBSITE, $this->idSite4, 'http://google.com/subdir/site', 'http://google.com/base'),
+ // referrer comes from same subdir and host => direct entry
+ array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/page', 'http://google.com/subdir/x'),
+ array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/', 'http://google.com/subdir/?q=test'),
+ // referrer comes from another subdir, but same host, query matches search engine definition => search engine
+ array(Common::REFERRER_TYPE_SEARCH_ENGINE, $this->idSite4, 'http://google.com/subdir/index.html', 'http://google.com/search?q=test'),
+ // referrer comes from search engine not matching site
+ array(Common::REFERRER_TYPE_SEARCH_ENGINE, $this->idSite4, 'http://google.com/subdir/index.html', 'http://google.fr/search?q=test')
);
}
diff --git a/plugins/Referrers/tests/Unit/SearchEngineTest.php b/plugins/Referrers/tests/Unit/SearchEngineTest.php
index e9f0c926ea..1b5cab4dbc 100644
--- a/plugins/Referrers/tests/Unit/SearchEngineTest.php
+++ b/plugins/Referrers/tests/Unit/SearchEngineTest.php
@@ -121,7 +121,7 @@ class SearchEngineTest extends \PHPUnit_Framework_TestCase
public function testMissingSearchEngineKeyword($url, $searchEngine)
{
$name = parse_url('http://' . $url);
- $this->assertTrue(!empty($searchEngine['params']), $name['host']);
+ $this->assertTrue(!empty($searchEngine['params']) || !empty($searchEngine['hiddenkeyword']), $name['host']);
}
/**