From 09f20ea7f7ae6084be4fac41e0baa8c115f73f02 Mon Sep 17 00:00:00 2001 From: mattpiwik <matthieu.aubry@gmail.com> Date: Wed, 31 Oct 2012 20:09:54 +0000 Subject: [PATCH] Fixes #3502 Logic fix & tests git-svn-id: http://dev.piwik.org/svn/trunk@7347 59fd770c-687e-43c8-a1e3-f5a4ff64c105 --- core/Tracker/Action.php | 50 +++++++++++-------- tests/PHPUnit/Integration/SiteSearchTest.php | 2 +- ...tes__Actions.getSiteSearchKeywords_day.xml | 18 +++++-- ...s__Actions.getSiteSearchKeywords_month.xml | 18 +++++-- ...ions.getSiteSearchNoResultKeywords_day.xml | 11 ++++ ...ns.getSiteSearchNoResultKeywords_month.xml | 11 ++++ ...t_SiteSearch_AllSites__Actions.get_day.xml | 4 +- ...SiteSearch_AllSites__Actions.get_month.xml | 4 +- ...CustomVariables.getCustomVariables_day.xml | 14 +++++- ...stomVariables.getCustomVariables_month.xml | 14 +++++- 10 files changed, 109 insertions(+), 37 deletions(-) diff --git a/core/Tracker/Action.php b/core/Tracker/Action.php index 454e29c209..a4ef478f62 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 88dc822f08..12c1814063 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 b8c3766f2e..807b530ba4 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 a9c76805e5..3d60272474 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 642212d4ce..b30ddb01d7 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 e8b15cf40d..4f8b06fb5b 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 60a3e6ec0a..f82b97b135 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 dff9ffe1ed..bd1427d676 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 55484c1242..f3b77be3d0 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 41a9e85fc3..4ff57b66ad 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> -- GitLab