diff --git a/core/DataFiles/SearchEngines.php b/core/DataFiles/SearchEngines.php index 03209af231f8a8accf634ff899a9365d8dc6cfb2..a874e8fd4ccbfe57ba4dad3bc491932a55eebf87 100644 --- a/core/DataFiles/SearchEngines.php +++ b/core/DataFiles/SearchEngines.php @@ -943,6 +943,12 @@ if (!isset($GLOBALS['Piwik_SearchEngines'])) { // X-recherche 'www.x-recherche.com' => array('X-Recherche', 'MOTS', 'cgi-bin/websearch?MOTS={k}'), + // Yahoo! Japan + 'search.yahoo.co.jp' => array('Yahoo! Japan', 'p', 'search?p={k}'), + 'video.search.yahoo.co.jp' => array('Yahoo! Japan Videos', 'p', 'search?p={k}'), + 'image.search.yahoo.co.jp' => array('Yahoo! Japan Images', 'p', 'search?p={k}'), + + // Yahoo 'search.yahoo.com' => array('Yahoo!', array('p', 'q'), 'search?p={k}'), // '*.search.yahoo.com' => array('Yahoo!'), // see built-in helper in Common.php @@ -953,8 +959,6 @@ if (!isset($GLOBALS['Piwik_SearchEngines'])) { 'espanol.yahoo.com' => array('Yahoo!'), 'qc.yahoo.com' => array('Yahoo!'), 'one.cn.yahoo.com' => array('Yahoo!'), - 'video.search.yahoo.co.jp' => array('Yahoo!'), - 'image.search.yahoo.co.jp' => array('Yahoo!'), // Powered by Yahoo APIs 'www.cercato.it' => array('Yahoo!', 'q'), diff --git a/core/UrlHelper.php b/core/UrlHelper.php index 2ce26ba1659faced01314422c19c50b9b952cbd1..b99f457f4024c1bb9ef7d1852d8b5a3da9519dea 100644 --- a/core/UrlHelper.php +++ b/core/UrlHelper.php @@ -286,8 +286,18 @@ class UrlHelper $searchEngines = Common::getSearchEngineUrls(); $hostPattern = self::getLossyUrl($referrerHost); + /* + * Try to get the best matching 'host' in definitions + * 1. check if host + path matches an definition + * 2. check if host only matches + * 3. check if host pattern + path matches + * 4. check if host pattern matches + * 5. special handling + */ if (array_key_exists($referrerHost . $referrerPath, $searchEngines)) { $referrerHost = $referrerHost . $referrerPath; + } elseif (array_key_exists($referrerHost, $searchEngines)) { + // no need to change host } elseif (array_key_exists($hostPattern . $referrerPath, $searchEngines)) { $referrerHost = $hostPattern . $referrerPath; } elseif (array_key_exists($hostPattern, $searchEngines)) { diff --git a/tests/resources/extractSearchEngineInformationFromUrlTests.yml b/tests/resources/extractSearchEngineInformationFromUrlTests.yml index 84cde865122721d92a535b6e2956f77f0cf083c7..1c519bdc78d852927e54fc0433d795b3e3ecb70e 100644 --- a/tests/resources/extractSearchEngineInformationFromUrlTests.yml +++ b/tests/resources/extractSearchEngineInformationFromUrlTests.yml @@ -379,9 +379,17 @@ keywords: 'searchterm' - url: 'http://image.search.yahoo.co.jp/search?ei=UTF-8&fr=top_ga1_sa&p=%EF%BD%94%EF%BD%8F+%EF%BD%88%EF%BD%85%EF%BD%81%EF%BD%92%EF%BD%94+%EF%BD%8C%EF%BD%8F%EF%BD%87%EF%BD%8F' - engine: 'Yahoo!' + engine: 'Yahoo! Japan Images' keywords: 'ï½”ï½ ï½ˆï½…ï½ï½’ï½” lï½ï½‡ï½' +- url: 'http://video.search.yahoo.co.jp/search?tt=c&ei=UTF-8&fr=sfp_as&aq=-1&oq=&p=piwik&meta=vc%3D' + engine: 'Yahoo! Japan Videos' + keywords: 'piwik' + +- url: 'http://search.yahoo.co.jp/search?ei=UTF-8&p=piwik' + engine: 'Yahoo! Japan' + keywords: 'piwik' + - url: 'http://www.claro-search.com/?q=logiciels+pour+%C3%A9crire+en+japonais+avec+windows+xp&s=web&as=0&rlz=0&babsrc=SP_clro' engine: 'Claro Search' keywords: 'logiciels pour écrire en japonais avec windows xp'