diff --git a/core/Tracker/Action.php b/core/Tracker/Action.php index 454e29c2090ce91fad55ab17a37244a6f4cc1b06..a4ef478f62d4632c0bdaf849c38a7ba49ce2d612 100644 --- a/core/Tracker/Action.php +++ b/core/Tracker/Action.php @@ -842,34 +842,37 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface $doTrackUrlForSiteSearch = !empty(Piwik_Config::getInstance()->Tracker['action_sitesearch_record_url']); $originalUrl = self::cleanupUrl($originalUrl); - $parsedUrl = @parse_url($originalUrl); - // Detect Site Search from URL query parameters - if(!empty($parsedUrl['query']) || !empty($parsedUrl['fragment'])) + + // Detect Site search from Tracking API parameters rather than URL + $searchKwd = Piwik_Common::getRequestVar( self::PARAMETER_NAME_SEARCH_KEYWORD, '', 'string', $this->request); + if(!empty($searchKwd)) { - // array($url, $actionName, $categoryName, $count); - $searchInfo = $this->detectSiteSearchFromUrl($website, $parsedUrl); - if(!empty($searchInfo)) { - list ($url, $actionName, $categoryName, $count) = $searchInfo; + $actionName = $searchKwd; + if($doTrackUrlForSiteSearch) { + $url = $originalUrl; + } + $isCategoryName = Piwik_Common::getRequestVar( self::PARAMETER_NAME_SEARCH_CATEGORY, false, 'string', $this->request); + if(!empty($isCategoryName)) { + $categoryName = $isCategoryName; + } + $isCount = Piwik_Common::getRequestVar( self::PARAMETER_NAME_SEARCH_COUNT, -1, 'int', $this->request); + if($this->isValidSearchCount($isCount)) { + $count = $isCount; } } - // Detect Site search from Tracking API parameters rather than URL - if(empty($actionName)) { - $searchKwd = Piwik_Common::getRequestVar( self::PARAMETER_NAME_SEARCH_KEYWORD, '', 'string', $this->request); - if(!empty($searchKwd)) + if(empty($actionName)) + { + $parsedUrl = @parse_url($originalUrl); + + // Detect Site Search from URL query parameters + if(!empty($parsedUrl['query']) || !empty($parsedUrl['fragment'])) { - $actionName = $searchKwd; - if($doTrackUrlForSiteSearch) { - $url = $originalUrl; - } - $isCategoryName = Piwik_Common::getRequestVar( self::PARAMETER_NAME_SEARCH_CATEGORY, false, 'string', $this->request); - if(!empty($isCategoryName)) { - $categoryName = $isCategoryName; - } - $isCount = Piwik_Common::getRequestVar( self::PARAMETER_NAME_SEARCH_COUNT, -1, 'int', $this->request); - if($this->isValidSearchCount($isCount)) { - $count = $isCount; + // array($url, $actionName, $categoryName, $count); + $searchInfo = $this->detectSiteSearchFromUrl($website, $parsedUrl); + if(!empty($searchInfo)) { + list ($url, $actionName, $categoryName, $count) = $searchInfo; } } } @@ -972,6 +975,9 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface } $url = Piwik_Common::getParseUrlReverse($parsedUrl); $actionName = trim(urldecode($actionName)); + if(empty($actionName)) { + return false; + } $categoryName = trim(urldecode($categoryName)); return array($url, $actionName, $categoryName, $count); } diff --git a/tests/PHPUnit/Integration/SiteSearchTest.php b/tests/PHPUnit/Integration/SiteSearchTest.php index 88dc822f0829d1139481f66ce3884fb4911177af..12c1814063d3569047bfe62bad8b96fa6ebbb153 100755 --- a/tests/PHPUnit/Integration/SiteSearchTest.php +++ b/tests/PHPUnit/Integration/SiteSearchTest.php @@ -251,7 +251,7 @@ class Test_Piwik_Integration_SiteSearch extends IntegrationTestCase self::checkResponse($visitor->doTrackPageView('Site Search with 1 result')); $visitor->setForceVisitDateTime(Piwik_Date::factory(self::$dateTime)->addHour(0.5)->getDatetime()); - self::checkResponse($visitor->doTrackSiteSearch("No Result Keyword!", "Bad No Result Category :(", $count = 0)); + self::checkResponse($visitor->doTrackSiteSearch("No Result Keyword!", "Bad No Result Category bis :(", $count = 0)); return array($defaultInit, $visitor); } } diff --git a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_day.xml b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_day.xml index b8c3766f2e0590094286b0ce519be51e63da7042..807b530ba41a8652251c1673c2ede377957980e1 100644 --- a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_day.xml +++ b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_day.xml @@ -75,6 +75,17 @@ </result> <result idSite="2"> <result date="2010-01-03"> + <row> + <label>No Result Keyword!</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <exit_nb_visits>1</exit_nb_visits> + <nb_pages_per_search>1</nb_pages_per_search> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + </row> <row> <label>SHOULD be a Search with no result!</label> <nb_visits>1</nb_visits> @@ -88,13 +99,12 @@ <row> <label>You can use Piwik in: አማáˆáŠ›, العربية, БеларуÑкаÑ, БългарÑки, Català , ÄŒesky, Dansk, Deutsch, Ελληνικά, English, Español, Eesti keel, Euskara, Ùارسی, Suomi, Français, Galego, עברית, Magyar, Bahasa Indonesia, Ãslenska, Italiano, 日本語, ქáƒáƒ თული, í•œêµì–´, Lietuvių, LatvieÅ¡u, Norsk (bokmÃ¥l), Nederlands, Norsk (nynorsk), Polski, Português brasileiro, Português, Română, РуÑÑкий, Slovensky%</label> <nb_visits>1</nb_visits> - <nb_hits>2</nb_hits> + <nb_hits>1</nb_hits> <sum_time_spent>180</sum_time_spent> - <exit_nb_visits>1</exit_nb_visits> - <nb_pages_per_search>2</nb_pages_per_search> + <nb_pages_per_search>1</nb_pages_per_search> <avg_time_on_page>180</avg_time_on_page> <bounce_rate>0%</bounce_rate> - <exit_rate>100%</exit_rate> + <exit_rate>0%</exit_rate> </row> </result> <result date="2010-01-04" /> diff --git a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_month.xml b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_month.xml index a9c76805e561c1cd0890cc5d602d30c4e0ee8358..3d60272474a3b9bc4426844ba2a5ca6e3701db76 100644 --- a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_month.xml +++ b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchKeywords_month.xml @@ -64,6 +64,17 @@ </result> <result idSite="2"> <result date="2010-01"> + <row> + <label>No Result Keyword!</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <exit_nb_visits>1</exit_nb_visits> + <nb_pages_per_search>1</nb_pages_per_search> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + </row> <row> <label>SHOULD be a Search with no result!</label> <nb_visits>1</nb_visits> @@ -77,13 +88,12 @@ <row> <label>You can use Piwik in: አማáˆáŠ›, العربية, БеларуÑкаÑ, БългарÑки, Català , ÄŒesky, Dansk, Deutsch, Ελληνικά, English, Español, Eesti keel, Euskara, Ùارسی, Suomi, Français, Galego, עברית, Magyar, Bahasa Indonesia, Ãslenska, Italiano, 日本語, ქáƒáƒ თული, í•œêµì–´, Lietuvių, LatvieÅ¡u, Norsk (bokmÃ¥l), Nederlands, Norsk (nynorsk), Polski, Português brasileiro, Português, Română, РуÑÑкий, Slovensky%</label> <nb_visits>1</nb_visits> - <nb_hits>2</nb_hits> + <nb_hits>1</nb_hits> <sum_time_spent>180</sum_time_spent> - <exit_nb_visits>1</exit_nb_visits> - <nb_pages_per_search>2</nb_pages_per_search> + <nb_pages_per_search>1</nb_pages_per_search> <avg_time_on_page>180</avg_time_on_page> <bounce_rate>0%</bounce_rate> - <exit_rate>100%</exit_rate> + <exit_rate>0%</exit_rate> </row> </result> <result date="2010-02" /> diff --git a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_day.xml b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_day.xml index 642212d4ce8fa97878b9fc03eaac8e7603fcc1d7..b30ddb01d7ba38af9e645b91649098314ffba106 100644 --- a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_day.xml +++ b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_day.xml @@ -33,6 +33,17 @@ </result> <result idSite="2"> <result date="2010-01-03"> + <row> + <label>No Result Keyword!</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <exit_nb_visits>1</exit_nb_visits> + <nb_pages_per_search>1</nb_pages_per_search> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + </row> <row> <label>SHOULD be a Search with no result!</label> <nb_visits>1</nb_visits> diff --git a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_month.xml b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_month.xml index e8b15cf40d47074c62a0538977693d8963e06254..4f8b06fb5b079aecbeb57cd51012d753c718de40 100644 --- a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_month.xml +++ b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.getSiteSearchNoResultKeywords_month.xml @@ -22,6 +22,17 @@ </result> <result idSite="2"> <result date="2010-01"> + <row> + <label>No Result Keyword!</label> + <nb_visits>1</nb_visits> + <nb_hits>1</nb_hits> + <sum_time_spent>0</sum_time_spent> + <exit_nb_visits>1</exit_nb_visits> + <nb_pages_per_search>1</nb_pages_per_search> + <avg_time_on_page>0</avg_time_on_page> + <bounce_rate>0%</bounce_rate> + <exit_rate>100%</exit_rate> + </row> <row> <label>SHOULD be a Search with no result!</label> <nb_visits>1</nb_visits> diff --git a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_day.xml b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_day.xml index 60a3e6ec0a79f16b7a75493175c4c5228a5069a1..f82b97b135c885305a3dbb7c7450ce5162e1d841 100644 --- a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_day.xml +++ b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_day.xml @@ -19,9 +19,9 @@ </result> <result idSite="2"> <result date="2010-01-03"> - <nb_keywords>2</nb_keywords> + <nb_keywords>3</nb_keywords> <nb_pageviews>2</nb_pageviews> - <nb_searches>2</nb_searches> + <nb_searches>3</nb_searches> <nb_uniq_pageviews>2</nb_uniq_pageviews> </result> <result date="2010-01-04" /> diff --git a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_month.xml b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_month.xml index dff9ffe1ed912cc777263f6676c897058341a26b..bd1427d6766ec2b93b56a5342c7abea10b137ed9 100644 --- a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_month.xml +++ b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__Actions.get_month.xml @@ -16,9 +16,9 @@ </result> <result idSite="2"> <result date="2010-01"> - <nb_keywords>2</nb_keywords> + <nb_keywords>3</nb_keywords> <nb_pageviews>2</nb_pageviews> - <nb_searches>2</nb_searches> + <nb_searches>3</nb_searches> <nb_uniq_pageviews>2</nb_uniq_pageviews> </result> <result date="2010-02" /> diff --git a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__CustomVariables.getCustomVariables_day.xml b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__CustomVariables.getCustomVariables_day.xml index 55484c12426a5471252be609164da74797d0a1be..f3b77be3d03571487db1a28a19d45988977a2e3e 100644 --- a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__CustomVariables.getCustomVariables_day.xml +++ b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__CustomVariables.getCustomVariables_day.xml @@ -87,12 +87,24 @@ <result date="2010-01-03"> <row> <label>_pk_scount</label> - <nb_actions>1</nb_actions> + <nb_actions>2</nb_actions> <subtable> <row> <label>0</label> <nb_uniq_visitors>1</nb_uniq_visitors> <nb_visits>1</nb_visits> + <nb_actions>2</nb_actions> + </row> + </subtable> + </row> + <row> + <label>_pk_scat</label> + <nb_actions>1</nb_actions> + <subtable> + <row> + <label>Bad No Result Category bis :(</label> + <nb_uniq_visitors>1</nb_uniq_visitors> + <nb_visits>1</nb_visits> <nb_actions>1</nb_actions> </row> </subtable> diff --git a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__CustomVariables.getCustomVariables_month.xml b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__CustomVariables.getCustomVariables_month.xml index 41a9e85fc302e17c6fe86578e242c52554272432..4ff57b66ad13099ce72260408a024c45f769d792 100644 --- a/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__CustomVariables.getCustomVariables_month.xml +++ b/tests/PHPUnit/Integration/expected/test_SiteSearch_AllSites__CustomVariables.getCustomVariables_month.xml @@ -62,11 +62,23 @@ <result date="2010-01"> <row> <label>_pk_scount</label> - <nb_actions>1</nb_actions> + <nb_actions>2</nb_actions> <subtable> <row> <label>0</label> <nb_visits>1</nb_visits> + <nb_actions>2</nb_actions> + <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> + </row> + </subtable> + </row> + <row> + <label>_pk_scat</label> + <nb_actions>1</nb_actions> + <subtable> + <row> + <label>Bad No Result Category bis :(</label> + <nb_visits>1</nb_visits> <nb_actions>1</nb_actions> <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors> </row>