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:
authormattpiwik <matthieu.aubry@gmail.com>2012-10-15 11:41:12 +0400
committermattpiwik <matthieu.aubry@gmail.com>2012-10-15 11:41:12 +0400
commit5364959053ad9f086a37eff591bed7db7de67add (patch)
tree7a5675d8c0da719dd88370bbba0efc8366888b58
parent5bc36eb3cac3421f7a592edee11528e63252e841 (diff)
Refs #2992 Site Search KABOOM, Refs #49
Implementing Site Search tracking & reporting in Piwik core! * New Admin UI to customize, for each site, wheter site search is enabled. Also options to set default values to use. * New Reports: Searches, Searches with no result, Search categories, Top Pages Following a Search * to track "No result keyword" users will have to tag their site with a JS call, or add a new parameter to the search result page &search_count=X (X being zero for no result searches) * Reports works with Row evolution, PDF/HTML reports, Piwik Mobile * idaction_url is now NULLable because, Site Search records a page with idaction_name == Keyword, and idaction_url == NULL. This ensures that the Site Searches don't create "Page URL Not defined" records. * updates to Tracker JS API, new function trackSiteSearch, also added in PHP tracker * New fields in log_visit to track searches * new segment, "searches" which can be used to select visitors who did a search ie. searches>0 or those who searched a lot, ie searches>10 TODO: * commmit integration test, TESTING, DOCS, FAQ, release, and a nice Prayer to the universe and the stars, hoping that I can code a major new feature without any bug... * It would be awesome to have compatiblity with Transitions so we can see, for a given site search, what are the starting pages and Destination pages Thank you for your patience Timo, and thank in advance everyone for your help Testing this new feature! git-svn-id: http://dev.piwik.org/svn/trunk@7190 59fd770c-687e-43c8-a1e3-f5a4ff64c105
-rw-r--r--config/global.ini.php5
-rw-r--r--core/Archive.php7
-rw-r--r--core/Common.php23
-rw-r--r--core/DataTable/Filter/AddSummaryRow.php4
-rw-r--r--core/DataTable/Filter/ColumnDelete.php29
-rw-r--r--core/Db/Schema/Myisam.php6
-rw-r--r--core/Piwik.php12
-rw-r--r--core/PluginsFunctions/WidgetsList.php1
-rw-r--r--core/ScheduledTask.php2
-rw-r--r--core/Site.php35
-rw-r--r--core/Tracker.php20
-rw-r--r--core/Tracker/Action.php420
-rw-r--r--core/Tracker/GoalManager.php4
-rw-r--r--core/Tracker/Visit.php34
-rw-r--r--core/Translate.php5
-rwxr-xr-xcore/Updates/1.9-b16.php52
-rw-r--r--core/Version.php2
-rw-r--r--core/Visualization/Chart.php5
-rw-r--r--core/testMinimumPhpVersion.php8
-rw-r--r--js/piwik.js26
-rw-r--r--lang/am.php4
-rw-r--r--lang/be.php3
-rw-r--r--lang/de.php5
-rw-r--r--lang/en.php45
-rw-r--r--lang/fi.php3
-rw-r--r--lang/sv.php3
-rw-r--r--libs/PiwikTracker/PiwikTracker.php36
-rw-r--r--piwik.js27
-rw-r--r--plugins/API/API.php21
-rw-r--r--plugins/Actions/API.php117
-rw-r--r--plugins/Actions/Actions.php187
-rw-r--r--plugins/Actions/Archiving.php102
-rw-r--r--plugins/Actions/ArchivingHelper.php26
-rw-r--r--plugins/Actions/Controller.php156
-rw-r--r--plugins/Actions/templates/indexSiteSearch.tpl19
-rw-r--r--plugins/CustomVariables/API.php2
-rw-r--r--plugins/Goals/API.php16
-rw-r--r--plugins/Live/API.php22
-rw-r--r--plugins/Live/templates/lastVisits.tpl2
-rw-r--r--plugins/Live/templates/visitorLog.tpl36
-rw-r--r--plugins/SitesManager/API.php116
-rw-r--r--plugins/SitesManager/Controller.php8
-rw-r--r--plugins/SitesManager/SitesManager.php35
-rw-r--r--plugins/SitesManager/templates/SitesManager.js124
-rw-r--r--plugins/SitesManager/templates/SitesManager.tpl67
-rw-r--r--plugins/UserCountry/UserCountry.php11
-rw-r--r--plugins/VisitsSummary/Controller.php29
-rw-r--r--plugins/VisitsSummary/templates/sparklines.tpl7
-rw-r--r--tests/PHPUnit/Core/ArchiveProcessingTest.php1
-rw-r--r--tests/PHPUnit/Core/Tracker/ActionTest.php49
-rw-r--r--tests/PHPUnit/Core/Tracker/VisitTest.php3
-rwxr-xr-xtests/PHPUnit/Integration/NoVisitTest.php2
-rwxr-xr-xtests/PHPUnit/Integration/OneVisitorOneWebsite_SeveralDaysDateRange_ArchivingTestsTest.php2
-rwxr-xr-xtests/PHPUnit/Integration/OneVisitorTwoVisitsTest.php5
-rwxr-xr-xtests/PHPUnit/Integration/OneVisitorTwoVisits_withCookieSupportTest.php14
-rwxr-xr-xtests/PHPUnit/Integration/RowEvolutionTest.php3
-rwxr-xr-xtests/PHPUnit/Integration/TwoVisitors_TwoWebsites_DifferentDays_ConversionsTest.php26
-rwxr-xr-xtests/PHPUnit/IntegrationTestCase.php7
-rw-r--r--tests/PHPUnit/Plugins/ActionsTest.php2
-rw-r--r--tests/PHPUnit/Plugins/SitesManagerTest.php69
-rwxr-xr-xtests/PHPUnit/proxy/piwik.php2
-rw-r--r--tests/index.php2
-rw-r--r--tests/integration/expected/test_ImportLogs__Actions.getPageTitlesFollowingSiteSearch_month.xml2
-rw-r--r--tests/integration/expected/test_ImportLogs__Actions.getPageUrlsFollowingSiteSearch_month.xml2
-rw-r--r--tests/integration/expected/test_ImportLogs__Actions.getSiteSearchCategories_month.xml2
-rw-r--r--tests/integration/expected/test_ImportLogs__Actions.getSiteSearchKeywords_month.xml2
-rw-r--r--tests/integration/expected/test_ImportLogs__Actions.getSiteSearchNoResultKeywords_month.xml2
-rwxr-xr-xtests/integration/expected/test_ImportLogs__Actions.get_month.xml3
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitlesFollowingSiteSearch_day.xml2
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitles_day.xml4
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrlsFollowingSiteSearch_day.xml2
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits__Actions.getSiteSearchCategories_day.xml2
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits__Actions.getSiteSearchKeywords_day.xml2
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits__Actions.getSiteSearchNoResultKeywords_day.xml2
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits__Actions.get_day.xml3
-rwxr-xr-xtests/integration/expected/test_OneVisitorTwoVisits_hideColumns___Actions.getPageTitles_day.xml2
-rwxr-xr-xtests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageTitles_day.xml2
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageUrls_day.xml2
-rwxr-xr-xtests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageTitles_day.xml3
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageUrls_day.xml1
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlink_day.xml2
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlinks_day.xml4
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitlesFollowingSiteSearch_day.xml16
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitles_day.xml9
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrl_day.xml1
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrlsFollowingSiteSearch_day.xml17
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml3
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchCategories_day.xml2
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchKeywords_day.xml14
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchNoResultKeywords_day.xml2
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.get_day.xml3
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Live.getLastVisitsDetails_day.xml29
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Provider.getProvider_day.xml4
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Referers.getRefererType_day.xml4
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Referers.getWebsites_day.xml8
-rwxr-xr-xtests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getCity_day.xml4
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getContinent_day.xml4
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getCountry_day.xml4
-rwxr-xr-xtests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getRegion_day.xml4
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getBrowserType_day.xml4
-rwxr-xr-xtests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getBrowserVersion_day.xml4
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getBrowser_day.xml4
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getConfiguration_day.xml4
-rwxr-xr-xtests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getMobileVsDesktop_day.xml4
-rwxr-xr-xtests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getOSFamily_day.xml4
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getOS_day.xml4
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getResolution_day.xml4
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getWideScreen_day.xml4
-rwxr-xr-xtests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitTime.getByDayOfWeek_day.xml2
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitTime.getVisitInformationPerLocalTime_day.xml4
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitTime.getVisitInformationPerServerTime_day.xml4
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitorInterest.getNumberOfVisitsPerPage_day.xml4
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.getActions_day.xml2
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.getMaxActions_day.xml2
-rw-r--r--tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.get_day.xml6
-rw-r--r--tests/integration/expected/test_OneVisitor_LongUrlsTruncated__Actions.getPageUrls_day.xml2
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml2
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_Goals.getDaysToConversion_firstSite_lastN__API.getProcessedReport_day.xml7
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_MultiSites.getAll_firstSite_lastN__API.getProcessedReport_day.xml31
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__Goals.get_day.xml4
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__Goals.get_month.xml4
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_day.xml12
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_month.xml22
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_day.xml22
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_month.xml22
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_week.xml22
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_year.xml22
-rwxr-xr-xtests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_day.xml23
-rwxr-xr-xtests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_month.xml10
-rwxr-xr-xtests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_week.xml20
-rwxr-xr-xtests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_year.xml10
-rwxr-xr-xtests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_getMetricsFromDifferentReports__VisitsSummary.get_range.xml6
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_day.xml4
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_month.xml4
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_week.xml4
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_year.xml4
-rwxr-xr-xtests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_day.xml23
-rwxr-xr-xtests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_month.xml10
-rwxr-xr-xtests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_week.xml20
-rwxr-xr-xtests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_year.xml10
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_day.xml16
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_month.xml16
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_week.xml16
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_year.xml16
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_day.xml12
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_month.xml12
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_week.xml12
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_year.xml12
-rwxr-xr-xtests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html__PDFReports.generateReport_month.original.html4335
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__PDFReports.generateReport_month.original.html2
-rwxr-xr-xtests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_pdf__PDFReports.generateReport_month.original.pdfbin0 -> 585837 bytes
-rw-r--r--tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_pdf_tables_only__PDFReports.generateReport_month.original.pdfbin463169 -> 463171 bytes
-rw-r--r--tests/integration/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml7
-rw-r--r--tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageTitlesFollowingSiteSearch_day.xml10
-rw-r--r--tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageTitlesFollowingSiteSearch_week.xml10
-rw-r--r--tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageUrlsFollowingSiteSearch_day.xml10
-rw-r--r--tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageUrlsFollowingSiteSearch_week.xml10
-rw-r--r--tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchCategories_day.xml3
-rw-r--r--tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchCategories_week.xml3
-rw-r--r--tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchKeywords_day.xml10
-rw-r--r--tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchKeywords_week.xml10
-rw-r--r--tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchNoResultKeywords_day.xml10
-rw-r--r--tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchNoResultKeywords_week.xml10
-rw-r--r--tests/integration/expected/test_noVisit__Actions.getPageTitlesFollowingSiteSearch_day.xml2
-rw-r--r--tests/integration/expected/test_noVisit__Actions.getPageUrlsFollowingSiteSearch_day.xml2
-rw-r--r--tests/integration/expected/test_noVisit__Actions.getSiteSearchCategories_day.xml2
-rw-r--r--tests/integration/expected/test_noVisit__Actions.getSiteSearchKeywords_day.xml2
-rw-r--r--tests/integration/expected/test_noVisit__Actions.getSiteSearchNoResultKeywords_day.xml2
-rw-r--r--tests/integration/expected/test_noVisit__Actions.get_day.xml3
-rw-r--r--tests/javascript/index.php20
170 files changed, 6626 insertions, 619 deletions
diff --git a/config/global.ini.php b/config/global.ini.php
index 4f1ac9a0d9..f7e99ca982 100644
--- a/config/global.ini.php
+++ b/config/global.ini.php
@@ -369,6 +369,11 @@ campaign_keyword_var_name = "pk_kwd,piwik_kwd,utm_term"
; maximum length of a Page Title or a Page URL recorded in the log_action.name table
page_maximum_length = 1024;
+; By default, when a request is identified as a "Internal Site Search", the URL will not be recorded. This is for performance reasons
+; (the less unique URLs in Piwik the better). Piwik will track, for each Site Search: "Search Keyword",
+; and optionally the "Search Category" and "Search result count". You can set this to 1 to enable tracking Site Search URLs.
+action_sitesearch_record_url = 0
+
; Anonymize a visitor's IP address after testing for "Ip exclude"
; This value is the number of octets in IP address to mask; if the AnonymizeIP plugin is deactivated, this value is ignored.
; For IPv4 addresses, valid values are 0..4; for IPv6 addresses, valid values are 0..16
diff --git a/core/Archive.php b/core/Archive.php
index d4ebfd0a91..cec56105f0 100644
--- a/core/Archive.php
+++ b/core/Archive.php
@@ -75,6 +75,10 @@ abstract class Piwik_Archive
const INDEX_ECOMMERCE_ORDERS = 26;
const INDEX_ECOMMERCE_ITEM_PRICE_VIEWED = 27;
+ // Site Search
+ const INDEX_SITE_SEARCH_HAS_NO_RESULT = 28;
+ const INDEX_PAGE_IS_FOLLOWING_SITE_SEARCH_NB_HITS = 29;
+
// Goal reports
const INDEX_GOAL_NB_CONVERSIONS = 1;
const INDEX_GOAL_REVENUE = 2;
@@ -113,7 +117,8 @@ abstract class Piwik_Archive
Piwik_Archive::INDEX_PAGE_ENTRY_NB_ACTIONS => 'entry_nb_actions',
Piwik_Archive::INDEX_PAGE_ENTRY_SUM_VISIT_LENGTH => 'entry_sum_visit_length',
Piwik_Archive::INDEX_PAGE_ENTRY_BOUNCE_COUNT => 'entry_bounce_count',
-
+ Piwik_Archive::INDEX_PAGE_IS_FOLLOWING_SITE_SEARCH_NB_HITS => 'nb_hits_following_search',
+
// Items reports metrics
Piwik_Archive::INDEX_ECOMMERCE_ITEM_REVENUE => 'revenue',
Piwik_Archive::INDEX_ECOMMERCE_ITEM_QUANTITY => 'quantity',
diff --git a/core/Common.php b/core/Common.php
index 3a23fa4615..7cd6359071 100644
--- a/core/Common.php
+++ b/core/Common.php
@@ -416,7 +416,6 @@ class Piwik_Common
{
$urlQuery = substr($urlQuery, 1);
}
-
$separator = '&';
$urlQuery = $separator . $urlQuery;
@@ -891,7 +890,7 @@ class Piwik_Common
{
if( is_null($varDefault))
{
- throw new Exception("The parameter '$varName' isn't set in the Request, and a default value wasn't provided.");
+ throw new Exception("The parameter '$varName' isn't set in the Request, and a default value wasn't provided." );
}
else
{
@@ -1942,3 +1941,23 @@ function destroy(&$var)
unset($var);
$var = null;
}
+
+if(!function_exists('printDebug'))
+{
+ function printDebug( $info = '' )
+ {
+ if(isset($GLOBALS['PIWIK_TRACKER_DEBUG']) && $GLOBALS['PIWIK_TRACKER_DEBUG'])
+ {
+ if(is_array($info))
+ {
+ print("<pre>");
+ print(htmlspecialchars(var_export($info,true), ENT_QUOTES));
+ print("</pre>");
+ }
+ else
+ {
+ print(htmlspecialchars($info, ENT_QUOTES) . "<br />\n");
+ }
+ }
+ }
+}
diff --git a/core/DataTable/Filter/AddSummaryRow.php b/core/DataTable/Filter/AddSummaryRow.php
index fb62bef529..810d942668 100644
--- a/core/DataTable/Filter/AddSummaryRow.php
+++ b/core/DataTable/Filter/AddSummaryRow.php
@@ -77,12 +77,12 @@ class Piwik_DataTable_Filter_AddSummaryRow extends Piwik_DataTable_Filter
//FIXME: I'm not sure why it could return false, but it was reported in: http://forum.piwik.org/read.php?2,89324,page=1#msg-89442
if($summaryRow)
{
- $newRow->sumRow($summaryRow);
+ $newRow->sumRow($summaryRow, $enableCopyMetadata = false);
}
}
else
{
- $newRow->sumRow($rows[$i]);
+ $newRow->sumRow($rows[$i], $enableCopyMetadata = false);
}
}
diff --git a/core/DataTable/Filter/ColumnDelete.php b/core/DataTable/Filter/ColumnDelete.php
index 1d10b7cdb7..67cb544d66 100644
--- a/core/DataTable/Filter/ColumnDelete.php
+++ b/core/DataTable/Filter/ColumnDelete.php
@@ -33,6 +33,13 @@ class Piwik_DataTable_Filter_ColumnDelete extends Piwik_DataTable_Filter
* @var array
*/
private $columnsToKeep;
+
+ /**
+ * Delete the column, only if the value was zero
+ *
+ * @var bool
+ */
+ private $deleteIfZeroOnly;
/**
* Constructor.
@@ -44,7 +51,7 @@ class Piwik_DataTable_Filter_ColumnDelete extends Piwik_DataTable_Filter
* comma-separated list of column names. Columns not in
* this list will be removed.
*/
- public function __construct( $table, $columnsToRemove, $columnsToKeep = array() )
+ public function __construct( $table, $columnsToRemove, $columnsToKeep = array(), $deleteIfZeroOnly = false )
{
parent::__construct($table);
@@ -60,21 +67,21 @@ class Piwik_DataTable_Filter_ColumnDelete extends Piwik_DataTable_Filter
$this->columnsToRemove = $columnsToRemove;
$this->columnsToKeep = array_flip($columnsToKeep); // flip so we can use isset instead of in_array
-
- // always do recursive filter
- $this->enableRecursive(true);
+ $this->deleteIfZeroOnly = $deleteIfZeroOnly;
}
-
+
/**
* Filters the given DataTable. Removes columns that are not desired from
* each DataTable row.
- *
+ *
* @param Piwik_DataTable $table
*/
public function filter($table)
{
+ // always do recursive filter
+ $this->enableRecursive(true);
$recurse = false; // only recurse if there are columns to remove/keep
-
+
// remove columns specified in $this->columnsToRemove
if (!empty($this->columnsToRemove))
{
@@ -82,6 +89,14 @@ class Piwik_DataTable_Filter_ColumnDelete extends Piwik_DataTable_Filter
{
foreach ($this->columnsToRemove as $column)
{
+ if($this->deleteIfZeroOnly)
+ {
+ $value = $row->getColumn($column);
+ if($value === false || !empty($value))
+ {
+ continue;
+ }
+ }
$row->deleteColumn($column);
}
}
diff --git a/core/Db/Schema/Myisam.php b/core/Db/Schema/Myisam.php
index 12fc6b7a07..cf850e50c3 100644
--- a/core/Db/Schema/Myisam.php
+++ b/core/Db/Schema/Myisam.php
@@ -82,6 +82,9 @@ class Piwik_Db_Schema_Myisam implements Piwik_Db_Schema_Interface
main_url VARCHAR(255) NOT NULL,
ts_created TIMESTAMP NULL,
ecommerce TINYINT DEFAULT 0,
+ sitesearch TINYINT DEFAULT 1,
+ sitesearch_keyword_parameters TEXT NOT NULL,
+ sitesearch_category_parameters TEXT NOT NULL,
timezone VARCHAR( 50 ) NOT NULL,
currency CHAR( 3 ) NOT NULL,
excluded_ips TEXT NOT NULL,
@@ -187,6 +190,7 @@ class Piwik_Db_Schema_Myisam implements Piwik_Db_Schema_Interface
visit_entry_idaction_url INTEGER(11) UNSIGNED NOT NULL,
visit_entry_idaction_name INTEGER(11) UNSIGNED NOT NULL,
visit_total_actions SMALLINT(5) UNSIGNED NOT NULL,
+ visit_total_searches SMALLINT(5) UNSIGNED NOT NULL,
visit_total_time SMALLINT(5) UNSIGNED NOT NULL,
visit_goal_converted TINYINT(1) NOT NULL,
visit_goal_buyer TINYINT(1) NOT NULL,
@@ -310,7 +314,7 @@ class Piwik_Db_Schema_Myisam implements Piwik_Db_Schema_Interface
idvisitor BINARY(8) NOT NULL,
server_time DATETIME NOT NULL,
idvisit INTEGER(10) UNSIGNED NOT NULL,
- idaction_url INTEGER(10) UNSIGNED NOT NULL,
+ idaction_url INTEGER(10) UNSIGNED DEFAULT NULL,
idaction_url_ref INTEGER(10) UNSIGNED NOT NULL,
idaction_name INTEGER(10) UNSIGNED,
idaction_name_ref INTEGER(10) UNSIGNED NOT NULL,
diff --git a/core/Piwik.php b/core/Piwik.php
index cb61957210..a4840ef222 100644
--- a/core/Piwik.php
+++ b/core/Piwik.php
@@ -2453,6 +2453,7 @@ class Piwik
return true;
} catch(Exception $e) {
+// echo $sql . ' ---- ' . $e->getMessage();
if(!Zend_Registry::get('db')->isErrNo($e, '1148'))
{
Piwik::log("LOAD DATA INFILE failed... Error was:" . $e->getMessage());
@@ -2498,16 +2499,23 @@ class Piwik
self::createCSVFile($filePath, $fileSpec, $values);
+ if(!file_exists($filePath))
+ {
+ throw new Exception("File $filePath could not be created.");
+ }
$rc = self::createTableFromCSVFile($tableName, $fields, $filePath, $fileSpec);
if($rc)
{
unlink($filePath);
return true;
}
-
- throw new Exception('unknown cause');
+ else
+ {
+ throw new Exception('unknown cause');
+ }
} catch(Exception $e) {
+// echo "LOAD DATA INFILE failed or not supported, falling back to normal INSERTs... Error was:" . $e->getMessage();
Piwik::log("LOAD DATA INFILE failed or not supported, falling back to normal INSERTs... Error was:" . $e->getMessage());
}
}
diff --git a/core/PluginsFunctions/WidgetsList.php b/core/PluginsFunctions/WidgetsList.php
index eda6b8f8c4..8ffbf35489 100644
--- a/core/PluginsFunctions/WidgetsList.php
+++ b/core/PluginsFunctions/WidgetsList.php
@@ -70,6 +70,7 @@ class Piwik_WidgetsList
'General_Visitors',
'UserSettings_VisitorSettings',
'Actions_Actions',
+ 'Actions_SubmenuSitesearch',
'Referers_Referers',
'Goals_Goals',
'Goals_Ecommerce',
diff --git a/core/ScheduledTask.php b/core/ScheduledTask.php
index 284b901c6f..039ba0239d 100644
--- a/core/ScheduledTask.php
+++ b/core/ScheduledTask.php
@@ -23,7 +23,7 @@ class Piwik_ScheduledTask
const NORMAL_PRIORITY = 6;
const HIGH_PRIORITY = 3;
const HIGHEST_PRIORITY = 0;
-
+
/**
* Class name where the specified method is located
* @var string
diff --git a/core/Site.php b/core/Site.php
index 2fbf40597d..c810d13b63 100644
--- a/core/Site.php
+++ b/core/Site.php
@@ -184,6 +184,26 @@ class Piwik_Site
return $this->get('ecommerce') == 1;
}
+ function getSearchKeywordParameters()
+ {
+ return $this->get('sitesearch_keyword_parameters');
+ }
+
+ function getSearchCategoryParameters()
+ {
+ return $this->get('sitesearch_category_parameters');
+ }
+
+ /**
+ * Returns whether Site Search Tracking is enabled for the site
+ *
+ * @return bool
+ */
+ function isSiteSearchEnabled()
+ {
+ return $this->get('sitesearch') == 1;
+ }
+
/**
* Checks the given string for valid site ids and returns them as an array
*
@@ -283,10 +303,10 @@ class Piwik_Site
{
return self::getFor($idsite, 'main_url');
}
-
+
/**
* Returns whether the site with the specified ID is ecommerce enabled
- *
+ *
* @param int $idsite The site ID.
* @return string
*/
@@ -296,6 +316,17 @@ class Piwik_Site
}
/**
+ * Returns whether the site with the specified ID is Site Search enabled
+ *
+ * @param int $idsite The site ID.
+ * @return string
+ */
+ static public function isSiteSearchEnabledFor($idsite)
+ {
+ return self::getFor($idsite, 'sitesearch') == 1;
+ }
+
+ /**
* Returns the currency of the site with the specified ID.
*
* @param int $idsite The site ID.
diff --git a/core/Tracker.php b/core/Tracker.php
index 3a31676af1..8d1930d857 100644
--- a/core/Tracker.php
+++ b/core/Tracker.php
@@ -707,26 +707,6 @@ class Piwik_Tracker
}
}
-if(!function_exists('printDebug'))
-{
- function printDebug( $info = '' )
- {
- if(isset($GLOBALS['PIWIK_TRACKER_DEBUG']) && $GLOBALS['PIWIK_TRACKER_DEBUG'])
- {
- if(is_array($info))
- {
- print("<pre>");
- print(htmlspecialchars(var_export($info,true), ENT_QUOTES));
- print("</pre>");
- }
- else
- {
- print(htmlspecialchars($info, ENT_QUOTES) . "<br />\n");
- }
- }
- }
-}
-
if(!function_exists('Piwik_Translate'))
{
function Piwik_Translate($string, $args = array())
diff --git a/core/Tracker/Action.php b/core/Tracker/Action.php
index 4e0c355ddc..fc39224cdb 100644
--- a/core/Tracker/Action.php
+++ b/core/Tracker/Action.php
@@ -58,9 +58,23 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
private $actionName;
private $actionType;
private $actionUrl;
+
+ private $searchCategory = false;
+ private $searchCount = false;
static private $queryParametersToExclude = array('phpsessid', 'jsessionid', 'sessionid', 'aspsessionid', 'fb_xd_fragment', 'fb_comment_id');
+ /* Custom Variable names & slots used for Site Search metadata (category, results count) */
+ const CVAR_KEY_SEARCH_CATEGORY = '_pk_scat';
+ const CVAR_KEY_SEARCH_COUNT = '_pk_scount';
+ const CVAR_INDEX_SEARCH_CATEGORY = '4';
+ const CVAR_INDEX_SEARCH_COUNT = '5';
+
+ /* Tracking API Parameters used to force a site search request */
+ const PARAMETER_NAME_SEARCH_COUNT = 'search_count';
+ const PARAMETER_NAME_SEARCH_CATEGORY = 'search_cat';
+ const PARAMETER_NAME_SEARCH_KEYWORD = 'search';
+
/**
* Map URL prefixes to integers.
* @see self::normalizeUrl(), self::reconstructNormalizedUrl()
@@ -173,6 +187,10 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
case Piwik_Tracker_Action_Interface::TYPE_ACTION_URL:
$actionNameType = Piwik_Tracker_Action_Interface::TYPE_ACTION_NAME;
break;
+
+ case Piwik_Tracker_Action_Interface::TYPE_SITE_SEARCH:
+ $actionNameType = Piwik_Tracker_Action_Interface::TYPE_SITE_SEARCH;
+ break;
}
return $actionNameType;
@@ -180,7 +198,18 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
public function getIdActionUrl()
{
- return $this->idActionUrl;
+ $idUrl = $this->idActionUrl;
+ if(!empty($idUrl)) {
+ return $idUrl;
+ }
+ // Site Search, by default, will not track URL. We do not want URL to appear as "Page URL not defined"
+ // so we specifically set it to NULL in the table (the archiving query does IS NOT NULL)
+ if($this->getActionType() == self::TYPE_SITE_SEARCH) {
+ return null;
+ }
+
+ // However, for other cases, we record idaction_url = 0 which will be displayed as "Page URL Not Defined"
+ return 0;
}
public function getIdActionName()
{
@@ -200,7 +229,6 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
protected function setActionUrl($url)
{
- $url = self::excludeQueryParametersFromUrl($url, $this->idSite);
$this->actionUrl = $url;
}
@@ -270,89 +298,135 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
public static function processUrlFragment($urlFragment)
{
//TOOD implement, read setting for this site
-// return '';
+// return ''; http://dev.piwik.org/trac/ticket/3232
+
+
+ // Remove trailing Hash tag in ?query#hash#
+ if(substr($urlFragment, -1) == '#')
+ {
+ $urlFragment = substr($urlFragment, 0, strlen($urlFragment) - 1);
+ }
return $urlFragment;
}
+ /**
+ * Given the Input URL, will exclude all query parameters set for this site
+ * Note: Site Search parameters are excluded in detectSiteSearch()
+ * @static
+ * @param $originalUrl
+ * @param $idSite
+ * @return bool|string
+ */
static public function excludeQueryParametersFromUrl($originalUrl, $idSite)
{
- $website = Piwik_Common::getCacheWebsiteAttributes( $idSite );
$originalUrl = self::cleanupUrl($originalUrl);
+
$parsedUrl = @parse_url($originalUrl);
+ $parsedUrl = self::cleanupHostAndHashTag($parsedUrl);
+ $parametersToExclude = self::getQueryParametersToExclude($idSite);
+
if(empty($parsedUrl['query']))
{
- $parsedUrl = self::cleanupHostAndHashTag($parsedUrl);
+ if(empty($parsedUrl['fragment']))
+ {
+ return Piwik_Common::getParseUrlReverse($parsedUrl);
+ }
+ // Exclude from the hash tag as well
+ $queryParameters = Piwik_Common::getArrayFromQueryString($parsedUrl['fragment']);
+ $parsedUrl['fragment'] = self::getQueryStringWithExcludedParameters($queryParameters, $parametersToExclude);
$url = Piwik_Common::getParseUrlReverse($parsedUrl);
return $url;
}
+ $queryParameters = Piwik_Common::getArrayFromQueryString($parsedUrl['query']);
+ $parsedUrl['query'] = self::getQueryStringWithExcludedParameters($queryParameters, $parametersToExclude);
+ $url = Piwik_Common::getParseUrlReverse($parsedUrl);
+ return $url;
+ }
+
+ /**
+ * Returns the array of parameters names that must be excluded from the Query String in all tracked URLs
+ * @static
+ * @param $idSite
+ * @return array
+ */
+ public static function getQueryParametersToExclude($idSite)
+ {
$campaignTrackingParameters = Piwik_Common::getCampaignParameters();
-
+
$campaignTrackingParameters = array_merge(
- $campaignTrackingParameters[0], // campaign name parameters
- $campaignTrackingParameters[1] // campaign keyword parameters
- );
-
- $excludedParameters = isset($website['excluded_parameters'])
- ? $website['excluded_parameters']
- : array();
-
- $parametersToExclude = array_merge( $excludedParameters,
- self::$queryParametersToExclude,
- $campaignTrackingParameters);
-
+ $campaignTrackingParameters[0], // campaign name parameters
+ $campaignTrackingParameters[1] // campaign keyword parameters
+ );
+
+ $website = Piwik_Common::getCacheWebsiteAttributes($idSite);
+ $excludedParameters = isset($website['excluded_parameters'])
+ ? $website['excluded_parameters']
+ : array();
+
+ if(!empty($excludedParameters)) {
+ printDebug('Excluding parameters "' . implode(',', $excludedParameters) . '" from URL');
+ }
+
+ $parametersToExclude = array_merge($excludedParameters,
+ self::$queryParametersToExclude,
+ $campaignTrackingParameters);
+
$parametersToExclude = array_map('strtolower', $parametersToExclude);
- $queryParameters = Piwik_Common::getArrayFromQueryString($parsedUrl['query']);
-
+ return $parametersToExclude;
+ }
+
+ /**
+ * Returns a Query string,
+ * Given an array of input parameters, and an array of parameter names to exclude
+ *
+ * @static
+ * @param $queryParameters
+ * @param $parametersToExclude
+ * @return string
+ */
+ public static function getQueryStringWithExcludedParameters($queryParameters, $parametersToExclude)
+ {
$validQuery = '';
$separator = '&';
- foreach($queryParameters as $name => $value)
- {
+ foreach ($queryParameters as $name => $value) {
// decode encoded square brackets
- $name = str_replace(array('%5B','%5D'),array('[',']'),$name);
+ $name = str_replace(array('%5B', '%5D'), array('[', ']'), $name);
- if(!in_array(strtolower($name), $parametersToExclude))
- {
- if (is_array($value))
- {
- foreach ($value as $param)
- {
- if($param === false)
- {
- $validQuery .= $name.'[]'.$separator;
- }
- else
- {
- $validQuery .= $name.'[]='.$param.$separator;
+ if (!in_array(strtolower($name), $parametersToExclude)) {
+ if (is_array($value)) {
+ foreach ($value as $param) {
+ if ($param === false) {
+ $validQuery .= $name . '[]' . $separator;
+ } else {
+ $validQuery .= $name . '[]=' . $param . $separator;
}
}
- }
- else if($value === false)
- {
- $validQuery .= $name.$separator;
- }
- else
- {
- $validQuery .= $name.'='.$value.$separator;
+ } else if ($value === false) {
+ $validQuery .= $name . $separator;
+ } else {
+ $validQuery .= $name . '=' . $value . $separator;
}
}
}
- $parsedUrl['query'] = substr($validQuery,0,-strlen($separator));
- $parsedUrl = self::cleanupHostAndHashTag($parsedUrl);
- $url = Piwik_Common::getParseUrlReverse($parsedUrl);
-
- printDebug('Excluding parameters "'.implode(',',$excludedParameters).'" from URL');
- if($originalUrl != $url)
- {
- printDebug(' Before was "'.$originalUrl.'"');
- printDebug(' After is "'.$url.'"');
- }
- return $url;
+ $validQuery = substr($validQuery,0,-strlen($separator));
+ return $validQuery;
}
-
+
public function init()
{
$info = $this->extractUrlAndActionNameFromRequest();
+
+ $originalUrl = $info['url'];
+ $info['url'] = self::excludeQueryParametersFromUrl($originalUrl, $this->idSite);
+
+ if($originalUrl != $info['url'])
+ {
+ printDebug(' Before was "'.$originalUrl.'"');
+ printDebug(' After is "'.$info['url'].'"');
+ }
+
+ // Set Final attributes for this Action (Pageview, Search, etc.)
$this->setActionName($info['name']);
$this->setActionType($info['type']);
$this->setActionUrl($info['url']);
@@ -473,6 +547,7 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
case self::TYPE_OUTLINK: return 'Outlink URL'; break;
case self::TYPE_DOWNLOAD: return 'Download URL'; break;
case self::TYPE_ACTION_NAME: return 'Page Title'; break;
+ case self::TYPE_SITE_SEARCH: return 'Site Search'; break;
case self::TYPE_ECOMMERCE_ITEM_SKU: return 'Ecommerce Item SKU'; break;
case self::TYPE_ECOMMERCE_ITEM_NAME: return 'Ecommerce Item Name'; break;
case self::TYPE_ECOMMERCE_ITEM_CATEGORY: return 'Ecommerce Item Category'; break;
@@ -497,28 +572,45 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
return;
}
$actions = array();
- $action = array($this->getActionName(), $this->getActionNameType());
+ $nameType = $this->getActionNameType();
+ $action = array($this->getActionName(), $nameType);
if(!is_null($action[1]))
{
$actions[] = $action;
}
- $action = array($this->getActionUrl(), $this->getActionType());
- if(!is_null($action[1]))
+
+ $urlType = $this->getActionType();
+ $url = $this->getActionUrl();
+ // this code is a mess, but basically, getActionType() returns SITE_SEARCH,
+ // but we do want to record the site search URL as an ACTION_URL
+ if($nameType == Piwik_Tracker_Action::TYPE_SITE_SEARCH)
{
- $actions[] = $action;
+ $urlType = Piwik_Tracker_Action::TYPE_ACTION_URL;
+
+ // By default, Site Search does not record the URL for the Search Result page, to slightly improve performance
+ if(empty(Piwik_Config::getInstance()->Tracker['action_sitesearch_record_url']))
+ {
+ $url = false;
+ }
+ }
+ if(!is_null($urlType) && !empty($url))
+ {
+ $actions[] = array($url, $urlType);
}
+
$loadedActionIds = self::loadActionId($actions);
foreach($loadedActionIds as $loadedActionId)
{
list($name, $type, $actionId) = $loadedActionId;
- if($type == $this->getActionType())
+ if($type == Piwik_Tracker_Action::TYPE_ACTION_NAME
+ || $type == Piwik_Tracker_Action::TYPE_SITE_SEARCH)
{
- $this->idActionUrl = $actionId;
+ $this->idActionName = $actionId;
}
- elseif($type == $this->getActionNameType())
+ else
{
- $this->idActionName = $actionId;
+ $this->idActionUrl = $actionId;
}
}
}
@@ -550,22 +642,27 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
public function record( $idVisit, $visitorIdCookie, $idRefererActionUrl, $idRefererActionName, $timeSpentRefererAction)
{
$this->loadIdActionNameAndUrl();
-
- $idActionName = in_array($this->getActionType(), array(Piwik_Tracker_Action::TYPE_ACTION_NAME, Piwik_Tracker_Action::TYPE_ACTION_URL))
+
+ $idActionName = in_array($this->getActionType(), array( Piwik_Tracker_Action::TYPE_ACTION_NAME,
+ Piwik_Tracker_Action::TYPE_ACTION_URL,
+ Piwik_Tracker_Action::TYPE_SITE_SEARCH))
? (int)$this->getIdActionName()
: null;
+
+
$insert = array(
'idvisit' => $idVisit,
'idsite' => $this->idSite,
'idvisitor' => $visitorIdCookie,
'server_time' => Piwik_Tracker::getDatetimeFromTimestamp($this->timestamp),
- 'idaction_url' => (int)$this->getIdActionUrl(),
+ 'idaction_url' => $this->getIdActionUrl(),
'idaction_name' => $idActionName,
'idaction_url_ref' => $idRefererActionUrl,
'idaction_name_ref' => $idRefererActionName,
'time_spent_ref_action' => $timeSpentRefererAction
);
- $customVariables = Piwik_Tracker_Visit::getCustomVariables($scope = 'page', $this->request);
+ $customVariables = $this->getCustomVariables();
+
$insert = array_merge($insert, $customVariables);
// Mysqli apparently does not like NULL inserts?
@@ -602,7 +699,35 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
*/
Piwik_PostEvent('Tracker.Action.record', $this, $info);
}
-
+
+ public function getCustomVariables()
+ {
+ $customVariables = Piwik_Tracker_Visit::getCustomVariables($scope = 'page', $this->request);
+
+ // Enrich Site Search actions with Custom Variables, overwritting existing values
+ if (!empty($this->searchCategory)) {
+ if (!empty($customVariables['custom_var_k' . self::CVAR_INDEX_SEARCH_CATEGORY])) {
+ printDebug("WARNING: Overwriting existing Custom Variable in slot " . self::CVAR_INDEX_SEARCH_CATEGORY . " for this page view");
+ }
+ $customVariables['custom_var_k' . self::CVAR_INDEX_SEARCH_CATEGORY] = self::CVAR_KEY_SEARCH_CATEGORY;
+ $customVariables['custom_var_v' . self::CVAR_INDEX_SEARCH_CATEGORY] = Piwik_Tracker_Visit::truncateCustomVariable($this->searchCategory);
+ }
+ if ($this->searchCount !== false) {
+ if (!empty($customVariables['custom_var_k' . self::CVAR_INDEX_SEARCH_COUNT])) {
+ printDebug("WARNING: Overwriting existing Custom Variable in slot " . self::CVAR_INDEX_SEARCH_COUNT . " for this page view");
+ }
+ $customVariables['custom_var_k' . self::CVAR_INDEX_SEARCH_COUNT] = self::CVAR_KEY_SEARCH_COUNT;
+ $customVariables['custom_var_v' . self::CVAR_INDEX_SEARCH_COUNT] = (int)$this->searchCount;
+ }
+
+ if (!empty($customVariables))
+ {
+ printDebug("Page level Custom Variables: ");
+ printDebug($customVariables);
+ }
+ return $customVariables;
+ }
+
/**
* Returns the ID of the newly created record in the log_link_visit_action table
*
@@ -669,13 +794,26 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
$actionName = implode($actionCategoryDelimiter, $split);
}
$url = self::cleanupString($url);
-
+
if(!Piwik_Common::isLookLikeUrl($url))
{
+ printDebug("WARNING: URL looks invalid and is discarded");
$url = '';
}
$actionName = self::cleanupString($actionName);
+ // Site search?
+ if($actionType == self::TYPE_ACTION_URL)
+ {
+ // Look in tracked URL for the Site Search parameters
+ $siteSearch = $this->detectSiteSearch($url);
+ if(!empty($siteSearch))
+ {
+ $actionType = self::TYPE_SITE_SEARCH;
+ list($actionName, $url) = $siteSearch;
+ }
+ }
+
return array(
'name' => empty($actionName) ? '' : $actionName,
'type' => $actionType,
@@ -683,6 +821,148 @@ class Piwik_Tracker_Action implements Piwik_Tracker_Action_Interface
);
}
+ protected function detectSiteSearch($originalUrl)
+ {
+ $website = Piwik_Common::getCacheWebsiteAttributes($this->idSite);
+ if(empty($website['sitesearch']))
+ {
+ printDebug("Internal 'Site Search' tracking is not enabled for this site. ");
+ return false;
+ }
+ $actionName = $url = $categoryName = $count = false;
+ $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']))
+ {
+ // array($url, $actionName, $categoryName, $count);
+ $searchInfo = $this->detectSiteSearchFromUrl($website, $parsedUrl);
+ if(!empty($searchInfo)) {
+ list ($url, $actionName, $categoryName, $count) = $searchInfo;
+ }
+ }
+
+ // 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))
+ {
+ $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;
+ }
+ }
+ }
+
+ if(empty($actionName))
+ {
+ printDebug("(this is not a Site Search request)");
+ return false;
+ }
+
+ printDebug("Detected Site Search keyword '$actionName'. ");
+ if (!empty($categoryName))
+ {
+ printDebug("- Detected Site Search Category '$categoryName'. ");
+ }
+ if ($count !== false)
+ {
+ printDebug("- Search Results Count was '$count'. ");
+ }
+ if($url != $originalUrl) {
+ printDebug("NOTE: The Page URL was changed / removed, during the Site Search detection, was '$originalUrl', now is '$url'");
+ }
+
+ if(!empty($categoryName) || $count !== false) {
+ $this->setActionSearchMetadata($categoryName, $count);
+ }
+ return array(
+ $actionName,
+ $url
+ );
+ }
+
+ protected function isValidSearchCount($count)
+ {
+ return is_numeric($count) && $count >= 0;
+ }
+
+
+ protected function setActionSearchMetadata($category, $count)
+ {
+ if(!empty($category)) {
+ $this->searchCategory = $category;
+ }
+ if($count !== false) {
+ $this->searchCount = $count;
+ }
+ }
+
+ protected function detectSiteSearchFromUrl($website, $parsedUrl)
+ {
+ $doRemoveSearchParametersFromUrl = false;
+ $separator = '&';
+ $count = $actionName = $categoryName = false;
+
+ $keywordParameters = isset($website['sitesearch_keyword_parameters'])
+ ? $website['sitesearch_keyword_parameters']
+ : array();
+ $queryString = (!empty($parsedUrl['query']) ? $parsedUrl['query'] : '') . (!empty($parsedUrl['fragment']) ? $separator . $parsedUrl['fragment'] : '');
+ $parameters = Piwik_Common::getArrayFromQueryString($queryString);
+
+ // Detect Site Search
+ foreach ($keywordParameters as $keywordParameter) {
+ if (!empty($parameters[$keywordParameter])) {
+ $actionName = $parameters[$keywordParameter];
+ break;
+ }
+ }
+
+ if (empty($actionName))
+ {
+ return false;
+ }
+
+ $categoryParameters = isset($website['sitesearch_category_parameters'])
+ ? $website['sitesearch_category_parameters']
+ : array();
+
+ foreach ($categoryParameters as $categoryParameter) {
+ if (!empty($parameters[$categoryParameter])) {
+ $categoryName = $parameters[$categoryParameter];
+ break;
+ }
+ }
+
+ if(isset($parameters[self::PARAMETER_NAME_SEARCH_COUNT])
+ && $this->isValidSearchCount($parameters[self::PARAMETER_NAME_SEARCH_COUNT]))
+ {
+ $count = $parameters[self::PARAMETER_NAME_SEARCH_COUNT];
+ }
+ // Remove search kwd from URL
+ if ($doRemoveSearchParametersFromUrl)
+ {
+ // @see excludeQueryParametersFromUrl()
+ // Excluded the detected parameters from the URL
+ $parametersToExclude = array($categoryParameter, $keywordParameter);
+ $parsedUrl['query'] = self::getQueryStringWithExcludedParameters(Piwik_Common::getArrayFromQueryString($parsedUrl['query']), $parametersToExclude);
+ $parsedUrl['fragment'] = self::getQueryStringWithExcludedParameters(Piwik_Common::getArrayFromQueryString($parsedUrl['fragment']), $parametersToExclude);
+ }
+ $url = Piwik_Common::getParseUrlReverse($parsedUrl);
+ return array($url, $actionName, $categoryName, $count);
+ }
+
/**
* Clean up string contents (filter, truncate, ...)
*
diff --git a/core/Tracker/GoalManager.php b/core/Tracker/GoalManager.php
index 515d7c056e..7dc4f602fb 100644
--- a/core/Tracker/GoalManager.php
+++ b/core/Tracker/GoalManager.php
@@ -779,7 +779,7 @@ class Piwik_Tracker_GoalManager
* Records a standard non-Ecommerce goal in the DB (URL/Title matching),
* linking the conversion to the action that triggered it
* @param $goal
- * @param $action
+ * @param Piwik_Tracker_Action $action
* @param $visitorInformation
*/
protected function recordStandardGoals($goal, $action, $visitorInformation)
@@ -794,7 +794,7 @@ class Piwik_Tracker_GoalManager
if(!is_null($action))
{
- $newGoal['idaction_url'] = (int)$action->getIdActionUrl();
+ $newGoal['idaction_url'] = $action->getIdActionUrl();
$newGoal['idlink_va'] = $action->getIdLinkVisitAction();
}
diff --git a/core/Tracker/Visit.php b/core/Tracker/Visit.php
index 347f7963b7..f27f51d75f 100644
--- a/core/Tracker/Visit.php
+++ b/core/Tracker/Visit.php
@@ -41,6 +41,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
protected $cookie = null;
protected $visitorInfo = array();
protected $userSettingsInformation = null;
+ protected $visitorCustomVariables = array();
protected $idsite;
protected $visitorKnown;
protected $request;
@@ -143,6 +144,8 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
$this->visitorCustomVariables = self::getCustomVariables($scope = 'visit', $this->request);
if(!empty($this->visitorCustomVariables))
{
+ printDebug("Visit level Custom Variables: ");
+ printDebug($this->visitorCustomVariables);
$this->customVariablesSetFromRequest = true;
}
@@ -309,7 +312,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
{
$type = Piwik_Tracker_Action::getActionTypeName($action->getActionType());
printDebug("Action is a $type,
- Action name = ". $action->getActionName() . ",
+ Action name = ". $action->getActionName() .",
Action URL = ". $action->getActionUrl() );
}
}
@@ -342,9 +345,16 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
if($idActionUrl !== false)
{
$valuesToUpdate['visit_exit_idaction_url'] = $idActionUrl;
- $sqlActionUpdate = "visit_total_actions = visit_total_actions + 1, ";
+ $sqlActionUpdate .= "visit_total_actions = visit_total_actions + 1, ";
+ }
+ if(!empty($idActionName))
+ {
$valuesToUpdate['visit_exit_idaction_name'] = (int)$idActionName;
}
+ if($actionType == Piwik_Tracker_Action::TYPE_SITE_SEARCH)
+ {
+ $sqlActionUpdate .= "visit_total_searches = visit_total_searches + 1, ";
+ }
$datetimeServer = Piwik_Tracker::getDatetimeFromTimestamp($this->getCurrentTimestamp());
printDebug("Visit is known (IP = ".Piwik_IP::N2P($this->getVisitorIp()).")");
@@ -534,9 +544,10 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
'visit_exit_idaction_name' => (int)$idActionName,
'visit_total_actions' => in_array($actionType,
array(Piwik_Tracker_Action::TYPE_ACTION_URL,
- Piwik_Tracker_Action::TYPE_DOWNLOAD,
- Piwik_Tracker_Action::TYPE_OUTLINK))
+ Piwik_Tracker_Action::TYPE_DOWNLOAD,
+ Piwik_Tracker_Action::TYPE_OUTLINK))
? 1 : 0, // if visit starts with something else (e.g. ecommerce order), don't record as an action
+ 'visit_total_searches' => $actionType == Piwik_Tracker_Action::TYPE_SITE_SEARCH ? 1 : 0,
'visit_total_time' => $defaultTimeOnePageVisit,
'visit_goal_converted' => $visitIsConverted ? 1: 0,
'visit_goal_buyer' => $this->goalManager->getBuyerType(),
@@ -1220,15 +1231,10 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
static public function getCustomVariables($scope, $request)
{
- if($scope == 'visit')
- {
+ if($scope == 'visit') {
$parameter = '_cvar';
- $debug = 'Visit level';
- }
- else
- {
+ } else {
$parameter = 'cvar';
- $debug = 'Page level';
}
$customVar = Piwik_Common::unsanitizeInputValues(Piwik_Common::getRequestVar($parameter, '', 'json', $request));
@@ -1261,11 +1267,7 @@ class Piwik_Tracker_Visit implements Piwik_Tracker_Visit_Interface
$customVariables['custom_var_k'.$id] = $key;
$customVariables['custom_var_v'.$id] = $value;
}
- if(!empty($customVariables))
- {
- printDebug("$debug Custom Variables: ");
- printDebug($customVariables);
- }
+
return $customVariables;
}
diff --git a/core/Translate.php b/core/Translate.php
index db442f114b..280d837e56 100644
--- a/core/Translate.php
+++ b/core/Translate.php
@@ -167,12 +167,11 @@ class Piwik_Translate
}
$js = substr($js,0,-1);
$js .= '};';
- $js .= 'if(typeof(piwik_translations) == \'undefined\') { var piwik_translations = new Object; }'.
+ $js .= "\n".'if(typeof(piwik_translations) == \'undefined\') { var piwik_translations = new Object; }'.
'for(var i in translations) { piwik_translations[i] = translations[i];} ';
$js .= 'function _pk_translate(translationStringId) { '.
'if( typeof(piwik_translations[translationStringId]) != \'undefined\' ){ return piwik_translations[translationStringId]; }'.
- 'return "The string "+translationStringId+" was not loaded in javascript. Make sure it is suffixed with _js and that you called {loadJavascriptTranslations plugins=\'\$YOUR_PLUGIN_NAME\'} before your javascript code.";}';
-
+ 'return "The string "+translationStringId+" was not loaded in javascript. Make sure it is suffixed with _js and that you called %7BloadJavascriptTranslations plugins=\'\$YOUR_PLUGIN_NAME\'%7D before your javascript code.";}';
return $js;
}
diff --git a/core/Updates/1.9-b16.php b/core/Updates/1.9-b16.php
new file mode 100755
index 0000000000..49dfaf12a7
--- /dev/null
+++ b/core/Updates/1.9-b16.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * Piwik - Open source web analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ * @version $Id: 1.9-b5.php $
+ *
+ * @category Piwik
+ * @package Updates
+ */
+
+/**
+ * @package Updates
+ */
+class Piwik_Updates_1_9_b16 extends Piwik_Updates
+{
+ static function isMajorUpdate()
+ {
+ return true;
+ }
+
+ static function getSql($schema = 'Myisam')
+ {
+ return array(
+ 'ALTER TABLE `'. Piwik_Common::prefixTable('log_link_visit_action') .'`
+ CHANGE `idaction_url` `idaction_url` INT( 10 ) UNSIGNED NULL DEFAULT NULL'
+ => false,
+
+
+ 'ALTER TABLE `'. Piwik_Common::prefixTable('log_visit') .'`
+ ADD visit_total_searches SMALLINT(5) UNSIGNED NOT NULL AFTER `visit_total_actions`'
+ => 1060,
+
+ 'ALTER TABLE `'. Piwik_Common::prefixTable('site') .'`
+ ADD sitesearch TINYINT DEFAULT 1 AFTER `excluded_parameters`,
+ ADD sitesearch_keyword_parameters TEXT NOT NULL AFTER `sitesearch`,
+ ADD sitesearch_category_parameters TEXT NOT NULL AFTER `sitesearch_keyword_parameters`'
+ => 1060,
+
+ // enable Site Search for all websites, users can manually disable the setting
+ 'UPDATE `'. Piwik_Common::prefixTable('site') .'`
+ SET `sitesearch` = 1' => false,
+ );
+ }
+
+ static function update()
+ {
+ Piwik_Updater::updateDatabase(__FILE__, self::getSql());
+ }
+}
+
diff --git a/core/Version.php b/core/Version.php
index 3ecdf7e4f3..72e4805b0e 100644
--- a/core/Version.php
+++ b/core/Version.php
@@ -21,5 +21,5 @@ final class Piwik_Version
* Current Piwik version
* @var string
*/
- const VERSION = '1.9-b13';
+ const VERSION = '1.9-b16';
}
diff --git a/core/Visualization/Chart.php b/core/Visualization/Chart.php
index 0a2e07f4f9..6be891c300 100644
--- a/core/Visualization/Chart.php
+++ b/core/Visualization/Chart.php
@@ -147,11 +147,6 @@ abstract class Piwik_Visualization_Chart implements Piwik_View_Interface
$this->xSteps = $steps;
}
- public function setSelectabelColumns($selectableColumns)
- {
- $this->seriesPicker['selectableColumns'] = $selectableColumns;
- }
-
/**
* Show every x-axis tick instead of just every other one.
*/
diff --git a/core/testMinimumPhpVersion.php b/core/testMinimumPhpVersion.php
index 98a0dce204..3939cd042e 100644
--- a/core/testMinimumPhpVersion.php
+++ b/core/testMinimumPhpVersion.php
@@ -103,11 +103,3 @@ if(!empty($piwik_errorMessage))
{
Piwik_ExitWithMessage($piwik_errorMessage, false, true);
}
-
-/**
- * Usually used in Tracker code, but sometimes triggered from Core
- */
-if(!function_exists('printDebug'))
-{
- function printDebug($i) {}
-}
diff --git a/js/piwik.js b/js/piwik.js
index 85b4ce1216..ae0961cef5 100644
--- a/js/piwik.js
+++ b/js/piwik.js
@@ -405,7 +405,8 @@ if (!this.JSON2) {
doNotTrack, setDoNotTrack, msDoNotTrack,
addListener, enableLinkTracking, setLinkTrackingTimer,
setHeartBeatTimer, killFrame, redirectFile, setCountPreRendered,
- trackGoal, trackLink, trackPageView, setEcommerceView, addEcommerceItem, trackEcommerceOrder, trackEcommerceCartUpdate,
+ trackGoal, trackLink, trackPageView, trackSiteSearch,
+ setEcommerceView, addEcommerceItem, trackEcommerceOrder, trackEcommerceCartUpdate,
addPlugin, getTracker, getAsyncTracker
*/
var
@@ -1705,6 +1706,17 @@ var
}
/*
+ * Log the site search request
+ */
+ function logSiteSearch(keyword, category, resultsCount, customData) {
+ var request = getRequest('search=' + encodeWrapper(keyword)
+ + (category ? '&search_cat=' + encodeWrapper(category) : '')
+ + (isDefined(resultsCount) ? '&search_count=' + resultsCount : ''), customData, 'sitesearch');
+
+ sendRequest(request, configTrackerPause);
+ }
+
+ /*
* Log the goal with the server
*/
function logGoal(idGoal, customRevenue, customData) {
@@ -2567,6 +2579,18 @@ var
});
},
+ /**
+ * Log special pageview: Internal search
+ *
+ * @param string customTitle
+ * @param mixed customData
+ */
+ trackSiteSearch: function (keyword, category, resultsCount) {
+ trackCallback(function () {
+ logSiteSearch(keyword, category, resultsCount);
+ });
+ },
+
/**
* Used to record that the current page view is an item (product) page view, or a Ecommerce Category page view.
diff --git a/lang/am.php b/lang/am.php
index 15feb609c4..3e06c890d4 100644
--- a/lang/am.php
+++ b/lang/am.php
@@ -254,7 +254,6 @@ $translations = array(
'Referers_Keywords' => 'ቁልፍ ቃላት',
'Referers_DirectEntry' => 'ቀጥተኛ ምዝግብ',
'Referers_Websites' => 'ድር ጣቢያዎች',
- 'Referers_Campaigns' => 'Campaigns',
'Referers_Evolution' => 'Evolution በክፍለ ጊዜው',
'Referers_Type' => 'የምልከታ ዓይነት',
'Referers_ColumnRefererType' => 'የአመላካች ዓይነት',
@@ -262,7 +261,6 @@ $translations = array(
'Referers_ColumnWebsite' => 'ድር ጣቢያዎች',
'Referers_ColumnWebsitePage' => 'የድር ጣቢያዎች ገፅ',
'Referers_ColumnKeyword' => 'ቁልፍ ቃላት',
- 'Referers_ColumnCampaign' => 'Campaign',
'Referers_DetailsByRefererType' => 'ዝርዝር በአመላካች ዓይነት',
'Referers_TypeDirectEntries' => '%s ቀጥተኛ ምዝግቦች',
'Referers_TypeSearchEngines' => '%s ከመፈለጊያ ሞተሮች',
@@ -275,7 +273,6 @@ $translations = array(
'Referers_DistinctWebsites' => 'የተለዩ ድር ጣቢያዎች',
'Referers_SubmenuSearchEngines' => 'የመፈለጊያ ሞተሮች እና ቁልፍ ቃላት',
'Referers_SubmenuWebsites' => 'ድር ጣቢያዎች',
- 'Referers_SubmenuCampaigns' => 'Campaigns',
'Referers_WidgetKeywords' => 'የቁልፍ ቃላት ዝርዝር',
'Referers_WidgetCampaigns' => 'የCampaigns ዝርዝር',
'Referers_WidgetExternalWebsites' => 'የውጫዊ ድር ጣቢያዎች ዝርዝር',
@@ -666,5 +663,4 @@ $translations = array(
'VisitTime_WidgetLocalTime' => 'ጉብኝቶች በአካባቢያዊ ሰዓት',
'VisitTime_WidgetServerTime' => 'ጉብኝቶች በአገልጋይ ሰዓት',
'VisitTime_SubmenuTimes' => 'ሰዓታት',
- 'VisitTime_NHour' => '%sh',
);
diff --git a/lang/be.php b/lang/be.php
index 8556364a98..fc287ca6f9 100644
--- a/lang/be.php
+++ b/lang/be.php
@@ -1263,7 +1263,6 @@ $translations = array(
'UsersManager_ChangeAllConfirm' => 'Вы сапраўды жадаеце змяніць правы \'%s\' на ўсе вэбсайты?',
'UsersManager_ChangePasswordConfirm' => 'Зменяючы парол, вы таксама зменяеце token_auth карыстальніка. Вы сапраўды жадаеце працягнуць?',
'UsersManager_Password' => 'Пароль',
- 'UsersManager_Email' => 'Email',
'UsersManager_Alias' => 'Аліас',
'UsersManager_TheSuperUserAliasCannotBeChanged' => 'Псеўданім Супер Карыстальніка не можа быць зменены.',
'UsersManager_ReportToLoadByDefault' => 'Справаздача, якая загружаецца па змаўчанні',
@@ -1372,7 +1371,6 @@ $translations = array(
'PDFReports_PluginDescriptionReports' => 'Стварэнне і запампоука карыстацкіх справаздач, і адпраўка іх па электроннай пошце штодзень, штотыдзень або штомесяц.',
'PDFReports_ManageEmailReports' => 'Упраўленне справаздачамі па электроннай пошце',
'PDFReports_EmailReports' => 'Справаздачы па Email',
- 'PDFReports_PDF' => 'PDF',
'PDFReports_SendReportNow' => 'Адправіць справаздачу зараз',
'PDFReports_EmailSchedule' => 'Расклад электроннай пошты',
'PDFReports_SendReportTo' => 'Адправіць справаздачу да',
@@ -1399,5 +1397,4 @@ $translations = array(
'PDFReports_TableOfContent' => 'Спіс справаздач',
'PDFReports_TopOfReport' => 'Вярнуцца наверх',
'PDFReports_Pagination' => 'Старонка %s з %s',
-
);
diff --git a/lang/de.php b/lang/de.php
index 05ceee2e9d..b0647c6ea8 100644
--- a/lang/de.php
+++ b/lang/de.php
@@ -341,7 +341,6 @@ $translations = array(
'General_NotInstalled' => 'Nicht installiert',
'General_Installed' => 'Istalliert',
'General_Broken' => 'Defekt',
- 'General_Info' => 'Info',
'Actions_PluginDescription' => 'Zusammenfassung über die Anzahl der betrachteten Seiten, ausgehenden Verweise und Downloads. Ausgehende Verweise und Downloads werden automatisch getrackt.',
'Actions_Actions' => 'Aktionen',
'Actions_SubmenuPages' => 'Seiten',
@@ -1436,15 +1435,13 @@ $translations = array(
'UserCountry_DefaultLocationProviderDesc2' => 'Da dies nicht besonders genau ist, %1$sempfehlen wir, %2$sGeoIp%3$s zu installieren und zu verwenden.%4$s',
'UserSettings_PluginDescription' => 'Bericht über verschiedene Benutzereinstellungen: Browser, Browserfamilie, Betriebssystem, Plugins, Auflösung, Allgemeine Einstellungen.',
'UserCountry_GeoIpLocationProviderDesc_Php1' => 'Diese Methode nutzt eine GeoIP Datenbank und die PHP API von MaxMind, um den Standort der Besucher exakt zu bestimmen.',
- 'UserCountry_GeoIpLocationProviderDesc_Php2' => 'Diese Methode ist in PHP geschrieben und daher %1$swesentlich langsamer als die Alternativen%2$s. Wir empfehlen, das %3$sServer Modul für GeoIP%4$s oder %5$sdas GeoIP PECL Modul%6$s zu verwenden.',
'UserCountry_GeoIpLocationProviderDesc_ServerBased1' => 'Diese Methode nutzt das GeoIP Modul Ihres Webservers, sofern Sie ein solches installiert haben. Sie ist effizient und exakt, %1$sfunktioniert allerdings nur mit normalem Browser Tracking.%2$s',
'UserCountry_GeoIpLocationProviderDesc_ServerBased2' => 'Wenn Sie Log Dateien importieren möchten oder aus einem anderen Grund IP Adressen beim Tracken setzen, verwenden Sie bitte die %1$sPECL GeoIP Implementierung (empfohlen)%2$s oder die %3$sPHP GeoIP Implementierung%4$s.',
'UserCountry_GeolocationPageDesc' => 'Auf dieser Seite können Sie einstellen, wie Piwik den Standort der Besucher bestimmt. Außerdem können Sie den Status der GeoIP Implementierungen einsehen, die Piwik erkennt.',
'UserCountry_CurrentLocationIntro' => 'Diese Implementierung bestimmt Ihren Standort als',
- 'UserCountry_CannotFindPeclGeoIPDb' => 'Es wurde keine Länder-, Regions- oder Städtedatenbank für das PECL GeoIP Modul gefunden.',
'UserCountry_GeoIpLocationProviderDesc_Pecl1' => 'Diese Methode nutzt die GeoIP Datenbank und ein PECL Modul, um den Standort der Besucher exakt und effizient zu bestimmen.',
'UserCountry_GeoIpLocationProviderDesc_Pecl2' => 'Mit dieser Methode gibt es keine Einschränkungen. Daher empfehlen wir, sie zu verwenden.',
- 'UserCountry_CannotFindGeoIPServerVar' => 'Die %s $_SERVER Variable ist nicht definiert. Dies könnte ein Problem mit der Konfiguration des Servers sein.',
+ 'UserCountry_CannotFindGeoIPServerVar' => 'Die %s Variable ist nicht definiert. Dies könnte ein Problem mit der Konfiguration des Servers sein.',
'UserCountry_LocationProvider' => 'Methode zur Standortbestimmung',
'UserSettings_VisitorSettings' => 'Besuchereinstellungen',
'UserSettings_BrowserFamilies' => 'Browserfamilien',
diff --git a/lang/en.php b/lang/en.php
index cf1ce23662..c945e96e82 100644
--- a/lang/en.php
+++ b/lang/en.php
@@ -141,6 +141,7 @@ $translations = array(
'General_ColumnNbActions' => 'Actions',
'General_ColumnNbActionsDocumentation' => 'The number of actions performed by your visitors. Actions can be page views, downloads or outlinks.',
'General_NbActions' => 'Number of Actions',
+ 'General_NbSearches' => 'Number of Internal Searches',
'General_ColumnMaxActions' => 'Maximum actions in one visit',
'General_ColumnSumVisitLength' => 'Total time spent by visitors (in seconds)',
'General_ColumnLabel' => 'Label',
@@ -158,6 +159,10 @@ $translations = array(
'General_ColumnPageBounceRateDocumentation' => 'The percentage of visits that started on this page and left the website straight away.',
'General_ColumnExitRate' => 'Exit rate',
'General_ColumnExitRateDocumentation' => 'The percentage of visits that left the website after viewing this page.',
+ 'General_ColumnTotalPageviews' => 'Total Pageviews',
+ 'General_ColumnViewedAfterSearch' => 'Clicked in search results',
+ 'General_ColumnViewedAfterSearchDocumentation' => 'The number of times this Page was visited after a visitor did a search on your website, and clicked on this page in the search results.',
+ 'General_ColumnDestinationPage' => 'Destination Page',
'General_ColumnPageviews' => 'Pageviews',
'General_ColumnPageviewsDocumentation' => 'The number of times this page was visited.',
'General_ColumnUniquePageviews' => 'Unique Pageviews',
@@ -342,7 +347,7 @@ $translations = array(
'General_Installed' => 'Installed',
'General_Broken' => 'Broken',
'General_InfoFor' => 'Info for %s',
- 'Actions_PluginDescription' => 'Reports about the page views, the outlinks and downloads. Outlinks and Downloads tracking is automatic!',
+ 'Actions_PluginDescription' => 'Reports about the page views, the outlinks and downloads. Outlinks and Downloads tracking is automatic! You can also track your internal website\'s Search Engine.',
'Actions_Actions' => 'Actions',
'Actions_SubmenuPages' => 'Pages',
'Actions_SubmenuPagesEntry' => 'Entry pages',
@@ -355,9 +360,15 @@ $translations = array(
'Actions_WidgetExitPageTitles' => 'Exit Page Titles',
'Actions_SubmenuPageTitles' => 'Page titles',
'Actions_WidgetPageTitles' => 'Page Titles',
+ 'Actions_WidgetSearchKeywords' => 'Site Search Keywords',
+ 'Actions_WidgetSearchCategories' => 'Search Categories',
+ 'Actions_WidgetSearchNoResultKeywords' => 'Search Keywords with No Results',
+ 'Actions_WidgetPageUrlsFollowingSearch' => 'Pages Following a Site Search',
+ 'Actions_WidgetPageTitlesFollowingSearch' => 'Page Titles Following a Site Search',
'Actions_PageUrls' => 'Page URLs',
'Actions_SubmenuOutlinks' => 'Outlinks',
'Actions_SubmenuDownloads' => 'Downloads',
+ 'Actions_SubmenuSitesearch' => 'Site Search',
'Actions_PagesReportDocumentation' => 'This report contains information about the page URLs that have been visited. %s The table is organized hierarchically, the URLs are displayed as a folder structure.',
'Actions_PageTitlesReportDocumentation' => 'This report contains information about the titles of the pages that have been visited. %s The page title is the HTML %s Tag that most browsers show in their window title.',
'Actions_OutlinksReportDocumentation' => 'This report shows a hierarchical list of outlink URLs that were clicked by your visitors.',
@@ -373,16 +384,34 @@ $translations = array(
'Actions_ColumnUniqueOutlinks' => 'Unique Outlinks',
'Actions_ColumnPageName' => 'Page Name',
'Actions_ColumnPageURL' => 'Page URL',
+ 'Actions_ColumnSearchCategory' => 'Search Category',
+ 'Actions_ColumnSearchResultsCount' => 'Search Results Count',
+ 'Actions_ColumnSearchKeyword' => 'Keyword',
'Actions_ColumnClickedURL' => 'Clicked URL',
'Actions_ColumnDownloadURL' => 'Download URL',
'Actions_ColumnEntryPageURL' => 'Entry Page URL',
'Actions_ColumnEntryPageTitle' => 'Entry Page title',
'Actions_ColumnExitPageURL' => 'Exit Page URL',
'Actions_ColumnExitPageTitle' => 'Exit Page Title',
+ 'Actions_ColumnNoResultKeyword' => 'Keyword with No Search Result',
+ 'Actions_ColumnSearches' => 'Searches',
+ 'Actions_ColumnSiteSearchKeywords' => 'Unique Keywords',
+ 'Actions_ColumnSearchesDocumentation' => 'The number of visits that searched for this keyword on your website\'s search engine.',
+ 'Actions_ColumnSearchExits' => '% Search Exits',
+ 'Actions_ColumnSearchExitsDocumentation' => 'The percentage of visits that left the website after searching for this Keyword on your Site Search engine.',
+ 'Actions_ColumnPagesPerSearch' => 'Search Results pages',
+ 'Actions_ColumnPagesPerSearchDocumentation' => 'Visitors will search on your website, and sometimes click "next" to view more results. This is the average number of search results pages viewed for this keyword.',
'Actions_EntryPagesReportDocumentation' => 'This report contains information about the entry pages that were used during the specified period. An entry page is the first page that a user views during his visit. %s The entry URLs are displayed as a folder structure.',
'Actions_EntryPageTitlesReportDocumentation' => 'This report contains information about the titles of entry pages that were used during the specified period.',
'Actions_ExitPagesReportDocumentation' => 'This report contains information about the exit pages that occurred during the specified period. An exit page is the last page that a user views during his visit. %s The exit URLs are displayed as a folder structure.',
'Actions_ExitPageTitlesReportDocumentation' => 'This report contains information about the titles of exit pages that occurred during the specified period.',
+ 'Actions_SiteSearchKeywordsDocumentation' => 'This report lists the Search Keywords that visitors searched for on your internal Search Engine. ',
+ 'Actions_LearnMoreAboutSiteSearchLink' => 'Learn more about Tracking how your visitors use your Search engine.',
+ 'Actions_SiteSearchIntro' => 'Tracking searches that visitors make on your website is a very effective way to learn more about what your audience is looking for, it can help find ideas for new content, new Ecommerce products that potential customers might be searching for, and generally improve the visitors\' experience on your website.',
+ 'Actions_SiteSearchCategories1' => 'This report lists the Categories that visitors selected when they made a Search on your website. ',
+ 'Actions_SiteSearchCategories2' => 'For example, Ecommerce websites typically have a "Category" selector so that visitors can restrict their searches to all products in a specific Category.',
+ 'Actions_SiteSearchKeywordsNoResultDocumentation' => 'This report lists the Search Keywords that did not return any Search result: maybe the search engine can be improved, or maybe your visitors are looking for content that is not (yet) on your website?',
+ 'Actions_SiteSearchFollowingPagesDoc' => 'When visitors search on your website, they are looking for a particular page, content, product, or service. This report lists the pages that were clicked the most after an internal search. In other words, the list of pages the most searched for by visitors already on your website.',
'AnonymizeIP_PluginDescription' => 'Anonymize the last byte(s) of visitors IP addresses to comply with your local privacy laws/guidelines.',
'API_PluginDescription' => 'All the data in Piwik is available through simple APIs. This plugin is the web service entry point, that you can call to get your Web Analytics data in xml, json, php, csv, etc.',
'API_QuickDocumentationTitle' => 'API quick documentation',
@@ -1123,8 +1152,20 @@ And thank you for using Piwik!',
'SitesManager_SelectDefaultCurrency' => 'You can select the currency to set by default for new websites.',
'SitesManager_EnableEcommerce' => 'Ecommerce enabled',
'SitesManager_NotAnEcommerceSite' => 'Not an Ecommerce site',
+ 'SitesManager_EnableSiteSearch' => 'Site Search tracking enabled',
+ 'SitesManager_DisableSiteSearch' => 'Do not track Site Search',
'SitesManager_EcommerceHelp' => 'When enabled, the "Goals" report will have a new "Ecommerce" section.',
'SitesManager_PiwikOffersEcommerceAnalytics' => 'Piwik allows for advanced Ecommerce Analytics tracking & reporting. Learn more about %s Ecommerce Analytics%s.',
+ 'SitesManager_TrackingSiteSearch' => 'Tracking Internal Site Search',
+ 'SitesManager_SiteSearchUse' => 'You can use Piwik to track and report what visitors are searching in your website\'s internal search engine. ',
+ 'SitesManager_SearchKeywordParametersDesc' => 'Enter a comma separated list of all query parameter names containing the site search keyword.',
+ 'SitesManager_SearchCategoryDesc' => 'Piwik can also track the Search category for each internal site search keyword.',
+ 'SitesManager_SearchCategoryParametersDesc' => 'You may enter a comma-separated list of query parameters specifying the search category.',
+ 'SitesManager_SearchParametersNote' => 'Note: the Query parameters and Category parameters will be used only for websites which have Site Search enabled but left these parameters empty.',
+ 'SitesManager_SearchParametersNote2' => 'To disable Site Search for new websites, leave these two fields empty.',
+ 'SitesManager_SearchKeywordLabel' => 'Query parameter',
+ 'SitesManager_SearchCategoryLabel' => 'Category parameter',
+ 'SitesManager_SearchUseDefault' => 'Use %sdefault%s Site Search parameters',
'TranslationsAdmin_PluginDescription' => 'Help translate Piwik into your language.',
'TranslationsAdmin_MenuTranslations' => 'Translations',
'TranslationsAdmin_MenuLanguages' => 'Languages',
@@ -1628,6 +1669,8 @@ And thank you for using Piwik!',
'VisitsSummary_NbDownloadsDescription' => '%s downloads',
'VisitsSummary_NbUniqueDownloadsDescription' => '%s unique downloads',
'VisitsSummary_NbOutlinksDescription' => '%s outlinks',
+ 'VisitsSummary_NbSearchesDescription' => '%s total searches on your website',
+ 'VisitsSummary_NbKeywordsDescription' => '%s unique keywords',
'VisitsSummary_NbUniqueOutlinksDescription' => '%s unique outlinks',
'VisitsSummary_AverageVisitDuration' => '%s average visit duration',
'VisitsSummary_MaxNbActions' => '%s max actions in one visit',
diff --git a/lang/fi.php b/lang/fi.php
index 90d0a822c3..c92751f417 100644
--- a/lang/fi.php
+++ b/lang/fi.php
@@ -1438,18 +1438,15 @@ Kiitos Piwikin käyttämisestä!',
'UserCountry_continent_oce' => 'Oseania',
'UserCountryMap_map' => 'kartta',
'UserCountryMap_worldMap' => 'maailmankartta',
- 'Piwik_UserCountry_HttpServerModule' => 'HTTP-palvelinmoduuli',
'UserCountryMap_toggleFullscreen' => 'Vaihda koko näytön kokoiseen',
'UserCountry_DefaultLocationProviderDesc1' => 'Oletustoteutus arvaa käyttäjien maan kielen perusteella.',
'UserCountry_DefaultLocationProviderDesc2' => 'Tämä ei ole erityisen tarkkaa, joten %1$ssuosittelemme asentamaan ja käyttämään %2$sGeoIp:tä%3$s.%4$s',
'UserSettings_PluginDescription' => 'Raportit käyttäjien asetuksista: selain, selaimen perhe, käyttöjärjestelmä, lisäosat, resoluutio, yleiset asetukset.',
'UserCountry_GeoIpLocationProviderDesc_Php1' => 'Tämä toteutus käyttää GeoIP-tietokantaa ja MaxMindin PHP-API:a kävijöiden paikallistamiseen.',
- 'UserCountry_GeoIpLocationProviderDesc_Php2' => 'Tämä toteutus on kirjoitettu PHP:llä ja on %1$shuomattavasti hitaampi kuin vaihtoehdot%2$s. Suosittelemme käyttämään %3$spalvelinmoduulia GeoIP:lle%4$s tai %5$sGeoIP:n PECL-moduulia%6$s.',
'UserCountry_GeoIpLocationProviderDesc_ServerBased1' => 'Tämä toteutus käyttää GeoIP-moduulia HTTP-palvelimesta. Tämä toteutus on nopea ja tarkka, mutta %1$stoimii vain normaalin selainseurannan kanssa.%2$s',
'UserCountry_GeoIpLocationProviderDesc_ServerBased2' => 'Jos olet ladannut lokitiedostoja, käytä %1$sPECL:n GeoIP-toteutusta (suositeltu)%2$s tai %3$sPHP:n GeoIP-toteutusta%4$s.',
'UserCountry_GeolocationPageDesc' => 'Tällä sivulla voit säätää, miten Piwik päättelee kävijöiden sijainnin, ja tarkastella eri toteutusten asetuksia.',
'UserCountry_CurrentLocationIntro' => 'Tämän toteutuksen mukaan nykyinen sijaintisi on',
- 'UserCountry_CannotFindPeclGeoIPDb' => 'Maata, aluetta tai kaupunkia ei löydy GeoIP:stä.',
'UserCountry_GeoIpLocationProviderDesc_Pecl1' => 'Tämä sijainnintarjoaja käyttää GeoIP-tietokantaa ja PECL-moduulia kävijöiden paikallistamiseen.',
'UserCountry_GeoIpLocationProviderDesc_Pecl2' => 'Suosittelemme tätä palvelua, sillä tällä ei ole rajoituksia.',
'UserSettings_VisitorSettings' => 'Kävijöiden asetukset',
diff --git a/lang/sv.php b/lang/sv.php
index eab45d7fcf..e42b8f0380 100644
--- a/lang/sv.php
+++ b/lang/sv.php
@@ -1419,18 +1419,15 @@ Tack för att du använder Piwik!',
'UserCountry_continent_oce' => 'Oceanien',
'UserCountryMap_map' => 'karta',
'UserCountryMap_worldMap' => 'världskarta',
- 'Piwik_UserCountry_HttpServerModule' => 'HTTP Servermodul',
'UserCountryMap_toggleFullscreen' => 'Växla till fullskärm',
'UserCountry_DefaultLocationProviderDesc1' => 'Som standard gissar sig platstjänsten till besökarens plats baserat på vilket språk som användes.',
'UserCountry_DefaultLocationProviderDesc2' => 'Den metoden är inte så exakt, så %1$svi rekommenderar att du installerar och använder %2$sGeoIp%3$s.%4$s',
'UserSettings_PluginDescription' => 'Rapporterar olika användarinställningar: Webbläsare, Webbläsarfamilj, operativsystem, Plugins, upplösning, Globala inställningar.',
'UserCountry_GeoIpLocationProviderDesc_Php1' => 'Den här platstjänsten använder en GeoIP-databas och MaxMind\'s PHP API för att träffsäkert kunna fastställa dina besökares platser.',
- 'UserCountry_GeoIpLocationProviderDesc_Php2' => 'Den här tjänsten är skriven i PHP och är därför %1$smycket långsammare än dom andra alternativen%2$s. Vi rekommenderar att du använder en %3$sservermodulen för GeoIP%4$s eller %5$sGeoIP PECL-modulen%6$s.',
'UserCountry_GeoIpLocationProviderDesc_ServerBased1' => 'Den här platstjänsten använder GeoIP-modulen som har installerats på din HTTP-server. Den här tjänsten är snabb och träffsäker, men %1$skan endast användas tillsammans med normal webbläsarspårning.%2$s',
'UserCountry_GeoIpLocationProviderDesc_ServerBased2' => 'Om du behöver importera loggfiler eller göra något annat som kräver IP-adresser: Använd %1$sPECL GeoIP (rekommenderas)%2$s eller %3$sPHP GeoIP%4$s.',
'UserCountry_GeolocationPageDesc' => 'På den här sidan kan du ändra hur Piwik avgör besökarnas platser och se statusen för de olika GeoIP-tjänsterna Piwik upptäcker.',
'UserCountry_CurrentLocationIntro' => 'Enligt den här tjänsten är din aktuella plats',
- 'UserCountry_CannotFindPeclGeoIPDb' => 'Ingen databas med information om land, region eller stad kunde hittas för GeoIP PECL-modulen',
'UserCountry_GeoIpLocationProviderDesc_Pecl1' => 'Den är platstjänsten använder en GeoIP-databas och en PECL-modul för att kunna fastställa besökarnas plats så träffsäkert och effektivt som möjligt.',
'UserCountry_GeoIpLocationProviderDesc_Pecl2' => 'Det finns inga begränsningar med den här tjänsten, så det är den vi rekommenderar att använda.',
'UserSettings_VisitorSettings' => 'Besökarinställningar',
diff --git a/libs/PiwikTracker/PiwikTracker.php b/libs/PiwikTracker/PiwikTracker.php
index 34cc5839e1..ce94f2649a 100644
--- a/libs/PiwikTracker/PiwikTracker.php
+++ b/libs/PiwikTracker/PiwikTracker.php
@@ -270,8 +270,24 @@ class PiwikTracker
{
$url = $this->getUrlTrackPageView($documentTitle);
return $this->sendRequest($url);
- }
-
+ }
+
+ /**
+ * Tracks an internal Site Search query, and optionally tracks the Search Category, and Search results Count.
+ * These are used to populate reports in Actions > Site Search.
+ *
+ * @param string $keyword Searched query on the site
+ * @param string $category Optional, Search engine category if applicable
+ * @param int $countResults results displayed on the search result page. Used to track "zero result" keywords.
+ *
+ * @return string|true Response or true if using bulk requests.
+ */
+ public function doTrackSiteSearch( $keyword, $category = false, $countResults = false )
+ {
+ $url = $this->getUrlTrackSiteSearch($keyword, $category, $countResults);
+ return $this->sendRequest($url);
+ }
+
/**
* Records a Goal conversion
*
@@ -528,6 +544,22 @@ class PiwikTracker
}
return $url;
}
+
+ /**
+ * @see doTrackSiteSearch()
+ */
+ public function getUrlTrackSiteSearch($keyword, $category, $countResults)
+ {
+ $url = $this->getRequest( $this->idSite );
+ $url .= '&search=' . urlencode($keyword);
+ if($category !== false) {
+ $url .= '&search_cat=' . urlencode($category);
+ }
+ if($countResults !== false) {
+ $url .= '&search_count=' . (int)$countResults;
+ }
+ return $url;
+ }
/**
* @see doTrackGoal()
diff --git a/piwik.js b/piwik.js
index a2ca9fde73..b790e300c2 100644
--- a/piwik.js
+++ b/piwik.js
@@ -13,16 +13,17 @@ return t}}if(typeof JSON2.stringify!=="function"){JSON2.stringify=function(o,m,n
return typeof f==="function"?m({"":n},""):n}throw new SyntaxError("JSON.parse")}}}());var _paq=_paq||[],Piwik=Piwik||(function(){var n,w={},d=document,j=navigator,v=screen,H=window,h=false,C=[],e=H.encodeURIComponent,I=H.decodeURIComponent,E=unescape,G,D;function b(i){return"undefined"!==typeof i}function a(i){return typeof i==="function"}function o(i){return typeof i==="object"}function r(i){return typeof i==="string"||i instanceof String}function z(){var J,L,K;for(J=0;J<arguments.length;J+=1){K=arguments[J];L=K.shift();if(r(L)){G[L].apply(G,K)}else{L.apply(G,K)}}}function t(L,K,J,i){if(L.addEventListener){L.addEventListener(K,J,i);return true}if(L.attachEvent){return L.attachEvent("on"+K,J)}L["on"+K]=J}function g(K,N){var J="",M,L;for(M in w){if(Object.prototype.hasOwnProperty.call(w,M)){L=w[M][K];if(a(L)){J+=L(N)}}}return J}function B(){var i;g("unload");if(n){do{i=new Date()}while(i.getTimeAlias()<n)}}function k(){var J;if(!h){h=true;g("load");for(J=0;J<C.length;J++){C[J]()}}return true
}function x(){var J;if(d.addEventListener){t(d,"DOMContentLoaded",function i(){d.removeEventListener("DOMContentLoaded",i,false);k()})}else{if(d.attachEvent){d.attachEvent("onreadystatechange",function i(){if(d.readyState==="complete"){d.detachEvent("onreadystatechange",i);k()}});if(d.documentElement.doScroll&&H===H.top){(function i(){if(!h){try{d.documentElement.doScroll("left")}catch(K){setTimeout(i,0);return}k()}}())}}}if((new RegExp("WebKit")).test(j.userAgent)){J=setInterval(function(){if(h||/loaded|complete/.test(d.readyState)){clearInterval(J);k()}},10)}t(H,"load",k,false)}function f(){var i="";try{i=H.top.document.referrer}catch(K){if(H.parent){try{i=H.parent.document.referrer}catch(J){i=""}}}if(i===""){i=d.referrer}return i}function A(i){var K=new RegExp("^([a-z]+):"),J=K.exec(i);return J?J[1]:null}function y(i){var K=new RegExp("^(?:(?:https?|ftp):)/*(?:[^@]+@)?([^:/#]+)"),J=K.exec(i);return J?J[1]:i}function q(K,J){var N=new RegExp("^(?:https?|ftp)(?::/*(?:[^?]+)[?])([^#]+)"),M=N.exec(K),L=new RegExp("(?:^|&)"+J+"=([^&]*)"),i=M?L.exec(M[1]):0;
return i?I(i[1]):""}function s(i){return E(e(i))}function u(Z){var L=function(W,i){return(W<<i)|(W>>>(32-i))},aa=function(ag){var af="",ae,W;for(ae=7;ae>=0;ae--){W=(ag>>>(ae*4))&15;af+=W.toString(16)}return af},O,ac,ab,K=[],S=1732584193,Q=4023233417,P=2562383102,N=271733878,M=3285377520,Y,X,V,U,T,ad,J,R=[];Z=s(Z);J=Z.length;for(ac=0;ac<J-3;ac+=4){ab=Z.charCodeAt(ac)<<24|Z.charCodeAt(ac+1)<<16|Z.charCodeAt(ac+2)<<8|Z.charCodeAt(ac+3);R.push(ab)}switch(J&3){case 0:ac=2147483648;break;case 1:ac=Z.charCodeAt(J-1)<<24|8388608;break;case 2:ac=Z.charCodeAt(J-2)<<24|Z.charCodeAt(J-1)<<16|32768;break;case 3:ac=Z.charCodeAt(J-3)<<24|Z.charCodeAt(J-2)<<16|Z.charCodeAt(J-1)<<8|128;break}R.push(ac);while((R.length&15)!==14){R.push(0)}R.push(J>>>29);R.push((J<<3)&4294967295);for(O=0;O<R.length;O+=16){for(ac=0;ac<16;ac++){K[ac]=R[O+ac]}for(ac=16;ac<=79;ac++){K[ac]=L(K[ac-3]^K[ac-8]^K[ac-14]^K[ac-16],1)}Y=S;X=Q;V=P;U=N;T=M;for(ac=0;ac<=19;ac++){ad=(L(Y,5)+((X&V)|(~X&U))+T+K[ac]+1518500249)&4294967295;T=U;
-U=V;V=L(X,30);X=Y;Y=ad}for(ac=20;ac<=39;ac++){ad=(L(Y,5)+(X^V^U)+T+K[ac]+1859775393)&4294967295;T=U;U=V;V=L(X,30);X=Y;Y=ad}for(ac=40;ac<=59;ac++){ad=(L(Y,5)+((X&V)|(X&U)|(V&U))+T+K[ac]+2400959708)&4294967295;T=U;U=V;V=L(X,30);X=Y;Y=ad}for(ac=60;ac<=79;ac++){ad=(L(Y,5)+(X^V^U)+T+K[ac]+3395469782)&4294967295;T=U;U=V;V=L(X,30);X=Y;Y=ad}S=(S+Y)&4294967295;Q=(Q+X)&4294967295;P=(P+V)&4294967295;N=(N+U)&4294967295;M=(M+T)&4294967295}ad=aa(S)+aa(Q)+aa(P)+aa(N)+aa(M);return ad.toLowerCase()}function p(K,i,J){if(K==="translate.googleusercontent.com"){if(J===""){J=i}i=q(i,"u");K=y(i)}else{if(K==="cc.bingj.com"||K==="webcache.googleusercontent.com"||K.slice(0,5)==="74.6."){i=d.links[0].href;K=y(i)}}return[K,i,J]}function m(J){var i=J.length;if(J.charAt(--i)==="."){J=J.slice(0,i)}if(J.slice(0,2)==="*."){J=J.slice(1)}return J}function l(J){if(!r(J)){J=J.text||"";var i=d.getElementsByTagName("title");if(i&&b(i[0])){J=i[0].text}}return J}function F(ad,aB){var M=p(d.domain,H.location.href,f()),aU=m(M[0]),a8=M[1],aH=M[2],aF="GET",L=ad||"",aY=aB||"",ar,ai=d.title,ak="7z|aac|ar[cj]|as[fx]|avi|bin|csv|deb|dmg|doc|exe|flv|gif|gz|gzip|hqx|jar|jpe?g|js|mp(2|3|4|e?g)|mov(ie)?|ms[ip]|od[bfgpst]|og[gv]|pdf|phps|png|ppt|qtm?|ra[mr]?|rpm|sea|sit|tar|t?bz2?|tgz|torrent|txt|wav|wm[av]|wpd||xls|xml|z|zip",aD=[aU],P=[],aw=[],ac=[],aC=500,Q,ae,R,S,am=["pk_campaign","piwik_campaign","utm_campaign","utm_source","utm_medium"],ah=["pk_kwd","piwik_kwd","utm_term"],a6="_pk_",V,a7,T=false,a1,ao,aq,aa=63072000000,ab=1800000,at=15768000000,Y=d.location.protocol==="https",O=false,ax={},a2=200,aN={},aZ={},aK=false,aI=false,aG,ay,W,al=u,aJ,ap;
-function aP(bh,be,bd,bg,bc,bf){if(T){return}var bb;if(bd){bb=new Date();bb.setTime(bb.getTime()+bd)}d.cookie=bh+"="+e(be)+(bd?";expires="+bb.toGMTString():"")+";path="+(bg||"/")+(bc?";domain="+bc:"")+(bf?";secure":"")}function Z(bd){if(T){return 0}var bb=new RegExp("(^|;)[ ]*"+bd+"=([^;]*)"),bc=bb.exec(d.cookie);return bc?I(bc[2]):0}function a3(bb){var bc;if(R){bc=new RegExp("#.*");return bb.replace(bc,"")}return bb}function aT(bd,bb){var be=A(bb),bc;if(be){return bb}if(bb.slice(0,1)==="/"){return A(bd)+"://"+y(bd)+bb}bd=a3(bd);if((bc=bd.indexOf("?"))>=0){bd=bd.slice(0,bc)}if((bc=bd.lastIndexOf("/"))!==bd.length-1){bd=bd.slice(0,bc+1)}return bd+bb}function aE(be){var bc,bb,bd;for(bc=0;bc<aD.length;bc++){bb=m(aD[bc].toLowerCase());if(be===bb){return true}if(bb.slice(0,1)==="."){if(be===bb.slice(1)){return true}bd=be.length-bb.length;if((bd>0)&&(be.slice(bd)===bb)){return true}}}return false}function ba(bb){var bc=new Image(1,1);bc.onload=function(){};bc.src=L+(L.indexOf("?")<0?"?":"&")+bb
-}function aQ(bb){try{var bd=H.XMLHttpRequest?new H.XMLHttpRequest():H.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;bd.open("POST",L,true);bd.onreadystatechange=function(){if(this.readyState===4&&this.status!==200){ba(bb)}};bd.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");bd.send(bb)}catch(bc){ba(bb)}}function an(bd,bc){var bb=new Date();if(!a1){if(aF==="POST"){aQ(bd)}else{ba(bd)}n=bb.getTime()+bc}}function aO(bb){return a6+bb+"."+aY+"."+aJ}function N(){if(T){return"0"}if(!b(j.cookieEnabled)){var bb=aO("testcookie");aP(bb,"1");return Z(bb)==="1"?"1":"0"}return j.cookieEnabled?"1":"0"}function az(){aJ=al((V||aU)+(a7||"/")).slice(0,4)}function X(){var bc=aO("cvar"),bb=Z(bc);if(bb.length){bb=JSON2.parse(bb);if(o(bb)){return bb}}return{}}function K(){if(O===false){O=X()}}function aX(){var bb=new Date();aG=bb.getTime()}function U(bf,bc,bb,be,bd,bg){aP(aO("id"),bf+"."+bc+"."+bb+"."+be+"."+bd+"."+bg,aa,a7,V,Y)}function J(){var bc=new Date(),bb=Math.round(bc.getTime()/1000),be=Z(aO("id")),bd;
-if(be){bd=be.split(".");bd.unshift("0")}else{if(!ap){ap=al((j.userAgent||"")+(j.platform||"")+JSON2.stringify(aZ)+bb).slice(0,16)}bd=["1",ap,bb,0,bb,"",""]}return bd}function i(){var bb=Z(aO("ref"));if(bb.length){try{bb=JSON2.parse(bb);if(o(bb)){return bb}}catch(bc){}}return["","",0,""]}function aj(bd,bB,bC,bf){var bz,bc=new Date(),bl=Math.round(bc.getTime()/1000),bE,bA,bh,bs,bw,bk,bu,bi,by,bg=1024,bF,bo,bv=O,bq=aO("id"),bm=aO("ses"),bn=aO("ref"),bG=aO("cvar"),bt=J(),bp=Z(bm),bx=i(),bD=ar||a8,bj,bb;if(T){T=false;aP(bq,"",-86400,a7,V);aP(bm,"",-86400,a7,V);aP(bG,"",-86400,a7,V);aP(bn,"",-86400,a7,V);T=true}if(a1){return""}bE=bt[0];bA=bt[1];bs=bt[2];bh=bt[3];bw=bt[4];bk=bt[5];if(!b(bt[6])){bt[6]=""}bu=bt[6];if(!b(bf)){bf=""}bj=bx[0];bb=bx[1];bi=bx[2];by=bx[3];if(!bp){bh++;bk=bw;if(!aq||!bj.length){for(bz in am){if(Object.prototype.hasOwnProperty.call(am,bz)){bj=q(bD,am[bz]);if(bj.length){break}}}for(bz in ah){if(Object.prototype.hasOwnProperty.call(ah,bz)){bb=q(bD,ah[bz]);if(bb.length){break
-}}}}bF=y(aH);bo=by.length?y(by):"";if(bF.length&&!aE(bF)&&(!aq||!bo.length||aE(bo))){by=aH}if(by.length||bj.length){bi=bl;bx=[bj,bb,bi,a3(by.slice(0,bg))];aP(bn,JSON2.stringify(bx),at,a7,V,Y)}}bd+="&idsite="+aY+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+bc.getHours()+"&m="+bc.getMinutes()+"&s="+bc.getSeconds()+"&url="+e(a3(bD))+(aH.length?"&urlref="+e(a3(aH)):"")+"&_id="+bA+"&_idts="+bs+"&_idvc="+bh+"&_idn="+bE+(bj.length?"&_rcn="+e(bj):"")+(bb.length?"&_rck="+e(bb):"")+"&_refts="+bi+"&_viewts="+bk+(String(bu).length?"&_ects="+bu:"")+(String(by).length?"&_ref="+e(a3(by.slice(0,bg))):"");var be=JSON2.stringify(ax);if(be.length>2){bd+="&cvar="+e(be)}for(bz in aZ){if(Object.prototype.hasOwnProperty.call(aZ,bz)){bd+="&"+bz+"="+aZ[bz]}}if(bB){bd+="&data="+e(JSON2.stringify(bB))}else{if(S){bd+="&data="+e(JSON2.stringify(S))}}if(O){var br=JSON2.stringify(O);if(br.length>2){bd+="&_cvar="+e(br)}for(bz in bv){if(Object.prototype.hasOwnProperty.call(bv,bz)){if(O[bz][0]===""||O[bz][1]===""){delete O[bz]
-}}}aP(bG,JSON2.stringify(O),ab,a7,V,Y)}U(bA,bs,bh,bl,bk,b(bf)&&String(bf).length?bf:bu);aP(bm,"*",ab,a7,V,Y);bd+=g(bC);return bd}function aS(be,bd,bi,bf,bb,bl){var bg="idgoal=0",bh,bc=new Date(),bj=[],bk;if(String(be).length){bg+="&ec_id="+e(be);bh=Math.round(bc.getTime()/1000)}bg+="&revenue="+bd;if(String(bi).length){bg+="&ec_st="+bi}if(String(bf).length){bg+="&ec_tx="+bf}if(String(bb).length){bg+="&ec_sh="+bb}if(String(bl).length){bg+="&ec_dt="+bl}if(aN){for(bk in aN){if(Object.prototype.hasOwnProperty.call(aN,bk)){if(!b(aN[bk][1])){aN[bk][1]=""}if(!b(aN[bk][2])){aN[bk][2]=""}if(!b(aN[bk][3])||String(aN[bk][3]).length===0){aN[bk][3]=0}if(!b(aN[bk][4])||String(aN[bk][4]).length===0){aN[bk][4]=1}bj.push(aN[bk])}}bg+="&ec_items="+e(JSON2.stringify(bj))}bg=aj(bg,S,"ecommerce",bh);an(bg,aC)}function aR(bb,bf,be,bd,bc,bg){if(String(bb).length&&b(bf)){aS(bb,bf,be,bd,bc,bg)}}function a5(bb){if(b(bb)){aS("",bb,"","","","")}}function av(be,bf){var bb=new Date(),bd=aj("action_name="+e(l(be||ai)),bf,"log");
-an(bd,aC);if(Q&&ae&&!aI){aI=true;t(d,"click",aX);t(d,"mouseup",aX);t(d,"mousedown",aX);t(d,"mousemove",aX);t(d,"mousewheel",aX);t(H,"DOMMouseScroll",aX);t(H,"scroll",aX);t(d,"keypress",aX);t(d,"keydown",aX);t(d,"keyup",aX);t(H,"resize",aX);t(H,"focus",aX);t(H,"blur",aX);aG=bb.getTime();setTimeout(function bc(){var bg=new Date(),bh;if((aG+ae)>bg.getTime()){if(Q<bg.getTime()){bh=aj("ping=1",bf,"ping");an(bh,aC)}setTimeout(bc,ae)}},ae)}}function aA(bb,be,bd){var bc=aj("idgoal="+bb+(be?"&revenue="+be:""),bd,"goal");an(bc,aC)}function aW(bc,bb,be){var bd=aj(bb+"="+e(a3(bc)),be,"link");an(bd,aC)}function a0(bc,bb){if(bc!==""){return bc+bb.charAt(0).toUpperCase()+bb.slice(1)}return bb}function ag(bg){var bf,bb,be=["","webkit","ms","moz"],bd;if(!ao){for(bb=0;bb<be.length;bb++){bd=be[bb];if(Object.prototype.hasOwnProperty.call(d,a0(bd,"hidden"))){if(d[a0(bd,"visibilityState")]==="prerender"){bf=true}break}}}if(bf){t(d,bd+"visibilitychange",function bc(){d.removeEventListener(bd+"visibilitychange",bc,false);
-bg()});return}bg()}function af(bd,bc){var be,bb="(^| )(piwik[_-]"+bc;if(bd){for(be=0;be<bd.length;be++){bb+="|"+bd[be]}}bb+=")( |$)";return new RegExp(bb)}function aV(be,bb,bf){var bd=af(aw,"download"),bc=af(ac,"link"),bg=new RegExp("\\.("+ak+")([?&#]|$)","i");return bc.test(be)?"link":(bd.test(be)||bg.test(bb)?"download":(bf?0:"link"))}function aM(bg){var be,bc,bb;while((be=bg.parentNode)!==null&&b(be)&&((bc=bg.tagName.toUpperCase())!=="A"&&bc!=="AREA")){bg=be}if(b(bg.href)){var bh=bg.hostname||y(bg.href),bi=bh.toLowerCase(),bd=bg.href.replace(bh,bi),bf=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto):","i");if(!bf.test(bd)){bb=aV(bg.className,bd,aE(bi));if(bb){bd=E(bd);aW(bd,bb)}}}}function a9(bb){var bc,bd;bb=bb||H.event;bc=bb.which||bb.button;bd=bb.target||bb.srcElement;if(bb.type==="click"){if(bd){aM(bd)}}else{if(bb.type==="mousedown"){if((bc===1||bc===2)&&bd){ay=bc;W=bd}else{ay=W=null}}else{if(bb.type==="mouseup"){if(bc===ay&&bd===W){aM(bd)}ay=W=null}}}}function aL(bc,bb){if(bb){t(bc,"mouseup",a9,false);
-t(bc,"mousedown",a9,false)}else{t(bc,"click",a9,false)}}function au(bc){if(!aK){aK=true;var bd,bb=af(P,"ignore"),be=d.links;if(be){for(bd=0;bd<be.length;bd++){if(!bb.test(be[bd].className)){aL(be[bd],bc)}}}}}function a4(){var bb,bc,bd={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",dir:"application/x-director",fla:"application/x-shockwave-flash",java:"application/x-java-vm",gears:"application/x-googlegears",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(j.userAgent))){if(j.mimeTypes&&j.mimeTypes.length){for(bb in bd){if(Object.prototype.hasOwnProperty.call(bd,bb)){bc=j.mimeTypes[bd[bb]];aZ[bb]=(bc&&bc.enabledPlugin)?"1":"0"}}}if(typeof navigator.javaEnabled!=="unknown"&&b(j.javaEnabled)&&j.javaEnabled()){aZ.java="1"}if(a(H.GearsFactory)){aZ.gears="1"}aZ.cookie=N()}aZ.res=v.width+"x"+v.height}a4();az();return{getVisitorId:function(){return(J())[1]},getVisitorInfo:function(){return J()},getAttributionInfo:function(){return i()
-},getAttributionCampaignName:function(){return i()[0]},getAttributionCampaignKeyword:function(){return i()[1]},getAttributionReferrerTimestamp:function(){return i()[2]},getAttributionReferrerUrl:function(){return i()[3]},setTrackerUrl:function(bb){L=bb},setSiteId:function(bb){aY=bb},setCustomData:function(bb,bc){if(o(bb)){S=bb}else{if(!S){S=[]}S[bb]=bc}},getCustomData:function(){return S},setCustomVariable:function(bc,bb,bf,bd){var be;if(!b(bd)){bd="visit"}if(bc>0){bb=b(bb)&&!r(bb)?String(bb):bb;bf=b(bf)&&!r(bf)?String(bf):bf;be=[bb.slice(0,a2),bf.slice(0,a2)];if(bd==="visit"||bd===2){K();O[bc]=be}else{if(bd==="page"||bd===3){ax[bc]=be}}}},getCustomVariable:function(bc,bd){var bb;if(!b(bd)){bd="visit"}if(bd==="page"||bd===3){bb=ax[bc]}else{if(bd==="visit"||bd===2){K();bb=O[bc]}}if(!b(bb)||(bb&&bb[0]==="")){return false}return bb},deleteCustomVariable:function(bb,bc){if(this.getCustomVariable(bb,bc)){this.setCustomVariable(bb,"","",bc)}},setLinkTrackingTimer:function(bb){aC=bb},setDownloadExtensions:function(bb){ak=bb
-},addDownloadExtensions:function(bb){ak+="|"+bb},setDomains:function(bb){aD=r(bb)?[bb]:bb;aD.push(aU)},setIgnoreClasses:function(bb){P=r(bb)?[bb]:bb},setRequestMethod:function(bb){aF=bb||"GET"},setReferrerUrl:function(bb){aH=bb},setCustomUrl:function(bb){ar=aT(a8,bb)},setDocumentTitle:function(bb){ai=bb},setDownloadClasses:function(bb){aw=r(bb)?[bb]:bb},setLinkClasses:function(bb){ac=r(bb)?[bb]:bb},setCampaignNameKey:function(bb){am=r(bb)?[bb]:bb},setCampaignKeywordKey:function(bb){ah=r(bb)?[bb]:bb},discardHashTag:function(bb){R=bb},setCookieNamePrefix:function(bb){a6=bb;O=X()},setCookieDomain:function(bb){V=m(bb);az()},setCookiePath:function(bb){a7=bb;az()},setVisitorCookieTimeout:function(bb){aa=bb*1000},setSessionCookieTimeout:function(bb){ab=bb*1000},setReferralCookieTimeout:function(bb){at=bb*1000},setConversionAttributionFirstReferrer:function(bb){aq=bb},disableCookies:function(){T=true;aZ.cookie="0"},setDoNotTrack:function(bc){var bb=j.doNotTrack||j.msDoNotTrack;a1=bc&&(bb==="yes"||bb==="1");
-if(a1){this.disableCookies()}},addListener:function(bc,bb){aL(bc,bb)},enableLinkTracking:function(bb){if(h){au(bb)}else{C.push(function(){au(bb)})}},setHeartBeatTimer:function(bd,bc){var bb=new Date();Q=bb.getTime()+bd*1000;ae=bc*1000},killFrame:function(){if(H.location!==H.top.location){H.top.location=H.location}},redirectFile:function(bb){if(H.location.protocol==="file:"){H.location=bb}},setCountPreRendered:function(bb){ao=bb},trackGoal:function(bb,bd,bc){ag(function(){aA(bb,bd,bc)})},trackLink:function(bc,bb,bd){ag(function(){aW(bc,bb,bd)})},trackPageView:function(bb,bc){ag(function(){av(bb,bc)})},setEcommerceView:function(be,bb,bd,bc){if(!b(bd)||!bd.length){bd=""}else{if(bd instanceof Array){bd=JSON2.stringify(bd)}}ax[5]=["_pkc",bd];if(b(bc)&&String(bc).length){ax[2]=["_pkp",bc]}if((!b(be)||!be.length)&&(!b(bb)||!bb.length)){return}if(b(be)&&be.length){ax[3]=["_pks",be]}if(!b(bb)||!bb.length){bb=""}ax[4]=["_pkn",bb]},addEcommerceItem:function(bf,bb,bd,bc,be){if(bf.length){aN[bf]=[bf,bb,bd,bc,be]
-}},trackEcommerceOrder:function(bb,bf,be,bd,bc,bg){aR(bb,bf,be,bd,bc,bg)},trackEcommerceCartUpdate:function(bb){a5(bb)}}}function c(){return{push:z}}t(H,"beforeunload",B,false);x();Date.prototype.getTimeAlias=Date.prototype.getTime;G=new F();for(D=0;D<_paq.length;D++){z(_paq[D])}_paq=new c();return{addPlugin:function(i,J){w[i]=J},getTracker:function(i,J){return new F(i,J)},getAsyncTracker:function(){return G}}}()),piwik_track,piwik_log=function(b,f,d,g){function a(h){try{return eval("piwik_"+h)}catch(i){}return}var c,e=Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}}; \ No newline at end of file
+U=V;V=L(X,30);X=Y;Y=ad}for(ac=20;ac<=39;ac++){ad=(L(Y,5)+(X^V^U)+T+K[ac]+1859775393)&4294967295;T=U;U=V;V=L(X,30);X=Y;Y=ad}for(ac=40;ac<=59;ac++){ad=(L(Y,5)+((X&V)|(X&U)|(V&U))+T+K[ac]+2400959708)&4294967295;T=U;U=V;V=L(X,30);X=Y;Y=ad}for(ac=60;ac<=79;ac++){ad=(L(Y,5)+(X^V^U)+T+K[ac]+3395469782)&4294967295;T=U;U=V;V=L(X,30);X=Y;Y=ad}S=(S+Y)&4294967295;Q=(Q+X)&4294967295;P=(P+V)&4294967295;N=(N+U)&4294967295;M=(M+T)&4294967295}ad=aa(S)+aa(Q)+aa(P)+aa(N)+aa(M);return ad.toLowerCase()}function p(K,i,J){if(K==="translate.googleusercontent.com"){if(J===""){J=i}i=q(i,"u");K=y(i)}else{if(K==="cc.bingj.com"||K==="webcache.googleusercontent.com"||K.slice(0,5)==="74.6."){i=d.links[0].href;K=y(i)}}return[K,i,J]}function m(J){var i=J.length;if(J.charAt(--i)==="."){J=J.slice(0,i)}if(J.slice(0,2)==="*."){J=J.slice(1)}return J}function l(J){if(!r(J)){J=J.text||"";var i=d.getElementsByTagName("title");if(i&&b(i[0])){J=i[0].text}}return J}function F(ad,aC){var M=p(d.domain,H.location.href,f()),aV=m(M[0]),a9=M[1],aI=M[2],aG="GET",L=ad||"",aZ=aC||"",at,aj=d.title,al="7z|aac|ar[cj]|as[fx]|avi|bin|csv|deb|dmg|doc|exe|flv|gif|gz|gzip|hqx|jar|jpe?g|js|mp(2|3|4|e?g)|mov(ie)?|ms[ip]|od[bfgpst]|og[gv]|pdf|phps|png|ppt|qtm?|ra[mr]?|rpm|sea|sit|tar|t?bz2?|tgz|torrent|txt|wav|wm[av]|wpd||xls|xml|z|zip",aE=[aV],P=[],ax=[],ac=[],aD=500,Q,ae,R,S,an=["pk_campaign","piwik_campaign","utm_campaign","utm_source","utm_medium"],ai=["pk_kwd","piwik_kwd","utm_term"],a7="_pk_",V,a8,T=false,a2,ap,ar,aa=63072000000,ab=1800000,au=15768000000,Y=d.location.protocol==="https",O=false,ay={},a3=200,aO={},a0={},aL=false,aJ=false,aH,az,W,am=u,aK,aq;
+function aQ(bi,bf,be,bh,bd,bg){if(T){return}var bc;if(be){bc=new Date();bc.setTime(bc.getTime()+be)}d.cookie=bi+"="+e(bf)+(be?";expires="+bc.toGMTString():"")+";path="+(bh||"/")+(bd?";domain="+bd:"")+(bg?";secure":"")}function Z(be){if(T){return 0}var bc=new RegExp("(^|;)[ ]*"+be+"=([^;]*)"),bd=bc.exec(d.cookie);return bd?I(bd[2]):0}function a4(bc){var bd;if(R){bd=new RegExp("#.*");return bc.replace(bd,"")}return bc}function aU(be,bc){var bf=A(bc),bd;if(bf){return bc}if(bc.slice(0,1)==="/"){return A(be)+"://"+y(be)+bc}be=a4(be);if((bd=be.indexOf("?"))>=0){be=be.slice(0,bd)}if((bd=be.lastIndexOf("/"))!==be.length-1){be=be.slice(0,bd+1)}return be+bc}function aF(bf){var bd,bc,be;for(bd=0;bd<aE.length;bd++){bc=m(aE[bd].toLowerCase());if(bf===bc){return true}if(bc.slice(0,1)==="."){if(bf===bc.slice(1)){return true}be=bf.length-bc.length;if((be>0)&&(bf.slice(be)===bc)){return true}}}return false}function bb(bc){var bd=new Image(1,1);bd.onload=function(){};bd.src=L+(L.indexOf("?")<0?"?":"&")+bc
+}function aR(bc){try{var be=H.XMLHttpRequest?new H.XMLHttpRequest():H.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;be.open("POST",L,true);be.onreadystatechange=function(){if(this.readyState===4&&this.status!==200){bb(bc)}};be.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");be.send(bc)}catch(bd){bb(bc)}}function ao(be,bd){var bc=new Date();if(!a2){if(aG==="POST"){aR(be)}else{bb(be)}n=bc.getTime()+bd}}function aP(bc){return a7+bc+"."+aZ+"."+aK}function N(){if(T){return"0"}if(!b(j.cookieEnabled)){var bc=aP("testcookie");aQ(bc,"1");return Z(bc)==="1"?"1":"0"}return j.cookieEnabled?"1":"0"}function aA(){aK=am((V||aV)+(a8||"/")).slice(0,4)}function X(){var bd=aP("cvar"),bc=Z(bd);if(bc.length){bc=JSON2.parse(bc);if(o(bc)){return bc}}return{}}function K(){if(O===false){O=X()}}function aY(){var bc=new Date();aH=bc.getTime()}function U(bg,bd,bc,bf,be,bh){aQ(aP("id"),bg+"."+bd+"."+bc+"."+bf+"."+be+"."+bh,aa,a8,V,Y)}function J(){var bd=new Date(),bc=Math.round(bd.getTime()/1000),bf=Z(aP("id")),be;
+if(bf){be=bf.split(".");be.unshift("0")}else{if(!aq){aq=am((j.userAgent||"")+(j.platform||"")+JSON2.stringify(a0)+bc).slice(0,16)}be=["1",aq,bc,0,bc,"",""]}return be}function i(){var bc=Z(aP("ref"));if(bc.length){try{bc=JSON2.parse(bc);if(o(bc)){return bc}}catch(bd){}}return["","",0,""]}function ak(be,bC,bD,bg){var bA,bd=new Date(),bm=Math.round(bd.getTime()/1000),bF,bB,bi,bt,bx,bl,bv,bj,bz,bh=1024,bG,bp,bw=O,br=aP("id"),bn=aP("ses"),bo=aP("ref"),bH=aP("cvar"),bu=J(),bq=Z(bn),by=i(),bE=at||a9,bk,bc;if(T){T=false;aQ(br,"",-86400,a8,V);aQ(bn,"",-86400,a8,V);aQ(bH,"",-86400,a8,V);aQ(bo,"",-86400,a8,V);T=true}if(a2){return""}bF=bu[0];bB=bu[1];bt=bu[2];bi=bu[3];bx=bu[4];bl=bu[5];if(!b(bu[6])){bu[6]=""}bv=bu[6];if(!b(bg)){bg=""}bk=by[0];bc=by[1];bj=by[2];bz=by[3];if(!bq){bi++;bl=bx;if(!ar||!bk.length){for(bA in an){if(Object.prototype.hasOwnProperty.call(an,bA)){bk=q(bE,an[bA]);if(bk.length){break}}}for(bA in ai){if(Object.prototype.hasOwnProperty.call(ai,bA)){bc=q(bE,ai[bA]);if(bc.length){break
+}}}}bG=y(aI);bp=bz.length?y(bz):"";if(bG.length&&!aF(bG)&&(!ar||!bp.length||aF(bp))){bz=aI}if(bz.length||bk.length){bj=bm;by=[bk,bc,bj,a4(bz.slice(0,bh))];aQ(bo,JSON2.stringify(by),au,a8,V,Y)}}be+="&idsite="+aZ+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+bd.getHours()+"&m="+bd.getMinutes()+"&s="+bd.getSeconds()+"&url="+e(a4(bE))+(aI.length?"&urlref="+e(a4(aI)):"")+"&_id="+bB+"&_idts="+bt+"&_idvc="+bi+"&_idn="+bF+(bk.length?"&_rcn="+e(bk):"")+(bc.length?"&_rck="+e(bc):"")+"&_refts="+bj+"&_viewts="+bl+(String(bv).length?"&_ects="+bv:"")+(String(bz).length?"&_ref="+e(a4(bz.slice(0,bh))):"");var bf=JSON2.stringify(ay);if(bf.length>2){be+="&cvar="+e(bf)}for(bA in a0){if(Object.prototype.hasOwnProperty.call(a0,bA)){be+="&"+bA+"="+a0[bA]}}if(bC){be+="&data="+e(JSON2.stringify(bC))}else{if(S){be+="&data="+e(JSON2.stringify(S))}}if(O){var bs=JSON2.stringify(O);if(bs.length>2){be+="&_cvar="+e(bs)}for(bA in bw){if(Object.prototype.hasOwnProperty.call(bw,bA)){if(O[bA][0]===""||O[bA][1]===""){delete O[bA]
+}}}aQ(bH,JSON2.stringify(O),ab,a8,V,Y)}U(bB,bt,bi,bm,bl,b(bg)&&String(bg).length?bg:bv);aQ(bn,"*",ab,a8,V,Y);be+=g(bD);return be}function aT(bf,be,bj,bg,bc,bm){var bh="idgoal=0",bi,bd=new Date(),bk=[],bl;if(String(bf).length){bh+="&ec_id="+e(bf);bi=Math.round(bd.getTime()/1000)}bh+="&revenue="+be;if(String(bj).length){bh+="&ec_st="+bj}if(String(bg).length){bh+="&ec_tx="+bg}if(String(bc).length){bh+="&ec_sh="+bc}if(String(bm).length){bh+="&ec_dt="+bm}if(aO){for(bl in aO){if(Object.prototype.hasOwnProperty.call(aO,bl)){if(!b(aO[bl][1])){aO[bl][1]=""}if(!b(aO[bl][2])){aO[bl][2]=""}if(!b(aO[bl][3])||String(aO[bl][3]).length===0){aO[bl][3]=0}if(!b(aO[bl][4])||String(aO[bl][4]).length===0){aO[bl][4]=1}bk.push(aO[bl])}}bh+="&ec_items="+e(JSON2.stringify(bk))}bh=ak(bh,S,"ecommerce",bi);ao(bh,aD)}function aS(bc,bg,bf,be,bd,bh){if(String(bc).length&&b(bg)){aT(bc,bg,bf,be,bd,bh)}}function a6(bc){if(b(bc)){aT("",bc,"","","","")}}function aw(bf,bg){var bc=new Date(),be=ak("action_name="+e(l(bf||aj)),bg,"log");
+ao(be,aD);if(Q&&ae&&!aJ){aJ=true;t(d,"click",aY);t(d,"mouseup",aY);t(d,"mousedown",aY);t(d,"mousemove",aY);t(d,"mousewheel",aY);t(H,"DOMMouseScroll",aY);t(H,"scroll",aY);t(d,"keypress",aY);t(d,"keydown",aY);t(d,"keyup",aY);t(H,"resize",aY);t(H,"focus",aY);t(H,"blur",aY);aH=bc.getTime();setTimeout(function bd(){var bh=new Date(),bi;if((aH+ae)>bh.getTime()){if(Q<bh.getTime()){bi=ak("ping=1",bg,"ping");ao(bi,aD)}setTimeout(bd,ae)}},ae)}}function ah(bc,bf,bd,bg){var be=ak("search="+e(bc)+(bf?"&search_cat="+e(bf):"")+(b(bd)?"&search_count="+bd:""),bg,"sitesearch");ao(be,aD)}function aB(bc,bf,be){var bd=ak("idgoal="+bc+(bf?"&revenue="+bf:""),be,"goal");ao(bd,aD)}function aX(bd,bc,bf){var be=ak(bc+"="+e(a4(bd)),bf,"link");ao(be,aD)}function a1(bd,bc){if(bd!==""){return bd+bc.charAt(0).toUpperCase()+bc.slice(1)}return bc}function ag(bh){var bg,bc,bf=["","webkit","ms","moz"],be;if(!ap){for(bc=0;bc<bf.length;bc++){be=bf[bc];if(Object.prototype.hasOwnProperty.call(d,a1(be,"hidden"))){if(d[a1(be,"visibilityState")]==="prerender"){bg=true
+}break}}}if(bg){t(d,be+"visibilitychange",function bd(){d.removeEventListener(be+"visibilitychange",bd,false);bh()});return}bh()}function af(be,bd){var bf,bc="(^| )(piwik[_-]"+bd;if(be){for(bf=0;bf<be.length;bf++){bc+="|"+be[bf]}}bc+=")( |$)";return new RegExp(bc)}function aW(bf,bc,bg){var be=af(ax,"download"),bd=af(ac,"link"),bh=new RegExp("\\.("+al+")([?&#]|$)","i");return bd.test(bf)?"link":(be.test(bf)||bh.test(bc)?"download":(bg?0:"link"))}function aN(bh){var bf,bd,bc;while((bf=bh.parentNode)!==null&&b(bf)&&((bd=bh.tagName.toUpperCase())!=="A"&&bd!=="AREA")){bh=bf}if(b(bh.href)){var bi=bh.hostname||y(bh.href),bj=bi.toLowerCase(),be=bh.href.replace(bi,bj),bg=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto):","i");if(!bg.test(be)){bc=aW(bh.className,be,aF(bj));if(bc){be=E(be);aX(be,bc)}}}}function ba(bc){var bd,be;bc=bc||H.event;bd=bc.which||bc.button;be=bc.target||bc.srcElement;if(bc.type==="click"){if(be){aN(be)}}else{if(bc.type==="mousedown"){if((bd===1||bd===2)&&be){az=bd;
+W=be}else{az=W=null}}else{if(bc.type==="mouseup"){if(bd===az&&be===W){aN(be)}az=W=null}}}}function aM(bd,bc){if(bc){t(bd,"mouseup",ba,false);t(bd,"mousedown",ba,false)}else{t(bd,"click",ba,false)}}function av(bd){if(!aL){aL=true;var be,bc=af(P,"ignore"),bf=d.links;if(bf){for(be=0;be<bf.length;be++){if(!bc.test(bf[be].className)){aM(bf[be],bd)}}}}}function a5(){var bc,bd,be={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",dir:"application/x-director",fla:"application/x-shockwave-flash",java:"application/x-java-vm",gears:"application/x-googlegears",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(j.userAgent))){if(j.mimeTypes&&j.mimeTypes.length){for(bc in be){if(Object.prototype.hasOwnProperty.call(be,bc)){bd=j.mimeTypes[be[bc]];a0[bc]=(bd&&bd.enabledPlugin)?"1":"0"}}}if(typeof navigator.javaEnabled!=="unknown"&&b(j.javaEnabled)&&j.javaEnabled()){a0.java="1"}if(a(H.GearsFactory)){a0.gears="1"}a0.cookie=N()}a0.res=v.width+"x"+v.height
+}a5();aA();return{getVisitorId:function(){return(J())[1]},getVisitorInfo:function(){return J()},getAttributionInfo:function(){return i()},getAttributionCampaignName:function(){return i()[0]},getAttributionCampaignKeyword:function(){return i()[1]},getAttributionReferrerTimestamp:function(){return i()[2]},getAttributionReferrerUrl:function(){return i()[3]},setTrackerUrl:function(bc){L=bc},setSiteId:function(bc){aZ=bc},setCustomData:function(bc,bd){if(o(bc)){S=bc}else{if(!S){S=[]}S[bc]=bd}},getCustomData:function(){return S},setCustomVariable:function(bd,bc,bg,be){var bf;if(!b(be)){be="visit"}if(bd>0){bc=b(bc)&&!r(bc)?String(bc):bc;bg=b(bg)&&!r(bg)?String(bg):bg;bf=[bc.slice(0,a3),bg.slice(0,a3)];if(be==="visit"||be===2){K();O[bd]=bf}else{if(be==="page"||be===3){ay[bd]=bf}}}},getCustomVariable:function(bd,be){var bc;if(!b(be)){be="visit"}if(be==="page"||be===3){bc=ay[bd]}else{if(be==="visit"||be===2){K();bc=O[bd]}}if(!b(bc)||(bc&&bc[0]==="")){return false}return bc},deleteCustomVariable:function(bc,bd){if(this.getCustomVariable(bc,bd)){this.setCustomVariable(bc,"","",bd)
+}},setLinkTrackingTimer:function(bc){aD=bc},setDownloadExtensions:function(bc){al=bc},addDownloadExtensions:function(bc){al+="|"+bc},setDomains:function(bc){aE=r(bc)?[bc]:bc;aE.push(aV)},setIgnoreClasses:function(bc){P=r(bc)?[bc]:bc},setRequestMethod:function(bc){aG=bc||"GET"},setReferrerUrl:function(bc){aI=bc},setCustomUrl:function(bc){at=aU(a9,bc)},setDocumentTitle:function(bc){aj=bc},setDownloadClasses:function(bc){ax=r(bc)?[bc]:bc},setLinkClasses:function(bc){ac=r(bc)?[bc]:bc},setCampaignNameKey:function(bc){an=r(bc)?[bc]:bc},setCampaignKeywordKey:function(bc){ai=r(bc)?[bc]:bc},discardHashTag:function(bc){R=bc},setCookieNamePrefix:function(bc){a7=bc;O=X()},setCookieDomain:function(bc){V=m(bc);aA()},setCookiePath:function(bc){a8=bc;aA()},setVisitorCookieTimeout:function(bc){aa=bc*1000},setSessionCookieTimeout:function(bc){ab=bc*1000},setReferralCookieTimeout:function(bc){au=bc*1000},setConversionAttributionFirstReferrer:function(bc){ar=bc},disableCookies:function(){T=true;a0.cookie="0"
+},setDoNotTrack:function(bd){var bc=j.doNotTrack||j.msDoNotTrack;a2=bd&&(bc==="yes"||bc==="1");if(a2){this.disableCookies()}},addListener:function(bd,bc){aM(bd,bc)},enableLinkTracking:function(bc){if(h){av(bc)}else{C.push(function(){av(bc)})}},setHeartBeatTimer:function(be,bd){var bc=new Date();Q=bc.getTime()+be*1000;ae=bd*1000},killFrame:function(){if(H.location!==H.top.location){H.top.location=H.location}},redirectFile:function(bc){if(H.location.protocol==="file:"){H.location=bc}},setCountPreRendered:function(bc){ap=bc},trackGoal:function(bc,be,bd){ag(function(){aB(bc,be,bd)})},trackLink:function(bd,bc,be){ag(function(){aX(bd,bc,be)})},trackPageView:function(bc,bd){ag(function(){aw(bc,bd)})},trackSiteSearch:function(bc,be,bd){ag(function(){ah(bc,be,bd)})},setEcommerceView:function(bf,bc,be,bd){if(!b(be)||!be.length){be=""}else{if(be instanceof Array){be=JSON2.stringify(be)}}ay[5]=["_pkc",be];if(b(bd)&&String(bd).length){ay[2]=["_pkp",bd]}if((!b(bf)||!bf.length)&&(!b(bc)||!bc.length)){return
+}if(b(bf)&&bf.length){ay[3]=["_pks",bf]}if(!b(bc)||!bc.length){bc=""}ay[4]=["_pkn",bc]},addEcommerceItem:function(bg,bc,be,bd,bf){if(bg.length){aO[bg]=[bg,bc,be,bd,bf]}},trackEcommerceOrder:function(bc,bg,bf,be,bd,bh){aS(bc,bg,bf,be,bd,bh)},trackEcommerceCartUpdate:function(bc){a6(bc)}}}function c(){return{push:z}}t(H,"beforeunload",B,false);x();Date.prototype.getTimeAlias=Date.prototype.getTime;G=new F();for(D=0;D<_paq.length;D++){z(_paq[D])}_paq=new c();return{addPlugin:function(i,J){w[i]=J},getTracker:function(i,J){return new F(i,J)},getAsyncTracker:function(){return G}}}()),piwik_track,piwik_log=function(b,f,d,g){function a(h){try{return eval("piwik_"+h)}catch(i){}return}var c,e=Piwik.getTracker(d,f);e.setDocumentTitle(b);e.setCustomData(g);c=a("tracker_pause");if(c){e.setLinkTrackingTimer(c)}c=a("download_extensions");if(c){e.setDownloadExtensions(c)}c=a("hosts_alias");if(c){e.setDomains(c)}c=a("ignore_classes");if(c){e.setIgnoreClasses(c)}e.trackPageView();if(a("install_tracker")){piwik_track=function(i,k,j,h){e.setSiteId(k);
+e.setTrackerUrl(j);e.trackLink(i,h)};e.enableLinkTracking()}}; \ No newline at end of file
diff --git a/plugins/API/API.php b/plugins/API/API.php
index 6d68e2186b..cad299700e 100644
--- a/plugins/API/API.php
+++ b/plugins/API/API.php
@@ -289,12 +289,20 @@ class Piwik_API_API
'sqlFilter' => array('Piwik_Common', 'convertVisitorIdToBin'),
);
$segments[] = array(
- 'type' => 'metric',
- 'category' => 'Visit',
- 'name' => 'General_NbActions',
- 'segment' => 'actions',
- 'sqlSegment' => 'log_visit.visit_total_actions',
- );
+ 'type' => 'metric',
+ 'category' => 'Visit',
+ 'name' => 'General_NbActions',
+ 'segment' => 'actions',
+ 'sqlSegment' => 'log_visit.visit_total_actions',
+ );
+ $segments[] = array(
+ 'type' => 'metric',
+ 'category' => 'Visit',
+ 'name' => 'General_NbSearches',
+ 'segment' => 'searches',
+ 'sqlSegment' => 'log_visit.visit_total_searches',
+ 'acceptedValues' => 'To select all visits who used internal Site Search, use: &segment=searches>0',
+ );
$segments[] = array(
'type' => 'metric',
'category' => 'Visit',
@@ -987,6 +995,7 @@ class Piwik_API_API
Piwik_Translate('VisitsSummary_VisitsSummary'),
Piwik_Translate('Goals_Ecommerce'),
Piwik_Translate('Actions_Actions'),
+ Piwik_Translate('Actions_SubmenuSitesearch'),
Piwik_Translate('Referers_Referers'),
Piwik_Translate('Goals_Goals'),
Piwik_Translate('General_Visitors'),
diff --git a/plugins/Actions/API.php b/plugins/Actions/API.php
index 3587c3f70c..0b14549e17 100644
--- a/plugins/Actions/API.php
+++ b/plugins/Actions/API.php
@@ -80,7 +80,9 @@ class Piwik_Actions_API
'Actions_nb_downloads' => 'nb_downloads',
'Actions_nb_uniq_downloads' => 'nb_uniq_downloads',
'Actions_nb_outlinks' => 'nb_outlinks',
- 'Actions_nb_uniq_outlinks' => 'nb_uniq_outlinks'
+ 'Actions_nb_uniq_outlinks' => 'nb_uniq_outlinks',
+ 'Actions_nb_searches' => 'nb_searches',
+ 'Actions_nb_keywords' => 'nb_keywords',
);
// get requested columns
@@ -120,7 +122,30 @@ class Piwik_Actions_API
$this->filterActionsDataTable($dataTable, $expanded);
return $dataTable;
}
-
+
+ public function getPageUrlsFollowingSiteSearch( $idSite, $period, $date, $segment = false, $expanded = false, $idSubtable = false )
+ {
+ $dataTable = $this->getPageUrls($idSite, $period, $date, $segment, $expanded, $idSubtable);
+ $this->keepPagesFollowingSearch($dataTable);
+ return $dataTable;
+ }
+
+ public function getPageTitlesFollowingSiteSearch( $idSite, $period, $date, $segment = false, $expanded = false, $idSubtable = false )
+ {
+ $dataTable = $this->getPageTitles($idSite, $period, $date, $segment, $expanded, $idSubtable);
+ $this->keepPagesFollowingSearch($dataTable);
+ return $dataTable;
+ }
+
+ protected function keepPagesFollowingSearch($dataTable)
+ {
+ // Keep only pages which are following site search
+ $dataTable->filter('ColumnCallbackDeleteRow', array(
+ 'nb_hits_following_search',
+ create_function('$value', 'return $value > 0;')
+ ));
+ }
+
/**
* Returns a DataTable with analytics information for every unique entry page URL, for
* the specified site, period & segment.
@@ -222,7 +247,93 @@ class Piwik_Actions_API
$this->filterActionsDataTable($dataTable);
return $dataTable;
}
-
+
+ public function getSiteSearchKeywords( $idSite, $period, $date, $segment = false )
+ {
+ $dataTable = $this->getSiteSearchKeywordsRaw($idSite, $period, $date, $segment);
+ $dataTable->deleteColumn(Piwik_Archive::INDEX_SITE_SEARCH_HAS_NO_RESULT);
+ $this->filterPageDatatable($dataTable);
+ $this->filterActionsDataTable($dataTable);
+ $this->addPagesPerSearchColumn($dataTable);
+ return $dataTable;
+ }
+
+ //Visitors can search, and then click "next" to view more results. This is the average number of search results pages viewed for this keyword.
+ public function addPagesPerSearchColumn($dataTable, $columnToRead = 'nb_hits')
+ {
+ $dataTable->filter('ColumnCallbackAddColumnQuotient', array('nb_pages_per_search', $columnToRead, 'nb_visits', $precision = 1));
+ }
+
+ protected function getSiteSearchKeywordsRaw($idSite, $period, $date, $segment)
+ {
+ $dataTable = Piwik_Archive::getDataTableFromArchive('Actions_sitesearch', $idSite, $period, $date, $segment, $expanded = false);
+ return $dataTable;
+ }
+
+ public function getSiteSearchNoResultKeywords( $idSite, $period, $date, $segment = false )
+ {
+ $dataTable = $this->getSiteSearchKeywordsRaw($idSite, $period, $date, $segment);
+ // Delete all rows that have some results
+ $dataTable->filter('ColumnCallbackDeleteRow',
+ array(
+ Piwik_Archive::INDEX_SITE_SEARCH_HAS_NO_RESULT,
+ create_function ( '$value', 'return $value == 1;')
+ ));
+ $dataTable->deleteColumn(Piwik_Archive::INDEX_SITE_SEARCH_HAS_NO_RESULT);
+ $this->filterPageDatatable($dataTable);
+ $this->filterActionsDataTable($dataTable);
+ $this->addPagesPerSearchColumn($dataTable);
+ return $dataTable;
+ }
+
+ public function getSiteSearchCategories( $idSite, $period, $date, $segment = false )
+ {
+ Piwik_Actions::checkCustomVariablesPluginEnabled();
+ $customVariables = Piwik_CustomVariables_API::getInstance()->getCustomVariables($idSite, $period, $date, $segment, $expanded = false, $_leavePiwikCoreVariables = true);
+
+ $customVarNameToLookFor = Piwik_Tracker_Action::CVAR_KEY_SEARCH_CATEGORY;
+
+ $dataTable = new Piwik_DataTable();
+ // Handle case where date=last30&period=day
+ // TODO: this logic should really be refactored somewhere, this is ugly!
+ if($customVariables instanceof Piwik_DataTable_Array)
+ {
+ $dataTable = new Piwik_DataTable_Array();
+ $dataTable->metadata = $customVariables->metadata;
+ $dataTable->setKeyName($customVariables->getKeyName());
+
+ $customVariableDatatables = $customVariables->getArray();
+ $dataTables = $dataTable->getArray();
+ foreach($customVariableDatatables as $key => $customVariableTableForDate)
+ {
+ // we do not enter the IF, in the case idSite=1,3 AND period=day&date=datefrom,dateto,
+ if(isset($dataTable->metadata[$key]['period']))
+ {
+ $row = $customVariableTableForDate->getRowFromLabel($customVarNameToLookFor);
+ if($row)
+ {
+ $dateRewrite = $dataTable->metadata[$key]['period']->getDateStart()->toString();
+ $idSubtable = $row->getIdSubDataTable();
+ $categories = Piwik_CustomVariables_API::getInstance()->getCustomVariablesValuesFromNameId($idSite, $period, $dateRewrite, $idSubtable, $segment);
+ $dataTable->addTable($categories, $key);
+ }
+ }
+ }
+ }
+ elseif($customVariables instanceof Piwik_DataTable)
+ {
+ $row = $customVariables->getRowFromLabel($customVarNameToLookFor);
+ if($row)
+ {
+ $idSubtable = $row->getIdSubDataTable();
+ $dataTable = Piwik_CustomVariables_API::getInstance()->getCustomVariablesValuesFromNameId($idSite, $period, $date, $idSubtable, $segment);
+ }
+ }
+ $this->filterActionsDataTable($dataTable);
+ $this->addPagesPerSearchColumn($dataTable, $columnToRead = 'nb_actions');
+ return $dataTable;
+ }
+
/**
* Will search in the DataTable for a Label matching the searched string
* and return only the matching row, or an empty datatable
diff --git a/plugins/Actions/Actions.php b/plugins/Actions/Actions.php
index 8fe996d927..a875edf116 100644
--- a/plugins/Actions/Actions.php
+++ b/plugins/Actions/Actions.php
@@ -29,7 +29,8 @@ class Piwik_Actions extends Piwik_Plugin
);
return $info;
}
-
+
+
public function getListHooksRegistered()
{
$hooks = array(
@@ -38,7 +39,7 @@ class Piwik_Actions extends Piwik_Plugin
'WidgetsList.add' => 'addWidgets',
'Menu.add' => 'addMenus',
'API.getReportMetadata' => 'getReportMetadata',
- 'API.getSegmentsMetadata' => 'getSegmentsMetadata',
+ 'API.getSegmentsMetadata' => 'getSegmentsMetadata',
);
return $hooks;
}
@@ -95,14 +96,15 @@ class Piwik_Actions extends Piwik_Plugin
'sqlFilter' => $sqlFilter,
'acceptedValues' => "All these segments must be URL encoded, for example: ".urlencode('http://example.com/path/page?query'),
);
- $segments[] = array(
- 'type' => 'dimension',
- 'category' => 'Actions_Actions',
- 'name' => 'Actions_ColumnPageName',
- 'segment' => 'pageTitle',
- 'sqlSegment' => 'log_link_visit_action.idaction_name',
- 'sqlFilter' => $sqlFilter,
- );
+ $segments[] = array(
+ 'type' => 'dimension',
+ 'category' => 'Actions_Actions',
+ 'name' => 'Actions_ColumnPageName',
+ 'segment' => 'pageTitle',
+ 'sqlSegment' => 'log_link_visit_action.idaction_name',
+ 'sqlFilter' => $sqlFilter,
+ );
+ // TODO here could add keyword segment and hack $sqlFilter to make it select the right idaction
}
/**
@@ -192,7 +194,9 @@ class Piwik_Actions extends Piwik_Plugin
'nb_downloads' => Piwik_Translate('Actions_ColumnDownloads'),
'nb_uniq_downloads' => Piwik_Translate('Actions_ColumnUniqueDownloads'),
'nb_outlinks' => Piwik_Translate('Actions_ColumnOutlinks'),
- 'nb_uniq_outlinks' => Piwik_Translate('Actions_ColumnUniqueOutlinks')
+ 'nb_uniq_outlinks' => Piwik_Translate('Actions_ColumnUniqueOutlinks'),
+ 'nb_searches' => Piwik_Translate('Actions_ColumnSearches'),
+ 'nb_keywords' => Piwik_Translate('Actions_ColumnSiteSearchKeywords'),
),
'metricsDocumentation' => array(
'nb_pageviews' => Piwik_Translate('General_ColumnPageviewsDocumentation'),
@@ -200,7 +204,9 @@ class Piwik_Actions extends Piwik_Plugin
'nb_downloads' => Piwik_Translate('Actions_ColumnClicksDocumentation'),
'nb_uniq_downloads' => Piwik_Translate('Actions_ColumnUniqueClicksDocumentation'),
'nb_outlinks' => Piwik_Translate('Actions_ColumnClicksDocumentation'),
- 'nb_uniq_outlinks' => Piwik_Translate('Actions_ColumnUniqueClicksDocumentation')
+ 'nb_uniq_outlinks' => Piwik_Translate('Actions_ColumnUniqueClicksDocumentation'),
+ 'nb_searches' => Piwik_Translate('Actions_ColumnSearchesDocumentation'),
+// 'nb_keywords' => Piwik_Translate('Actions_ColumnSiteSearchKeywords'),
),
'processedMetrics' => false,
'order' => 1
@@ -392,6 +398,115 @@ class Piwik_Actions extends Piwik_Plugin
'actionToLoadSubTables' => 'getDownloads',
'order' => 9,
);
+
+ if($this->isSiteSearchEnabled())
+ {
+ // Search Keywords
+ $reports[] = array(
+ 'category' => Piwik_Translate('Actions_SubmenuSitesearch'),
+ 'name' => Piwik_Translate('Actions_WidgetSearchKeywords'),
+ 'module' => 'Actions',
+ 'action' => 'getSiteSearchKeywords',
+ 'dimension' => Piwik_Translate('Actions_ColumnSearchKeyword'),
+ 'metrics' => array(
+ 'nb_visits' => Piwik_Translate('Actions_ColumnSearches'),
+ 'nb_pages_per_search' => Piwik_Translate('Actions_ColumnPagesPerSearch'),
+ 'exit_rate' => Piwik_Translate('Actions_ColumnSearchExits'),
+ ),
+ 'metricsDocumentation' => array(
+ 'nb_visits' => Piwik_Translate('Actions_ColumnSearchesDocumentation'),
+ 'nb_pages_per_search' => Piwik_Translate('Actions_ColumnPagesPerSearchDocumentation'),
+ 'exit_rate' => Piwik_Translate('Actions_ColumnSearchExitsDocumentation'),
+ ),
+ 'documentation' => Piwik_Translate('Actions_SiteSearchKeywordsDocumentation') . '<br/><br/>' . Piwik_Translate('Actions_SiteSearchIntro') . '<br/><br/>'
+ . '<a href="http://piwik.org/docs/site-search/" target="_blank">'. Piwik_Translate('Actions_LearnMoreAboutSiteSearchLink') . '</a>',
+ 'processedMetrics' => false,
+ 'order' => 15
+ );
+ // No Result Search Keywords
+ $reports[] = array(
+ 'category' => Piwik_Translate('Actions_SubmenuSitesearch'),
+ 'name' => Piwik_Translate('Actions_WidgetSearchNoResultKeywords'),
+ 'module' => 'Actions',
+ 'action' => 'getSiteSearchNoResultKeywords',
+ 'dimension' => Piwik_Translate('Actions_ColumnNoResultKeyword'),
+ 'metrics' => array(
+ 'nb_visits' => Piwik_Translate('Actions_ColumnSearches'),
+ 'exit_rate' => Piwik_Translate('Actions_ColumnSearchExits'),
+ ),
+ 'metricsDocumentation' => array(
+ 'nb_visits' => Piwik_Translate('Actions_ColumnSearchesDocumentation'),
+ 'exit_rate' => Piwik_Translate('Actions_ColumnSearchExitsDocumentation'),
+ ),
+ 'documentation' => Piwik_Translate('Actions_SiteSearchIntro'). '<br /><br />' . Piwik_Translate('Actions_SiteSearchKeywordsNoResultDocumentation'),
+ 'processedMetrics' => false,
+ 'order' => 16
+ );
+
+ if(self::isCustomVariablesPluginsEnabled()) {
+ // Search Categories
+ $reports[] = array(
+ 'category' => Piwik_Translate('Actions_SubmenuSitesearch'),
+ 'name' => Piwik_Translate('Actions_WidgetSearchCategories'),
+ 'module' => 'Actions',
+ 'action' => 'getSiteSearchCategories',
+ 'dimension' => Piwik_Translate('Actions_ColumnSearchCategory'),
+ 'metrics' => array(
+ 'nb_visits' => Piwik_Translate('Actions_ColumnSearches'),
+ 'nb_pages_per_search' => Piwik_Translate('Actions_ColumnPagesPerSearch'),
+ 'exit_rate' => Piwik_Translate('Actions_ColumnSearchExits'),
+ ),
+ 'metricsDocumentation' => array(
+ 'nb_visits' => Piwik_Translate('Actions_ColumnSearchesDocumentation'),
+ 'nb_pages_per_search' => Piwik_Translate('Actions_ColumnPagesPerSearchDocumentation'),
+ 'exit_rate' => Piwik_Translate('Actions_ColumnSearchExitsDocumentation'),
+ ),
+ 'documentation' => Piwik_Translate('Actions_SiteSearchCategories1') . '<br/>' . Piwik_Translate('Actions_SiteSearchCategories2'),
+ 'processedMetrics' => false,
+ 'order' => 17
+ );
+ }
+
+ $documentation = Piwik_Translate('Actions_SiteSearchFollowingPagesDoc') .'<br/>'.Piwik_Translate('General_UsePlusMinusIconsDocumentation');
+ // Pages URLs following Search
+ $reports[] = array(
+ 'category' => Piwik_Translate('Actions_SubmenuSitesearch'),
+ 'name' => Piwik_Translate('Actions_WidgetPageUrlsFollowingSearch'),
+ 'module' => 'Actions',
+ 'action' => 'getPageUrlsFollowingSiteSearch',
+ 'dimension' => Piwik_Translate('General_ColumnDestinationPage'),
+ 'metrics' => array(
+ 'nb_hits_following_search' => Piwik_Translate('General_ColumnViewedAfterSearch'),
+ 'nb_hits' => Piwik_Translate('General_ColumnTotalPageviews'),
+ ),
+ 'metricsDocumentation' => array(
+ 'nb_hits_following_search' => Piwik_Translate('General_ColumnViewedAfterSearchDocumentation'),
+ 'nb_hits' => Piwik_Translate('General_ColumnPageviewsDocumentation'),
+ ),
+ 'documentation' => $documentation,
+ 'processedMetrics' => false,
+ 'order' => 18
+ );
+ // Pages Titles following Search
+ $reports[] = array(
+ 'category' => Piwik_Translate('Actions_SubmenuSitesearch'),
+ 'name' => Piwik_Translate('Actions_WidgetPageTitlesFollowingSearch'),
+ 'module' => 'Actions',
+ 'action' => 'getPageTitlesFollowingSiteSearch',
+ 'dimension' => Piwik_Translate('General_ColumnDestinationPage'),
+ 'metrics' => array(
+ 'nb_hits_following_search' => Piwik_Translate('General_ColumnViewedAfterSearch'),
+ 'nb_hits' => Piwik_Translate('General_ColumnTotalPageviews'),
+ ),
+ 'metricsDocumentation' => array(
+ 'nb_hits_following_search' => Piwik_Translate('General_ColumnViewedAfterSearchDocumentation'),
+ 'nb_hits' => Piwik_Translate('General_ColumnPageviewsDocumentation'),
+ ),
+ 'documentation' => $documentation,
+ 'processedMetrics' => false,
+ 'order' => 19
+ );
+ }
}
function addWidgets()
@@ -404,6 +519,18 @@ class Piwik_Actions extends Piwik_Plugin
Piwik_AddWidget( 'Actions_Actions', 'Actions_WidgetPagesExit', 'Actions', 'getExitPageUrls');
Piwik_AddWidget( 'Actions_Actions', 'Actions_WidgetEntryPageTitles', 'Actions', 'getEntryPageTitles' );
Piwik_AddWidget( 'Actions_Actions', 'Actions_WidgetExitPageTitles', 'Actions', 'getExitPageTitles' );
+
+ if($this->isSiteSearchEnabled())
+ {
+ Piwik_AddWidget( 'Actions_SubmenuSitesearch', 'Actions_WidgetSearchKeywords', 'Actions', 'getSiteSearchKeywords');
+
+ if(self::isCustomVariablesPluginsEnabled()) {
+ Piwik_AddWidget( 'Actions_SubmenuSitesearch', 'Actions_WidgetSearchCategories', 'Actions', 'getSiteSearchCategories');
+ }
+ Piwik_AddWidget( 'Actions_SubmenuSitesearch', 'Actions_WidgetSearchNoResultKeywords', 'Actions', 'getSiteSearchNoResultKeywords');
+ Piwik_AddWidget( 'Actions_SubmenuSitesearch', 'Actions_WidgetPageUrlsFollowingSearch', 'Actions', 'getPageUrlsFollowingSiteSearch');
+ Piwik_AddWidget( 'Actions_SubmenuSitesearch', 'Actions_WidgetPageTitlesFollowingSearch', 'Actions', 'getPageTitlesFollowingSiteSearch');
+ }
}
function addMenus()
@@ -413,10 +540,25 @@ class Piwik_Actions extends Piwik_Plugin
Piwik_AddMenu('Actions_Actions', 'Actions_SubmenuPagesEntry', array('module' => 'Actions', 'action' => 'indexEntryPageUrls'), true, 2);
Piwik_AddMenu('Actions_Actions', 'Actions_SubmenuPagesExit', array('module' => 'Actions', 'action' => 'indexExitPageUrls'), true, 3);
Piwik_AddMenu('Actions_Actions', 'Actions_SubmenuPageTitles', array('module' => 'Actions', 'action' => 'indexPageTitles'), true, 4);
- Piwik_AddMenu('Actions_Actions', 'Actions_SubmenuOutlinks', array('module' => 'Actions', 'action' => 'indexOutlinks'), true, 5);
- Piwik_AddMenu('Actions_Actions', 'Actions_SubmenuDownloads', array('module' => 'Actions', 'action' => 'indexDownloads'), true, 6);
+ Piwik_AddMenu('Actions_Actions', 'Actions_SubmenuOutlinks', array('module' => 'Actions', 'action' => 'indexOutlinks'), true, 6);
+ Piwik_AddMenu('Actions_Actions', 'Actions_SubmenuDownloads', array('module' => 'Actions', 'action' => 'indexDownloads'), true, 7);
+
+ if($this->isSiteSearchEnabled())
+ {
+ Piwik_AddMenu('Actions_Actions', 'Actions_SubmenuSitesearch', array('module' => 'Actions', 'action' => 'indexSiteSearch'), true, 5);
+ }
}
+ protected function isSiteSearchEnabled()
+ {
+ $idSite = Piwik_Common::getRequestVar('idSite', 0, 'int');
+ if($idSite == 0 ) {
+ return false;
+ }
+ return Piwik_Site::isSiteSearchEnabledFor($idSite);
+ }
+
+
/**
* @param Piwik_Event_Notification $notification notification object
* @return mixed
@@ -427,7 +569,7 @@ class Piwik_Actions extends Piwik_Plugin
if(!$archiveProcessing->shouldProcessReportsForPlugin($this->getPluginName())) return;
- $actionsArchiving = new Piwik_Actions_Archiving;
+ $actionsArchiving = new Piwik_Actions_Archiving($archiveProcessing->idsite);
return $actionsArchiving->archivePeriod($archiveProcessing);
}
@@ -446,8 +588,21 @@ class Piwik_Actions extends Piwik_Plugin
if(!$archiveProcessing->shouldProcessReportsForPlugin($this->getPluginName())) return;
- $actionsArchiving = new Piwik_Actions_Archiving;
+ $actionsArchiving = new Piwik_Actions_Archiving($archiveProcessing->idsite);
return $actionsArchiving->archiveDay($archiveProcessing);
}
+
+ static public function checkCustomVariablesPluginEnabled()
+ {
+ if(!self::isCustomVariablesPluginsEnabled())
+ {
+ throw new Exception("To Track Site Search Categories, please ask the Piwik Administrator to enable the 'Custom Variables' plugin in Settings > Plugins.");
+ }
+ }
+
+ static protected function isCustomVariablesPluginsEnabled()
+ {
+ return Piwik_PluginsManager::getInstance()->isPluginActivated('CustomVariables');
+ }
}
diff --git a/plugins/Actions/Archiving.php b/plugins/Actions/Archiving.php
index e98c61657b..63db0f2a64 100644
--- a/plugins/Actions/Archiving.php
+++ b/plugins/Actions/Archiving.php
@@ -24,6 +24,7 @@ class Piwik_Actions_Archiving
Piwik_Tracker_Action::TYPE_OUTLINK,
Piwik_Tracker_Action::TYPE_DOWNLOAD,
Piwik_Tracker_Action::TYPE_ACTION_NAME,
+ Piwik_Tracker_Action::TYPE_SITE_SEARCH,
);
static protected $invalidSummedColumnNameToRenamedNameFromPeriodArchive = array(
@@ -38,6 +39,13 @@ class Piwik_Actions_Archiving
Piwik_Archive::INDEX_PAGE_EXIT_NB_UNIQ_VISITORS,
);
+ protected $isSiteSearchEnabled = false;
+
+ function __construct($idSite)
+ {
+ $this->isSiteSearchEnabled = Piwik_Site::isSiteSearchEnabledFor($idSite);
+ }
+
/**
* Archives Actions reports for a Period
* @param Piwik_ArchiveProcessing $archiveProcessing
@@ -51,8 +59,9 @@ class Piwik_Actions_Archiving
'Actions_downloads',
'Actions_outlink',
'Actions_actions_url',
+ 'Actions_sitesearch',
);
- $archiveProcessing->archiveDataTable($dataTableToSum,
+ $nameToCount = $archiveProcessing->archiveDataTable($dataTableToSum,
self::$invalidSummedColumnNameToRenamedNameFromPeriodArchive,
Piwik_Actions_ArchivingHelper::$maximumRowsInDataTableLevelZero,
Piwik_Actions_ArchivingHelper::$maximumRowsInSubDataTable,
@@ -64,9 +73,12 @@ class Piwik_Actions_Archiving
'Actions_nb_downloads',
'Actions_nb_uniq_downloads',
'Actions_nb_outlinks',
- 'Actions_nb_uniq_outlinks'
+ 'Actions_nb_uniq_outlinks',
+ 'Actions_nb_searches',
));
+ // Unique Keywords can't be summed, instead we take the RowsCount() of the keyword table
+ $archiveProcessing->insertNumericRecord('Actions_nb_keywords', $nameToCount['Actions_sitesearch']['level0']);
return true;
}
@@ -127,18 +139,49 @@ class Piwik_Actions_Archiving
$rankingQuery = new Piwik_RankingQuery($rankingQueryLimit);
$rankingQuery->setOthersLabel(Piwik_DataTable::LABEL_SUMMARY_ROW);
$rankingQuery->addLabelColumn(array('idaction', 'name'));
- $rankingQuery->addColumn(array('url_prefix', Piwik_Archive::INDEX_NB_UNIQ_VISITORS));
$rankingQuery->addColumn(array(Piwik_Archive::INDEX_PAGE_NB_HITS, Piwik_Archive::INDEX_NB_VISITS), 'sum');
+ if($this->isSiteSearchEnabled()) {
+ $rankingQuery->addColumn(array('url_prefix', Piwik_Archive::INDEX_NB_UNIQ_VISITORS, Piwik_Archive::INDEX_SITE_SEARCH_HAS_NO_RESULT));
+ $rankingQuery->addColumn(Piwik_Archive::INDEX_PAGE_IS_FOLLOWING_SITE_SEARCH_NB_HITS, 'sum');
+ } else {
+ $rankingQuery->addColumn(array('url_prefix', Piwik_Archive::INDEX_NB_UNIQ_VISITORS));
+ }
$rankingQuery->partitionResultIntoMultipleGroups('type', array_keys($this->actionsTablesByType));
}
- $this->archiveDayQueryProcess($select, $from, $where, $orderBy, $groupBy,
- "idaction_url", $archiveProcessing, $rankingQuery);
+ // Special Magic to get
+ // 1) No result Keywords
+ // 2) For each page view, count number of times the referrer page was a Site Search
+ if($this->isSiteSearchEnabled())
+ {
+ $selectFlagNoResultKeywords = ",
+ CASE WHEN (log_link_visit_action.custom_var_v". Piwik_Tracker_Action::CVAR_INDEX_SEARCH_COUNT." = 0 AND log_link_visit_action.custom_var_k". Piwik_Tracker_Action::CVAR_INDEX_SEARCH_COUNT." = '". Piwik_Tracker_Action::CVAR_KEY_SEARCH_COUNT. "') THEN 1 ELSE 0 END AS `" . Piwik_Archive::INDEX_SITE_SEARCH_HAS_NO_RESULT . "`";
+
+ //we need an extra JOIN to know whether the referrer "idaction_name_ref" was a Site Search request
+ $from[] = array(
+ "table" => "log_action",
+ "tableAlias" => "log_action_name_ref",
+ "joinOn" => "log_link_visit_action.idaction_name_ref = log_action_name_ref.idaction"
+ );
+
+ $selectSiteSearchFollowingPages = ",
+ SUM(CASE WHEN log_action_name_ref.type = " . Piwik_Tracker_Action::TYPE_SITE_SEARCH . " THEN 1 ELSE 0 END) AS `". Piwik_Archive::INDEX_PAGE_IS_FOLLOWING_SITE_SEARCH_NB_HITS."`";
+
+ $select .= $selectFlagNoResultKeywords
+ . $selectSiteSearchFollowingPages;
+ // Not working yet
+// $selectRefPageIsStartingSiteSearch = ",
+// SUM(CASE WHEN log_action_name_ref.type = " . Piwik_Tracker_Action::TYPE_ACTION_NAME . " THEN 1 ELSE 0 END) AS `". Piwik_Archive::INDEX_PAGE_STARTING_SITE_SEARCH_NB_HITS."`";
+// . $selectRefPageIsStartingSiteSearch
+// . ", idaction_url_ref, idaction_name_ref"
+ }
$this->archiveDayQueryProcess($select, $from, $where, $orderBy, $groupBy,
"idaction_name", $archiveProcessing, $rankingQuery);
- }
+ $this->archiveDayQueryProcess($select, $from, $where, $orderBy, $groupBy,
+ "idaction_url", $archiveProcessing, $rankingQuery);
+ }
/**
* Entry actions for Page URLs and Page names
@@ -299,6 +342,7 @@ class Piwik_Actions_Archiving
{
Piwik_Actions_ArchivingHelper::clearActionsCache();
+ /** @var Piwik_DataTable $dataTable */
$dataTable = $this->actionsTablesByType[Piwik_Tracker_Action::TYPE_ACTION_URL];
self::deleteInvalidSummedColumnsFromDataTable($dataTable);
$s = $dataTable->getSerialized( Piwik_Actions_ArchivingHelper::$maximumRowsInDataTableLevelZero, Piwik_Actions_ArchivingHelper::$maximumRowsInSubDataTable, Piwik_Actions_ArchivingHelper::$columnToSortByBeforeTruncation );
@@ -329,9 +373,28 @@ class Piwik_Actions_Archiving
$archiveProcessing->insertBlobRecord('Actions_actions', $s);
destroy($dataTable);
+ $dataTable = $this->actionsTablesByType[Piwik_Tracker_Action::TYPE_SITE_SEARCH];
+ self::deleteInvalidSummedColumnsFromDataTable($dataTable);
+ $s = $dataTable->getSerialized( Piwik_Actions_ArchivingHelper::$maximumRowsInDataTableLevelZero, Piwik_Actions_ArchivingHelper::$maximumRowsInSubDataTable, Piwik_Actions_ArchivingHelper::$columnToSortByBeforeTruncation );
+ $archiveProcessing->insertBlobRecord('Actions_sitesearch', $s);
+ $archiveProcessing->insertNumericRecord('Actions_nb_searches', array_sum($dataTable->getColumn(Piwik_Archive::INDEX_NB_VISITS)));
+ $archiveProcessing->insertNumericRecord('Actions_nb_keywords', $dataTable->getRowsCount());
+ destroy($dataTable);
+
destroy($this->actionsTablesByType);
}
+ static protected function removeEmptyColumns($dataTable)
+ {
+ // Delete all columns that have a value of zero
+ $dataTable->filter('ColumnDelete', array(
+ $columnsToRemove = array(Piwik_Archive::INDEX_PAGE_IS_FOLLOWING_SITE_SEARCH_NB_HITS),
+ $columnsToKeep = array(),
+ $deleteIfZeroOnly = true
+ ));
+ }
+
+
/**
* Returns the limit to use with RankingQuery for this plugin.
*
@@ -368,8 +431,15 @@ class Piwik_Actions_Archiving
// to the outer select. therefore, $segment needs to know about it.
$select = sprintf($select, $sprintfField);
+ // extend bindings
+ $bind = array_merge(array( $archiveProcessing->getStartDatetimeUTC(),
+ $archiveProcessing->getEndDatetimeUTC(),
+ $archiveProcessing->idsite
+ ),
+ $query['bind']
+ );
+
// get query with segmentation
- $bind = array();
$query = $archiveProcessing->getSegment()->getSelectQuery(
$select, $from, $where, $bind, $orderBy, $groupBy);
@@ -381,14 +451,8 @@ class Piwik_Actions_Archiving
{
$querySql = $rankingQuery->generateQuery($querySql);
}
-
- // extend bindings
- $bind = array_merge(array( $archiveProcessing->getStartDatetimeUTC(),
- $archiveProcessing->getEndDatetimeUTC(),
- $archiveProcessing->idsite
- ),
- $query['bind']
- );
+// echo '<pre>';var_dump($querySql);
+// var_dump($bind);
// get result
$resultSet = $archiveProcessing->db->query($querySql, $bind);
@@ -427,6 +491,9 @@ class Piwik_Actions_Archiving
}
}
}
+
+ // And this as well
+ self::removeEmptyColumns($dataTable);
}
/**
@@ -443,4 +510,9 @@ class Piwik_Actions_Archiving
$this->actionsTablesByType[$type] = $dataTable;
}
}
+
+ protected function isSiteSearchEnabled()
+ {
+ return $this->isSiteSearchEnabled;
+ }
}
diff --git a/plugins/Actions/ArchivingHelper.php b/plugins/Actions/ArchivingHelper.php
index dc1c6301cb..a8c580a4f4 100644
--- a/plugins/Actions/ArchivingHelper.php
+++ b/plugins/Actions/ArchivingHelper.php
@@ -33,6 +33,7 @@ class Piwik_Actions_ArchivingHelper
$rowsProcessed = 0;
while( $row = $query->fetch() )
{
+// var_dump($row);
if(empty($row['idaction']))
{
$row['type'] = ($fieldQueried == 'idaction_url' ? Piwik_Tracker_Action::TYPE_ACTION_URL : Piwik_Tracker_Action::TYPE_ACTION_NAME);
@@ -42,10 +43,21 @@ class Piwik_Actions_ArchivingHelper
$row['idaction'] = -$row['type'];
}
+ if($row['type'] != Piwik_Tracker_Action::TYPE_SITE_SEARCH)
+ {
+ unset($row[Piwik_Archive::INDEX_SITE_SEARCH_HAS_NO_RESULT]);
+ }
+
+ // This will appear as <url /> in the API, which is actually very important to keep
+ // eg. When there's at least one row in a report that does not have a URL, not having this <url/> would break HTML/PDF reports.
$url = '';
- if(!empty($row['name'])
- && $row['name'] != Piwik_DataTable::LABEL_SUMMARY_ROW
- && $row['type'] != Piwik_Tracker_Action::TYPE_ACTION_NAME)
+ if($row['type'] == Piwik_Tracker_Action::TYPE_SITE_SEARCH
+ || $row['type'] == Piwik_Tracker_Action::TYPE_ACTION_NAME)
+ {
+ $url = null;
+ }
+ elseif(!empty($row['name'])
+ && $row['name'] != Piwik_DataTable::LABEL_SUMMARY_ROW)
{
$url = Piwik_Tracker_Action::reconstructNormalizedUrl((string)$row['name'], $row['url_prefix']);
}
@@ -94,7 +106,7 @@ class Piwik_Actions_ArchivingHelper
// For example http://piwik.org and http://id.piwik.org are reported in Piwik > Actions > Pages with /index
// But, we must make sure http://piwik.org is used to link & for transitions
// Note: this code is partly duplicated from Piwik_DataTable_Row->sumRowMetadata()
- if( $row['type'] != Piwik_Tracker_Action::TYPE_ACTION_NAME
+ if( !is_null($url)
&& !$actionRow->isSummaryRow())
{
if(($existingUrl = $actionRow->getMetadata('url')) !== false)
@@ -269,6 +281,12 @@ class Piwik_Actions_ArchivingHelper
*/
static public function getActionExplodedNames($name, $type, $urlPrefix=null)
{
+ // Site Search does not split Search keywords
+ if($type == Piwik_Tracker_Action::TYPE_SITE_SEARCH)
+ {
+ return array($name);
+ }
+
$matches = array();
$isUrl = false;
$name = str_replace("\n", "", $name);
diff --git a/plugins/Actions/Controller.php b/plugins/Actions/Controller.php
index c9a6a33d5b..5f68004431 100644
--- a/plugins/Actions/Controller.php
+++ b/plugins/Actions/Controller.php
@@ -42,15 +42,7 @@ class Piwik_Actions_Controller extends Piwik_Controller
public function getPageUrls($fetch = false)
{
- $view = $this->getPageUrlsView(__FUNCTION__, 'getPageUrlsSubDataTable', 'Actions.getPageUrls');
- $this->configureViewPages($view);
- $this->configureViewActions($view);
- return $this->renderView($view, $fetch);
- }
-
- public function getPageUrlsSubDataTable($fetch = false)
- {
- $view = $this->getPageUrlsView(__FUNCTION__, 'getPageUrlsSubDataTable', 'Actions.getPageUrls');
+ $view = $this->getPageUrlsView(__FUNCTION__, 'getPageUrls', 'Actions.getPageUrls');
$this->configureViewPages($view);
$this->configureViewActions($view);
return $this->renderView($view, $fetch);
@@ -61,13 +53,11 @@ class Piwik_Actions_Controller extends Piwik_Controller
$view->setColumnsToDisplay( array('label','nb_hits','nb_visits', 'bounce_rate', 'avg_time_on_page', 'exit_rate') );
}
-
/**
* ENTRY PAGES
* @param bool $fetch
* @return string|void
*/
-
public function indexEntryPageUrls($fetch = false)
{
return Piwik_View::singleReport(
@@ -75,16 +65,9 @@ class Piwik_Actions_Controller extends Piwik_Controller
$this->getEntryPageUrls(true), $fetch);
}
- public function getEntryPageUrls($fetch = false) {
- $view = $this->getPageUrlsView(__FUNCTION__, 'getEntryPageUrlsSubDataTable', 'Actions.getEntryPageUrls');
- $this->configureViewEntryPageUrls($view);
- $this->configureViewActions($view);
- return $this->renderView($view, $fetch);
- }
-
- public function getEntryPageUrlsSubDataTable($fetch = false)
+ public function getEntryPageUrls($fetch = false)
{
- $view = $this->getPageUrlsView(__FUNCTION__, 'getEntryPageUrlsSubDataTable', 'Actions.getEntryPageUrls');
+ $view = $this->getPageUrlsView(__FUNCTION__, 'getEntryPageUrls', 'Actions.getEntryPageUrls');
$this->configureViewEntryPageUrls($view);
$this->configureViewActions($view);
return $this->renderView($view, $fetch);
@@ -115,20 +98,12 @@ class Piwik_Actions_Controller extends Piwik_Controller
public function getExitPageUrls($fetch = false)
{
- $view = $this->getPageUrlsView(__FUNCTION__, 'getExitPageUrlsSubDataTable', 'Actions.getExitPageUrls');
- $this->configureViewExitPageUrls($view);
- $this->configureViewActions($view);
- return $this->renderView($view, $fetch);
- }
-
- public function getExitPageUrlsSubDataTable($fetch = false)
- {
- $view = $this->getPageUrlsView(__FUNCTION__, 'getExitPageUrlsSubDataTable', 'Actions.getExitPageUrls');
+ $view = $this->getPageUrlsView(__FUNCTION__, 'getExitPageUrls', 'Actions.getExitPageUrls');
$this->configureViewExitPageUrls($view);
$this->configureViewActions($view);
return $this->renderView($view, $fetch);
}
-
+
protected function configureViewExitPageUrls($view)
{
$view->setSortedColumn('exit_nb_visits');
@@ -140,11 +115,107 @@ class Piwik_Actions_Controller extends Piwik_Controller
));
$view->setReportUrl('Actions', $this->getExitPageUrlActionForLink());
}
-
+
+ /*
+ * SITE SEARCH
+ */
+ public function indexSiteSearch()
+ {
+ $view = Piwik_View::factory('indexSiteSearch');
+
+ $view->keywords = $this->getSiteSearchKeywords( true );
+ $view->noResultKeywords = $this->getSiteSearchNoResultKeywords( true );
+ $view->pagesUrlsFollowingSiteSearch = $this->getPageUrlsFollowingSiteSearch( true );
+
+ $categoryTrackingEnabled = Piwik_PluginsManager::getInstance()->isPluginActivated('CustomVariables');
+ if($categoryTrackingEnabled)
+ {
+ $view->categories = $this->getSiteSearchCategories( true );
+ }
+
+ echo $view->render();
+ }
+
+ public function getSiteSearchKeywords($fetch = false)
+ {
+ $view = Piwik_ViewDataTable::factory();
+ $view->init( $this->pluginName, __FUNCTION__, 'Actions.getSiteSearchKeywords' );
+ $this->configureViewSiteSearchKeywords($view);
+ return $this->renderView($view, $fetch);
+ }
+
+ public function getSiteSearchNoResultKeywords($fetch = false)
+ {
+ $view = Piwik_ViewDataTable::factory();
+ $view->init( $this->pluginName, __FUNCTION__, 'Actions.getSiteSearchNoResultKeywords' );
+ $this->configureViewSiteSearchKeywords($view);
+ $view->setColumnsToDisplay(array('label', 'nb_visits', 'exit_rate'));
+ $view->setColumnTranslation('label', Piwik_Translate('Actions_ColumnNoResultKeyword'));
+ return $this->renderView($view, $fetch);
+ }
+
+ public function configureViewSiteSearchKeywords(Piwik_ViewDataTable $view)
+ {
+ $view->setColumnTranslation('label', Piwik_Translate('Actions_ColumnSearchKeyword'));
+ $view->setColumnsToDisplay(array('label', 'nb_visits', 'nb_pages_per_search', 'exit_rate'));
+ $view->setColumnTranslation('nb_visits', Piwik_Translate('Actions_ColumnSearches'));
+ $view->setColumnTranslation('exit_rate', str_replace("% ", "%&nbsp;", Piwik_Translate('Actions_ColumnSearchExits')));
+ $view->setColumnTranslation('nb_pages_per_search', Piwik_Translate('Actions_ColumnPagesPerSearch'));
+ $view->disableShowBarChart();
+ $view->disableShowAllColumns();
+ }
+
+ public function getSiteSearchCategories($fetch = false)
+ {
+ $view = Piwik_ViewDataTable::factory();
+ $view->init( $this->pluginName, __FUNCTION__, 'Actions.getSiteSearchCategories' );
+ $view->setColumnTranslation('label', Piwik_Translate('Actions_ColumnSearchCategory'));
+ $view->setColumnTranslation('nb_visits', Piwik_Translate('Actions_ColumnSearches'));
+ $view->setColumnsToDisplay( array('label','nb_visits', 'nb_pages_per_search') );
+ $view->setColumnTranslation('nb_pages_per_search', Piwik_Translate('Actions_ColumnPagesPerSearch'));
+ $view->disableShowAllColumns();
+ $view->disableShowBarChart();
+ return $this->renderView($view, $fetch);
+ }
+
+
+ public function getPageUrlsFollowingSiteSearch($fetch = false)
+ {
+ $view = Piwik_ViewDataTable::factory();
+ $view->init( $this->pluginName, __FUNCTION__, 'Actions.getPageUrlsFollowingSiteSearch', 'getPageUrlsFollowingSiteSearch' );
+ $view->addRelatedReports(Piwik_Translate('Actions_WidgetPageUrlsFollowingSearch'), array(
+ 'Actions.getPageTitlesFollowingSiteSearch' => Piwik_Translate('Actions_WidgetPageTitlesFollowingSearch'),
+ ));
+ $view = $this->configureViewPagesFollowingSiteSearch($view);
+ return $this->renderView($view, $fetch);
+ }
+
+ public function getPageTitlesFollowingSiteSearch($fetch = false)
+ {
+ $view = Piwik_ViewDataTable::factory();
+ $view->init( $this->pluginName, __FUNCTION__, 'Actions.getPageTitlesFollowingSiteSearch', 'getPageTitlesFollowingSiteSearch' );
+ $view->addRelatedReports(Piwik_Translate('Actions_WidgetPageTitlesFollowingSearch'), array(
+ 'Actions.getPageUrlsFollowingSiteSearch' => Piwik_Translate('Actions_WidgetPageUrlsFollowingSearch'),
+ ));
+ $view = $this->configureViewPagesFollowingSiteSearch($view);
+ return $this->renderView($view, $fetch);
+ }
+
+ public function configureViewPagesFollowingSiteSearch($view)
+ {
+ $view->setColumnsToDisplay(array('label', 'nb_hits_following_search', 'nb_hits'));
+ $view->setColumnTranslation('nb_hits_following_search', Piwik_Translate('General_ColumnViewedAfterSearch'));
+ $view->setColumnTranslation('label', Piwik_Translate('General_ColumnDestinationPage'));
+ $view->setSortedColumn('nb_hits_following_search');
+ $view->setColumnTranslation('nb_hits', Piwik_Translate('General_ColumnTotalPageviews'));
+ $view->disableExcludeLowPopulation();
+ $view = $this->configureViewActions($view, $doSetTranslations = false);
+ return $view;
+ }
+
/*
* PAGE TITLES
*/
-
public function indexPageTitles($fetch = false)
{
return Piwik_View::singleReport(
@@ -306,15 +377,18 @@ class Piwik_Actions_Controller extends Piwik_Controller
/*
* Page titles & Page URLs reports
*/
- protected function configureViewActions($view)
- {
- $view->setColumnTranslation('nb_hits', Piwik_Translate('General_ColumnPageviews'));
- $view->setColumnTranslation('nb_visits', Piwik_Translate('General_ColumnUniquePageviews'));
- $view->setColumnTranslation('avg_time_on_page', Piwik_Translate('General_ColumnAverageTimeOnPage'));
- $view->setColumnTranslation('bounce_rate', Piwik_Translate('General_ColumnBounceRate'));
- $view->setColumnTranslation('exit_rate', Piwik_Translate('General_ColumnExitRate'));
- $view->queueFilter('ColumnCallbackReplace', array('avg_time_on_page', array('Piwik', 'getPrettyTimeFromSeconds')));
-
+ protected function configureViewActions($view, $doSetTranslations = true)
+ {
+ if($doSetTranslations)
+ {
+ $view->setColumnTranslation('nb_hits', Piwik_Translate('General_ColumnPageviews'));
+ $view->setColumnTranslation('nb_visits', Piwik_Translate('General_ColumnUniquePageviews'));
+ $view->setColumnTranslation('avg_time_on_page', Piwik_Translate('General_ColumnAverageTimeOnPage'));
+ $view->setColumnTranslation('bounce_rate', Piwik_Translate('General_ColumnBounceRate'));
+ $view->setColumnTranslation('exit_rate', Piwik_Translate('General_ColumnExitRate'));
+ $view->queueFilter('ColumnCallbackReplace', array('avg_time_on_page', array('Piwik', 'getPrettyTimeFromSeconds')));
+ }
+
if(Piwik_Common::getRequestVar('enable_filter_excludelowpop', '0', 'string' ) != '0')
{
// computing minimum value to exclude
diff --git a/plugins/Actions/templates/indexSiteSearch.tpl b/plugins/Actions/templates/indexSiteSearch.tpl
new file mode 100644
index 0000000000..3af0d5c0a4
--- /dev/null
+++ b/plugins/Actions/templates/indexSiteSearch.tpl
@@ -0,0 +1,19 @@
+<div id='leftcolumn'>
+ <h2>{'Actions_WidgetSearchKeywords'|translate}</h2>
+{$keywords}
+
+ <h2>{'Actions_WidgetSearchNoResultKeywords'|translate}</h2>
+{$noResultKeywords}
+
+{if isset($categories)}
+ <h2>{'Actions_WidgetSearchCategories'|translate}</h2>
+{$categories}
+{/if}
+
+</div>
+
+<div id='rightcolumn'>
+ <h2>{'Actions_WidgetPageUrlsFollowingSearch'|translate}</h2>
+{$pagesUrlsFollowingSiteSearch}
+
+</div>
diff --git a/plugins/CustomVariables/API.php b/plugins/CustomVariables/API.php
index 00d6e59557..317140f164 100644
--- a/plugins/CustomVariables/API.php
+++ b/plugins/CustomVariables/API.php
@@ -52,7 +52,7 @@ class Piwik_CustomVariables_API
if($dataTable instanceof Piwik_DataTable
&& !$_leavePiwikCoreVariables)
{
- $mapping = array('_pks', '_pkn', '_pkc', '_pkp');
+ $mapping = array('_pks', '_pkn', '_pkc', '_pkp', Piwik_Tracker_Action::CVAR_KEY_SEARCH_COUNT, Piwik_Tracker_Action::CVAR_KEY_SEARCH_CATEGORY );
foreach($mapping as $name)
{
$row = $dataTable->getRowFromLabel($name);
diff --git a/plugins/Goals/API.php b/plugins/Goals/API.php
index b6fe538573..c4609c701c 100644
--- a/plugins/Goals/API.php
+++ b/plugins/Goals/API.php
@@ -224,6 +224,7 @@ class Piwik_Goals_API
$ordersColumn = 'abandoned_carts';
$dataTable->renameColumn(Piwik_Archive::INDEX_ECOMMERCE_ORDERS, $ordersColumn);
}
+
// Average price = sum product revenue / quantity
$dataTable->queueFilter('ColumnCallbackAddColumnQuotient', array('avg_price', 'price', $ordersColumn, Piwik_Tracker_GoalManager::REVENUE_PRECISION));
@@ -244,7 +245,8 @@ class Piwik_Goals_API
'Goals_ItemsCategory' => Piwik_Translate('General_NotDefined', Piwik_Translate('Goals_ProductCategory'))
);
$notDefinedStringPretty = $reportToNotDefinedString[$recordName];
-
+ $customVarNameToLookFor = $mapping[$recordName];
+
// Handle case where date=last30&period=day
if($customVariables instanceof Piwik_DataTable_Array)
{
@@ -253,13 +255,13 @@ class Piwik_Goals_API
foreach($customVariableDatatables as $key => $customVariableTableForDate)
{
$dataTableForDate = isset($dataTables[$key]) ? $dataTables[$key] : new Piwik_DataTable();
-
- // we do not enter the IF
- // if case idSite=1,3 AND period=day&date=datefrom,dateto,
+
+ // we do not enter the IF
+ // if case idSite=1,3 AND period=day&date=datefrom,dateto,
if(isset($dataTable->metadata[$key]['period']))
{
$dateRewrite = $dataTable->metadata[$key]['period']->getDateStart()->toString();
- $row = $customVariableTableForDate->getRowFromLabel($mapping[$recordName]);
+ $row = $customVariableTableForDate->getRowFromLabel($customVarNameToLookFor);
if($row)
{
$idSubtable = $row->getIdSubDataTable();
@@ -272,15 +274,15 @@ class Piwik_Goals_API
}
elseif($customVariables instanceof Piwik_DataTable)
{
- $row = $customVariables->getRowFromLabel($mapping[$recordName]);
+ $row = $customVariables->getRowFromLabel($customVarNameToLookFor);
if($row)
{
$idSubtable = $row->getIdSubDataTable();
$this->enrichItemsDataTableWithItemsViewMetrics($dataTable, $idSite, $period, $date, $idSubtable);
}
$this->renameNotDefinedRow($dataTable, $notDefinedStringPretty);
-
}
+
// Product conversion rate = orders / visits
$dataTable->queueFilter('ColumnCallbackAddColumnPercentage', array('conversion_rate', $ordersColumn, 'nb_visits', Piwik_Tracker_GoalManager::REVENUE_PRECISION));
diff --git a/plugins/Live/API.php b/plugins/Live/API.php
index fcca531e5c..5d3e21844b 100644
--- a/plugins/Live/API.php
+++ b/plugins/Live/API.php
@@ -184,7 +184,7 @@ class Piwik_Live_API
// eg. Downloads, Outlinks. For these, idaction_name is set to 0
$sql = "
SELECT
- log_action.type AS type,
+ COALESCE(log_action.type,log_action_title.type) AS type,
log_action.name AS url,
log_action.url_prefix,
log_action_title.name AS pageTitle,
@@ -210,8 +210,10 @@ class Piwik_Live_API
if(!empty($actionDetail['custom_var_k'.$i])
&& !empty($actionDetail['custom_var_v'.$i]))
{
+ $cvarKey = $actionDetail['custom_var_k'.$i];
+ $cvarKey = $this->getCustomVariablePrettyKey($cvarKey);
$customVariablesPage[$i] = array(
- 'customVariableName'.$i => $actionDetail['custom_var_k'.$i],
+ 'customVariableName'.$i => $cvarKey,
'customVariableValue'.$i => $actionDetail['custom_var_v'.$i],
);
}
@@ -357,6 +359,10 @@ class Piwik_Live_API
$details['type'] = 'outlink';
$details['icon'] = 'themes/default/images/link.gif';
break;
+ case Piwik_Tracker_Action::TYPE_SITE_SEARCH:
+ $details['type'] = 'search';
+ $details['icon'] = 'themes/default/images/search_ico.png';
+ break;
default:
$details['type'] = 'action';
$details['icon'] = null;
@@ -372,6 +378,18 @@ class Piwik_Live_API
return $table;
}
+ private function getCustomVariablePrettyKey($key)
+ {
+ $rename = array(
+ Piwik_Tracker_Action::CVAR_KEY_SEARCH_CATEGORY => Piwik_Translate('Actions_ColumnSearchCategory'),
+ Piwik_Tracker_Action::CVAR_KEY_SEARCH_COUNT => Piwik_Translate('Actions_ColumnSearchResultsCount'),
+ );
+ if(isset($rename[$key])) {
+ return $rename[$key];
+ }
+ return $key;
+ }
+
private function sortByServerTime($a, $b)
{
$ta = strtotime($a['serverTimePretty']);
diff --git a/plugins/Live/templates/lastVisits.tpl b/plugins/Live/templates/lastVisits.tpl
index 5112ffd1f2..934ff65515 100644
--- a/plugins/Live/templates/lastVisits.tpl
+++ b/plugins/Live/templates/lastVisits.tpl
@@ -56,6 +56,8 @@
<img src="plugins/Live/templates/images/file{php} echo $col; {/php}.png" title="{if !empty($action.pageTitle)}{$action.pageTitle}{/if} - {$action.serverTimePretty|escape:'html'}{if isset($action.timeSpentPretty)} - {'General_TimeOnPage'|translate}: {$action.timeSpentPretty}{/if}" />
{elseif $action.type == 'outlink' || $action.type == 'download'}
<img class='iconPadding' src="{$action.icon}" title="{$action.url|escape:'html'} - {$action.serverTimePretty|escape:'html'}" />
+ {elseif $action.type == 'search'}
+ <img class='iconPadding' src="{$action.icon}" title="{'Actions_SubmenuSitesearch'|translate|escape:'html'}: {$action.pageTitle|escape:'html'} - {$action.serverTimePretty|escape:'html'}" />
{else}
<img class='iconPadding' src="{$action.icon}" title="{$action.goalName|escape:'html'} - {if $action.revenue > 0}{'Live_GoalRevenue'|translate}: {$action.revenue|money:$idSite} - {/if} {$action.serverTimePretty|escape:'html'}" />
{/if}
diff --git a/plugins/Live/templates/visitorLog.tpl b/plugins/Live/templates/visitorLog.tpl
index 07948802af..6ee44c825f 100644
--- a/plugins/Live/templates/visitorLog.tpl
+++ b/plugins/Live/templates/visitorLog.tpl
@@ -154,20 +154,16 @@
<ol class='visitorLog'>
{capture assign='visitorHasSomeEcommerceActivity'}0{/capture}
{foreach from=$visitor.columns.actionDetails item=action}
- {capture assign='customVariablesTooltip'}
- {if !empty($action.customVariables)}
- {'CustomVariables_CustomVariables'|translate}
- {foreach from=$action.customVariables item=customVariable key=id}
- {capture assign=name}customVariableName{$id}{/capture}
- {capture assign=value}customVariableValue{$id}{/capture}
- - {$customVariable.$name|escape:'html'} = {$customVariable.$value|escape:'html'}
- {/foreach}
- {/if}
+ {capture assign='customVariablesTooltip'}{if !empty($action.customVariables)}{'CustomVariables_CustomVariables'|translate}
+ {foreach from=$action.customVariables item=customVariable key=id}{capture assign=name}customVariableName{$id}{/capture}{capture assign=value}customVariableValue{$id}{/capture}
+ - {$customVariable.$name|escape:'html'} = {$customVariable.$value|escape:'html'}
+ {/foreach}{/if}
{/capture}
{if !$javascriptVariablesToSet.filterEcommerce
|| $action.type == 'ecommerceOrder'
|| $action.type == 'ecommerceAbandonedCart'}
- <li class="{if !empty($action.goalName)}goal{else}action{/if}" title="{$action.serverTimePretty|escape:'html'}{if !empty($action.url) && strlen(trim($action.url))} - {$action.url|escape:'html'}{/if} {if strlen(trim($customVariablesTooltip))} - {$customVariablesTooltip}{/if}{if isset($action.timeSpentPretty)} - {'General_TimeOnPage'|translate}: {$action.timeSpentPretty}{/if}">
+ <li class="{if !empty($action.goalName)}goal{else}action{/if}" title="{$action.serverTimePretty|escape:'html'}{if !empty($action.url) && strlen(trim($action.url))} - {$action.url|escape:'html'}{/if} {if strlen(trim($customVariablesTooltip))}{$customVariablesTooltip|trim}
+ {/if}{if isset($action.timeSpentPretty)} - {'General_TimeOnPage'|translate}: {$action.timeSpentPretty}{/if}">
{if $action.type == 'ecommerceOrder' || $action.type == 'ecommerceAbandonedCart'}
{* Ecommerce Abandoned Cart / Ecommerce Order *}
@@ -211,18 +207,20 @@
{elseif empty($action.goalName)}
{* Page view / Download / Outlink *}
- {if !empty($action.pageTitle)>0}
+ {if !empty($action.pageTitle)}
+ {if $action.type == 'search'}<img src='{$action.icon}' title='{'Actions_SubmenuSitesearch'|translate|escape:'html'}'>{/if}
{$action.pageTitle|unescape|urldecode|escape:'html'|truncate:80:"...":true}
- <br/>
- {/if}
- {if $action.type == 'download'
- || $action.type == 'outlink'}
- <img src='{$action.icon}'>
{/if}
{if !empty($action.url)}
- <a href="{$action.url|escape:'html'}" target="_blank" style="{if $action.type=='action' && !empty($action.pageTitle)}margin-left: 25px;{/if}text-decoration:underline;">{$action.url|escape:'html'|truncate:80:"...":true}</a>
- {else}
- {$javascriptVariablesToSet.pageUrlNotDefined}
+ {if $action.type == 'action' && !empty($action.pageTitle)}<br/>{/if}
+ {if $action.type == 'download'
+ || $action.type == 'outlink'}
+ <img src='{$action.icon}'>
+ {/if}
+ <a href="{$action.url|escape:'html'}" target="_blank" style="{if $action.type=='action' && !empty($action.pageTitle)}margin-left: 25px;{/if}text-decoration:underline;">{$action.url|escape:'html'|truncate:80:"...":true}</a>
+ {elseif $action.type!='search'}
+ <br/>
+ <span style="margin-left: 25px;">{$javascriptVariablesToSet.pageUrlNotDefined}</span>
{/if}
{else}
{* Goal conversion *}
diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php
index 1265fd5071..7515961259 100644
--- a/plugins/SitesManager/API.php
+++ b/plugins/SitesManager/API.php
@@ -29,7 +29,8 @@
class Piwik_SitesManager_API
{
static private $instance = null;
-
+ const DEFAULT_SEARCH_KEYWORD_PARAMETERS = 'q,query,search,k,keyword';
+
/**
* @return Piwik_SitesManager_API
*/
@@ -46,7 +47,9 @@ class Piwik_SitesManager_API
const OPTION_DEFAULT_TIMEZONE = 'SitesManager_DefaultTimezone';
const OPTION_DEFAULT_CURRENCY = 'SitesManager_DefaultCurrency';
const OPTION_EXCLUDED_QUERY_PARAMETERS_GLOBAL = 'SitesManager_ExcludedQueryParameters';
-
+ const OPTION_SEARCH_KEYWORD_QUERY_PARAMETERS_GLOBAL = 'SitesManager_SearchKeywordParameters';
+ const OPTION_SEARCH_CATEGORY_QUERY_PARAMETERS_GLOBAL = 'SitesManager_SearchCategoryParameters';
+
/**
* Returns the javascript tag for the given idSite.
* This tag must be included on every page to be tracked by Piwik
@@ -435,7 +438,10 @@ class Piwik_SitesManager_API
* @param array|string The URLs array must contain at least one URL called the 'main_url' ;
* if several URLs are provided in the array, they will be recorded
* as Alias URLs for this website.
- * @param int Is Ecommerce Reporting enabled for this website?
+ * @param int Is Ecommerce Reporting enabled for this website?
+ * @param int $sitesearch Whether site search is enabled, 0 or 1
+ * @param string $searchKeywordParameters Comma separated list of search keyword parameter names
+ * @param string $searchCategoryParameters Comma separated list of search category parameter names
* @param string Comma separated list of IPs to exclude from the reports (allows wildcards)
* @param string Timezone string, eg. 'Europe/London'
* @param string Currency, eg. 'EUR'
@@ -445,7 +451,7 @@ class Piwik_SitesManager_API
*
* @return int the website ID created
*/
- public function addSite( $siteName, $urls, $ecommerce = null, $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $group = null, $startDate = null )
+ public function addSite( $siteName, $urls, $ecommerce = null, $siteSearch = null, $searchKeywordParameters = null, $searchCategoryParameters = null, $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $group = null, $startDate = null )
{
Piwik::checkUserIsSuperUser();
@@ -453,8 +459,10 @@ class Piwik_SitesManager_API
$urls = $this->cleanParameterUrls($urls);
$this->checkUrls($urls);
$this->checkAtLeastOneUrl($urls);
+ $siteSearch = $this->checkSiteSearch($siteSearch);
+ list($searchKeywordParameters, $searchCategoryParameters ) = $this->checkSiteSearchParameters($searchKeywordParameters, $searchCategoryParameters);
+
$timezone = trim($timezone);
-
if(empty($timezone))
{
$timezone = $this->getDefaultTimezone();
@@ -482,6 +490,9 @@ class Piwik_SitesManager_API
$bind['timezone'] = $timezone;
$bind['currency'] = $currency;
$bind['ecommerce'] = (int)$ecommerce;
+ $bind['sitesearch'] = $siteSearch;
+ $bind['sitesearch_keyword_parameters'] = $searchKeywordParameters;
+ $bind['sitesearch_category_parameters'] = $searchCategoryParameters;
$bind['ts_created'] = !is_null($startDate)
? Piwik_Date::factory($startDate)->getDatetime()
: Piwik_Date::now()->getDatetime();
@@ -678,7 +689,50 @@ class Piwik_SitesManager_API
Piwik_Common::deleteTrackerCache();
return true;
}
-
+
+
+ /**
+ * Sets Site Search keyword/category parameter names, to be used on websites which have not specified these values
+ * Expects Comma separated list of query params names
+ *
+ * @param string
+ * @param string
+ * @return bool
+ */
+ public function setGlobalSearchParameters($searchKeywordParameters, $searchCategoryParameters)
+ {
+ Piwik::checkUserIsSuperUser();
+ Piwik_SetOption(self::OPTION_SEARCH_KEYWORD_QUERY_PARAMETERS_GLOBAL, $searchKeywordParameters);
+ Piwik_SetOption(self::OPTION_SEARCH_CATEGORY_QUERY_PARAMETERS_GLOBAL, $searchCategoryParameters);
+ Piwik_Common::deleteTrackerCache();
+ return true;
+ }
+
+ /**
+ * @return string Comma separated list of URL parameters
+ */
+ public function getSearchKeywordParametersGlobal()
+ {
+ Piwik::checkUserHasSomeAdminAccess();
+ $names = Piwik_GetOption(self::OPTION_SEARCH_KEYWORD_QUERY_PARAMETERS_GLOBAL);
+ if($names === false) {
+ $names = self::DEFAULT_SEARCH_KEYWORD_PARAMETERS;
+ }
+ if(empty($names)) {
+ $names = '';
+ }
+ return $names;
+ }
+
+ /**
+ * @return string Comma separated list of URL parameters
+ */
+ public function getSearchCategoryParametersGlobal()
+ {
+ Piwik::checkUserHasSomeAdminAccess();
+ return Piwik_GetOption(self::OPTION_SEARCH_CATEGORY_QUERY_PARAMETERS_GLOBAL);
+ }
+
/**
* Returns the list of URL query parameters that are excluded from all websites
*
@@ -785,7 +839,10 @@ class Piwik_SitesManager_API
* @param int $idSite website ID defining the website to edit
* @param string $siteName website name
* @param string|array $urls the website URLs
- * @param null $ecommerce
+ * @param int $ecommerce Whether Ecommerce is enabled, 0 or 1
+ * @param int $sitesearch Whether site search is enabled, 0 or 1
+ * @param string $searchKeywordParameters Comma separated list of search keyword parameter names
+ * @param string $searchCategoryParameters Comma separated list of search category parameter names
* @param string $excludedIps Comma separated list of IPs to exclude from being tracked (allows wildcards)
* @param null $excludedQueryParameters
* @param string $timezone Timezone
@@ -796,7 +853,19 @@ class Piwik_SitesManager_API
* @throws Exception
* @return bool true on success
*/
- public function updateSite( $idSite, $siteName, $urls = null, $ecommerce = null, $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $group = null, $startDate = null)
+ public function updateSite( $idSite,
+ $siteName,
+ $urls = null,
+ $ecommerce = null,
+ $siteSearch = null,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $excludedIps = null,
+ $excludedQueryParameters = null,
+ $timezone = null,
+ $currency = null,
+ $group = null,
+ $startDate = null)
{
Piwik::checkUserHasAdminAccess($idSite);
@@ -807,7 +876,7 @@ class Piwik_SitesManager_API
}
$this->checkName($siteName);
-
+
// Build the SQL UPDATE based on specified updates to perform
$bind = array();
if(!is_null($urls))
@@ -846,6 +915,12 @@ class Piwik_SitesManager_API
}
$bind['excluded_ips'] = $this->checkAndReturnExcludedIps($excludedIps);
$bind['excluded_parameters'] = $this->checkAndReturnExcludedQueryParameters($excludedQueryParameters);
+
+ $bind['sitesearch'] = $this->checkSiteSearch($siteSearch);
+ list($searchKeywordParameters, $searchCategoryParameters ) = $this->checkSiteSearchParameters($searchKeywordParameters, $searchCategoryParameters);
+ $bind['sitesearch_keyword_parameters'] = $searchKeywordParameters;
+ $bind['sitesearch_category_parameters'] = $searchCategoryParameters;
+
$bind['name'] = $siteName;
$db = Zend_Registry::get('db');
$db->update(Piwik_Common::prefixTable("site"),
@@ -1082,6 +1157,29 @@ class Piwik_SitesManager_API
}
}
+
+ private function checkSiteSearch($siteSearch)
+ {
+ if($siteSearch === null) {
+ return "1";
+ }
+ return $siteSearch == 1 ? "1" : "0";
+ }
+
+ private function checkSiteSearchParameters($searchKeywordParameters, $searchCategoryParameters)
+ {
+ $searchKeywordParameters = trim($searchKeywordParameters);
+ $searchCategoryParameters = trim($searchCategoryParameters);
+ if(empty($searchKeywordParameters)) {
+ $searchKeywordParameters = '';
+ }
+ if(empty($searchCategoryParameters)) {
+ $searchCategoryParameters = '';
+ }
+
+ return array($searchKeywordParameters, $searchCategoryParameters);
+ }
+
/**
* Check that the array of URLs are valid URLs
*
diff --git a/plugins/SitesManager/Controller.php b/plugins/SitesManager/Controller.php
index a86c6d460b..18bfbb7d1e 100644
--- a/plugins/SitesManager/Controller.php
+++ b/plugins/SitesManager/Controller.php
@@ -57,6 +57,11 @@ class Piwik_SitesManager_Controller extends Piwik_Controller_Admin
$view->globalExcludedIps = str_replace(',',"\n", $excludedIpsGlobal);
$excludedQueryParametersGlobal = Piwik_SitesManager_API::getInstance()->getExcludedQueryParametersGlobal();
$view->globalExcludedQueryParameters = str_replace(',',"\n", $excludedQueryParametersGlobal);
+
+ $view->globalSearchKeywordParameters = Piwik_SitesManager_API::getInstance()->getSearchKeywordParametersGlobal();
+ $view->globalSearchCategoryParameters = Piwik_SitesManager_API::getInstance()->getSearchCategoryParametersGlobal();
+ $view->isSearchCategoryTrackingEnabled = Piwik_PluginsManager::getInstance()->isPluginActivated('CustomVariables');
+
$view->currentIpAddress = Piwik_IP::getIpFromHeader();
$view->showAddSite = (boolean) Piwik_Common::getRequestVar('showaddsite', false);
@@ -79,10 +84,13 @@ class Piwik_SitesManager_Controller extends Piwik_Controller_Admin
$excludedIps = Piwik_Common::getRequestVar('excludedIps', false);
$excludedQueryParameters = Piwik_Common::getRequestVar('excludedQueryParameters', false);
$currency = Piwik_Common::getRequestVar('currency', false);
+ $searchKeywordParameters = Piwik_Common::getRequestVar('searchKeywordParameters', $default = "");
+ $searchCategoryParameters = Piwik_Common::getRequestVar('searchCategoryParameters', $default = "");
Piwik_SitesManager_API::getInstance()->setDefaultTimezone($timezone);
Piwik_SitesManager_API::getInstance()->setDefaultCurrency($currency);
Piwik_SitesManager_API::getInstance()->setGlobalExcludedQueryParameters($excludedQueryParameters);
Piwik_SitesManager_API::getInstance()->setGlobalExcludedIps($excludedIps);
+ Piwik_SitesManager_API::getInstance()->setGlobalSearchParameters($searchKeywordParameters, $searchCategoryParameters);
$toReturn = $response->getResponse();
} catch(Exception $e ) {
$toReturn = $response->getResponseException( $e );
diff --git a/plugins/SitesManager/SitesManager.php b/plugins/SitesManager/SitesManager.php
index ff4af21b8a..d1ac2e2ef1 100644
--- a/plugins/SitesManager/SitesManager.php
+++ b/plugins/SitesManager/SitesManager.php
@@ -82,19 +82,40 @@ class Piwik_SitesManager extends Piwik_Plugin
// add the 'hosts' entry in the website array
$array =& $notification->getNotificationObject();
$array['hosts'] = $this->getTrackerHosts($idSite);
- $array['excluded_ips'] = $this->getTrackerExcludedIps($idSite);
- $array['excluded_parameters'] = $this->getTrackerExcludedQueryParameters($idSite);
+
+ $website = Piwik_SitesManager_API::getInstance()->getSiteFromId($idSite);
+ $array['excluded_ips'] = $this->getTrackerExcludedIps($website);
+ $array['excluded_parameters'] = $this->getTrackerExcludedQueryParameters($website);
+ $array['sitesearch'] = $website['sitesearch'];
+ $array['sitesearch_keyword_parameters'] = $this->getTrackerSearchKeywordParameters($website);
+ $array['sitesearch_category_parameters'] = $this->getTrackerSearchCategoryParameters($website);
+ }
+
+ private function getTrackerSearchKeywordParameters($website)
+ {
+ $searchParameters = $website['sitesearch_keyword_parameters'];
+ if(empty($searchParameters)) {
+ $searchParameters = Piwik_SitesManager_API::getInstance()->getSearchKeywordParametersGlobal();
+ }
+ return explode(",", $searchParameters);
+ }
+
+ private function getTrackerSearchCategoryParameters($website)
+ {
+ $searchParameters = $website['sitesearch_category_parameters'];
+ if(empty($searchParameters)) {
+ $searchParameters = Piwik_SitesManager_API::getInstance()->getSearchCategoryParametersGlobal();
+ }
+ return explode(",", $searchParameters);
}
/**
* Returns the array of excluded IPs to save in the config file
*
- * @param int $idSite
* @return array
*/
- private function getTrackerExcludedIps($idSite)
+ private function getTrackerExcludedIps($website)
{
- $website = Piwik_SitesManager_API::getInstance()->getSiteFromId($idSite);
$excludedIps = $website['excluded_ips'];
$globalExcludedIps = Piwik_SitesManager_API::getInstance()->getExcludedIpsGlobal();
@@ -115,12 +136,10 @@ class Piwik_SitesManager extends Piwik_Plugin
/**
* Returns the array of URL query parameters to exclude from URLs
*
- * @param int $idSite
* @return array
*/
- private function getTrackerExcludedQueryParameters($idSite)
+ private function getTrackerExcludedQueryParameters($website)
{
- $website = Piwik_SitesManager_API::getInstance()->getSiteFromId($idSite);
$excludedQueryParameters = $website['excluded_parameters'];
$globalExcludedQueryParameters = Piwik_SitesManager_API::getInstance()->getExcludedQueryParametersGlobal();
diff --git a/plugins/SitesManager/templates/SitesManager.js b/plugins/SitesManager/templates/SitesManager.js
index 54f65d2e80..74c37b0efc 100644
--- a/plugins/SitesManager/templates/SitesManager.js
+++ b/plugins/SitesManager/templates/SitesManager.js
@@ -46,6 +46,9 @@ function SitesManager ( _timezones, _currencies, _defaultTimezone, _defaultCurre
var excludedQueryParameters = $(row).find('textarea#excludedQueryParameters').val();
var ecommerce = encodeURIComponent($(row).find('#ecommerce option:selected').val());
excludedQueryParameters = piwikHelper.getApiFormatTextarea(excludedQueryParameters);
+ var sitesearch = encodeURIComponent($(row).find('#sitesearch option:selected').val());
+ var searchKeywordParameters = $('input#searchKeywordParameters').val();
+ var searchCategoryParameters = $('input#searchCategoryParameters').val();
var request = '';
request += '&module=API';
@@ -58,6 +61,9 @@ function SitesManager ( _timezones, _currencies, _defaultTimezone, _defaultCurre
request += '&ecommerce='+ecommerce;
request += '&excludedIps='+excludedIps;
request += '&excludedQueryParameters='+excludedQueryParameters;
+ request += '&siteSearch='+sitesearch;
+ request += '&searchKeywordParameters='+searchKeywordParameters;
+ request += '&searchCategoryParameters='+searchCategoryParameters;
$.each(urls, function (key,value){ request+= '&urls[]='+escape(value);} );
request += '&token_auth=' + piwik.token_auth;
@@ -90,7 +96,10 @@ function SitesManager ( _timezones, _currencies, _defaultTimezone, _defaultCurre
excludedQueryParameters = piwikHelper.getApiFormatTextarea(excludedQueryParameters);
var timezone = encodeURIComponent($(row).find('#timezones option:selected').val());
var currency = encodeURIComponent($(row).find('#currencies option:selected').val());
- var ecommerce = encodeURIComponent($(row).find('#ecommerce option:selected').val());
+ var ecommerce = encodeURIComponent($(row).find('#ecommerce option:selected').val());
+ var sitesearch = encodeURIComponent($(row).find('#sitesearch option:selected').val());
+ var searchKeywordParameters = $('input#searchKeywordParameters').val();
+ var searchCategoryParameters = $('input#searchCategoryParameters').val();
var request = '';
request += '&module=API';
request += '&format=json';
@@ -103,6 +112,9 @@ function SitesManager ( _timezones, _currencies, _defaultTimezone, _defaultCurre
request += '&ecommerce='+ecommerce;
request += '&excludedIps='+excludedIps;
request += '&excludedQueryParameters='+excludedQueryParameters;
+ request += '&siteSearch='+sitesearch;
+ request += '&searchKeywordParameters='+searchKeywordParameters;
+ request += '&searchCategoryParameters='+searchCategoryParameters;
$.each(urls, function (key,value){ if(value.length>1) request+= '&urls[]='+value;} );
request += '&token_auth=' + piwik.token_auth;
@@ -120,6 +132,8 @@ function SitesManager ( _timezones, _currencies, _defaultTimezone, _defaultCurre
excludedIps = piwikHelper.getApiFormatTextarea(excludedIps);
var excludedQueryParameters = $('textarea#globalExcludedQueryParameters').val();
excludedQueryParameters = piwikHelper.getApiFormatTextarea(excludedQueryParameters);
+ var searchKeywordParameters = $('input#globalSearchKeywordParameters').val();
+ var searchCategoryParameters = $('input#globalSearchCategoryParameters').val();
var request = '';
request += 'module=SitesManager';
request += '&action=setGlobalSettings';
@@ -127,7 +141,9 @@ function SitesManager ( _timezones, _currencies, _defaultTimezone, _defaultCurre
request += '&timezone='+timezone;
request += '&currency='+currency;
request += '&excludedIps='+excludedIps;
- request += '&excludedQueryParameters='+excludedQueryParameters;
+ request += '&excludedQueryParameters='+excludedQueryParameters;
+ request += '&searchKeywordParameters='+searchKeywordParameters;
+ request += '&searchCategoryParameters='+searchCategoryParameters;
request += '&token_auth=' + piwik.token_auth;
ajaxRequest.data = request;
return ajaxRequest;
@@ -147,6 +163,7 @@ function SitesManager ( _timezones, _currencies, _defaultTimezone, _defaultCurre
<td><textarea cols="25" rows="3" id="urls">http://siteUrl.com/\nhttp://siteUrl2.com/</textarea><br />'+aliasUrlsHelp+'</td>\
<td><textarea cols="20" rows="4" id="excludedIps"></textarea><br />'+excludedIpHelp+'</td>\
<td><textarea cols="20" rows="4" id="excludedQueryParameters"></textarea><br />'+excludedQueryParametersHelp+'</td>\
+ <td>'+getSitesearchSelector(false)+'</td>\
<td>'+getTimezoneSelector(defaultTimezone)+'<br />' + timezoneHelp + '</td>\
<td>'+getCurrencySelector(defaultCurrency)+'<br />' + currencyHelp + '</td>\
<td>'+getEcommerceSelector(0) + '<br />' + ecommerceHelp+ '</td>\
@@ -185,7 +202,7 @@ function SitesManager ( _timezones, _currencies, _defaultTimezone, _defaultCurre
);
var alreadyEdited = new Array;
- $('.editSite')
+ $('.editSite')
.click( function() {
piwikHelper.hideAjaxError();
var idRow = $(this).attr('id');
@@ -251,12 +268,17 @@ function SitesManager ( _timezones, _currencies, _defaultTimezone, _defaultCurre
contentAfter += '<br />' + currencyHelp;
$(n).html(contentAfter);
}
- else if(idName == 'ecommerce')
- {
- ecommerceActive = contentBefore.indexOf("ecommerceActive") > 0 ? 1 : 0;
- contentAfter = getEcommerceSelector(ecommerceActive) + '<br />' + ecommerceHelp;
- $(n).html(contentAfter);
- }
+ else if(idName == 'ecommerce')
+ {
+ ecommerceActive = contentBefore.indexOf("ecommerceActive") > 0 ? 1 : 0;
+ contentAfter = getEcommerceSelector(ecommerceActive) + '<br />' + ecommerceHelp;
+ $(n).html(contentAfter);
+ }
+ else if(idName == 'sitesearch') {
+ contentAfter = getSitesearchSelector(contentBefore);
+ $(n).html(contentAfter);
+ onClickSiteSearchUseDefault();
+ }
}
);
$(this)
@@ -276,9 +298,60 @@ function SitesManager ( _timezones, _currencies, _defaultTimezone, _defaultCurre
$('td.editableSite').click( function(){ $(this).parent().find('.editSite').click(); } );
}
-
- function getEcommerceSelector(enabled)
- {
+
+ function getSitesearchSelector(contentBefore)
+ {
+ var globalKeywordParameters = $('input#globalSearchKeywordParameters').val().trim();
+ var globalCategoryParameters = $('input#globalSearchCategoryParameters').val().trim();
+ if(contentBefore) {
+ enabled = contentBefore.indexOf("sitesearchActive") > 0 ? 1 : 0;
+ spanSearch = $(contentBefore).filter('.sskp');
+ var searchKeywordParameters = spanSearch.attr('sitesearch_keyword_parameters').trim();
+ var searchCategoryParameters = spanSearch.attr('sitesearch_category_parameters').trim();
+ checked = globalKeywordParameters.length && !searchKeywordParameters.trim().length;
+ } else {
+ var searchKeywordParameters = globalKeywordParameters;
+ var searchCategoryParameters = globalCategoryParameters;
+ enabled = searchKeywordParameters.length || searchCategoryParameters.length; // default is enabled
+ checked = enabled;
+ }
+
+ searchGlobalHasValues = globalKeywordParameters.trim().length;
+ var html = '<select id="sitesearch" onchange="return onClickSiteSearchUseDefault();">';
+ var selected = ' selected="selected" ';
+ html += '<option ' + (enabled ? selected : '') + ' value="1">' + sitesearchEnabled + '</option>';
+ html += '<option ' + (enabled ? '' : selected) + ' value="0">' + sitesearchDisabled + '</option>';
+ html += '</select>';
+ html += '<span style="font-size: 11px;"><br/>';
+
+ if(searchGlobalHasValues)
+ {
+ checkedStr = checked ? ' checked ' : '';
+ html += '<label><span id="sitesearchUseDefault"'+ (!enabled ? ' style="display:none" ' : '') +'><input type="checkbox" '+checkedStr+' id="sitesearchUseDefaultCheck" onclick="return onClickSiteSearchUseDefault();"> '+sitesearchUseDefault+' </span>';
+ html += '</label>';
+
+ html += '<div ' + ((checked && enabled) ? '' : 'style="display-none"') + ' class="searchDisplayParams form-description">'
+ + searchKeywordLabel + ' (' + strDefault + ') ' + ': '
+ + globalKeywordParameters
+ + (globalCategoryParameters.length ? ', '+ searchCategoryLabel + ': ' + globalCategoryParameters: '')
+ + '</div>';
+ }
+ html += '<div id="sitesearchIntro">'+sitesearchIntro+'</div>';
+
+ html += '<div id="searchSiteParameters">';
+ html += '<br/><label><div style="margin-bottom:3px">'+searchKeywordLabel+'</div><input type="text" size="22" id="searchKeywordParameters" value="'+searchKeywordParameters+'" style="margin-bottom: -10px;font-size:9pt;font-family:monospace"></input>'+searchKeywordHelp+'</label>';
+
+ // if custom var plugin is disabled, category tracking not supported
+ if(globalCategoryParameters!='globalSearchCategoryParametersIsDisabled') {
+ html += '<br/><label><div style="margin-bottom:3px">'+searchCategoryLabel+'</div><input type="text" size="22" id="searchCategoryParameters" value="'+searchCategoryParameters+'" style="margin-bottom: -10px;font-size:9pt;font-family:monospace"></input>'+searchCategoryHelp+'</label>';
+ }
+ html += '</div></span>';
+
+ return html;
+ }
+
+ function getEcommerceSelector(enabled)
+ {
var html = '<select id="ecommerce">';
selected = ' selected="selected" ';
html += '<option ' + (enabled ? '' : selected) + ' value="0">' + ecommerceDisabled + '</option>';
@@ -334,3 +407,30 @@ function SitesManager ( _timezones, _currencies, _defaultTimezone, _defaultCurre
$(self).parent().find('.updateSite').click();
}
}
+
+function onClickSiteSearchUseDefault()
+{
+ // Site Search enabled
+ if($('select#sitesearch').val() == "1") {
+ $('#sitesearchUseDefault').show();
+
+ // Use default is checked
+ if($('#sitesearchUseDefaultCheck').is(':checked')) {
+ $('#searchSiteParameters').hide();
+ $('#sitesearchIntro').show();
+ $('#searchKeywordParameters,#searchCategoryParameters').val('');
+ $('.searchDisplayParams').show();
+ // Use default is unchecked
+
+ } else {
+ $('#sitesearchIntro').hide();
+ $('.searchDisplayParams').hide();
+ $('#searchSiteParameters').show();
+ }
+ } else {
+ $('.searchDisplayParams').hide();
+ $('#sitesearchUseDefault').hide();
+ $('#searchSiteParameters').hide();
+ $('#sitesearchIntro').show();
+ }
+}
diff --git a/plugins/SitesManager/templates/SitesManager.tpl b/plugins/SitesManager/templates/SitesManager.tpl
index 0301adc364..fb2c979d7e 100644
--- a/plugins/SitesManager/templates/SitesManager.tpl
+++ b/plugins/SitesManager/templates/SitesManager.tpl
@@ -43,10 +43,25 @@ var currencyHelp = '{$currencyHelpPlain|escape:javascript}';
var ecommerceHelp = '{$ecommerceHelpPlain|inlineHelp|escape:javascript}';
var ecommerceEnabled = '{'SitesManager_EnableEcommerce'|translate|escape:javascript}';
var ecommerceDisabled = '{'SitesManager_NotAnEcommerceSite'|translate|escape:javascript}';
-{assign var=defaultTimezoneHelp value=$defaultTimezoneHelpPlain|inlineHelp};
+{assign var=defaultTimezoneHelp value=$defaultTimezoneHelpPlain|inlineHelp}
+{assign var=searchKeywordHelp value='SitesManager_SearchKeywordParametersDesc'|translate|inlineHelp}
+{capture assign=searchCategoryHelpText}{'Goals_Optional'|translate} {'SitesManager_SearchCategoryParametersDesc'|translate}{/capture}
+{assign var=searchCategoryHelp value=$searchCategoryHelpText|inlineHelp}
+var sitesearchEnabled = '{'SitesManager_EnableSiteSearch'|translate|escape:javascript}';
+var sitesearchDisabled = '{'SitesManager_DisableSiteSearch'|translate|escape:javascript}';
+var searchKeywordHelp = '{$searchKeywordHelp|escape:javascript}';
+var searchCategoryHelp = '{$searchCategoryHelp|escape:javascript}';
+var sitesearchDesc = '{'SitesManager_TrackingSiteSearch'|translate|escape:javascript}';
var sitesManager = new SitesManager ( {$timezones}, {$currencies}, '{$defaultTimezone}', '{$defaultCurrency}');
-
+{assign var=searchKeywordLabel value='SitesManager_SearchKeywordLabel'|translate}
+{assign var=searchCategoryLabel value='SitesManager_SearchCategoryLabel'|translate}
+var searchKeywordLabel = '{$searchKeywordLabel|escape:javascript}';
+var searchCategoryLabel = '{$searchCategoryLabel|escape:javascript}';
+{assign var=sitesearchIntro value='Actions_SubmenuSitesearch'|translate}
+var sitesearchIntro = '{$sitesearchIntro|inlineHelp|escape:javascript}';
+var sitesearchUseDefault = '{if $isSuperUser}{'SitesManager_SearchUseDefault'|translate:'<a href="#globalSiteSearch">':'</a>'|escape:'javascript'}{else}{'SitesManager_SearchUseDefault'|translate:'':''|escape:'javascript'}{/if}';
+var strDefault = '{'General_Default'|translate:escape:'javascript'}';
{literal}
$(document).ready( function() {
sitesManager.init();
@@ -81,9 +96,12 @@ font-size:9pt;
.admin thead th {
vertical-align:middle;
}
-.ecommerceInactive {
+.ecommerceInactive,.sitesearchInactive {
color: #666666;
}
+#searchSiteParameters {
+ display:none;
+}
</style>
{/literal}
@@ -122,6 +140,7 @@ vertical-align:middle;
<th>{'SitesManager_Urls'|translate}</th>
<th>{'SitesManager_ExcludedIps'|translate}</th>
<th>{'SitesManager_ExcludedParameters'|translate|replace:" ":"<br />"}</th>
+ <th>{'Actions_SubmenuSitesearch'|translate}</th>
<th>{'SitesManager_Timezone'|translate}</th>
<th>{'SitesManager_Currency'|translate}</th>
<th>{'Goals_Ecommerce'|translate}</th>
@@ -138,6 +157,7 @@ vertical-align:middle;
<td id="urls" class="editableSite">{foreach from=$site.alias_urls item=url}{$url|replace:"http://":""}<br />{/foreach}</td>
<td id="excludedIps" class="editableSite">{foreach from=$site.excluded_ips item=ip}{$ip}<br />{/foreach}</td>
<td id="excludedQueryParameters" class="editableSite">{foreach from=$site.excluded_parameters item=parameter}{$parameter}<br />{/foreach}</td>
+ <td id="sitesearch" class="editableSite">{if $site.sitesearch}<span class='sitesearchActive'>{'General_Yes'|translate}</span>{else}<span class='sitesearchInactive'>-</span>{/if}<span class='sskp' sitesearch_keyword_parameters="{$site.sitesearch_keyword_parameters|escape:'html'}" sitesearch_category_parameters="{$site.sitesearch_category_parameters|escape:'html'}" id="sitesearch_parameters"></span></td>
<td id="timezone" class="editableSite">{$site.timezone}</td>
<td id="currency" class="editableSite">{$site.currency}</td>
<td id="ecommerce" class="editableSite">{if $site.ecommerce}<span class='ecommerceActive'>{'General_Yes'|translate}</span>{else}<span class='ecommerceInactive'>-</span>{/if}</td>
@@ -169,20 +189,43 @@ vertical-align:middle;
<textarea cols="30" rows="3" id="globalExcludedIps">{$globalExcludedIps}
</textarea>
</td><td>
- {$excludedIpHelp}
+ <label for="globalExcludedIps">{$excludedIpHelp}</label>
</td></tr>
-
+
<tr><td colspan="2">
- <b>{'SitesManager_GlobalListExcludedQueryParameters'|translate}</b>
- <p>{'SitesManager_ListOfQueryParametersToBeExcludedOnAllWebsites'|translate} </p>
- </td></tr>
- <tr><td>
+ <b>{'SitesManager_GlobalListExcludedQueryParameters'|translate}</b>
+ <p>{'SitesManager_ListOfQueryParametersToBeExcludedOnAllWebsites'|translate} </p>
+ </td></tr>
+
+ <tr><td>
<textarea cols="30" rows="3" id="globalExcludedQueryParameters">{$globalExcludedQueryParameters}
</textarea>
- </td><td>
- {$excludedQueryParametersHelp}
+ </td><td><label for="globalExcludedQueryParameters">{$excludedQueryParametersHelp}</label>
</td></tr>
-
+
+ <tr><td colspan="2">
+ <a name='globalSiteSearch'></a><b>{'SitesManager_TrackingSiteSearch'|translate}</b>
+ <p>{$sitesearchIntro}</p>
+ <span class="form-description" style='font-size:8pt'>{'SitesManager_SearchParametersNote'|translate} {'SitesManager_SearchParametersNote2'|translate}</span>
+ </td></tr>
+ <tr><td colspan="2">
+ <label>{$searchKeywordLabel} &nbsp;<input type="text" size="15" id="globalSearchKeywordParameters" value="{$globalSearchKeywordParameters|escape:'html'}"></input>
+ <div style='width: 200px;float:right;'>{$searchKeywordHelp}</div></label>
+ </td></tr>
+
+ <tr><td colspan="2">
+ {if !$isSearchCategoryTrackingEnabled}
+ <input value='globalSearchCategoryParametersIsDisabled' id="globalSearchCategoryParameters" type='hidden'></input>
+ <span class='form-description'>Note: you could also track your Internal Search Engine Categories, but the plugin Custom Variables is required. Please enable the plugin CustomVariables (or ask your Piwik admin).</span>
+ {else}
+ {'Goals_Optional'|translate} {'SitesManager_SearchCategoryDesc'|translate} <br/>
+ </td></tr>
+ <tr><td colspan="2">
+ <label>{$searchCategoryLabel} &nbsp;<input type="text" size="15" id="globalSearchCategoryParameters" value="{$globalSearchCategoryParameters|escape:'html'}"></input>
+ <div style='width: 200px;float:right;'>{$searchCategoryHelp}</div></label>
+ {/if}
+ </td></tr>
+
<tr><td colspan="2">
<b>{'SitesManager_DefaultTimezoneForNewWebsites'|translate}</b>
<p>{'SitesManager_SelectDefaultTimezone'|translate} </p>
diff --git a/plugins/UserCountry/UserCountry.php b/plugins/UserCountry/UserCountry.php
index 653364d1ec..7fbc4455d8 100644
--- a/plugins/UserCountry/UserCountry.php
+++ b/plugins/UserCountry/UserCountry.php
@@ -74,7 +74,7 @@ class Piwik_UserCountry extends Piwik_Plugin
require_once PIWIK_INCLUDE_PATH . "/plugins/UserCountry/LocationProvider.php";
$location = &$notification->getNotificationObject();
$visitorInfo = $notification->getNotificationInfo();
-
+
$id = Piwik_Common::getCurrentLocationProviderId();
$provider = Piwik_UserCountry_LocationProvider::getProviderById($id);
if ($provider === false)
@@ -89,12 +89,13 @@ class Piwik_UserCountry extends Piwik_Plugin
// if we can't find a location, use default provider
if ($location === false)
{
- $id = Piwik_UserCountry_LocationProvider_Default::ID;
- $provider = Piwik_UserCountry_LocationProvider::getProviderById($id);
+ $defaultId = Piwik_UserCountry_LocationProvider_Default::ID;
+ $provider = Piwik_UserCountry_LocationProvider::getProviderById($defaultId);
$location = $provider->getLocation($visitorInfo);
- printDebug("GEO: couldn't find a location with Geo Module '$id', using Default '$id' provider as fallback...");
+ printDebug("GEO: couldn't find a location with Geo Module '$id', using Default '$defaultId' provider as fallback...");
+ $id = $defaultId;
}
- printDebug("GEO: Found IP location (provider '$id'): ". var_export($location, true));
+ printDebug("GEO: Found IP location (provider '". $id . "'): ". var_export($location, true));
}
function addWidgets()
diff --git a/plugins/VisitsSummary/Controller.php b/plugins/VisitsSummary/Controller.php
index 08a1fe96fd..ba9d1453b2 100644
--- a/plugins/VisitsSummary/Controller.php
+++ b/plugins/VisitsSummary/Controller.php
@@ -73,7 +73,14 @@ class Piwik_VisitsSummary_Controller extends Piwik_Controller
'nb_outlinks',
'nb_uniq_outlinks'
);
-
+
+ $idSite = Piwik_Common::getRequestVar('idSite');
+ $displaySiteSearch = Piwik_Site::isSiteSearchEnabledFor($idSite);
+
+ if($displaySiteSearch) {
+ $selectableColumns[] = 'nb_searches';
+ $selectableColumns[] = 'nb_keywords';
+ }
$view = $this->getLastUnitGraphAcrossPlugins($this->pluginName, __FUNCTION__, $columns,
$selectableColumns, $documentation);
@@ -110,11 +117,19 @@ class Piwik_VisitsSummary_Controller extends Piwik_Controller
$view->urlSparklineMaxActions = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('max_actions')));
$view->urlSparklineActionsPerVisit = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('nb_actions_per_visit')));
$view->urlSparklineBounceRate = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('bounce_rate')));
-
+
+ $idSite = Piwik_Common::getRequestVar('idSite');
+ $displaySiteSearch = Piwik_Site::isSiteSearchEnabledFor($idSite);
+ if($displaySiteSearch)
+ {
+ $view->urlSparklineNbSearches = $this->getUrlSparkline( 'getEvolutionGraph', array('columns' => array('nb_searches', 'nb_keywords')));
+ }
+ $view->displaySiteSearch = $displaySiteSearch;
+
$dataTableVisit = self::getVisitsSummary();
$dataRow = $dataTableVisit->getFirstRow();
- $dataTableActions = Piwik_Actions_API::getInstance()->get(Piwik_Common::getRequestVar('idSite'), Piwik_Common::getRequestVar('period'), Piwik_Common::getRequestVar('date'), Piwik_Common::getRequestVar('segment',false));
+ $dataTableActions = Piwik_Actions_API::getInstance()->get($idSite, Piwik_Common::getRequestVar('period'), Piwik_Common::getRequestVar('date'), Piwik_Common::getRequestVar('segment',false));
$dataActionsRow = $dataTableActions->getFirstRow();
$view->nbUniqVisitors = (int)$dataRow->getColumn('nb_uniq_visitors');
@@ -131,7 +146,13 @@ class Piwik_VisitsSummary_Controller extends Piwik_Controller
$view->bounceRate = Piwik::getPercentageSafe($nbBouncedVisits, $nbVisits);
$view->maxActions = (int)$dataRow->getColumn('max_actions');
$view->nbActionsPerVisit = $dataRow->getColumn('nb_actions_per_visit');
-
+
+ if($displaySiteSearch)
+ {
+ $view->nbSearches = (int)$dataActionsRow->getColumn('nb_searches');
+ $view->nbKeywords = (int)$dataActionsRow->getColumn('nb_keywords');
+ }
+
// backward compatibility:
// show actions if the finer metrics are not archived
$view->showOnlyActions = false;
diff --git a/plugins/VisitsSummary/templates/sparklines.tpl b/plugins/VisitsSummary/templates/sparklines.tpl
index fd50969ab4..b59144b4ce 100644
--- a/plugins/VisitsSummary/templates/sparklines.tpl
+++ b/plugins/VisitsSummary/templates/sparklines.tpl
@@ -42,6 +42,13 @@
{'VisitsSummary_NbUniqueOutlinksDescription'|translate:"<strong>$nbUniqueOutlinks</strong>"}
</div>
{/if}
+ {if $displaySiteSearch}
+ <div class="sparkline">
+ {sparkline src=$urlSparklineNbSearches}
+ {'VisitsSummary_NbSearchesDescription'|translate:"<strong>$nbSearches</strong>"|trim},
+ {'VisitsSummary_NbKeywordsDescription'|translate:"<strong>$nbKeywords</strong>"}
+ </div>
+ {/if}
<div class="sparkline">
{sparkline src=$urlSparklineMaxActions}
{'VisitsSummary_MaxNbActions'|translate:"<strong>$maxActions</strong>"}
diff --git a/tests/PHPUnit/Core/ArchiveProcessingTest.php b/tests/PHPUnit/Core/ArchiveProcessingTest.php
index 92f305553c..51628ca170 100644
--- a/tests/PHPUnit/Core/ArchiveProcessingTest.php
+++ b/tests/PHPUnit/Core/ArchiveProcessingTest.php
@@ -30,6 +30,7 @@ class ArchiveProcessingTest extends DatabaseTestCase
"site1",
array("http://piwik.net"),
$ecommerce=0,
+ $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,
$excludedIps = "",
$excludedQueryParameters = "",
$timezone);
diff --git a/tests/PHPUnit/Core/Tracker/ActionTest.php b/tests/PHPUnit/Core/Tracker/ActionTest.php
index e3e0a1f814..51d7087705 100644
--- a/tests/PHPUnit/Core/Tracker/ActionTest.php
+++ b/tests/PHPUnit/Core/Tracker/ActionTest.php
@@ -34,8 +34,8 @@ class Tracker_ActionTest extends DatabaseTestCase
$urls = array(
// a wrongly formatted url (parse_url returns false)
array('http:////wrongurl',
- array('http:////wrongurl',
- 'http:////wrongurl')),
+ array(false,
+ false)),
// a URL with all components
array('http://username:password@hostname:80/path?phpSESSID=value#anchor',
@@ -106,10 +106,38 @@ class Tracker_ActionTest extends DatabaseTestCase
public function testExcludeQueryParametersNone($url, $filteredUrl)
{
$this->setUpRootAccess();
- $idSite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'),$ecommerce=0, $excludedIps = '', $excludedQueryParameters='');
+ $idSite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'),$ecommerce=0,
+ $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,
+ $excludedIps = '', $excludedQueryParameters='');
$this->assertEquals($filteredUrl[0], Piwik_Tracker_Action::excludeQueryParametersFromUrl($url, $idSite));
}
+ public function getTestUrlsHashtag()
+ {
+ $urls = array(
+ // URL, Expected URL
+ array('wrongurl/#', 'http://wrongurl/'),
+ array('wrongurl/#t', 'http://wrongurl/#t'),
+ array('wrongurl/#test', 'http://wrongurl/#test'),
+ array('wrongurl/#test=1', 'http://wrongurl/#test=1'),
+ array('wrongurl/#test=1#', 'http://wrongurl/#test=1'),
+ );
+ return $urls;
+ }
+
+ /**
+ * Test removing hash tag
+ * @group Core
+ * @group Tracker
+ * @group Tracker_Action
+ * @dataProvider getTestUrlsHashtag
+ */
+ public function testRemoveTrailingHashtag($url, $expectedUrl)
+ {
+ $this->assertEquals( Piwik_Tracker_Action::reconstructNormalizedUrl($url, Piwik_Tracker_Action::$urlPrefixMap['http://']), $expectedUrl);
+ }
+
+
/**
* Testing with some website specific parameters excluded
* @group Core
@@ -121,7 +149,9 @@ class Tracker_ActionTest extends DatabaseTestCase
{
$excludedQueryParameters = 'p4, p2, var[value][date]';
$this->setUpRootAccess();
- $idSite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'),$ecommerce=0, $excludedIps = '', $excludedQueryParameters);
+ $idSite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'),$ecommerce=0,
+ $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,
+ $excludedIps = '', $excludedQueryParameters);
$this->assertEquals($filteredUrl[1], Piwik_Tracker_Action::excludeQueryParametersFromUrl($url, $idSite));
}
@@ -138,7 +168,9 @@ class Tracker_ActionTest extends DatabaseTestCase
$excludedQueryParameters = 'P2,var[value][date]';
$excludedGlobalParameters = 'blabla, P4';
$this->setUpRootAccess();
- $idSite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'),$ecommerce=0, $excludedIps = '', $excludedQueryParameters);
+ $idSite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'),$ecommerce=0,
+ $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,
+ $excludedIps = '', $excludedQueryParameters);
Piwik_SitesManager_API::getInstance()->setGlobalExcludedQueryParameters($excludedGlobalParameters);
$this->assertEquals($filteredUrl[1], Piwik_Tracker_Action::excludeQueryParametersFromUrl($url, $idSite));
}
@@ -322,8 +354,11 @@ class Tracker_ActionTest extends DatabaseTestCase
*/
public function testExtractUrlAndActionNameFromRequest($request, $expected)
{
- $action = new Test_Piwik_TrackerAction_extractUrlAndActionNameFromRequest();
- $action->setRequest($request);
+ $this->setUpRootAccess();
+ $idSite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'));
+ $action = new Test_Piwik_TrackerAction_extractUrlAndActionNameFromRequest();
+ $action->setRequest($request);
+ $action->setIdSite($idSite);
$this->assertEquals($action->public_extractUrlAndActionNameFromRequest(), $expected);
}
}
diff --git a/tests/PHPUnit/Core/Tracker/VisitTest.php b/tests/PHPUnit/Core/Tracker/VisitTest.php
index 9e62ee373f..6c75c534d9 100644
--- a/tests/PHPUnit/Core/Tracker/VisitTest.php
+++ b/tests/PHPUnit/Core/Tracker/VisitTest.php
@@ -71,7 +71,8 @@ class Tracker_VisitTest extends DatabaseTestCase
public function testIsVisitorIpExcluded($excludedIp, $tests)
{
$visit = new Test_Piwik_TrackerVisit_public();
- $idsite = Piwik_SitesManager_API::getInstance()->addSite("name","http://piwik.net/",$ecommerce=0, $excludedIp);
+ $idsite = Piwik_SitesManager_API::getInstance()->addSite("name","http://piwik.net/",$ecommerce=0,
+ $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, $excludedIp);
$visit->setRequest(array('idsite' => $idsite));
// test that IPs within the range, or the given IP, are excluded
diff --git a/tests/PHPUnit/Integration/NoVisitTest.php b/tests/PHPUnit/Integration/NoVisitTest.php
index b710c7694f..6d52163cd6 100755
--- a/tests/PHPUnit/Integration/NoVisitTest.php
+++ b/tests/PHPUnit/Integration/NoVisitTest.php
@@ -99,7 +99,7 @@ class Test_Piwik_Integration_NoVisit extends IntegrationTestCase
// test with excluded IP
$t->setUserAgent('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 (.NET CLR 3.5.30729)'); // restore normal user agent
$excludedIp = '154.1.12.34';
- Piwik_SitesManager_API::getInstance()->updateSite($idSite, 'new site name', $url = array('http://site.com'), $ecommerce = 0, $excludedIp . ',1.2.3.4');
+ Piwik_SitesManager_API::getInstance()->updateSite($idSite, 'new site name', $url = array('http://site.com'), $ecommerce = 0, $ss = 1, $ss_kwd = '', $ss_cat = '', $excludedIp . ',1.2.3.4');
$t->setIp($excludedIp);
self::checkResponse($t->doTrackPageView('visit from IP excluded'));
diff --git a/tests/PHPUnit/Integration/OneVisitorOneWebsite_SeveralDaysDateRange_ArchivingTestsTest.php b/tests/PHPUnit/Integration/OneVisitorOneWebsite_SeveralDaysDateRange_ArchivingTestsTest.php
index 0d0bc240e6..854d5218f2 100755
--- a/tests/PHPUnit/Integration/OneVisitorOneWebsite_SeveralDaysDateRange_ArchivingTestsTest.php
+++ b/tests/PHPUnit/Integration/OneVisitorOneWebsite_SeveralDaysDateRange_ArchivingTestsTest.php
@@ -124,7 +124,7 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange_Archiving
'archive_blob_2010_12' => (4 + 7 + 2) * 3,
// (VisitsSummary 5 metrics + 1 flag - no Unique visitors for range)
// + 1 flag archive UserSettings
- // + (Actions 1 flag + 2 metrics - pageviews, unique pageviews)
+ // + (Actions 1 flag + 2 metrics - pageviews, unique pageviews + X??? metrics Site Search)
// + (Frequency 5 metrics + 1 flag)
// + 1 flag VisitTime
// * 3 segments
diff --git a/tests/PHPUnit/Integration/OneVisitorTwoVisitsTest.php b/tests/PHPUnit/Integration/OneVisitorTwoVisitsTest.php
index c2035f9829..5b88484fb8 100755
--- a/tests/PHPUnit/Integration/OneVisitorTwoVisitsTest.php
+++ b/tests/PHPUnit/Integration/OneVisitorTwoVisitsTest.php
@@ -67,7 +67,6 @@ class Test_Piwik_Integration_OneVisitorTwoVisits extends IntegrationTestCase
{
$url = urlencode($url);
}
-
return array(
array('all', array('idSite' => self::$idSite, 'date' => self::$dateTime)),
@@ -190,7 +189,9 @@ class Test_Piwik_Integration_OneVisitorTwoVisits extends IntegrationTestCase
// testing URL excluded parameters
$parameterToExclude = 'excluded_parameter';
- Piwik_SitesManager_API::getInstance()->updateSite($idSite, 'new name', $url = array('http://site.com'), $ecommerce = 0, $excludedIps = null, $parameterToExclude . ',anotherParameter');
+ Piwik_SitesManager_API::getInstance()->updateSite($idSite, 'new name', $url = array('http://site.com'), $ecommerce = 0, $siteSearch = null,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null, $excludedIps = null, $parameterToExclude . ',anotherParameter');
// Record 1st page view
$urlPage1 = 'http://example.org/index.htm?excluded_Parameter=SHOULD_NOT_DISPLAY&parameter=Should display';
diff --git a/tests/PHPUnit/Integration/OneVisitorTwoVisits_withCookieSupportTest.php b/tests/PHPUnit/Integration/OneVisitorTwoVisits_withCookieSupportTest.php
index 91784e5b13..ce24d26195 100755
--- a/tests/PHPUnit/Integration/OneVisitorTwoVisits_withCookieSupportTest.php
+++ b/tests/PHPUnit/Integration/OneVisitorTwoVisits_withCookieSupportTest.php
@@ -75,7 +75,7 @@ class Test_Piwik_Integration_OneVisitorTwoVisits_WithCookieSupport extends Integ
// testing URL excluded parameters
$parameterToExclude = 'excluded_parameter';
- Piwik_SitesManager_API::getInstance()->updateSite($idSite, 'new name', $url = array('http://site.com'), $ecommerce = 0, $excludedIps = null, $parameterToExclude . ',anotherParameter');
+ Piwik_SitesManager_API::getInstance()->updateSite($idSite, 'new name', $url = array('http://site.com'), $ecommerce = 0, $ss = 1, $ss_kwd = '', $ss_cat = 'notparam', $excludedIps = null, $parameterToExclude . ',anotherParameter');
// Record 1st page view
$urlPage1 = 'http://example.org/index.htm?excluded_Parameter=SHOULD_NOT_DISPLAY&parameter=Should display';
@@ -117,11 +117,17 @@ class Test_Piwik_Integration_OneVisitorTwoVisits_WithCookieSupport extends Integ
$t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.4)->getDatetime());
self::checkResponse($t->doTrackGoal($idGoal, $revenue = 42));
- $t->setBrowserLanguage('fr');
- // Final page view (after 27 min)
+
+ $t->setBrowserLanguage('fr');
+ // Site Search request
+ $t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.42)->getDatetime());
+ $t->setUrl('http://example.org/index.htm?q=Banks Own The World');
+ self::checkResponse($t->doTrackPageView('Site Search request'));
+
+ // Final page view (after 27 min)
$t->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.45)->getDatetime());
$t->setUrl('http://example.org/index.htm');
- self::checkResponse($t->doTrackPageView('Looking at homepage (again)...'));
+ self::checkResponse($t->doTrackPageView('Looking at homepage after site search...'));
// -
// End of first visit: 24min
diff --git a/tests/PHPUnit/Integration/RowEvolutionTest.php b/tests/PHPUnit/Integration/RowEvolutionTest.php
index c365b39f75..3cde9201db 100755
--- a/tests/PHPUnit/Integration/RowEvolutionTest.php
+++ b/tests/PHPUnit/Integration/RowEvolutionTest.php
@@ -158,7 +158,8 @@ class Test_Piwik_Integration_RowEvolution extends IntegrationTestCase
$dateTime = self::$today;
$idSite = self::$idSite;
- for ($daysIntoPast = 30; $daysIntoPast >= 0; $daysIntoPast--) {
+ for ($daysIntoPast = 30; $daysIntoPast >= 0; $daysIntoPast--)
+ {
// Visit 1: referrer website + test page views
$visitDateTime = Piwik_Date::factory($dateTime)->subDay($daysIntoPast)->getDatetime();
$t = self::getTracker($idSite, $visitDateTime, $defaultInit = true);
diff --git a/tests/PHPUnit/Integration/TwoVisitors_TwoWebsites_DifferentDays_ConversionsTest.php b/tests/PHPUnit/Integration/TwoVisitors_TwoWebsites_DifferentDays_ConversionsTest.php
index f969e2b171..b78f356146 100755
--- a/tests/PHPUnit/Integration/TwoVisitors_TwoWebsites_DifferentDays_ConversionsTest.php
+++ b/tests/PHPUnit/Integration/TwoVisitors_TwoWebsites_DifferentDays_ConversionsTest.php
@@ -8,12 +8,12 @@
*/
require_once 'Goals/Goals.php';
-
+require_once PIWIK_INCLUDE_PATH . '/tests/PHPUnit/Integration/TwoVisitors_TwoWebsites_DifferentDaysTest.php';
/**
* Same as TwoVisitors_twoWebsites_differentDays but with goals that convert
* on every url.
*/
-class Test_Piwik_Integration_TwoVisitors_TwoWebsites_DifferentDays_Conversions extends IntegrationTestCase
+class Test_Piwik_Integration_TwoVisitors_TwoWebsites_DifferentDays_Conversions extends Test_Piwik_Integration_TwoVisitors_TwoWebsites_DifferentDays
{
protected static $idSite1 = 1;
protected static $idSite2 = 2;
@@ -44,14 +44,14 @@ class Test_Piwik_Integration_TwoVisitors_TwoWebsites_DifferentDays_Conversions e
$this->runApiTests($api, $params);
}
- protected function getApiToCall()
- {
- return array('Goals.getDaysToConversion', 'MultiSites.getAll');
- }
+ protected function getApiToCall()
+ {
+ return array('Goals.getDaysToConversion', 'MultiSites.getAll');
+ }
- public function getApiForTesting()
- {
- $result = parent::getApiForTesting();
+ public function getApiForTesting()
+ {
+ $result = parent::getApiForTesting();
// Tests that getting a visits summary metric (nb_visits) & a Goal's metric (Goal_revenue)
// at the same time works.
@@ -124,8 +124,8 @@ class Test_Piwik_Integration_TwoVisitors_TwoWebsites_DifferentDays_Conversions e
self::assertTrue($visitorB->doTrackPageView('first page view'));
// -
- // Second visitor again on Idsite 1: 2 page views 2 days later, 2010-01-05
- $visitorB->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(48)->getDatetime());
+ // Second visitor again on Idsite 1: 2 page views 2 days later, 2010-01-05
+ $visitorB->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(48)->getDatetime());
// visitor_returning is set to 1 only when visit count more than 1
// Temporary, until we implement 1st party cookies in PiwikTracker
$visitorB->DEBUG_APPEND_URL .= '&_idvc=2&_viewts=' . Piwik_Date::factory($dateTime)->getTimestamp();
@@ -142,9 +142,9 @@ class Test_Piwik_Integration_TwoVisitors_TwoWebsites_DifferentDays_Conversions e
$visitorB->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(48)->addHour(0.2)->getDatetime());
self::assertTrue($visitorB->doTrackAction('mailto:test@example.org', 'link'));
$visitorB->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(48)->addHour(0.25)->getDatetime());
- self::assertTrue($visitorB->doTrackAction('mailto:test@example.org/strangelink', 'link'));
+ self::assertTrue($visitorB->doTrackAction('mailto:test@example.org/strangelink', 'link'));
- // Actions.getPageTitle tested with this title
+ // Actions.getPageTitle tested with this title
$visitorB->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(48)->addHour(0.25)->getDatetime());
self::assertTrue($visitorB->doTrackPageView('Checkout / Purchasing...'));
self::checkResponse($visitorB->doBulkTrack());
diff --git a/tests/PHPUnit/IntegrationTestCase.php b/tests/PHPUnit/IntegrationTestCase.php
index 433d8c0f47..f67a90f6f1 100755
--- a/tests/PHPUnit/IntegrationTestCase.php
+++ b/tests/PHPUnit/IntegrationTestCase.php
@@ -262,12 +262,13 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
*
* @return int idSite of website created
*/
- public static function createWebsite( $dateTime, $ecommerce = 0, $siteName = 'Piwik test', $siteUrl = false )
+ public static function createWebsite( $dateTime, $ecommerce = 0, $siteName = 'Piwik test', $siteUrl = false, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null )
{
$idSite = Piwik_SitesManager_API::getInstance()->addSite(
$siteName,
$siteUrl === false ? "http://piwik.net/" : $siteUrl,
$ecommerce,
+ $siteSearch , $searchKeywordParameters, $searchCategoryParameters,
$ips = null,
$excludedQueryParameters = null,
$timezone = null,
@@ -466,7 +467,9 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase
{
$trans_gif_64 = "R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==";
$expectedResponse = base64_decode($trans_gif_64);
- self::assertEquals($expectedResponse, $response, "Expected GIF beacon, got: <br/>\n" . $response ."<br/>\n");
+ self::assertEquals($expectedResponse, $response, "Expected GIF beacon, got: <br/>\n" . $response . "\n"
+// .base64_encode($response) // uncomment to further debug when the GIF hides the error
+ );
}
/**
diff --git a/tests/PHPUnit/Plugins/ActionsTest.php b/tests/PHPUnit/Plugins/ActionsTest.php
index fc3778192f..4db6d5503f 100644
--- a/tests/PHPUnit/Plugins/ActionsTest.php
+++ b/tests/PHPUnit/Plugins/ActionsTest.php
@@ -77,7 +77,7 @@ class ActionsTests extends PHPUnit_Framework_TestCase
),
array(
'params' => array('name' => 'http://example.org/path/Default.aspx#anchor', 'type' => Piwik_Tracker_Action::TYPE_ACTION_NAME),
- 'expected' => array('path', ' Default.aspx'),
+ 'expected' => array('path', ' Default.aspx#anchor'),
),
array(
'params' => array('name' => '', 'type' => Piwik_Tracker_Action::TYPE_ACTION_NAME),
diff --git a/tests/PHPUnit/Plugins/SitesManagerTest.php b/tests/PHPUnit/Plugins/SitesManagerTest.php
index 15f9a79cc6..521242b149 100644
--- a/tests/PHPUnit/Plugins/SitesManagerTest.php
+++ b/tests/PHPUnit/Plugins/SitesManagerTest.php
@@ -78,12 +78,19 @@ class SitesManagerTest extends DatabaseTestCase
$currency = 'EUR';
$excludedQueryParameters = 'p1,P2, P33333';
$expectedExcludedQueryParameters = 'p1,P2,P33333';
- $idsite = Piwik_SitesManager_API::getInstance()->addSite("name","http://piwik.net/", $ecommerce = 1, $ips, $excludedQueryParameters,$timezone, $currency);
+ $idsite = Piwik_SitesManager_API::getInstance()->addSite("name","http://piwik.net/", $ecommerce = 1,
+ $siteSearch = 1, $searchKeywordParameters = 'search,param', $searchCategoryParameters = 'cat,category',
+ $ips, $excludedQueryParameters,$timezone, $currency);
$siteInfo = Piwik_SitesManager_API::getInstance()->getSiteFromId($idsite);
$this->assertEquals($ips, $siteInfo['excluded_ips']);
$this->assertEquals($timezone, $siteInfo['timezone']);
$this->assertEquals($currency, $siteInfo['currency']);
- $this->assertEquals($ecommerce, $siteInfo['ecommerce']);
+ $this->assertEquals($ecommerce, $siteInfo['ecommerce']);
+ $this->assertTrue(Piwik_Site::isEcommerceEnabledFor($idsite));
+ $this->assertEquals($siteSearch, $siteInfo['sitesearch']);
+ $this->assertTrue(Piwik_Site::isSiteSearchEnabledFor($idsite));
+ $this->assertEquals($searchKeywordParameters, $siteInfo['sitesearch_keyword_parameters']);
+ $this->assertEquals($searchCategoryParameters, $siteInfo['sitesearch_category_parameters']);
$this->assertEquals($expectedExcludedQueryParameters, $siteInfo['excluded_parameters']);
}
@@ -113,7 +120,8 @@ class SitesManagerTest extends DatabaseTestCase
public function testAddSiteExcludedIpsNotValid($ip)
{
try {
- Piwik_SitesManager_API::getInstance()->addSite("name","http://piwik.net/", $ecommerce = 0,$ip);
+ Piwik_SitesManager_API::getInstance()->addSite("name","http://piwik.net/", $ecommerce = 0,
+ $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, $ip);
} catch (Exception $e) {
return;
}
@@ -503,8 +511,8 @@ class SitesManagerTest extends DatabaseTestCase
$idsite = Piwik_SitesManager_API::getInstance()->addSite("site3",array("http://piwik.org"));
$resultWanted = array(
- 0 => array("idsite" => 1, "name" => "site1", "main_url" =>"http://piwik.net", "ecommerce" => 0, "excluded_ips" => "", 'excluded_parameters' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => ''),
- 1 => array("idsite" => 3, "name" => "site3", "main_url" =>"http://piwik.org", "ecommerce" => 0,"excluded_ips" => "", 'excluded_parameters' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => ''),
+ 0 => array("idsite" => 1, "name" => "site1", "main_url" =>"http://piwik.net", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => ''),
+ 1 => array("idsite" => 3, "name" => "site3", "main_url" =>"http://piwik.org", "ecommerce" => 0,"excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => ''),
);
FakeAccess::setIdSitesAdmin (array(1,3));
@@ -545,8 +553,8 @@ class SitesManagerTest extends DatabaseTestCase
$idsite = Piwik_SitesManager_API::getInstance()->addSite("site3",array("http://piwik.org"));
$resultWanted = array(
- 0 => array("idsite" => 1, "name" => "site1", "main_url" =>"http://piwik.net", "ecommerce" => 0,"excluded_ips" => "", 'excluded_parameters' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => ''),
- 1 => array("idsite" => 3, "name" => "site3", "main_url" =>"http://piwik.org", "ecommerce" => 0,"excluded_ips" => "", 'excluded_parameters' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => ''),
+ 0 => array("idsite" => 1, "name" => "site1", "main_url" =>"http://piwik.net", "ecommerce" => 0, 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '',"excluded_ips" => "", 'excluded_parameters' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => ''),
+ 1 => array("idsite" => 3, "name" => "site3", "main_url" =>"http://piwik.org", "ecommerce" => 0, 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '',"excluded_ips" => "", 'excluded_parameters' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => ''),
);
FakeAccess::setIdSitesView (array(1,3));
@@ -587,8 +595,8 @@ class SitesManagerTest extends DatabaseTestCase
$idsite = Piwik_SitesManager_API::getInstance()->addSite("site3",array("http://piwik.org"));
$resultWanted = array(
- 0 => array("idsite" => 1, "name" => "site1", "main_url" =>"http://piwik.net", "ecommerce" => 1,"excluded_ips" => "", 'excluded_parameters' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => ''),
- 1 => array("idsite" => 3, "name" => "site3", "main_url" =>"http://piwik.org", "ecommerce" => 0,"excluded_ips" => "", 'excluded_parameters' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => ''),
+ 0 => array("idsite" => 1, "name" => "site1", "main_url" =>"http://piwik.net", "ecommerce" => 1,"excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => ''),
+ 1 => array("idsite" => 3, "name" => "site3", "main_url" =>"http://piwik.org", "ecommerce" => 0,"excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => ''),
);
FakeAccess::setIdSitesView (array(1,3));
@@ -686,14 +694,14 @@ class SitesManagerTest extends DatabaseTestCase
// Updating the group to something
$group = 'something';
- Piwik_SitesManager_API::getInstance()->updateSite($idsite, "test toto@{}", $newMainUrl, $ecommerce = 0, $ips=null, $parametersExclude=null, $timezone=null, $currency=null, $group );
+ Piwik_SitesManager_API::getInstance()->updateSite($idsite, "test toto@{}", $newMainUrl, $ecommerce = 0, $ss = true, $ss_kwd = null, $ss_cat = '', $ips=null, $parametersExclude=null, $timezone=null, $currency=null, $group );
$websites = Piwik_SitesManager_API::getInstance()->getSitesFromGroup($group);
$this->assertEquals(1, count($websites));
$this->assertEquals(date('Y-m-d'), date('Y-m-d', strtotime($websites[0]['ts_created'])));
// Updating the group to nothing
$group = '';
- Piwik_SitesManager_API::getInstance()->updateSite($idsite, "test toto@{}", $newMainUrl, $ecommerce = 0, $ips=null, $parametersExclude=null, $timezone=null, $currency=null, $group, $startDate = '2010-01-01' );
+ Piwik_SitesManager_API::getInstance()->updateSite($idsite, "test toto@{}", $newMainUrl, $ecommerce = 0, $ss = false, $ss_kwd = '', $ss_cat = null, $ips=null, $parametersExclude=null, $timezone=null, $currency=null, $group, $startDate = '2010-01-01' );
$websites = Piwik_SitesManager_API::getInstance()->getSitesFromGroup($group);
$this->assertEquals(1, count($websites));
$this->assertEquals('2010-01-01', date('Y-m-d', strtotime($websites[0]['ts_created'])));
@@ -739,7 +747,9 @@ class SitesManagerTest extends DatabaseTestCase
"http://piwiknew.fr");
$group = 'GROUP Before';
- $idsite = Piwik_SitesManager_API::getInstance()->addSite("site1",$urls, $ecommerce =1,$excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $group, $startDate = '2011-01-01');
+ $idsite = Piwik_SitesManager_API::getInstance()->addSite("site1",$urls, $ecommerce =1,
+ $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,
+ $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $group, $startDate = '2011-01-01');
$websites = Piwik_SitesManager_API::getInstance()->getSitesFromGroup($group);
$this->assertEquals(1, count($websites));
@@ -750,7 +760,9 @@ class SitesManagerTest extends DatabaseTestCase
"http://piwiknew2.fr");
$groupAfter = ' GROUP After';
- Piwik_SitesManager_API::getInstance()->updateSite($idsite, "test toto@{}",$newurls, $ecommerce = 0, $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $groupAfter);
+ Piwik_SitesManager_API::getInstance()->updateSite($idsite, "test toto@{}",$newurls, $ecommerce = 0,
+ $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,
+ $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $groupAfter);
// no result for the group before update
$websites = Piwik_SitesManager_API::getInstance()->getSitesFromGroup($group);
@@ -783,7 +795,7 @@ class SitesManagerTest extends DatabaseTestCase
$expectedGroups = array('group1','','group2');
foreach($groups as $group)
{
- Piwik_SitesManager_API::getInstance()->addSite("test toto@{}", 'http://example.org',$ecommerce=1,$excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $group);
+ Piwik_SitesManager_API::getInstance()->addSite("test toto@{}", 'http://example.org',$ecommerce=1,$siteSearch = null, $searchKeywordParameters = null, $searchCategoryParameters = null, $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $group);
}
$this->assertEquals($expectedGroups, Piwik_SitesManager_API::getInstance()->getSitesGroups());
@@ -807,7 +819,8 @@ class SitesManagerTest extends DatabaseTestCase
public function testAddSitesInvalidTimezone($timezone)
{
try {
- $idsite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'),$ecommerce=0, '', '', $timezone);
+ $idsite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'),$ecommerce=0,
+ $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,$ip= '', $params='', $timezone);
} catch (Exception $e) {
return;
}
@@ -823,7 +836,8 @@ class SitesManagerTest extends DatabaseTestCase
{
try {
$invalidCurrency = '€';
- $idsite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'),$ecommerce=0, '', 'UTC', $invalidCurrency);
+ $idsite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'),$ecommerce=0,
+ $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,'', 'UTC', $invalidCurrency);
} catch (Exception $e) {
return;
}
@@ -884,14 +898,21 @@ class SitesManagerTest extends DatabaseTestCase
// create a website and check that default currency and default timezone are set
// however, excluded IPs and excluded query Params are not returned
- $idsite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'),$ecommerce=1, '', '', $newDefaultTimezone);
+ $idsite = Piwik_SitesManager_API::getInstance()->addSite("site1",array('http://example.org'),$ecommerce=0,
+ $siteSearch = 0, $searchKeywordParameters = 'test1,test2', $searchCategoryParameters = 'test2,test1',
+ '', '', $newDefaultTimezone);
$site = new Piwik_Site($idsite);
$this->assertEquals($newDefaultTimezone, $site->getTimezone());
$this->assertEquals(date('Y-m-d'), $site->getCreationDate()->toString());
$this->assertEquals($newDefaultCurrency, $site->getCurrency());
- $this->assertEquals('', $site->getExcludedIps());
- $this->assertEquals('', $site->getExcludedQueryParameters());
- $this->assertTrue($site->isEcommerceEnabled());
+ $this->assertEquals('', $site->getExcludedIps());
+ $this->assertEquals('', $site->getExcludedQueryParameters());
+ $this->assertEquals('test1,test2', $site->getSearchKeywordParameters());
+ $this->assertEquals('test2,test1', $site->getSearchCategoryParameters());
+ $this->assertFalse($site->isSiteSearchEnabled());
+ $this->assertFalse(Piwik_Site::isSiteSearchEnabledFor($idsite));
+ $this->assertFalse($site->isEcommerceEnabled());
+ $this->assertFalse(Piwik_Site::isEcommerceEnabledFor($idsite));
}
/**
@@ -985,10 +1006,10 @@ class SitesManagerTest extends DatabaseTestCase
*/
public function testGetSitesFromTimezones()
{
- $idsite1 = Piwik_SitesManager_API::getInstance()->addSite("site3",array("http://piwik.org"),null,null,null,'UTC');
- $idsite2 = Piwik_SitesManager_API::getInstance()->addSite("site3",array("http://piwik.org"),null,null,null,'Pacific/Auckland');
- $idsite3 = Piwik_SitesManager_API::getInstance()->addSite("site3",array("http://piwik.org"),null,null,null,'Pacific/Auckland');
- $idsite4 = Piwik_SitesManager_API::getInstance()->addSite("site3",array("http://piwik.org"),null,null,null,'UTC+10');
+ $idsite1 = Piwik_SitesManager_API::getInstance()->addSite("site3",array("http://piwik.org"),null,$siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,null,null,'UTC');
+ $idsite2 = Piwik_SitesManager_API::getInstance()->addSite("site3",array("http://piwik.org"),null,$siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,null,null,'Pacific/Auckland');
+ $idsite3 = Piwik_SitesManager_API::getInstance()->addSite("site3",array("http://piwik.org"),null,$siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,null,null,'Pacific/Auckland');
+ $idsite4 = Piwik_SitesManager_API::getInstance()->addSite("site3",array("http://piwik.org"),null,$siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,null,null,'UTC+10');
$result = Piwik_SitesManager_API::getInstance()->getSitesIdFromTimezones(array('UTC+10', 'Pacific/Auckland'));
$this->assertEquals(array($idsite2,$idsite3,$idsite4), $result);
}
diff --git a/tests/PHPUnit/proxy/piwik.php b/tests/PHPUnit/proxy/piwik.php
index e19dba526d..e7b0efac73 100755
--- a/tests/PHPUnit/proxy/piwik.php
+++ b/tests/PHPUnit/proxy/piwik.php
@@ -34,4 +34,4 @@ Piwik_Site::clearCache();
Piwik_Common::deleteTrackerCache();
include PIWIK_INCLUDE_PATH . '/piwik.php';
-ob_flush();
+ob_end_flush();
diff --git a/tests/index.php b/tests/index.php
index 48bb5bb758..6a4e708988 100644
--- a/tests/index.php
+++ b/tests/index.php
@@ -5,7 +5,7 @@
<ul>
<li><a href='lib/visualphpunit/'>Run unit & integration tests in the browser.</a> <br/><i>(If you're using apache, make sure the mod_rewrite module is enabled.)</i></li>
- <li><a href=\"javascript/\">Run piwik.js Javascript unit & integration tests</a>. <br/><i>Note: the Javascript tests are not executed in Jenkins so must be run manually on major browsers after any change to piwik.js</i></li>
+ <li><a href="javascript/">Run piwik.js Javascript unit & integration tests</a>. <br/><i>Note: the Javascript tests are not executed in Jenkins so must be run manually on major browsers after any change to piwik.js</i></li>
</ul>
<h4>Configuring VisualPHPUnit:</h4>
diff --git a/tests/integration/expected/test_ImportLogs__Actions.getPageTitlesFollowingSiteSearch_month.xml b/tests/integration/expected/test_ImportLogs__Actions.getPageTitlesFollowingSiteSearch_month.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_ImportLogs__Actions.getPageTitlesFollowingSiteSearch_month.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_ImportLogs__Actions.getPageUrlsFollowingSiteSearch_month.xml b/tests/integration/expected/test_ImportLogs__Actions.getPageUrlsFollowingSiteSearch_month.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_ImportLogs__Actions.getPageUrlsFollowingSiteSearch_month.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_ImportLogs__Actions.getSiteSearchCategories_month.xml b/tests/integration/expected/test_ImportLogs__Actions.getSiteSearchCategories_month.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_ImportLogs__Actions.getSiteSearchCategories_month.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_ImportLogs__Actions.getSiteSearchKeywords_month.xml b/tests/integration/expected/test_ImportLogs__Actions.getSiteSearchKeywords_month.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_ImportLogs__Actions.getSiteSearchKeywords_month.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_ImportLogs__Actions.getSiteSearchNoResultKeywords_month.xml b/tests/integration/expected/test_ImportLogs__Actions.getSiteSearchNoResultKeywords_month.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_ImportLogs__Actions.getSiteSearchNoResultKeywords_month.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_ImportLogs__Actions.get_month.xml b/tests/integration/expected/test_ImportLogs__Actions.get_month.xml
index d7bb6059a8..e7e8a04cea 100755
--- a/tests/integration/expected/test_ImportLogs__Actions.get_month.xml
+++ b/tests/integration/expected/test_ImportLogs__Actions.get_month.xml
@@ -6,4 +6,7 @@
<nb_uniq_downloads>3</nb_uniq_downloads>
<nb_outlinks>0</nb_outlinks>
<nb_uniq_outlinks>0</nb_uniq_outlinks>
+ <nb_searches>0</nb_searches>
+ <nb_uniq_searches>0</nb_uniq_searches>
+ <nb_keywords>0</nb_keywords>
</result> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitlesFollowingSiteSearch_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitlesFollowingSiteSearch_day.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitlesFollowingSiteSearch_day.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitles_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitles_day.xml
index 4aff330ec5..e3df8a41dd 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitles_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageTitles_day.xml
@@ -65,8 +65,8 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>180</sum_time_spent>
- <avg_time_on_page>180</avg_time_on_page>
+ <sum_time_spent>900</sum_time_spent>
+ <avg_time_on_page>900</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
</row>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrlsFollowingSiteSearch_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrlsFollowingSiteSearch_day.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getPageUrlsFollowingSiteSearch_day.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getSiteSearchCategories_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getSiteSearchCategories_day.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getSiteSearchCategories_day.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getSiteSearchKeywords_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getSiteSearchKeywords_day.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getSiteSearchKeywords_day.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getSiteSearchNoResultKeywords_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getSiteSearchNoResultKeywords_day.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.getSiteSearchNoResultKeywords_day.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits__Actions.get_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.get_day.xml
index e0f88f84f4..26ee55e166 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits__Actions.get_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits__Actions.get_day.xml
@@ -6,4 +6,7 @@
<nb_uniq_downloads>1</nb_uniq_downloads>
<nb_outlinks>3</nb_outlinks>
<nb_uniq_outlinks>2</nb_uniq_outlinks>
+ <nb_searches>0</nb_searches>
+ <nb_uniq_searches>0</nb_uniq_searches>
+ <nb_keywords>0</nb_keywords>
</result> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_hideColumns___Actions.getPageTitles_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_hideColumns___Actions.getPageTitles_day.xml
index a0178e8a70..a7cee4a486 100755
--- a/tests/integration/expected/test_OneVisitorTwoVisits_hideColumns___Actions.getPageTitles_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_hideColumns___Actions.getPageTitles_day.xml
@@ -28,7 +28,7 @@
<row>
<label> Second page view - should be registered as URL</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
- <avg_time_on_page>180</avg_time_on_page>
+ <avg_time_on_page>900</avg_time_on_page>
<exit_rate>0%</exit_rate>
</row>
</result> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageTitles_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageTitles_day.xml
index 1179612cd4..8d363360e0 100755
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageTitles_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageTitles_day.xml
@@ -41,7 +41,7 @@
<sum_time_spent>180</sum_time_spent>
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>7</entry_nb_actions>
+ <entry_nb_actions>8</entry_nb_actions>
<entry_sum_visit_length>1621</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<avg_time_on_page>180</avg_time_on_page>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageUrls_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageUrls_day.xml
index 7fa327713e..170597cbf2 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageUrls_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getEntryPageUrls_day.xml
@@ -8,7 +8,7 @@
<sum_time_spent>180</sum_time_spent>
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>7</entry_nb_actions>
+ <entry_nb_actions>8</entry_nb_actions>
<entry_sum_visit_length>1621</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<avg_time_on_page>180</avg_time_on_page>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageTitles_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageTitles_day.xml
index 2ee22ef5cf..6ae7565bce 100755
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageTitles_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageTitles_day.xml
@@ -34,11 +34,12 @@
</subtable>
</row>
<row>
- <label> Looking at homepage (again)...</label>
+ <label> Looking at homepage after site search...</label>
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <nb_hits_following_search>1</nb_hits_following_search>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageUrls_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageUrls_day.xml
index 943302c205..4ebb7702a1 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageUrls_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getExitPageUrls_day.xml
@@ -6,6 +6,7 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <nb_hits_following_search>1</nb_hits_following_search>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlink_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlink_day.xml
index 5971863326..0f328b414d 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlink_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlink_day.xml
@@ -5,7 +5,7 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
- <sum_time_spent>540</sum_time_spent>
+ <sum_time_spent>432</sum_time_spent>
<url>http://dev.piwik.org/svn</url>
</row>
</result> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlinks_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlinks_day.xml
index 539d798e9b..1767641648 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlinks_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getOutlinks_day.xml
@@ -4,14 +4,14 @@
<label>dev.piwik.org</label>
<nb_visits>1</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>540</sum_time_spent>
+ <sum_time_spent>432</sum_time_spent>
<subtable>
<row>
<label>/svn</label>
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>2</nb_hits>
- <sum_time_spent>540</sum_time_spent>
+ <sum_time_spent>432</sum_time_spent>
<url>http://dev.piwik.org/svn</url>
</row>
</subtable>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitlesFollowingSiteSearch_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitlesFollowingSiteSearch_day.xml
new file mode 100644
index 0000000000..5e682370b7
--- /dev/null
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitlesFollowingSiteSearch_day.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <label> Looking at homepage after site search...</label>
+ <nb_visits>1</nb_visits>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_hits>1</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_following_search>1</nb_hits_following_search>
+ <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
+ <exit_nb_visits>1</exit_nb_visits>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
+ </row>
+</result> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitles_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitles_day.xml
index 4aff330ec5..f13f6b18c5 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitles_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageTitles_day.xml
@@ -41,7 +41,7 @@
<sum_time_spent>180</sum_time_spent>
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>7</entry_nb_actions>
+ <entry_nb_actions>8</entry_nb_actions>
<entry_sum_visit_length>1621</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<avg_time_on_page>180</avg_time_on_page>
@@ -49,11 +49,12 @@
<exit_rate>0%</exit_rate>
</row>
<row>
- <label> Looking at homepage (again)...</label>
+ <label> Looking at homepage after site search...</label>
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <nb_hits_following_search>1</nb_hits_following_search>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
@@ -65,8 +66,8 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>180</sum_time_spent>
- <avg_time_on_page>180</avg_time_on_page>
+ <sum_time_spent>792</sum_time_spent>
+ <avg_time_on_page>792</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
</row>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrl_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrl_day.xml
index cee7b54dd8..231c9e36f9 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrl_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrl_day.xml
@@ -6,6 +6,7 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <nb_hits_following_search>1</nb_hits_following_search>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrlsFollowingSiteSearch_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrlsFollowingSiteSearch_day.xml
new file mode 100644
index 0000000000..231c9e36f9
--- /dev/null
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrlsFollowingSiteSearch_day.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <label>/index.htm</label>
+ <nb_visits>1</nb_visits>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_hits>1</nb_hits>
+ <sum_time_spent>0</sum_time_spent>
+ <nb_hits_following_search>1</nb_hits_following_search>
+ <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
+ <exit_nb_visits>1</exit_nb_visits>
+ <avg_time_on_page>0</avg_time_on_page>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>100%</exit_rate>
+ <url>http://example.org/index.htm</url>
+ </row>
+</result> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml
index 838606a12e..53334ac973 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getPageUrls_day.xml
@@ -17,6 +17,7 @@
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
<sum_time_spent>0</sum_time_spent>
+ <nb_hits_following_search>1</nb_hits_following_search>
<exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
<exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
@@ -32,7 +33,7 @@
<sum_time_spent>180</sum_time_spent>
<entry_nb_uniq_visitors>1</entry_nb_uniq_visitors>
<entry_nb_visits>1</entry_nb_visits>
- <entry_nb_actions>7</entry_nb_actions>
+ <entry_nb_actions>8</entry_nb_actions>
<entry_sum_visit_length>1621</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
<avg_time_on_page>180</avg_time_on_page>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchCategories_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchCategories_day.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchCategories_day.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchKeywords_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchKeywords_day.xml
new file mode 100644
index 0000000000..cf119fe30a
--- /dev/null
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchKeywords_day.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <label>Banks Own The World</label>
+ <nb_visits>1</nb_visits>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_hits>1</nb_hits>
+ <sum_time_spent>108</sum_time_spent>
+ <nb_pages_per_search>1</nb_pages_per_search>
+ <avg_time_on_page>108</avg_time_on_page>
+ <bounce_rate>0%</bounce_rate>
+ <exit_rate>0%</exit_rate>
+ </row>
+</result> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchNoResultKeywords_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchNoResultKeywords_day.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.getSiteSearchNoResultKeywords_day.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.get_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.get_day.xml
index e0f88f84f4..1cc6441a80 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.get_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Actions.get_day.xml
@@ -6,4 +6,7 @@
<nb_uniq_downloads>1</nb_uniq_downloads>
<nb_outlinks>3</nb_outlinks>
<nb_uniq_outlinks>2</nb_uniq_outlinks>
+ <nb_searches>1</nb_searches>
+ <nb_uniq_searches>1</nb_uniq_searches>
+ <nb_keywords>1</nb_keywords>
</result> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Live.getLastVisitsDetails_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Live.getLastVisitsDetails_day.xml
index 60d3cca520..62e0cada67 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Live.getLastVisitsDetails_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Live.getLastVisitsDetails_day.xml
@@ -17,7 +17,7 @@
<type>goal</type>
<goalName>matching purchase.htm</goalName>
<revenue>1</revenue>
- <goalPageId>8</goalPageId>
+ <goalPageId>9</goalPageId>
<url>http://example.org/store/purchase.htm</url>
<icon>themes/default/images/goal.png</icon>
@@ -26,8 +26,8 @@
<type>action</type>
<url>http://example.org/store/purchase.htm</url>
<pageTitle>Checkout/Purchasing...</pageTitle>
- <pageIdAction>11</pageIdAction>
- <pageId>8</pageId>
+ <pageIdAction>12</pageIdAction>
+ <pageId>9</pageId>
<icon />
</row>
@@ -100,7 +100,7 @@
<visitConvertedIcon>themes/default/images/goal.png</visitConvertedIcon>
<visitEcommerceStatus>none</visitEcommerceStatus>
<visitEcommerceStatusIcon />
- <actions>7</actions>
+ <actions>8</actions>
<actionDetails>
<row>
<type>action</type>
@@ -164,8 +164,8 @@
<pageIdAction>5</pageIdAction>
<pageId>6</pageId>
- <timeSpent>180</timeSpent>
- <timeSpentPretty>3 min 0s</timeSpentPretty>
+ <timeSpent>72</timeSpent>
+ <timeSpentPretty>1 min 12s</timeSpentPretty>
<icon>themes/default/images/link.gif</icon>
</row>
<row>
@@ -178,11 +178,22 @@
<icon>themes/default/images/goal.png</icon>
</row>
<row>
+ <type>search</type>
+ <url />
+ <pageTitle>Banks Own The World</pageTitle>
+ <pageIdAction />
+ <pageId>7</pageId>
+
+ <timeSpent>108</timeSpent>
+ <timeSpentPretty>1 min 48s</timeSpentPretty>
+ <icon>themes/default/images/search_ico.png</icon>
+ </row>
+ <row>
<type>action</type>
<url>http://example.org/index.htm</url>
- <pageTitle>Looking at homepage (again)...</pageTitle>
- <pageIdAction>9</pageIdAction>
- <pageId>7</pageId>
+ <pageTitle>Looking at homepage after site search...</pageTitle>
+ <pageIdAction>10</pageIdAction>
+ <pageId>8</pageId>
<icon />
</row>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Provider.getProvider_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Provider.getProvider_day.xml
index 7b9b086c44..8d24e97834 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Provider.getProvider_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Provider.getProvider_day.xml
@@ -4,8 +4,8 @@
<label>Unknown</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>9</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>2</nb_visits_converted>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Referers.getRefererType_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Referers.getRefererType_day.xml
index 720d7da208..059dc07bda 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Referers.getRefererType_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Referers.getRefererType_day.xml
@@ -22,8 +22,8 @@
<label>Websites</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
- <nb_actions>7</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>8</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>0</bounce_count>
<goals>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Referers.getWebsites_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Referers.getWebsites_day.xml
index 2450421efd..068d13396d 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Referers.getWebsites_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__Referers.getWebsites_day.xml
@@ -4,8 +4,8 @@
<label>referer.com</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
- <nb_actions>7</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>8</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>0</bounce_count>
<goals>
@@ -22,8 +22,8 @@
<label>http://referer.com/page.htm?param=valuewith some spaces</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
- <nb_actions>7</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>8</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>0</bounce_count>
<nb_visits_converted>1</nb_visits_converted>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getCity_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getCity_day.xml
index f52444b741..c34243c281 100755
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getCity_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getCity_day.xml
@@ -4,8 +4,8 @@
<label>Unknown, France</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>9</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>1</bounce_count>
<goals>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getContinent_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getContinent_day.xml
index 280b7fd6fc..e35ca641ed 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getContinent_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getContinent_day.xml
@@ -4,8 +4,8 @@
<label>Europe</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>9</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>1</bounce_count>
<goals>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getCountry_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getCountry_day.xml
index 0ddbedd976..bfc75b9891 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getCountry_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getCountry_day.xml
@@ -4,8 +4,8 @@
<label>France</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>9</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>1</bounce_count>
<goals>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getRegion_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getRegion_day.xml
index 8147c389d0..ba67b4e753 100755
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getRegion_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserCountry.getRegion_day.xml
@@ -4,8 +4,8 @@
<label>Unknown, France</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>9</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>1</bounce_count>
<goals>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getBrowserType_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getBrowserType_day.xml
index 6d13aaf736..069f5b4dac 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getBrowserType_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getBrowserType_day.xml
@@ -4,8 +4,8 @@
<label>Gecko (Firefox)</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>9</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>2</nb_visits_converted>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getBrowserVersion_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getBrowserVersion_day.xml
index 8210497910..5fb2fd41a1 100755
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getBrowserVersion_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getBrowserVersion_day.xml
@@ -4,8 +4,8 @@
<label>Firefox 3.6</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>9</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>2</nb_visits_converted>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getBrowser_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getBrowser_day.xml
index 84860eba92..da6bc517d2 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getBrowser_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getBrowser_day.xml
@@ -4,8 +4,8 @@
<label>Firefox</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>9</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>2</nb_visits_converted>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getConfiguration_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getConfiguration_day.xml
index 1a63f1933a..e85da560ae 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getConfiguration_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getConfiguration_day.xml
@@ -4,8 +4,8 @@
<label>Windows XP / Firefox / 1024x768</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>9</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>2</nb_visits_converted>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getMobileVsDesktop_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getMobileVsDesktop_day.xml
index fe566ebe7c..5d605d853e 100755
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getMobileVsDesktop_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getMobileVsDesktop_day.xml
@@ -4,8 +4,8 @@
<label>Desktop</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>9</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>2</nb_visits_converted>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getOSFamily_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getOSFamily_day.xml
index 5c3a3311e3..c9f66c8db6 100755
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getOSFamily_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getOSFamily_day.xml
@@ -4,8 +4,8 @@
<label>Windows</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>9</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>2</nb_visits_converted>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getOS_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getOS_day.xml
index 32ec517b60..b895a61804 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getOS_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getOS_day.xml
@@ -4,8 +4,8 @@
<label>Windows XP</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>9</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>2</nb_visits_converted>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getResolution_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getResolution_day.xml
index ede209680d..9cecc447c9 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getResolution_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getResolution_day.xml
@@ -4,8 +4,8 @@
<label>1024x768</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>9</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>2</nb_visits_converted>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getWideScreen_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getWideScreen_day.xml
index f1acb38cb9..c8f6ef32b4 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getWideScreen_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__UserSettings.getWideScreen_day.xml
@@ -4,8 +4,8 @@
<label>Normal</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>9</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>2</nb_visits_converted>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitTime.getByDayOfWeek_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitTime.getByDayOfWeek_day.xml
index 7052ae2d51..02907424a5 100755
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitTime.getByDayOfWeek_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitTime.getByDayOfWeek_day.xml
@@ -29,7 +29,7 @@
<label>Saturday</label>
<nb_visits>2</nb_visits>
<bounce_count>1</bounce_count>
- <nb_actions>8</nb_actions>
+ <nb_actions>9</nb_actions>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits_converted>2</nb_visits_converted>
<sum_visit_length>1621</sum_visit_length>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitTime.getVisitInformationPerLocalTime_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitTime.getVisitInformationPerLocalTime_day.xml
index b95f277bfc..d3a8c80707 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitTime.getVisitInformationPerLocalTime_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitTime.getVisitInformationPerLocalTime_day.xml
@@ -124,8 +124,8 @@
<label>12h</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>9</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>2</nb_visits_converted>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitTime.getVisitInformationPerServerTime_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitTime.getVisitInformationPerServerTime_day.xml
index 5f96c55a5b..40e2376055 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitTime.getVisitInformationPerServerTime_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitTime.getVisitInformationPerServerTime_day.xml
@@ -114,8 +114,8 @@
<label>11h</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
- <nb_actions>7</nb_actions>
- <max_actions>7</max_actions>
+ <nb_actions>8</nb_actions>
+ <max_actions>8</max_actions>
<sum_visit_length>1621</sum_visit_length>
<bounce_count>0</bounce_count>
<goals>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitorInterest.getNumberOfVisitsPerPage_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitorInterest.getNumberOfVisitsPerPage_day.xml
index 30a3a7f161..5a89cd9c00 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitorInterest.getNumberOfVisitsPerPage_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitorInterest.getNumberOfVisitsPerPage_day.xml
@@ -22,11 +22,11 @@
</row>
<row>
<label>6-7 pages</label>
- <nb_visits>1</nb_visits>
+ <nb_visits>0</nb_visits>
</row>
<row>
<label>8-10 pages</label>
- <nb_visits>0</nb_visits>
+ <nb_visits>1</nb_visits>
</row>
<row>
<label>11-14 pages</label>
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.getActions_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.getActions_day.xml
index e52ca0ecb1..39535fab28 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.getActions_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.getActions_day.xml
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8" ?>
-<result>8</result> \ No newline at end of file
+<result>9</result> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.getMaxActions_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.getMaxActions_day.xml
index 773871bab0..e52ca0ecb1 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.getMaxActions_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.getMaxActions_day.xml
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8" ?>
-<result>7</result> \ No newline at end of file
+<result>8</result> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.get_day.xml b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.get_day.xml
index 40498bf45d..368da87f68 100644
--- a/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_OneVisitorTwoVisits_withCookieSupport__VisitsSummary.get_day.xml
@@ -2,12 +2,12 @@
<result>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
- <nb_actions>8</nb_actions>
+ <nb_actions>9</nb_actions>
<nb_visits_converted>2</nb_visits_converted>
<bounce_count>1</bounce_count>
<sum_visit_length>1621</sum_visit_length>
- <max_actions>7</max_actions>
+ <max_actions>8</max_actions>
<bounce_rate>50%</bounce_rate>
- <nb_actions_per_visit>4</nb_actions_per_visit>
+ <nb_actions_per_visit>4.5</nb_actions_per_visit>
<avg_time_on_site>811</avg_time_on_site>
</result> \ No newline at end of file
diff --git a/tests/integration/expected/test_OneVisitor_LongUrlsTruncated__Actions.getPageUrls_day.xml b/tests/integration/expected/test_OneVisitor_LongUrlsTruncated__Actions.getPageUrls_day.xml
index 9b269d4307..d1914d0e11 100644
--- a/tests/integration/expected/test_OneVisitor_LongUrlsTruncated__Actions.getPageUrls_day.xml
+++ b/tests/integration/expected/test_OneVisitor_LongUrlsTruncated__Actions.getPageUrls_day.xml
@@ -67,7 +67,6 @@
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
- <url>http://example.org/category/Page3</url>
</row>
</subtable>
</row>
@@ -80,6 +79,5 @@
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
- <url>http://example.org/category.htm</url>
</row>
</result> \ No newline at end of file
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml
index cb3e089ec9..16d97c0950 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Actions.getPageTitles_firstSite_lastN__API.getProcessedReport_day.xml
@@ -66,7 +66,7 @@
<label>second visitor</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <avg_time_on_page>00:06:00</avg_time_on_page>
+ <avg_time_on_page>00:07:30</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
</row>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_Goals.getDaysToConversion_firstSite_lastN__API.getProcessedReport_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_Goals.getDaysToConversion_firstSite_lastN__API.getProcessedReport_day.xml
index a0d9100aac..5134e25aeb 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_Goals.getDaysToConversion_firstSite_lastN__API.getProcessedReport_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_Goals.getDaysToConversion_firstSite_lastN__API.getProcessedReport_day.xml
@@ -8,6 +8,7 @@
<module>Goals</module>
<action>getDaysToConversion</action>
<dimension>Days to Conversion</dimension>
+ <constantRowsCount>1</constantRowsCount>
<metrics>
<nb_conversions>Conversions</nb_conversions>
@@ -21,7 +22,7 @@
<revenue_per_visit>Revenue per Visit</revenue_per_visit>
</processedMetricsGoal>
- <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Goals&amp;apiAction=getDaysToConversion&amp;period=range&amp;date=2010-01-03%2C2010-01-09</imageGraphUrl>
+ <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Goals&amp;apiAction=getDaysToConversion&amp;period=range&amp;date=2010-01-03,2010-01-09</imageGraphUrl>
<uniqueId>Goals_getDaysToConversion</uniqueId>
</metadata>
@@ -35,7 +36,7 @@
<result prettyDate="Sunday 3 January 2010">
<row>
<label>0 days</label>
- <nb_conversions>2</nb_conversions>
+ <nb_conversions>1</nb_conversions>
<revenue>$ 0</revenue>
</row>
<row>
@@ -45,7 +46,7 @@
</row>
<row>
<label>2 days</label>
- <nb_conversions>0</nb_conversions>
+ <nb_conversions>1</nb_conversions>
<revenue>$ 0</revenue>
</row>
<row>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_MultiSites.getAll_firstSite_lastN__API.getProcessedReport_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_MultiSites.getAll_firstSite_lastN__API.getProcessedReport_day.xml
index bfe96ba215..2b634c95e8 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_MultiSites.getAll_firstSite_lastN__API.getProcessedReport_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_MultiSites.getAll_firstSite_lastN__API.getProcessedReport_day.xml
@@ -13,6 +13,8 @@
<visits_evolution>Visits Evolution</visits_evolution>
<nb_actions>Actions</nb_actions>
<actions_evolution>Actions Evolution</actions_evolution>
+ <nb_pageviews>Pageviews</nb_pageviews>
+ <pageviews_evolution>Pageviews Evolution</pageviews_evolution>
<revenue>Revenue</revenue>
<revenue_evolution>Revenue Evolution</revenue_evolution>
<nb_conversions>Conversions</nb_conversions>
@@ -36,7 +38,8 @@
<exit_rate>The percentage of visits that left the website after viewing this page.</exit_rate>
</metricsDocumentation>
- <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=MultiSites&amp;apiAction=getAll&amp;period=range&amp;date=2010-01-03%2C2010-01-09</imageGraphUrl>
+ <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=MultiSites&amp;apiAction=getAll&amp;period=range&amp;date=2010-01-03,2010-01-09</imageGraphUrl>
+ <imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=MultiSites&amp;apiAction=getAll&amp;period=day&amp;date=2010-01-03,2010-01-09</imageGraphEvolutionUrl>
<uniqueId>MultiSites_getAll</uniqueId>
</metadata>
@@ -46,6 +49,8 @@
<visits_evolution>Visits Evolution</visits_evolution>
<nb_actions>Actions</nb_actions>
<actions_evolution>Actions Evolution</actions_evolution>
+ <nb_pageviews>Pageviews</nb_pageviews>
+ <pageviews_evolution>Pageviews Evolution</pageviews_evolution>
<revenue>Revenue</revenue>
<revenue_evolution>Revenue Evolution</revenue_evolution>
<nb_conversions>Conversions</nb_conversions>
@@ -60,11 +65,13 @@
<result prettyDate="Sunday 3 January 2010">
<row>
<label>Site 1</label>
+ <nb_pageviews>4</nb_pageviews>
<revenue>$ 10</revenue>
- <nb_actions>1</nb_actions>
- <nb_visits>1</nb_visits>
+ <nb_actions>7</nb_actions>
+ <nb_visits>2</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<revenue_evolution>100%</revenue_evolution>
<nb_conversions>0</nb_conversions>
<nb_conversions_evolution>0</nb_conversions_evolution>
@@ -77,12 +84,14 @@
<result prettyDate="Monday 4 January 2010">
<row>
<label>Site 1</label>
- <nb_actions>2</nb_actions>
+ <nb_pageviews>2</nb_pageviews>
+ <nb_actions>4</nb_actions>
<nb_visits>1</nb_visits>
- <visits_evolution>0%</visits_evolution>
- <actions_evolution>100%</actions_evolution>
- <revenue_evolution>-100%</revenue_evolution>
+ <visits_evolution>-50%</visits_evolution>
+ <actions_evolution>-42.86%</actions_evolution>
+ <pageviews_evolution>-50%</pageviews_evolution>
<revenue>$ 0</revenue>
+ <revenue_evolution>0</revenue_evolution>
<nb_conversions>0</nb_conversions>
<nb_conversions_evolution>0</nb_conversions_evolution>
<orders>0</orders>
@@ -92,10 +101,12 @@
</row>
<row>
<label>Site 2</label>
- <nb_actions>2</nb_actions>
+ <nb_pageviews>4</nb_pageviews>
+ <nb_actions>4</nb_actions>
<nb_visits>1</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<revenue>$ 0</revenue>
<revenue_evolution>0</revenue_evolution>
<nb_conversions>0</nb_conversions>
@@ -109,11 +120,13 @@
<result prettyDate="Tuesday 5 January 2010">
<row>
<label>Site 1</label>
+ <nb_pageviews>10</nb_pageviews>
<revenue>$ 5</revenue>
<nb_actions>5</nb_actions>
<nb_visits>1</nb_visits>
<visits_evolution>0%</visits_evolution>
- <actions_evolution>150%</actions_evolution>
+ <actions_evolution>25%</actions_evolution>
+ <pageviews_evolution>400%</pageviews_evolution>
<revenue_evolution>100%</revenue_evolution>
<nb_conversions>0</nb_conversions>
<nb_conversions_evolution>0</nb_conversions_evolution>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__Goals.get_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__Goals.get_day.xml
index 6dc2190ded..94810d3b56 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__Goals.get_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__Goals.get_day.xml
@@ -3,8 +3,10 @@
<result idSite="1">
<nb_conversions>2</nb_conversions>
<nb_visits_converted>1</nb_visits_converted>
- <conversion_rate>100</conversion_rate>
+ <conversion_rate>50</conversion_rate>
<revenue>10</revenue>
</result>
<result idSite="2" />
+ <result idSite="3" />
+ <result idSite="4" />
</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__Goals.get_month.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__Goals.get_month.xml
index 5fee61a930..981b5cc805 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__Goals.get_month.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__Goals.get_month.xml
@@ -3,7 +3,7 @@
<result idSite="1">
<nb_conversions>3</nb_conversions>
<nb_visits_converted>3</nb_visits_converted>
- <conversion_rate>100</conversion_rate>
+ <conversion_rate>75</conversion_rate>
<revenue>15</revenue>
</result>
<result idSite="2">
@@ -11,4 +11,6 @@
<nb_visits_converted>1</nb_visits_converted>
<conversion_rate>100</conversion_rate>
</result>
+ <result idSite="3" />
+ <result idSite="4" />
</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_day.xml
index 122c2f4460..fae6c41d32 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_day.xml
@@ -2,15 +2,17 @@
<results>
<result idSite="1">
<nb_uniq_visitors>1</nb_uniq_visitors>
- <nb_visits>1</nb_visits>
- <nb_actions>1</nb_actions>
+ <nb_visits>2</nb_visits>
+ <nb_actions>7</nb_actions>
<nb_visits_converted>1</nb_visits_converted>
<bounce_count>1</bounce_count>
<sum_visit_length />
- <max_actions>1</max_actions>
- <bounce_rate>100%</bounce_rate>
- <nb_actions_per_visit>1</nb_actions_per_visit>
+ <max_actions>6</max_actions>
+ <bounce_rate>50%</bounce_rate>
+ <nb_actions_per_visit>3.5</nb_actions_per_visit>
<avg_time_on_site>0</avg_time_on_site>
</result>
<result idSite="2" />
+ <result idSite="3" />
+ <result idSite="4" />
</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_month.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_month.xml
index a541c425e7..276cdb143f 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_month.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_NotLastNPeriods__VisitsSummary.get_month.xml
@@ -1,27 +1,29 @@
<?xml version="1.0" encoding="utf-8" ?>
<results>
<result idSite="1">
- <nb_uniq_visitors>2</nb_uniq_visitors>
- <nb_visits>3</nb_visits>
- <nb_actions>8</nb_actions>
+ <nb_uniq_visitors>3</nb_uniq_visitors>
+ <nb_visits>4</nb_visits>
+ <nb_actions>16</nb_actions>
<nb_visits_converted>3</nb_visits_converted>
<bounce_count>1</bounce_count>
<sum_visit_length>1263</sum_visit_length>
- <max_actions>5</max_actions>
- <bounce_rate>33%</bounce_rate>
- <nb_actions_per_visit>2.7</nb_actions_per_visit>
- <avg_time_on_site>421</avg_time_on_site>
+ <max_actions>6</max_actions>
+ <bounce_rate>25%</bounce_rate>
+ <nb_actions_per_visit>4</nb_actions_per_visit>
+ <avg_time_on_site>316</avg_time_on_site>
</result>
<result idSite="2">
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
- <nb_actions>2</nb_actions>
+ <nb_actions>4</nb_actions>
<nb_visits_converted>1</nb_visits_converted>
<bounce_count />
<sum_visit_length>1</sum_visit_length>
- <max_actions>2</max_actions>
+ <max_actions>4</max_actions>
<bounce_rate>0%</bounce_rate>
- <nb_actions_per_visit>2</nb_actions_per_visit>
+ <nb_actions_per_visit>4</nb_actions_per_visit>
<avg_time_on_site>1</avg_time_on_site>
</result>
+ <result idSite="3" />
+ <result idSite="4" />
</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_day.xml
index d807d81aed..7e0e17e65b 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_day.xml
@@ -4,7 +4,7 @@
<result date="2010-01-03">
<row>
<label>0 days</label>
- <nb_conversions>2</nb_conversions>
+ <nb_conversions>1</nb_conversions>
</row>
<row>
<label>1 day</label>
@@ -12,7 +12,7 @@
</row>
<row>
<label>2 days</label>
- <nb_conversions>0</nb_conversions>
+ <nb_conversions>1</nb_conversions>
</row>
<row>
<label>3 days</label>
@@ -189,4 +189,22 @@
<result date="2010-01-08" />
<result date="2010-01-09" />
</result>
+ <result idSite="3">
+ <result date="2010-01-03" />
+ <result date="2010-01-04" />
+ <result date="2010-01-05" />
+ <result date="2010-01-06" />
+ <result date="2010-01-07" />
+ <result date="2010-01-08" />
+ <result date="2010-01-09" />
+ </result>
+ <result idSite="4">
+ <result date="2010-01-03" />
+ <result date="2010-01-04" />
+ <result date="2010-01-05" />
+ <result date="2010-01-06" />
+ <result date="2010-01-07" />
+ <result date="2010-01-08" />
+ <result date="2010-01-09" />
+ </result>
</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_month.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_month.xml
index ae27b56974..209501c13b 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_month.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_month.xml
@@ -4,7 +4,7 @@
<result date="2010-01">
<row>
<label>0 days</label>
- <nb_conversions>2</nb_conversions>
+ <nb_conversions>1</nb_conversions>
</row>
<row>
<label>1 day</label>
@@ -12,7 +12,7 @@
</row>
<row>
<label>2 days</label>
- <nb_conversions>1</nb_conversions>
+ <nb_conversions>2</nb_conversions>
</row>
<row>
<label>3 days</label>
@@ -132,4 +132,22 @@
<result date="2010-06" />
<result date="2010-07" />
</result>
+ <result idSite="3">
+ <result date="2010-01" />
+ <result date="2010-02" />
+ <result date="2010-03" />
+ <result date="2010-04" />
+ <result date="2010-05" />
+ <result date="2010-06" />
+ <result date="2010-07" />
+ </result>
+ <result idSite="4">
+ <result date="2010-01" />
+ <result date="2010-02" />
+ <result date="2010-03" />
+ <result date="2010-04" />
+ <result date="2010-05" />
+ <result date="2010-06" />
+ <result date="2010-07" />
+ </result>
</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_week.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_week.xml
index d6ebb9ca25..7455e5f6b1 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_week.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_week.xml
@@ -4,7 +4,7 @@
<result date="From 2009-12-28 to 2010-01-03">
<row>
<label>0 days</label>
- <nb_conversions>2</nb_conversions>
+ <nb_conversions>1</nb_conversions>
</row>
<row>
<label>1 day</label>
@@ -12,7 +12,7 @@
</row>
<row>
<label>2 days</label>
- <nb_conversions>0</nb_conversions>
+ <nb_conversions>1</nb_conversions>
</row>
<row>
<label>3 days</label>
@@ -189,4 +189,22 @@
<result date="From 2010-02-01 to 2010-02-07" />
<result date="From 2010-02-08 to 2010-02-14" />
</result>
+ <result idSite="3">
+ <result date="From 2009-12-28 to 2010-01-03" />
+ <result date="From 2010-01-04 to 2010-01-10" />
+ <result date="From 2010-01-11 to 2010-01-17" />
+ <result date="From 2010-01-18 to 2010-01-24" />
+ <result date="From 2010-01-25 to 2010-01-31" />
+ <result date="From 2010-02-01 to 2010-02-07" />
+ <result date="From 2010-02-08 to 2010-02-14" />
+ </result>
+ <result idSite="4">
+ <result date="From 2009-12-28 to 2010-01-03" />
+ <result date="From 2010-01-04 to 2010-01-10" />
+ <result date="From 2010-01-11 to 2010-01-17" />
+ <result date="From 2010-01-18 to 2010-01-24" />
+ <result date="From 2010-01-25 to 2010-01-31" />
+ <result date="From 2010-02-01 to 2010-02-07" />
+ <result date="From 2010-02-08 to 2010-02-14" />
+ </result>
</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_year.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_year.xml
index 715faf7ba4..45fd97da06 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_year.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__Goals.getDaysToConversion_year.xml
@@ -4,7 +4,7 @@
<result date="2010">
<row>
<label>0 days</label>
- <nb_conversions>2</nb_conversions>
+ <nb_conversions>1</nb_conversions>
</row>
<row>
<label>1 day</label>
@@ -12,7 +12,7 @@
</row>
<row>
<label>2 days</label>
- <nb_conversions>1</nb_conversions>
+ <nb_conversions>2</nb_conversions>
</row>
<row>
<label>3 days</label>
@@ -132,4 +132,22 @@
<result date="2015" />
<result date="2016" />
</result>
+ <result idSite="3">
+ <result date="2010" />
+ <result date="2011" />
+ <result date="2012" />
+ <result date="2013" />
+ <result date="2014" />
+ <result date="2015" />
+ <result date="2016" />
+ </result>
+ <result idSite="4">
+ <result date="2010" />
+ <result date="2011" />
+ <result date="2012" />
+ <result date="2013" />
+ <result date="2014" />
+ <result date="2015" />
+ <result date="2016" />
+ </result>
</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_day.xml
index 9e1aefe6a0..532336cd88 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_day.xml
@@ -3,11 +3,13 @@
<result date="2010-01-03">
<row>
<label>Site 1</label>
+ <nb_pageviews>4</nb_pageviews>
<revenue>10</revenue>
- <nb_actions>1</nb_actions>
- <nb_visits>1</nb_visits>
+ <nb_actions>7</nb_actions>
+ <nb_visits>2</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<revenue_evolution>100%</revenue_evolution>
<idsite>1</idsite>
</row>
@@ -15,30 +17,35 @@
<result date="2010-01-04">
<row>
<label>Site 1</label>
- <nb_actions>2</nb_actions>
+ <nb_pageviews>2</nb_pageviews>
+ <nb_actions>4</nb_actions>
<nb_visits>1</nb_visits>
- <visits_evolution>0%</visits_evolution>
- <actions_evolution>100%</actions_evolution>
- <revenue_evolution>-100%</revenue_evolution>
+ <visits_evolution>-50%</visits_evolution>
+ <actions_evolution>-42.86%</actions_evolution>
+ <pageviews_evolution>-50%</pageviews_evolution>
<idsite>1</idsite>
</row>
<row>
<label>Site 2</label>
- <nb_actions>2</nb_actions>
+ <nb_pageviews>4</nb_pageviews>
+ <nb_actions>4</nb_actions>
<nb_visits>1</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<idsite>2</idsite>
</row>
</result>
<result date="2010-01-05">
<row>
<label>Site 1</label>
+ <nb_pageviews>10</nb_pageviews>
<revenue>5</revenue>
<nb_actions>5</nb_actions>
<nb_visits>1</nb_visits>
<visits_evolution>0%</visits_evolution>
- <actions_evolution>150%</actions_evolution>
+ <actions_evolution>25%</actions_evolution>
+ <pageviews_evolution>400%</pageviews_evolution>
<revenue_evolution>100%</revenue_evolution>
<idsite>1</idsite>
</row>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_month.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_month.xml
index 0ef57b143f..d338445eb6 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_month.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_month.xml
@@ -3,20 +3,24 @@
<result date="2010-01">
<row>
<label>Site 1</label>
+ <nb_pageviews>16</nb_pageviews>
<revenue>15</revenue>
- <nb_actions>8</nb_actions>
- <nb_visits>3</nb_visits>
+ <nb_actions>16</nb_actions>
+ <nb_visits>4</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<revenue_evolution>100%</revenue_evolution>
<idsite>1</idsite>
</row>
<row>
<label>Site 2</label>
- <nb_actions>2</nb_actions>
+ <nb_pageviews>4</nb_pageviews>
+ <nb_actions>4</nb_actions>
<nb_visits>1</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<idsite>2</idsite>
</row>
</result>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_week.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_week.xml
index c36276fb0e..b6e7b8d9e4 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_week.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_week.xml
@@ -3,11 +3,13 @@
<result date="From 2009-12-28 to 2010-01-03">
<row>
<label>Site 1</label>
+ <nb_pageviews>4</nb_pageviews>
<revenue>10</revenue>
- <nb_actions>1</nb_actions>
- <nb_visits>1</nb_visits>
+ <nb_actions>7</nb_actions>
+ <nb_visits>2</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<revenue_evolution>100%</revenue_evolution>
<idsite>1</idsite>
</row>
@@ -15,20 +17,24 @@
<result date="From 2010-01-04 to 2010-01-10">
<row>
<label>Site 1</label>
+ <nb_pageviews>12</nb_pageviews>
<revenue>5</revenue>
- <nb_actions>7</nb_actions>
+ <nb_actions>9</nb_actions>
<nb_visits>2</nb_visits>
- <visits_evolution>100%</visits_evolution>
- <actions_evolution>100%</actions_evolution>
- <revenue_evolution>100%</revenue_evolution>
+ <visits_evolution>0%</visits_evolution>
+ <actions_evolution>28.57%</actions_evolution>
+ <pageviews_evolution>200%</pageviews_evolution>
+ <revenue_evolution>-50%</revenue_evolution>
<idsite>1</idsite>
</row>
<row>
<label>Site 2</label>
- <nb_actions>2</nb_actions>
+ <nb_pageviews>4</nb_pageviews>
+ <nb_actions>4</nb_actions>
<nb_visits>1</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<idsite>2</idsite>
</row>
</result>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_year.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_year.xml
index 399ae9b238..d1f344bd2d 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_year.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions__MultiSites.getAll_year.xml
@@ -3,20 +3,24 @@
<result date="2010">
<row>
<label>Site 1</label>
+ <nb_pageviews>16</nb_pageviews>
<revenue>15</revenue>
- <nb_actions>8</nb_actions>
- <nb_visits>3</nb_visits>
+ <nb_actions>16</nb_actions>
+ <nb_visits>4</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<revenue_evolution>100%</revenue_evolution>
<idsite>1</idsite>
</row>
<row>
<label>Site 2</label>
- <nb_actions>2</nb_actions>
+ <nb_pageviews>4</nb_pageviews>
+ <nb_actions>4</nb_actions>
<nb_visits>1</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<idsite>2</idsite>
</row>
</result>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_getMetricsFromDifferentReports__VisitsSummary.get_range.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_getMetricsFromDifferentReports__VisitsSummary.get_range.xml
index f3834129a6..f78cf18408 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_getMetricsFromDifferentReports__VisitsSummary.get_range.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_getMetricsFromDifferentReports__VisitsSummary.get_range.xml
@@ -1,11 +1,13 @@
<?xml version="1.0" encoding="utf-8" ?>
<results>
<result idSite="1">
- <nb_visits>3</nb_visits>
- <Goal_conversion_rate>100</Goal_conversion_rate>
+ <nb_visits>4</nb_visits>
+ <Goal_conversion_rate>75</Goal_conversion_rate>
</result>
<result idSite="2">
<nb_visits>1</nb_visits>
<Goal_conversion_rate>100</Goal_conversion_rate>
</result>
+ <result idSite="3" />
+ <result idSite="4" />
</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_day.xml
index 79b5bdab1b..b0b6f768a3 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_day.xml
@@ -3,7 +3,7 @@
<result date="2010-01-03">
<row>
<label>0 days</label>
- <nb_conversions>2</nb_conversions>
+ <nb_conversions>1</nb_conversions>
</row>
<row>
<label>1 day</label>
@@ -11,7 +11,7 @@
</row>
<row>
<label>2 days</label>
- <nb_conversions>0</nb_conversions>
+ <nb_conversions>1</nb_conversions>
</row>
<row>
<label>3 days</label>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_month.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_month.xml
index 7cab72dbf6..fbf6083fa1 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_month.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_month.xml
@@ -3,7 +3,7 @@
<result date="2010-01">
<row>
<label>0 days</label>
- <nb_conversions>2</nb_conversions>
+ <nb_conversions>1</nb_conversions>
</row>
<row>
<label>1 day</label>
@@ -11,7 +11,7 @@
</row>
<row>
<label>2 days</label>
- <nb_conversions>1</nb_conversions>
+ <nb_conversions>2</nb_conversions>
</row>
<row>
<label>3 days</label>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_week.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_week.xml
index 08c5ce524f..15b8e00fda 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_week.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_week.xml
@@ -3,7 +3,7 @@
<result date="From 2009-12-28 to 2010-01-03">
<row>
<label>0 days</label>
- <nb_conversions>2</nb_conversions>
+ <nb_conversions>1</nb_conversions>
</row>
<row>
<label>1 day</label>
@@ -11,7 +11,7 @@
</row>
<row>
<label>2 days</label>
- <nb_conversions>0</nb_conversions>
+ <nb_conversions>1</nb_conversions>
</row>
<row>
<label>3 days</label>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_year.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_year.xml
index e47c96a000..059d0f9056 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_year.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___Goals.getDaysToConversion_year.xml
@@ -3,7 +3,7 @@
<result date="2010">
<row>
<label>0 days</label>
- <nb_conversions>2</nb_conversions>
+ <nb_conversions>1</nb_conversions>
</row>
<row>
<label>1 day</label>
@@ -11,7 +11,7 @@
</row>
<row>
<label>2 days</label>
- <nb_conversions>1</nb_conversions>
+ <nb_conversions>2</nb_conversions>
</row>
<row>
<label>3 days</label>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_day.xml
index 9e1aefe6a0..532336cd88 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_day.xml
@@ -3,11 +3,13 @@
<result date="2010-01-03">
<row>
<label>Site 1</label>
+ <nb_pageviews>4</nb_pageviews>
<revenue>10</revenue>
- <nb_actions>1</nb_actions>
- <nb_visits>1</nb_visits>
+ <nb_actions>7</nb_actions>
+ <nb_visits>2</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<revenue_evolution>100%</revenue_evolution>
<idsite>1</idsite>
</row>
@@ -15,30 +17,35 @@
<result date="2010-01-04">
<row>
<label>Site 1</label>
- <nb_actions>2</nb_actions>
+ <nb_pageviews>2</nb_pageviews>
+ <nb_actions>4</nb_actions>
<nb_visits>1</nb_visits>
- <visits_evolution>0%</visits_evolution>
- <actions_evolution>100%</actions_evolution>
- <revenue_evolution>-100%</revenue_evolution>
+ <visits_evolution>-50%</visits_evolution>
+ <actions_evolution>-42.86%</actions_evolution>
+ <pageviews_evolution>-50%</pageviews_evolution>
<idsite>1</idsite>
</row>
<row>
<label>Site 2</label>
- <nb_actions>2</nb_actions>
+ <nb_pageviews>4</nb_pageviews>
+ <nb_actions>4</nb_actions>
<nb_visits>1</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<idsite>2</idsite>
</row>
</result>
<result date="2010-01-05">
<row>
<label>Site 1</label>
+ <nb_pageviews>10</nb_pageviews>
<revenue>5</revenue>
<nb_actions>5</nb_actions>
<nb_visits>1</nb_visits>
<visits_evolution>0%</visits_evolution>
- <actions_evolution>150%</actions_evolution>
+ <actions_evolution>25%</actions_evolution>
+ <pageviews_evolution>400%</pageviews_evolution>
<revenue_evolution>100%</revenue_evolution>
<idsite>1</idsite>
</row>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_month.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_month.xml
index 0ef57b143f..d338445eb6 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_month.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_month.xml
@@ -3,20 +3,24 @@
<result date="2010-01">
<row>
<label>Site 1</label>
+ <nb_pageviews>16</nb_pageviews>
<revenue>15</revenue>
- <nb_actions>8</nb_actions>
- <nb_visits>3</nb_visits>
+ <nb_actions>16</nb_actions>
+ <nb_visits>4</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<revenue_evolution>100%</revenue_evolution>
<idsite>1</idsite>
</row>
<row>
<label>Site 2</label>
- <nb_actions>2</nb_actions>
+ <nb_pageviews>4</nb_pageviews>
+ <nb_actions>4</nb_actions>
<nb_visits>1</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<idsite>2</idsite>
</row>
</result>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_week.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_week.xml
index c36276fb0e..b6e7b8d9e4 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_week.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_week.xml
@@ -3,11 +3,13 @@
<result date="From 2009-12-28 to 2010-01-03">
<row>
<label>Site 1</label>
+ <nb_pageviews>4</nb_pageviews>
<revenue>10</revenue>
- <nb_actions>1</nb_actions>
- <nb_visits>1</nb_visits>
+ <nb_actions>7</nb_actions>
+ <nb_visits>2</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<revenue_evolution>100%</revenue_evolution>
<idsite>1</idsite>
</row>
@@ -15,20 +17,24 @@
<result date="From 2010-01-04 to 2010-01-10">
<row>
<label>Site 1</label>
+ <nb_pageviews>12</nb_pageviews>
<revenue>5</revenue>
- <nb_actions>7</nb_actions>
+ <nb_actions>9</nb_actions>
<nb_visits>2</nb_visits>
- <visits_evolution>100%</visits_evolution>
- <actions_evolution>100%</actions_evolution>
- <revenue_evolution>100%</revenue_evolution>
+ <visits_evolution>0%</visits_evolution>
+ <actions_evolution>28.57%</actions_evolution>
+ <pageviews_evolution>200%</pageviews_evolution>
+ <revenue_evolution>-50%</revenue_evolution>
<idsite>1</idsite>
</row>
<row>
<label>Site 2</label>
- <nb_actions>2</nb_actions>
+ <nb_pageviews>4</nb_pageviews>
+ <nb_actions>4</nb_actions>
<nb_visits>1</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<idsite>2</idsite>
</row>
</result>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_year.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_year.xml
index 399ae9b238..d1f344bd2d 100755
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_year.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_Conversions_idSiteOne___MultiSites.getAll_year.xml
@@ -3,20 +3,24 @@
<result date="2010">
<row>
<label>Site 1</label>
+ <nb_pageviews>16</nb_pageviews>
<revenue>15</revenue>
- <nb_actions>8</nb_actions>
- <nb_visits>3</nb_visits>
+ <nb_actions>16</nb_actions>
+ <nb_visits>4</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<revenue_evolution>100%</revenue_evolution>
<idsite>1</idsite>
</row>
<row>
<label>Site 2</label>
- <nb_actions>2</nb_actions>
+ <nb_pageviews>4</nb_pageviews>
+ <nb_actions>4</nb_actions>
<nb_visits>1</nb_visits>
<visits_evolution>100%</visits_evolution>
<actions_evolution>100%</actions_evolution>
+ <pageviews_evolution>100%</pageviews_evolution>
<idsite>2</idsite>
</row>
</result>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_day.xml
index 26b02eae7b..55f598cb13 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_day.xml
@@ -37,12 +37,12 @@
<label>second visitor</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -50,12 +50,12 @@
<label>two days later</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -79,8 +79,8 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>360</sum_time_spent>
- <avg_time_on_page>360</avg_time_on_page>
+ <sum_time_spent>540</sum_time_spent>
+ <avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
</row>
@@ -142,9 +142,11 @@
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <exit_nb_uniq_visitors>1</exit_nb_uniq_visitors>
+ <exit_nb_visits>1</exit_nb_visits>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
- <exit_rate>0%</exit_rate>
+ <exit_rate>100%</exit_rate>
</row>
</result>
<result date="2010-01-05" />
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_month.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_month.xml
index 7a5942bdf1..73c5c18abb 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_month.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_month.xml
@@ -23,12 +23,12 @@
<label>second visitor</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -36,12 +36,12 @@
<label>two days later</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -64,9 +64,9 @@
<label> second page view</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
</row>
@@ -137,11 +137,13 @@
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
- <exit_rate>0%</exit_rate>
+ <exit_rate>100%</exit_rate>
</row>
</result>
<result date="2010-02" />
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_week.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_week.xml
index abd605ced9..80019d2ca4 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_week.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_week.xml
@@ -25,12 +25,12 @@
<label>second visitor</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -38,12 +38,12 @@
<label>two days later</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -66,9 +66,9 @@
<label> second page view</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
</row>
@@ -139,11 +139,13 @@
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
- <exit_rate>0%</exit_rate>
+ <exit_rate>100%</exit_rate>
</row>
</result>
<result date="From 2010-01-11 to 2010-01-17" />
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_year.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_year.xml
index 6b71870b51..18c8b08cc5 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_year.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays__Actions.getPageTitles_year.xml
@@ -23,12 +23,12 @@
<label>second visitor</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -36,12 +36,12 @@
<label>two days later</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -64,9 +64,9 @@
<label> second page view</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
</row>
@@ -137,11 +137,13 @@
<entry_nb_actions>2</entry_nb_actions>
<entry_sum_visit_length>1</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
+ <exit_nb_visits>1</exit_nb_visits>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<sum_daily_entry_nb_uniq_visitors>1</sum_daily_entry_nb_uniq_visitors>
+ <sum_daily_exit_nb_uniq_visitors>1</sum_daily_exit_nb_uniq_visitors>
<avg_time_on_page>0</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
- <exit_rate>0%</exit_rate>
+ <exit_rate>100%</exit_rate>
</row>
</result>
<result date="2011" />
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_day.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_day.xml
index f8df8e7753..408379180c 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_day.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_day.xml
@@ -36,12 +36,12 @@
<label>second visitor</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -49,12 +49,12 @@
<label>two days later</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -78,8 +78,8 @@
<nb_visits>1</nb_visits>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_hits>1</nb_hits>
- <sum_time_spent>360</sum_time_spent>
- <avg_time_on_page>360</avg_time_on_page>
+ <sum_time_spent>540</sum_time_spent>
+ <avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
</row>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_month.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_month.xml
index a09dd95cc5..79eceb9c6b 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_month.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_month.xml
@@ -22,12 +22,12 @@
<label>second visitor</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -35,12 +35,12 @@
<label>two days later</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -63,9 +63,9 @@
<label> second page view</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
</row>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_week.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_week.xml
index 251b91d4a8..285d30b6ed 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_week.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_week.xml
@@ -24,12 +24,12 @@
<label>second visitor</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -37,12 +37,12 @@
<label>two days later</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -65,9 +65,9 @@
<label> second page view</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
</row>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_year.xml b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_year.xml
index 4c29113251..127065610e 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_year.xml
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_idSiteOne___Actions.getPageTitles_year.xml
@@ -22,12 +22,12 @@
<label>second visitor</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -35,12 +35,12 @@
<label>two days later</label>
<nb_visits>2</nb_visits>
<nb_hits>2</nb_hits>
- <sum_time_spent>720</sum_time_spent>
+ <sum_time_spent>900</sum_time_spent>
<entry_nb_visits>1</entry_nb_visits>
<entry_nb_actions>5</entry_nb_actions>
<entry_sum_visit_length>901</entry_sum_visit_length>
<entry_bounce_count>0</entry_bounce_count>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>450</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
<subtable>
@@ -63,9 +63,9 @@
<label> second page view</label>
<nb_visits>1</nb_visits>
<nb_hits>1</nb_hits>
- <sum_time_spent>360</sum_time_spent>
+ <sum_time_spent>540</sum_time_spent>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <avg_time_on_page>360</avg_time_on_page>
+ <avg_time_on_page>540</avg_time_on_page>
<bounce_rate>0%</bounce_rate>
<exit_rate>0%</exit_rate>
</row>
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html__PDFReports.generateReport_month.original.html b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html__PDFReports.generateReport_month.original.html
new file mode 100755
index 0000000000..0644e26699
--- /dev/null
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html__PDFReports.generateReport_month.original.html
@@ -0,0 +1,4335 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+</head>
+<body style="color: rgb(68,68,68);">
+<a name="reportTop"/>
+<a target="_blank" href=""><img title="Go to Piwik" border="0" alt="Piwik" src='themes/default/images/logo-header.png' /></a>
+<h1 style="color: rgb(126,115,99); font-size: 11pt;">
+Website Site 1
+</h1>
+<p>
+Mail Test report - Date range: 2010, January
+</p>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Report list
+</h2>
+<ul>
+<li>
+<a href="#MultiSites_getAll" style="text-decoration:none; color: rgb(68,68,68);">
+All Websites dashboard
+</a>
+</li>
+<li>
+<a href="#VisitsSummary_get" style="text-decoration:none; color: rgb(68,68,68);">
+Visits Summary
+</a>
+</li>
+<li>
+<a href="#VisitTime_getVisitInformationPerServerTime" style="text-decoration:none; color: rgb(68,68,68);">
+Visits by Server Time
+</a>
+</li>
+<li>
+<a href="#VisitTime_getVisitInformationPerLocalTime" style="text-decoration:none; color: rgb(68,68,68);">
+Visits by Local Time
+</a>
+</li>
+<li>
+<a href="#VisitTime_getByDayOfWeek" style="text-decoration:none; color: rgb(68,68,68);">
+Visits by Day of Week
+</a>
+</li>
+<li>
+<a href="#Actions_get" style="text-decoration:none; color: rgb(68,68,68);">
+Actions - Main metrics
+</a>
+</li>
+<li>
+<a href="#Actions_getPageUrls" style="text-decoration:none; color: rgb(68,68,68);">
+Page URLs
+</a>
+</li>
+<li>
+<a href="#Actions_getEntryPageUrls" style="text-decoration:none; color: rgb(68,68,68);">
+Entry pages
+</a>
+</li>
+<li>
+<a href="#Actions_getExitPageUrls" style="text-decoration:none; color: rgb(68,68,68);">
+Exit pages
+</a>
+</li>
+<li>
+<a href="#Actions_getPageTitles" style="text-decoration:none; color: rgb(68,68,68);">
+Page titles
+</a>
+</li>
+<li>
+<a href="#Actions_getEntryPageTitles" style="text-decoration:none; color: rgb(68,68,68);">
+Entry page titles
+</a>
+</li>
+<li>
+<a href="#Actions_getExitPageTitles" style="text-decoration:none; color: rgb(68,68,68);">
+Exit page titles
+</a>
+</li>
+<li>
+<a href="#Actions_getOutlinks" style="text-decoration:none; color: rgb(68,68,68);">
+Outlinks
+</a>
+</li>
+<li>
+<a href="#Actions_getDownloads" style="text-decoration:none; color: rgb(68,68,68);">
+Downloads
+</a>
+</li>
+<li>
+<a href="#Referers_getRefererType" style="text-decoration:none; color: rgb(68,68,68);">
+Referrer Type
+</a>
+</li>
+<li>
+<a href="#Referers_getKeywords" style="text-decoration:none; color: rgb(68,68,68);">
+Keywords
+</a>
+</li>
+<li>
+<a href="#Referers_getWebsites" style="text-decoration:none; color: rgb(68,68,68);">
+Websites
+</a>
+</li>
+<li>
+<a href="#Referers_getSearchEngines" style="text-decoration:none; color: rgb(68,68,68);">
+Search Engines
+</a>
+</li>
+<li>
+<a href="#Referers_getCampaigns" style="text-decoration:none; color: rgb(68,68,68);">
+Campaigns
+</a>
+</li>
+<li>
+<a href="#Goals_get" style="text-decoration:none; color: rgb(68,68,68);">
+Goals
+</a>
+</li>
+<li>
+<a href="#Goals_getVisitsUntilConversion" style="text-decoration:none; color: rgb(68,68,68);">
+Visits to Conversion
+</a>
+</li>
+<li>
+<a href="#Goals_getDaysToConversion" style="text-decoration:none; color: rgb(68,68,68);">
+Days to Conversion
+</a>
+</li>
+<li>
+<a href="#UserCountry_getCountry" style="text-decoration:none; color: rgb(68,68,68);">
+Country
+</a>
+</li>
+<li>
+<a href="#UserCountry_getContinent" style="text-decoration:none; color: rgb(68,68,68);">
+Continent
+</a>
+</li>
+<li>
+<a href="#CustomVariables_getCustomVariables" style="text-decoration:none; color: rgb(68,68,68);">
+Custom Variables
+</a>
+</li>
+<li>
+<a href="#VisitorInterest_getNumberOfVisitsPerVisitDuration" style="text-decoration:none; color: rgb(68,68,68);">
+Length of Visits
+</a>
+</li>
+<li>
+<a href="#VisitorInterest_getNumberOfVisitsPerPage" style="text-decoration:none; color: rgb(68,68,68);">
+Pages per Visit
+</a>
+</li>
+<li>
+<a href="#VisitorInterest_getNumberOfVisitsByVisitCount" style="text-decoration:none; color: rgb(68,68,68);">
+Visits by Visit Number
+</a>
+</li>
+<li>
+<a href="#VisitorInterest_getNumberOfVisitsByDaysSinceLast" style="text-decoration:none; color: rgb(68,68,68);">
+Visits by days since last visit
+</a>
+</li>
+<li>
+<a href="#VisitFrequency_get" style="text-decoration:none; color: rgb(68,68,68);">
+Returning Visits
+</a>
+</li>
+<li>
+<a href="#Provider_getProvider" style="text-decoration:none; color: rgb(68,68,68);">
+Provider
+</a>
+</li>
+<li>
+<a href="#UserSettings_getResolution" style="text-decoration:none; color: rgb(68,68,68);">
+Screen Resolution
+</a>
+</li>
+<li>
+<a href="#UserSettings_getBrowser" style="text-decoration:none; color: rgb(68,68,68);">
+Visitor Browser
+</a>
+</li>
+<li>
+<a href="#UserSettings_getBrowserVersion" style="text-decoration:none; color: rgb(68,68,68);">
+Browser Version
+</a>
+</li>
+<li>
+<a href="#UserSettings_getBrowserType" style="text-decoration:none; color: rgb(68,68,68);">
+Browser Family
+</a>
+</li>
+<li>
+<a href="#UserSettings_getPlugin" style="text-decoration:none; color: rgb(68,68,68);">
+Browser Plugins
+</a>
+</li>
+<li>
+<a href="#UserSettings_getWideScreen" style="text-decoration:none; color: rgb(68,68,68);">
+Normal / Widescreen
+</a>
+</li>
+<li>
+<a href="#UserSettings_getOS" style="text-decoration:none; color: rgb(68,68,68);">
+Operating System
+</a>
+</li>
+<li>
+<a href="#UserSettings_getConfiguration" style="text-decoration:none; color: rgb(68,68,68);">
+Visitor Configuration
+</a>
+</li>
+<li>
+<a href="#UserSettings_getOSFamily" style="text-decoration:none; color: rgb(68,68,68);">
+Operating System Family
+</a>
+</li>
+<li>
+<a href="#UserSettings_getMobileVsDesktop" style="text-decoration:none; color: rgb(68,68,68);">
+Mobile vs Desktop
+</a>
+</li>
+</ul><a name ="MultiSites_getAll"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+All Websites dashboard
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Pageviews&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Revenue&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Conversions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Ecommerce Orders&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Product Revenue&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Site 1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Site 2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="VisitsSummary_get"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Visits Summary
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Name&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Value&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Unique visitors
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Actions
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Maximum actions in one visit
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+5
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Bounce Rate
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+33%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Actions per Visit
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2.7
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Avg. Visit Duration (in seconds)
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:07:01
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="VisitTime_getVisitInformationPerServerTime"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Visits by Server Time
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Server time&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Revenue&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:06:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+4h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+5h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+6h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+7h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+9h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+10h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+11h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+5
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+5
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:15:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+12h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+13h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+14h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+15h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+16h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+17h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+18h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+19h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+20h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+21h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+22h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+23h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="VisitTime_getVisitInformationPerLocalTime"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Visits by Local Time
+</h2>
+<img
+alt=""
+src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAKa0lEQVR4nO3dT4icZx0H8GeSWZNskt0mbshmS7dtYhLTaou2VaHQQ2mUXiwigvgHFJEeFD0IFgpCxdKLQlGPpRehFG+igmih9mQPSW/aFFcS3dBN0gS3sHHTmI3jYctkMn82v533eWZnup/PJZnJzHefed/3eeeb931nttZoNBIAwK1s2egBAACjQWkAAEKUBgAgpFRpOH78eOc9nXe2PbjXAwCADVfv72nPvXiy7Z6nv/XgLZ/1yiuvrOt+AGB41Pr79MQ3n3n12rVrzZtjY2PPfvvo7bff3vqY48ePN9vA6t+b9zSPKDRvrv5r87mtN1UKABgGfR5pSCktLy83/z45ObmwsNBWGnppLROt2lqFrgAAQ8WFkABASMHS0DzF0HbYYPX+ta95jDwGABik/k9PjI+P9/3cyDkI5ykAYKj0WRq+8OihhbffzjsUAGCY9VkaPv/InSndecuHtV7b2LTGxyLaPkPR9TEAwIbo8yOXAMBm49MTAECI0gAAhCgNAECI0gAAhCgNAECI0gAAhCgNAECI0gAAhCgNAEBIe2mo1WobMg4AYMjdVBo0BgCglxuloVbzeygAgJ7e/y2XXRvD2zf/8usLFy5MT08PaFwAwJDZkhxjAAACao1Go/NSBh0CAGjTfozBUQcAoCvf0wAAhCgNAECIkxEAQIgjDQBAiNIAAIQoDQBAiNIAAIQoDQBAiNIAAIQoDQBAiNIAAIQoDQBAiNIAAIQoDQBAiNIAAIQoDQBAiNIAAIQoDQBAiNIAAIQoDQBAiNIAAIQoDQBAiNIAAIQoDQBAiNIAAIQoDQBAiNIAAIQoDQBAiNIAAIQoDQBAiNIAAIQoDQBAiNIAAIQoDQBASH2jBwCMmF+8dDJj2ve++mDGNKAopQFYh+deeP3km+czBn7u4YNH79qbMRAox+kJACBEaQAAQpQGACBEaQAAQpQGACBEaQAAQpQGACBEaQAAQpQGACBEaQAAQpQGACBEaQAAQpQGACBEaQAAQpQGACBEaQAAQpQGACBEaQAAQpQGACBEaQAAQpQGACBEaQAAQpQGACBEaQAAQpQGACBEaQAAQpQGACBEaQAAQpQGACBEaQAAQpQGACBEaQAAQuqrf9RqteZdjUZjgwYDAAyvekqpVqu1FoW2mwAAafX0hIoAANySaxoAgJB62+3WcxOnTp1q/aczZ84cOnRoQOMChtLl/1zOGzg//6909WLeTKCQG6Vh9VrI1lMVMzMzrQ+dmJiYmJgY2MiAIbR92zsp5ewNU1P7ZmYmMwYC5dz49ETnlQ2Tk5Nr3AQ2oXq9/fBkRePj47t3786bCRSyJfm4BAAQ0OV7GpLPUwAAHepJRQAAAnzkEgAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgBClAQAIURoAgJD66h+1Wq15V6PR2KDBAADDq55SqtVqrUWh7SYAQHJ6AgAIqq/r0c+98Pri0nu5fvaXPvvRT33swMXF5aeefy1X5tYttReeeTyl9Kvf/fXv//x3rthPHNv/xceOppS+8tRvMx6EefHHj49vH/vzifk//eVMrszpD+/8/tceTCn98PnX3ru6kiv2O1/+5NG79v5jfvHnL53IlbntQ/Wf/eDRlNIvX37j3DuXc8U++uk7H/vMXVf/u/L1p3+fK7NWq/36p0+klH7z6tzJv53LFfuR2T3feOLjKaUnf/LH69f/lyv22e8+Mj218403z7/8hzdzZU7u2vajJx/OldbGTsBOwE5gVHYCtUaj0ev0xIkTN20Zb7311j333BOJPnv27G233bZ79+5cY00pXb16dX5+/vDhwxkzU0oXLlzYunXr1NRU3thTp04dPny4Xl9fJ1vb4uLilStXZmZmMmamlE6fPj09PT0+Pp4xc3l5+fz58wcPHsyYmVJaWFjYsWPHnj17MmaurKzMzc0dO3YsY2ZK6dKlS9evX9+/f3/e2Lm5udnZ2W3btmXMXFpaevfdd++4446MmclOwE7ATuADuhNYa4N+6KGH1ri5homJiampqbzr9cqVKzt37rz//vszZqaUzp49W6/XDxw4kDc2pXTfffeNjY1lDLx48eLly5fvvvvujJkppe3bt8/OzubduS8tLc3Pz997770ZM1NKe/fu3bVr1759+zJmXrt2rV6vP/DAAxkzU0rnzp1bWVnJ/k5cr9ePHDmyY8eOjJmLi4uXLl3K/k5sJ5DsBOwEPog7Adc0AAAhSgMAEFJPKa1e1tC8y+ctAYBO71/ToCgAAGvzPU4AQIhrGgCAkCKlofUKiWHOFFsos1DsCA21XGy58BFaDiM01EKxhrrJh1ooNpKZ54tHCl1HuRqb9wRK0aFmj23NzxI7mHeyIR/qSGwDbRt/lvDOCZVlig1gqLmWba/XW3F+tcbm2m57rayUbwkUGmqhlVU9tjMh47baFlJ9ZpUYbZbMDKWh8wslq2c2Y/O+cxQdavbYQoFtW0ahhVDdYMY5nLFtG3+W8M4JlWWKDWCouZZtr9ebdwmkHJtur5VVZZydsVmm2GBWVvXYrgm5ttXOYVecWSVGmysz51ectqnYi7s+q0Tm0MY2Qzp3H9VjO39Klcxee7RcQ21dCCVe/rDFBh+8rvDOx2RZZW0PyzIXSmT2elj1+TWAlZVrfq3xsL6nWImXXyI2PgGrv/zqKys4W9cVmyuzVGlo3cpz/R+0ROaQx3Y+sXps1yNUWYZaIrbzpwztyhpYbLnwEVoOQzu/Upm5MJj5VSjWUEco9paZpUpD3v1jiczW40i5Alf/kiu2a0jF2M5dZPXMzuSMsenm5VA9s9FxJDn723lreInYcuHDPMVGYn51JuSaC+XmV8o6xUZifq1x+qDKUNd4pXljq8+stmbQHGQks+DpiaGVfcqt6lwH1XU9akoVXU/sVddrH7Q5lZhi5tdIGPL5VWjnP7DY6j+oM2G9M2vTlYZytTe7tm1lc74tje762sCRbKxRWWXm16oRXV99JBR6pQOLrf6Dsgx1c325U7m1mz2zkBEa6ugalb1wCSVe+2httKM12lHU90UhGkPXc2frleFIQ9eTWNVjmyF5J2GJKV1oCZRQaKjltoESZ5EKrazWU4O5oprHEquPeY3MKkugM6T68izx8rvGVhxnr9iiK6vvzF6x1d+KBjbUZmbFoXYdW/WhduZkmVlr3FMxs78lsHn/SwQArMvmOj0BAPRNaQAAQpQGACDk/w8nmrpYdWzRAAAAAElFTkSuQmCC"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Local time&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Conversion Rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+4h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+5h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+6h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+7h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+9h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+10h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+11h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+12h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2.67
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:07:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+33.33%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+13h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+14h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+15h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+16h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+17h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+18h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+19h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+20h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+21h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+22h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+23h
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="VisitTime_getByDayOfWeek"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Visits by Day of Week
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Day of the week&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Conversion Rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Monday
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:06:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Tuesday
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+5
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+5
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:15:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Wednesday
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Thursday
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Friday
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Saturday
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Sunday
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Actions_get"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Actions - Main metrics
+</h2>
+<img
+alt=""
+src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAARKklEQVR4nO3dW2wc133H8bPLJSlSpCyJu+RyySCOCVeVZNmyLaFuUBt9qJIAgY3EsVE7CVwUsB3DSFK4Boy47YOMtuhDARs2ENg13AQJ0iCX1jaMPATQS9KiSBOGkVVFoqC6lgVHK5LLi8XLLveeh1mthjt7mcuZnbNnvp8Xz45n/nMOd8/sT7tzdiLValUAAAB0Eg26AQAAoDcQGgAAgC2EBgAAYEvMj6InTpwwPzx16pT0+tJrAgCA9nwJDWJnUJD+Hk9iAACg+/wKDVb1jx8a8oR5m1OnTpnXGFuaM4exXF9jZ+OGHa1tAAAAdrgMDU/+4381rHn9b+9tv4v1vbzhE4gTJ05Y17R5d3e0sZ0NAABAG+4vhFw2EULMzs7Ka9UO9U8I7LzrN2xsf0cAANCeX19PNP3iwOmOcjeuZwgCBAAALnTjQkhhubzA/o6OjmJzez54AADABVV+p6FpkjBft2jnkgXrxnZ2BAAAdrj/pCEej9vfuGFahHVl/d3d+r2GzZodkwFTJwAA8CLi+oZV1isfjx8/7qUpfCQAAIDK3IcGKRx9VAAAAAIUcGgAAAC9QpULIQEAgOIIDQAAwBZCAwAAsIXQAAAAbCE0AAAAWwgNAADAFkIDAACwhdAAAABsITQAAABbCA0AAMCWWmiImATbIAAA0GVz5xcefOatMxeX8oVSm80i1Wo1EtlxB4qGhwAAQFeFYvmR594xr3nzpc+32pivJwAACK/fvpdpWPOb+cVWG8faFLpy5Yr54eLiYjKZbLP99vZ2NBodGBiw0cgesLGxMTIyosf3NcVisVQqDQ0NBd0QObLZ7ODgYF9fX9ANkaBcLm9vb+/evTvohsjBSUBZnASUFfhJ4OyFdMOa/5x9L3lTuenGUSGE8Q1FnevvJorFYrFYdLevggqFgjZf05RKpUKhEHQrpCkUCuVy8xd0z6lUKjo9NZwElMVJQFmBnwSSY41R8uDNe1ttHBOWixjqD6empsybNjy0SqfT/f39iUTCaYvVtLm5mUwmY7F2H8b0itXV1Ww2m0qlgm6IHIVCYWxsbHR0NOiGSJDL5UqlkjZPDScBZXESUFbgJ4FUKnVpoXD+/eXfLW4KIT79yU98+r7DrTbmmgYAAELtiS/cMfOxfcbyVx4+2mZLQgMAAKHW1xf9+a8/FEJ8/Yt3t98yJq5f01Bfpc13eAAAwL5kvMP1mLXv6ggKAACEU6VSywCpxEj7Lfl6AgCAUFv5KGss7BkZbL8loQEAgFBLZ7ZsbkloAAAg1K4ub9rcktAAAECovf7vZ4QQTz50R8ctCQ0AAEBMjnX+KWtCAwAA4VWfOjHRab6lIDQAABBmuXzJWEjsG+64MaEBAIDwSmc2jIW+vs6RgNAAAEB4LdiebykIDQAAhNlL3/u1EOKxB1re2dKM0AAAQNiN7+98FaQgNAAAgKSN+ZaC0AAAQGgVimVjoeP9LQ2EBgAAQmpptXYV5PCufjvbExoAAAipq06mTghCAwAAobW0QmgAAAA2/OvbZ4UQX330LpvbExoAAAi1ibHOPyBtIDQAABBG5XLFWEjFR23uQmgAACCMrm3mjYWbRgdt7kJoAAAgjNJLm8ZCNBqxuQuhAQCAMFpcdTZ1QhAaAAAIp2/+4LQQ4okv3G5/F0IDAADhNb7P1g9IGwgNAACEVzJBaAAAAK1lt4vGQnzvkP29CA0AAIROemnDWBgciNnfi9AAAEDoLKxkXexFaAAAIHRe/O6si70IDQAAhNQzXz7maHtCAwAAIZVMjDjantAAAEC45AslY2Ey7mC+pSA0AAAQNisf5YyF4V39jnYkNAAAEC7p5dpdJ+zfqqq2vQ+NAQAA6lpyNd9SEBoAAAibN948I4R46uGjTnckNAAAEEYTY8NOdyE0AAAQIpVK1ViYjDubbykIDQAAhMra+raxsO8mB7eqMhAaAAAIkYWV2tSJ/pjjDEBoAAAgRBaWN13vS2gAACBEvvmD00KIx+6/zcW+hAYAAEJnYr/jqROC0AAAQAhNJpzddcJAaAAAICy2sgVjITU+6mJ3QgMAAGFRnzox0N/nYndCAwAAYXH1+q2q3CE0AAAQFi9+d9bL7oQGAADC5ek/v9PdjoQGAADCZTLuZuqEIDQAABASxVLFWJh2NXVCEBoAAAiJzFrWWBgdGXRXgdAAAEAopJc2jIVoNOKuAqEBAIBQqP9Ig2uEBgAAQuFbb50VQjx2/2HXFQgNAACESCox4npfQgMAACGSGic0AACA1tbWt42FVMLlfEtBaAAAIAyueJ46IQgNAACEgcdbVRkIDQAA6O/VH572XoTQAABAWHz9i3d72Z3QAABAWHiZOiGsoSEScX99BAAAUFAuXzIWpifcT50QDaGBxAAAgH6uZjaNheFd/V7q3AgNkUikWq16ahQAAFBPfb6lRzHjP00Tw7Vr18wPNzc39+zZ06ZWoVAol8sbG3JaFrhSqbS1tRWN6nDZRy6Xy+fz2jw1xWIxl8sF3Qo58vl8qVTS5qnhJKAsTgLK6s5J4NKHK8aCxwNFqtWqOTGYl+fn53cc8tKlmZmZNrXy+Xw0Gu3v9/TRhzpyudzg4KAe54tisVipVAYHXd5AXTXb29uxWCwWiwXdEAnK5XKhUBgaGgq6IXJwElAWJwFldeck8Pxr54UQD/xJ8o9v2++lzo1PGuqr6rnh4MGD5k0bHlql0+n+/v5EIuGlQeq4ePHiLbfcoseLcnV1NZvNTk9PB90QOT744IOxsbHRUU+X8ygil8ul0+n2cbyHcBJQFicBZXXrJHBeCHH08MyBA+NeqsSEEOYvJriyAQAALU1NeJpvKfidBgAA9LZw/QekE/uGPZYiNAAAoDNZUyeENTTw3QQAADr53aJvoQEAAOjkO+/8Vgjx5c8e9l6K0AAAgP6Sid3eixAaAADQVqVSu+ogFSc0AACA1tY388bCZMLrfEtBaAAAQGNXrt+qanBAws+UERoAANCWxPmWgtAAAIDGXvvRuxKrERoAANDc1x69S0odQgMAAHqqT52YGJMwdUIQGgAA0FWxVDEWUuMSpk4IQgMAALpKZ2pXQe4d3SWlIKEBAAA9Xc1syS1IaAAAQE8LK5tyCxIaAADQ0/d+cl4I8fiDt8sqSGgAAEBnSUlTJwShAQAALdWnTki564SB0AAAgIZWP8oaC2N7h2TVJDQAAKChq8u1qRMD/X2yahIaAADQ0MKy5PmWgtAAAICWXv+PM9JrEhoAANDWs39xXGI1QgMAALq5cauq/dLmWwpCAwAA+tnIFoyFyTihAQAAtJZeqt2qavfwgMSyhAYAAHSzuJL1oyyhAQAA3bzy/Tk/yhIaAADQ09OP3Cm3IKEBAAA9je8blluQ0AAAgFZy+ZKxkJJ3qyoDoQEAAK0srdR+QHrfnl1yKxMaAADQysL10NDXJ/ldntAAAIBWMqu+zLcUhAYAADTzrbfPCiH+8nNHpFcmNAAAoKGJMZk/IG0gNAAAoI9iqWIsTI5Jnm8pCA0AAOhk7VrOWIhLvb+lgdAAAIA+0plNY2FoMCa9OKEBAAB9ZNb8mjohCA0AAOjk1R+9619xQgMAALr5qy8d86MsoQEAAN1MxOVPnRCEBgAAtLGxVTAWUnHJt6oyEBoAANBEferEyPCAH/UJDQAAaGJhuRYaotGIH/UJDQAAaOLlf5vztT6hAQAArTzx0B0+VSY0AACgleR+X6ZOCEIDAAB6yOVLxsJkYtSnQxAaAADQwdLKlrEwtnfIp0MQGgAA0EF96kR/zK83d0IDAAA6WFrL+X0IQgMAADr49ttn/T4EoQEAAH08+9hx/4oTGgAA6HmVStVYSMZ3+3cUQgMAAD1v5aPaBQ2phC+3qjIQGgAA6HnppQ1jYXAg5t9RCA0AAPS8hdWsseDTrapqxf0rDQAAuuNffvxuF45CaAAAQBNPPXzU1/qEBgAANJGM+3gVpCA0AADQ69Y388bC9DihAQAAtLawXLtV1d49u3w9EKEBAIDels7UblXl69QJIURtNmckcuMw1WrV10MCAACJXvn+XHcOFBVCRCKRqok5QNg3d37hq//8y/lLa/lCyXVr5s4vPPjMW2cuLqlQ5BuvnvvfixnXRZTqy+N///MLl6+p0BIpRf765dPn/n8l2JbI6suX/uanFz/cUOGvKqUIJwE/msFJwFqEk0BDEWPh0c/8oesiNkWMlGD+dKHhYUeFYvmR594xr3nzpc87bYdORRRpBkV8KqJIMyiichFFmkERn4oo0gxZRRyREBp+M7/wD6//woe2AQAAB/7uyU/edXDCv/rtfqF6dnbW/PDChQuHDh2ybvaLc+uSGwUAAJz76c/OVLNj/tWX8EnD7Lmr//TG/5jXPP/4PccPTzpqh05FFGkGRXwqokgzKKJyEUWaQRGfiijSDFlFHOk7efLkCy+8cPLkyfqqhocdTY2Prq1v7xqMZdayR2b23nlw8oE/vdVpO8xFjh1OHrk1oUKRuw9N3H7ruNMiavbl0M2jdx2aUqElUoocPRC/48BEIC2R3pc/+NjwsdumVfirSinCScCPZnASsBbhJCCrJY5I+KRBCFEuV05fWDx97vLHJ/d86t4mX2HYL3LpyrWbp25yHZQkFvnv2fl77j7wR0emgm2GlCLn/u/q/pHI/X92Z+AtkVLkV+++d9uBqfuO3RJUSyT25eIHmQGRfeiz93gpos5Tw0nAj2ZwErAW4SQgtyX21fKBlN9puHz58sDAwOSk743ujrm5uaNHj/b19QXdEAkymcz6+vrMzEzQDZFjfn5+enp6dHQ06IZIsLW19f777x85ciTohsjBSUBZnASU1VsngdqFkPygEwAAaM/xNxEAACCcuPcEAACwhdDQ89z97DcQcgwcwIUdP+7kYt5Eg6YXVFpXNqyxjl7XzTBKeZwMYi5lbo+d3knsi7Cc1zz+WcxF3D1T7o5uLt7w1Lgu67r90u/NFtSoabWj6wYEOGpabeaaNgNH11EjGDjNSnVsZHeemvZuhAajt16eyKZTN60rRae/sgr/ArDZ7I6zVb33RcoJ1F1fmm7msTFSuH6lWdd4P20FNWqsawJ/dpR6pTFwGij1SmPgmPXWK63l1xMN73b1h5GdzNso8u+2pv/cFztbLnZ20Lq9In1pVdb692/6jBgCHxJ15qfGOgDM7e/Cs+OHoEaNd+qMGv/06MDRftQIBo4afbGp3b0nrKwvWdnt8UvvtrxB046YV/qUVPzW6+1vo3dfe73bcistB05PN76j3n359W7L7ah90lDvZKvc5JS7F7Gsl76dXtS36XjQYPvSKmib2T+Qo1YZf6K6bp6VfHp25PYo2FEj/dkJcNT48UoLcOAExe9zmiyKvN3IosLbTTc5+6TBjoiH63Qk8viFmUGFvliP7m6YueiLNS9LfGdqKOWiU4r0SApF+hLUqPGpL00b5pSL7sh6L7QWDGTUSO+ORIp0J6iBE8hTs+NCSO/lvPzh1DmDG5Tti4sTh2p/2wbm5tl8HSrSo8BHjWpU7ks3B04XPp3u5qiR3p1gB46C3x30UF9iollzG47dtCnWlaqdLzqmsDbxULW+tNKLicFmYxR/dhg11v+lWl/a6NrAkfU3UWTUSPn3tDoDR+IrNvCB07XR1/LrCfOfwPzhmHWlWcOaarXasJnRq6ZrfO1w02a0Z+2LtUKr3vn6MUPDERu+tW31omxfpNVKp380d1x8yOblldawRqLuj5qGNXJ1edQ4OpBTQQ0czUaNT90JauB0oTs2j6LyK62Bp7e3HvqHBXqRli8wLTsFdej6AtO1Xz3H8YWQ3fmnJ6DTOYJRg+7QadQIBo6StHqFAQAA/3DDKgAAYAuhAQAA2EJoAAAAtvwegn3P34wzJZMAAAAASUVORK5CYII="
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Name&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Value&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Pageviews
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Unique Pageviews
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+6
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Downloads
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Unique Downloads
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Outlinks
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Unique Outlinks
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Actions_getPageUrls"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Page URLs
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Page URL&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Pageviews&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Unique Pageviews&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. time on page&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Exit rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<a style="color: rgb(68,68,68);" href='http://example.org/index.htm'>
+/index.htm
+</a>
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:03:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<a style="color: rgb(68,68,68);" href='http://'>
+Page URL not defined
+</a>
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<a style="color: rgb(68,68,68);" href='http://example.org/products'>
+/products
+</a>
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<a style="color: rgb(68,68,68);" href='http://example.org/thankyou'>
+/thankyou
+</a>
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:06:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Actions_getEntryPageUrls"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Entry pages
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Page URL&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Entrances&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounces&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<a style="color: rgb(68,68,68);" href='http://example.org/index.htm'>
+/index.htm
+</a>
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<a style="color: rgb(68,68,68);" href='http://example.org/products'>
+/products
+</a>
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Actions_getExitPageUrls"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Exit pages
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Page URL&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Exits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Unique Pageviews&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Exit rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<a style="color: rgb(68,68,68);" href='http://example.org/products'>
+/products
+</a>
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<a style="color: rgb(68,68,68);" href='http://example.org/thankyou'>
+/thankyou
+</a>
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Actions_getPageTitles"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Page titles
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Page Name&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Pageviews&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Unique Pageviews&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. time on page&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Exit rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+first page view
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+50%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+second visitor
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:06:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Checkout
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Page Name not defined
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Actions_getEntryPageTitles"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Entry page titles
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Page Name&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Entrances&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounces&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+first page view
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+second visitor
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Actions_getExitPageTitles"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Exit page titles
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Page Name&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Exits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Unique Pageviews&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Exit rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+first page view
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+50%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Checkout
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Actions_getOutlinks"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Outlinks
+</h2>
+There is no data for this report.
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Actions_getDownloads"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Downloads
+</h2>
+There is no data for this report.
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Referers_getRefererType"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Referrer Type
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Referrer Type&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Revenue&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Websites
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+7
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3.5
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:10:31
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Direct Entry
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Referers_getKeywords"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Keywords
+</h2>
+There is no data for this report.
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Referers_getWebsites"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Websites
+</h2>
+<img
+alt=""
+src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAFtElEQVR4nO3dMW7kVADHYRslTZocIMUWFBxgqCmQ3K60R0CIS1BtgWgpqbgCDeVIVFSIabak3wiJLitFSCmGYoLXeDyef5L12nnzfdXYsZPXeP3Ts99svd1uKwCAYz6ZewAAwPMgGgCAiGgAACKnHg1N0+zv2d/ZO/jQAQBQsLO5BzCt73/6o7fn268/P3rWer1+0H4AOAV12asnvnr9693dXbt5fn7+3TefXV1ddY9pmqatgd3ndk87o9Bu7n7antvdlBQAlK3wmYaqqm5vb9vPl5eX19fXvWg4pBsTXb2q0AoAnIhTf6cBAAiJhvePGHrTBrv94+88JscAQBnKfzxxcXHx6HOTZxCeUwBwIgqPhldffnr99u3cowCAEhQeDS+/eFFVL44e1n23sTWyLKK3hmLwGAAoTOFLLgGAD8WLkABARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQKeobIeu6bj/70ipYoN1F6vKEBUruoeVEQ13/79ste5vA7HZXZfcfJmAhwnuoxxPAR6LjYbHCy1M0AAAR0QAAvDfyfL+cdxoAgKc4+qqyaAAAogUEHk8AwKkLlxwWtS7R9zTAkvUWW7pIYTn210IPXqFFRQMAMB2PJwCAiGgAACKiAQCIiAYAICIaAICIaAAAIgVGw2azmXsIwEGuUFiy8Su0wGgAAKYgGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACJncw9gEq9//G3uIQDDbm7e/fK7KxQW6ubm3Wp18KdlRsObP/+eewjAYX/9M/cIgMfweAIAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiaTTUdV3X9aRDAQCW7Cw5qK7r7XY79VAAgOVomqb9vF6vqzAaAICT0jTNLhS6m2fVfxMJ7XRC9zHEbn+789ABI6fv//6uwb/VO3fwADMfADCdbjG07mcaurf87v14/36/f8DR0/f3H/pVg5uDf9oTEwD4yO5fhHziDfjo6W7wAPBMtY8qBt5pOLpKYvwAiywAoAy7dyHbRxUD0fDQaYNeJZhUAIAC9N6FrI5+T8MUsw6mIgBg4faLodqfaRhcwjB+wNEVEIc85VwAYFLd72moqup+yWXv9jwYCo/eHD/gQeeOnAgAfECDSy793xMAQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQOZt7AJP4+YdXcw8BGLbZbFar1dyjAIZtNpuRn5ppAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCASL3dbuceAwDwDJhpAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAIPIvruKPH03sFN8AAAAASUVORK5CYII="
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Revenue&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+referer.com
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+7
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3.5
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:10:31
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Referers_getSearchEngines"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Search Engines
+</h2>
+There is no data for this report.
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Referers_getCampaigns"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Campaigns
+</h2>
+There is no data for this report.
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Goals_get"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Goals
+</h2>
+<img
+alt=""
+src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAEbUlEQVR4nO3cQXLaMABA0TiT+1/ZXXiGEqOIT3AGSN5btCkYye5GHwuyrOv6BgBwzftRAy3LctQ49wx11Gm87gkAwA95fxut08eufH20ZVnWdf3GzY/5FBZyALjfYXcanpktGAC438f217qu27v83dPn79Hnz+4eOR28PbL9uc0yH+3yyNPB2xlenuf5C4encXrJZPbh5eymGw47HHM+EQC8oo/Jc7vl+eo/3z63wvbzbt29PODk/Miv5hqWze6Fu2V+MuP8Yi8fvBxqOH6fFABeyP/tid2b++dUFuADF+mrQw0PUAkA/Eqf7jR8tUnRXc2OB3bJqYq+fYHPH1UA8HNm2xO3Gm7/33TAT5vscVz18JMHgMfaf3vie5sUv2wRPfxyftn/DwB/0+xOw/ArDMNnT/saw9XxfF8gLp/zqa8ePzT/RsPl5ZQpbjpJAHhpPts/VrYwfDMCgD/lyM80vDq3DQBgwntlACD5E79GGgC4n2gAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAABLRAAAkogEASEQDAJCIBgAgEQ0AQCIaAIBENAAAiWgAAJJ/ZQEDu7RRK+YAAAAASUVORK5CYII="
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Name&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Value&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Conversions
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Visits with Conversions
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Conversion Rate
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Revenue
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Goals_getVisitsUntilConversion"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Visits to Conversion
+</h2>
+There is no data for this report.
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Goals_getDaysToConversion"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Days to Conversion
+</h2>
+There is no data for this report.
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="UserCountry_getCountry"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Country
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Country&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Revenue&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserCountry/flags/fr.png'>&nbsp;
+France
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2.67
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:07:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+33.33%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="UserCountry_getContinent"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Continent
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Continent&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Revenue&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Europe
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2.67
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:07:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+33.33%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+$ 0
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="CustomVariables_getCustomVariables"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Custom Variables
+</h2>
+There is no data for this report.
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="VisitorInterest_getNumberOfVisitsPerVisitDuration"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Length of Visits
+</h2>
+<img
+alt=""
+src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAI4ElEQVR4nO3dz4vbeR3H8W+2M5QW+0tb6HYs21WKtR56saAseFgYPBSEPXsSEbz4Dwiih0X2T/CyggdPnhfBijdFqCgKYqWXQp1CbbGVwdI6h/GQIX433+SbV77J90dmH49Lk0y+k/enM/nmOd8kM6PDw8MCAGCRN/oeAADYDKIBAIiIBgAg0lY07O7uVi+pXjh15XlXAAB6t9Vssx9/+IepS77/7S8v3Oru3btLXQ4ADMeo2bsnvvWj3xwcHEzObm9vv/+dL+zs7JSvs7u7O6mB8enJJZMjCpOz449Oti2flRQAMAQNjzQURfHy5cvJ6XPnzj1+/HgqGuYpx0TZVFVoBQAYFC+EBAAiLUbD5CmGqcMG48vrX/OYXAcA6FLzpydOnz7deNvkOQjPUwDAoDSMhvfe/fzjvb31jgIADFnDaPjG194qircWXq382saJmrdFTL2HYuZ1AIBeNHzLJQDwSePdEwBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQOT/0TAajUajUY+jAABDdhQNo5HfJw0A1DmKBsUAANSr+yuXex//49dPnjy5fPny+PRHv/1Hi0O16c47n+17BDgO7ATowOZ+mxXH9DutyZ/G/sFP/vR8/79rH6UbX//Kla0TXv4JK7EToAP7/zn45e/2Fl9vqG6+fe7tK2f6nmLN6qJhZ2dn5tkTJ/7S4kQte/PNK9tb9hewEjsBOvBi/1XfI6zk4sVLV658uu8p1sw9BwCIiAYAIHL09MTkNzSMT3gzBQAw5SgaVAIAUM/TEwBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQGRr/M9oNJpcdHh42NMwAMBwbRVFMRqNyqEwdRYAoPD0BAAQ2up7gJ798W9Pfv7RX/ueoqGznzr5w+++U77kg5/+/l//ftXXPCt6793rX721Mzn7Yv/V9z74dY/zrOKN0ehn798pX/KLX93/89//2dc8K/ri5z7zzTtf6nuKttgJDMfUTuCYOR47gdHh4eG8pyfu3btX3ub+/fs3b95se7JHjx6dP3/+zJkzbd9QBw4ODh4+fHj9+vW+B1mPp0+fFkVx6dKlvgdZjwcPHly7dm17e7vvQdZgf3//xYsXV69e7XuQ9bATGCw7gcHqbCdQd6Th9u3bNWdbcvbs2YsXL164cKGD22rb69evT506devWrb4HWY+9vb2iKHZ2jsnPAVtbWzdu3Dh58mTfg6zB8+fPnz17dmwemewEBstOYLA62wl4TQMAEBENAEBkqyiK8csaJhd5vyUAUHX0mgahAADU83ucAICI1zQAABHRAABEuvuNkAtfazm+wtSvmarfpHvzhpw3XnUJw1nUzEnql1PeajjLqZl5lfF6+SMs4cANZuv3b8pUb7280rGlxutmOcmQa9xxtbeoqSGTCcubrPLFamNRy862xv1wq9943TxerLiEjqJh4d/EGl9S/g8a4J/Rmjdk9bu2/NHy2aKyc+nxgbY6Sf1y5m0172w3amZecby+1jLvbPnyBp+832KoXriwIep1s5yFQ653x9VeMZSHTCasrqvxbG0Uw1KzrXc/3GoxdPN4seInGcrfngiXMfVjbseqN1o/xlIxvuwmK5p5Q0vd9+qvmXzCtai5iYW3PrXfqR5EqYZUqytKPnl9JJU/Ve/LWTjw1HWqF05OD2E5M4dscLynvO3MRRWV/7QV19Vg82V/+C5v2Pailt1wI75Gy36G+r1xq0sYSjQkhnCwoQ0btK7wqOamLKf4+AHbmafrP9Sxhbc+tOWs+PmHtpy1SBa18KPdq7/v97uotR/D39CvUVl7S9ikaNhQ5Y5rdmC5Pcs2ZvXo2aZY5S7dy76g/u69is6WEw68rrBoVfcPCcN8BBpr/L/RxqLC2drYD7exnI4fLxosobdoaHBUZ/KfOKi7U9nMRZU7buZWPa6rvjGbHXnr98tUnXng3zNV5YGrxxXLVxv+oqYGnpwe/uTz9PsMaUuO2aKa7YcHon7OmXeojr9qvUXDKqE62N3lij/LDm1dm7icln4678zUwPNOb8S6koE3YiHlIYc/bQPHbFHHbDllQ3g2xO9paNGQk3bIs63LRjwglW3cwHxCDHl3sXC2IQ9ftilzdnSk4XDRO2QmH50cm61u0vsxtOqQ1UvK15+56ppLulxX/WwbtJz6mafuh8N/SN64gVexEZEUvky9ZsfV9oQL1ey4ijkTNtikM8vOFu64ercpc27AnRYAGAJPTwAAEdEAAEREAwAQ+R+L4azMkUdjHQAAAABJRU5ErkJggg=="
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Visit duration&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0-10s
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+11-30s
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+31-60s
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1-2 min
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2-4 min
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+4-7 min
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+7-10 min
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+10-15 min
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+15-30 min
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+30+ min
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="VisitorInterest_getNumberOfVisitsPerPage"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Pages per Visit
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Pages per visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1 page
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2 pages
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3 pages
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+4 pages
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+5 pages
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+6-7 pages
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8-10 pages
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+11-14 pages
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+15-20 pages
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+21+ pages
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="VisitorInterest_getNumberOfVisitsByVisitCount"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Visits by Visit Number
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Visits by Visit Number&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;% Visits&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1 visit
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+67%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2 visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+33%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3 visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+4 visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+5 visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+6 visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+7 visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8 visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+9-14 visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+15-25 visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+26-50 visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+51-100 visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+101-200 visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+201+ visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="VisitorInterest_getNumberOfVisitsByDaysSinceLast"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Visits by days since last visit
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Visits by days since last visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+New visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0 days
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1 day
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2 days
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3 days
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+4 days
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+5 days
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+6 days
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+7 days
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8-14 days
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+15-30 days
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+31-60 days
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+61-120 days
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+121-364 days
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+365+ days
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="VisitFrequency_get"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Returning Visits
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Name&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Value&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Returning Visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Actions by Returning Visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+5
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Bounce Rate for Returning Visits
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Avg. Actions per Returning Visit
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+5
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Avg. Duration of a Returning Visit (in sec)
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:15:01
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Unique returning visitors
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="Provider_getProvider"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Provider
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Provider&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Conversion Rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<a style="color: rgb(68,68,68);" href='http://piwik.org/faq/general/#faq_52'>
+Unknown
+</a>
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2.67
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:07:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+33.33%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="UserSettings_getResolution"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Screen Resolution
+</h2>
+<img
+alt=""
+src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAG0klEQVR4nO3dP4scZQDH8WdkrwliqgQkRQoLG7sIdhbCtEJegoiFbyGVRbC1EEstLe1lQV+AXmVegZAFAxKxOIgXGYs5xsnO/vnt5u7mZvfzKWR3dmbzWKzzzTzPjFXTNAUAYJs3xh4AADANogEAiIgGACBy4NFQ1/Vwy3Dj0s7rdgCAYzYbewCv5ctvf13a8ujT97ceNZ/Pd9oOAJRSqknfPfHJFz+dn593b09OTh5/9u69e/f6+9R13dVA+7rb0l1R6N62n3bH9t9KCgCO3LSvNJRSzs7Oute3b99eLBZL0bBOPyb6lqpCKwBA68DXNAAAl+Xwo6GbYli6bNBu37zmMdkHAI7E5Kcnbt26tfexyRyEeQoAaE07Gh5+9M7i6dOxRwEAR2Ha0fDxh/dLub91t/7axs6G2yKW7qFYuQ8AHJtp33IJAFybw18ICQBcCtEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBAZEpPhKyqqnvtmVQwCe3P1g8Wbr7kJDuZaKiqVx5eufQWuIHa32n/v0TAzRSeZE1PAFdF2cNUhL9W0QAAREQDAPC/DQsAJrOmAQC4UltXLosGACC6w8D0BAAcu/CexCnduOg5DTAtSzdb+tnCjTW8NXrlD3ZK0QAAjMj0BAAQEQ0AQEQ0AAAR0QAAREQDABARDQBAZHrRcHp6OvYQgNRisVgsFmOPAkhtPslOLxoAgFGIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAyGzsAezj88c/jj0EIPLy5b+llNnst7EHAkRevPjnuwcP1n06yWj448+zsYcAAEfH9AQAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABCZbfisqqruddM04Za9vyr/NgDgqtV13b2ez+dlQzRUVdU/bben861bVp7pk69qmma4m24AgFHUdd2GQv/t5U9P9K8WDPsAALj5+sXQufxoaK8ZFJcKAOCwrJ2e6M79K9/uoTv89b8KALg23VTFbmsaQsMFCmXNakcA4MZq10J2UxWb7p7Y28qFjQDAhCythSzX85wGlxYAYFqGxVB2WtNQ4ic3tC+6iw3hV63cDQAYRf85DaWU+Xy+aXpieNredUv3Ojlw3UYA4Jpd0y2XAMBBEg0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBkNvYA9vHNo3rsIQCRZ8+elVLu3r079kCAyJMnTzZ8OsloePvOm2MPAYg0538Xv1mYjsVbJxs+NT0BAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEQm+X+5/PmX38ceAhD56/nzD967M/YogMsxyWj4+vvTsYcApEQDHAzTEwBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AACRWfeqqqpSStM0/betduNwS19VVcONS0ctHdt9lHw/cADqui6lzOfzsQcC7OPiSsPSKb9926mqaril/y3DMug0r1r5R6z8Ey/5XxQYW13XcgEm7SIatv7NfsMO/eDon+yHJ/5uz3WXJYADphhg6mbbd9lo6fTfXiTo/rn5wP5RrzkMAOCq7RMN+10wGObF0kcyAgBust2iYWmxZBnMR3QrEnY9669cVLHTNwAAV2qHaBieyFee5ldOT4gAAJi69DkNzvoAcOQurjR0swzdBMTSCoP2rsv+keueytBu719sWHmJYtfnQABT1z6koXhaA0zWRTQMT9IbZiJW6lpheMjKY7f+icCBUQkwdR4jDQBERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAARGZjD2AfP3z1cOwhAJHFYjH2EIBL40oDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAESqpmnGHgMAMAGuNAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABD5D9WNcV04MTcBAAAAAElFTkSuQmCC"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Resolution&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Conversion Rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+800x300
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+6
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:07:31
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+50%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1024x768
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:06:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="UserSettings_getBrowser"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Visitor Browser
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Browser&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Conversion Rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/browsers/OP.gif'>&nbsp;
+Opera
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+6
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:07:31
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+50%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/browsers/FF.gif'>&nbsp;
+Firefox
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:06:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="UserSettings_getBrowserVersion"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Browser Version
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Browser version&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Conversion Rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/browsers/OP.gif'>&nbsp;
+Opera 9.63
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+6
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:07:31
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+50%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/browsers/FF.gif'>&nbsp;
+Firefox 3.6
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:06:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="UserSettings_getBrowserType"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Browser Family
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Browser family&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Conversion Rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Presto (Opera)
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+6
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:07:31
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+50%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Gecko (Firefox)
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:06:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="UserSettings_getPlugin"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Browser Plugins
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Plugin&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;% Visits&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/plugins/cookie.gif'>&nbsp;
+Cookie
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/plugins/flash.gif'>&nbsp;
+Flash
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/plugins/java.gif'>&nbsp;
+Java
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+100%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/plugins/director.gif'>&nbsp;
+Director
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/plugins/gears.gif'>&nbsp;
+Gears
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/plugins/pdf.gif'>&nbsp;
+Pdf
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/plugins/quicktime.gif'>&nbsp;
+Quicktime
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/plugins/realplayer.gif'>&nbsp;
+Realplayer
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/plugins/silverlight.gif'>&nbsp;
+Silverlight
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/plugins/windowsmedia.gif'>&nbsp;
+Windowsmedia
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="UserSettings_getWideScreen"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Normal / Widescreen
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Type of screen&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Conversion Rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/screens/dual.gif'>&nbsp;
+Dual
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+6
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:07:31
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+50%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/screens/normal.gif'>&nbsp;
+Normal
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:06:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="UserSettings_getOS"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Operating System
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Operating system&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Conversion Rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/os/WXP.gif'>&nbsp;
+Windows XP
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2.67
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:07:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+33.33%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="UserSettings_getConfiguration"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Visitor Configuration
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Configuration&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Conversion Rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Windows XP / Opera / 800x300
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+6
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:07:31
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+50%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+Windows XP / Firefox / 1024x768
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+1
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:06:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="UserSettings_getOSFamily"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Operating System Family
+</h2>
+<img
+alt=""
+src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAHqUlEQVR4nO3dT4icZwHH8WfanW5IU2chFTUbSGiQ2kNZymqiGKIJTDEIQm/1KEWsNw9elKA5BK9689SDJ3Py4iHoQgOlRaouJeaQ1lAM2GwLJbBJm5jNpoyHWd9MZjeT367ZfWff/XwO4X3feefdZw/DfPO8f7bV6/UKAMDDPFb3AACA7UE0AAAR0QAARETDPd1ud/WW1RuHdn7QDgDQMBN1D2Dr/Oq1vw9t+fkrX33ou+bm5ta1HQCaqrVz7p74wenXl5eXq9V2u33mh89OT08P7tPtdqsa6C9XW6oZhWq1/2r13sFVSQFA8+ygmYZSyq1bt6rlTqezsLAwFA0PMhgTg4aqQisA0GCuaQAAIqLhPtUphqFpg/720dc8JvsAwPa1s05P7N69e8PvTc5BOE8BQIPtoGh46cShhatX6x4FAGxXOygavnfsQCkHHrrb4LWNlRG3RQzdQ7HmPgDQADvolksA4P/hQkgAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiDT2iZCtVqta9gArGB8+mzD+Wq21n/3YzGgY+m0f9MsDW8xnE8bfYNkPcXoC2DoSAcbc6JQXDQBAKcHkn2gA6uHcBIyV5CPZzGsagHHWP2OqGGDcDF7NsGZDiAZgS5lggPGUXKTs9ASwdRQDbGvNnGno9XruBYfxNHQ3l48nbCOqHwCIOD0BAEREAwAQEQ0AQEQ0AAAR0QAAREQDABBpeDTMz8/XPQRgDT6bMJ5GfzYbHg0AwKMiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACITdQ9g053+7Zt1DwEYduPGJ3/8q89mc5z+8dG6h8BWaH40/OOfH9c9BGAtH92uewTA+jg9AQBERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABCZqHsAqeWlTz/75OPHn/p8KaW/0J6cKGVX3eMCgJ1ie0TD8tKnV//8o8VL16ae27t46dqta1fO35n+2vd/c+yZPf+rh7K8dLc9uafukQJAYz2yaGi1Wr1e71EdbciNxcsLb87vOzo7uPFvv//JhW88PXPw1OyBu6WUvV94bpN+OgBQSpkY+rIfvToObl27Ui1fn/zgjQ9ffePDUkr55Xf+1J6sa1AAlFJKt9utlufm5mocCZthW5yeuF1K2b33YCll8dK1aut/vn27v9BZ2n998oM6BgbAPd1udzAUhlZpgIler1dNJ/QXBler/aqX+qurdxjcs1oePFq5f95izQOuaXnp7r9/97MyUAzn70xXr/aLobO0f52/OACPmERovHXMNAx95Zf7v+n7W1af3QgPONov3v3KoSMv95fff/fskc7FoR1mDp5KjgMAbNg6omFjFzdUkw1r/psc4fyFf300dfJQKaWUt967XqZOvr1YjnQuVrMLnaX9x57Z49YJgHFQXdZg4qF57kVD9f/+oXMKm6fqhtE/69TZhW8+2zn5wpPn3rnZ33Kkc/H4E1d3X2mXUqZmLi+83r75rUVPbAAYB1UruKaheSbKwJf3oHVNBmzY4LUU4Vu+uHiudEopZWrmcn/LvqOzTz4+tTkDBABW3HuM9ODX9nqnGUa3xeDUxYanMc69c/Ot965Xq/tOLFfLTx3+6a6nv7TeAwLwaA3eb0kjbfyWy6F7H6oTDUN3T4w4QnLrRCnlzMv7quX33z5bSjn+xNWNjhqAzTI3N+c5Dc22Eg2rv7ariYE1dxh6dcSeqzeO3nO1Fw8/X0op5fbxmbvnX3jlwpUz5/8y/d0L7ZXTE3e+/rmpL/sjFADjQCg027Z4uFPfrvZkefHw88dnXvvsxMpfrupz3wQAbIFtFA0r2pPurgSAGjz28F0AAEQDABASDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQmah7AJvuD79+qe4hAMPm5+dnZ2frHgWwPmYaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAg0ur1enWPAQDYBsw0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEPkvl18VqH3bJbsAAAAASUVORK5CYII="
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Operating system family&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Conversion Rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/os/WXP.gif'>&nbsp;
+Windows
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2.67
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:07:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+33.33%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a><a name ="UserSettings_getMobileVsDesktop"/>
+<h2 style="color: rgb(126,115,99); font-size: 11pt;">
+Mobile vs Desktop
+</h2>
+<img
+alt=""
+src="data:image/png;base64,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"
+height="200"
+width="700" />
+<br/>
+<br/>
+<table style="border-collapse:collapse; margin-left: 5px">
+<thead style="background-color: rgb(228,226,215); color: rgb(37,87,146); font-size: 11pt;">
+<th style="padding: 6px 0;">
+&nbsp;Mobile vs Desktop&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Visits&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Actions per Visit&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Avg. Time on Website&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Bounce Rate&nbsp;&nbsp;
+</th>
+<th style="padding: 6px 0;">
+&nbsp;Conversion Rate&nbsp;&nbsp;
+</th>
+</thead>
+<tbody>
+<tr style="">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/screens/normal.gif'>&nbsp;
+Desktop
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+3
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+8
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+2.67
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:07:01
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+33.33%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+<tr style="background-color: rgb(249,250,250)">
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+<img src='plugins/UserSettings/images/screens/mobile.gif'>&nbsp;
+Mobile
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+00:00:00
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
+0%
+</td>
+</tr>
+</tbody>
+</table>
+<br/>
+<a style="text-decoration:none; color: rgb(126,115,99); font-size: 9pt" href="#reportTop">
+Back to top
+</a></body>
+</html> \ No newline at end of file
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__PDFReports.generateReport_month.original.html b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__PDFReports.generateReport_month.original.html
index 0458b27c45..5aaee88939 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__PDFReports.generateReport_month.original.html
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_html_tables_only__PDFReports.generateReport_month.original.html
@@ -2121,7 +2121,7 @@ second visitor
0%
</td>
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
-00:06:00
+00:07:30
</td>
<td style="font-size: 11pt; border-bottom: 1px solid rgb(231,231,231); padding: 5px 0 5px 5px;">
0%
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_pdf__PDFReports.generateReport_month.original.pdf b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_pdf__PDFReports.generateReport_month.original.pdf
new file mode 100755
index 0000000000..486f042a21
--- /dev/null
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_pdf__PDFReports.generateReport_month.original.pdf
Binary files differ
diff --git a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_pdf_tables_only__PDFReports.generateReport_month.original.pdf b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_pdf_tables_only__PDFReports.generateReport_month.original.pdf
index 8499ff1b8f..7eac1c11d8 100644
--- a/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_pdf_tables_only__PDFReports.generateReport_month.original.pdf
+++ b/tests/integration/expected/test_TwoVisitors_twoWebsites_differentDays_scheduled_report_in_pdf_tables_only__PDFReports.generateReport_month.original.pdf
Binary files differ
diff --git a/tests/integration/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml b/tests/integration/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
index e4867b732b..0f986c8425 100644
--- a/tests/integration/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
+++ b/tests/integration/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
@@ -27,6 +27,13 @@
<row>
<type>metric</type>
<category>Visit</category>
+ <name>Number of Internal Searches</name>
+ <segment>searches</segment>
+ <acceptedValues>To select all visits who used internal Site Search, use: &amp;segment=searches&gt;0</acceptedValues>
+ </row>
+ <row>
+ <type>metric</type>
+ <category>Visit</category>
<name>Number of visits</name>
<segment>visitCount</segment>
</row>
diff --git a/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageTitlesFollowingSiteSearch_day.xml b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageTitlesFollowingSiteSearch_day.xml
new file mode 100644
index 0000000000..106f23f16b
--- /dev/null
+++ b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageTitlesFollowingSiteSearch_day.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<results>
+ <result date="2009-01-04" />
+ <result date="2009-01-05" />
+ <result date="2009-01-06" />
+ <result date="2009-01-07" />
+ <result date="2009-01-08" />
+ <result date="2009-01-09" />
+ <result date="2009-01-10" />
+</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageTitlesFollowingSiteSearch_week.xml b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageTitlesFollowingSiteSearch_week.xml
new file mode 100644
index 0000000000..5cfb246edc
--- /dev/null
+++ b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageTitlesFollowingSiteSearch_week.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<results>
+ <result date="From 2008-12-29 to 2009-01-04" />
+ <result date="From 2009-01-05 to 2009-01-11" />
+ <result date="From 2009-01-12 to 2009-01-18" />
+ <result date="From 2009-01-19 to 2009-01-25" />
+ <result date="From 2009-01-26 to 2009-02-01" />
+ <result date="From 2009-02-02 to 2009-02-08" />
+ <result date="From 2009-02-09 to 2009-02-15" />
+</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageUrlsFollowingSiteSearch_day.xml b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageUrlsFollowingSiteSearch_day.xml
new file mode 100644
index 0000000000..106f23f16b
--- /dev/null
+++ b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageUrlsFollowingSiteSearch_day.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<results>
+ <result date="2009-01-04" />
+ <result date="2009-01-05" />
+ <result date="2009-01-06" />
+ <result date="2009-01-07" />
+ <result date="2009-01-08" />
+ <result date="2009-01-09" />
+ <result date="2009-01-10" />
+</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageUrlsFollowingSiteSearch_week.xml b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageUrlsFollowingSiteSearch_week.xml
new file mode 100644
index 0000000000..5cfb246edc
--- /dev/null
+++ b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getPageUrlsFollowingSiteSearch_week.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<results>
+ <result date="From 2008-12-29 to 2009-01-04" />
+ <result date="From 2009-01-05 to 2009-01-11" />
+ <result date="From 2009-01-12 to 2009-01-18" />
+ <result date="From 2009-01-19 to 2009-01-25" />
+ <result date="From 2009-01-26 to 2009-02-01" />
+ <result date="From 2009-02-02 to 2009-02-08" />
+ <result date="From 2009-02-09 to 2009-02-15" />
+</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchCategories_day.xml b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchCategories_day.xml
new file mode 100644
index 0000000000..a91076f826
--- /dev/null
+++ b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchCategories_day.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<results>
+</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchCategories_week.xml b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchCategories_week.xml
new file mode 100644
index 0000000000..a91076f826
--- /dev/null
+++ b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchCategories_week.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<results>
+</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchKeywords_day.xml b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchKeywords_day.xml
new file mode 100644
index 0000000000..106f23f16b
--- /dev/null
+++ b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchKeywords_day.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<results>
+ <result date="2009-01-04" />
+ <result date="2009-01-05" />
+ <result date="2009-01-06" />
+ <result date="2009-01-07" />
+ <result date="2009-01-08" />
+ <result date="2009-01-09" />
+ <result date="2009-01-10" />
+</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchKeywords_week.xml b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchKeywords_week.xml
new file mode 100644
index 0000000000..5cfb246edc
--- /dev/null
+++ b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchKeywords_week.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<results>
+ <result date="From 2008-12-29 to 2009-01-04" />
+ <result date="From 2009-01-05 to 2009-01-11" />
+ <result date="From 2009-01-12 to 2009-01-18" />
+ <result date="From 2009-01-19 to 2009-01-25" />
+ <result date="From 2009-01-26 to 2009-02-01" />
+ <result date="From 2009-02-02 to 2009-02-08" />
+ <result date="From 2009-02-09 to 2009-02-15" />
+</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchNoResultKeywords_day.xml b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchNoResultKeywords_day.xml
new file mode 100644
index 0000000000..106f23f16b
--- /dev/null
+++ b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchNoResultKeywords_day.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<results>
+ <result date="2009-01-04" />
+ <result date="2009-01-05" />
+ <result date="2009-01-06" />
+ <result date="2009-01-07" />
+ <result date="2009-01-08" />
+ <result date="2009-01-09" />
+ <result date="2009-01-10" />
+</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchNoResultKeywords_week.xml b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchNoResultKeywords_week.xml
new file mode 100644
index 0000000000..5cfb246edc
--- /dev/null
+++ b/tests/integration/expected/test_noVisit_PeriodIsLast__Actions.getSiteSearchNoResultKeywords_week.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<results>
+ <result date="From 2008-12-29 to 2009-01-04" />
+ <result date="From 2009-01-05 to 2009-01-11" />
+ <result date="From 2009-01-12 to 2009-01-18" />
+ <result date="From 2009-01-19 to 2009-01-25" />
+ <result date="From 2009-01-26 to 2009-02-01" />
+ <result date="From 2009-02-02 to 2009-02-08" />
+ <result date="From 2009-02-09 to 2009-02-15" />
+</results> \ No newline at end of file
diff --git a/tests/integration/expected/test_noVisit__Actions.getPageTitlesFollowingSiteSearch_day.xml b/tests/integration/expected/test_noVisit__Actions.getPageTitlesFollowingSiteSearch_day.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_noVisit__Actions.getPageTitlesFollowingSiteSearch_day.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_noVisit__Actions.getPageUrlsFollowingSiteSearch_day.xml b/tests/integration/expected/test_noVisit__Actions.getPageUrlsFollowingSiteSearch_day.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_noVisit__Actions.getPageUrlsFollowingSiteSearch_day.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_noVisit__Actions.getSiteSearchCategories_day.xml b/tests/integration/expected/test_noVisit__Actions.getSiteSearchCategories_day.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_noVisit__Actions.getSiteSearchCategories_day.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_noVisit__Actions.getSiteSearchKeywords_day.xml b/tests/integration/expected/test_noVisit__Actions.getSiteSearchKeywords_day.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_noVisit__Actions.getSiteSearchKeywords_day.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_noVisit__Actions.getSiteSearchNoResultKeywords_day.xml b/tests/integration/expected/test_noVisit__Actions.getSiteSearchNoResultKeywords_day.xml
new file mode 100644
index 0000000000..c234bed59e
--- /dev/null
+++ b/tests/integration/expected/test_noVisit__Actions.getSiteSearchNoResultKeywords_day.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result /> \ No newline at end of file
diff --git a/tests/integration/expected/test_noVisit__Actions.get_day.xml b/tests/integration/expected/test_noVisit__Actions.get_day.xml
index 4a78de72f1..93eca2608e 100644
--- a/tests/integration/expected/test_noVisit__Actions.get_day.xml
+++ b/tests/integration/expected/test_noVisit__Actions.get_day.xml
@@ -6,4 +6,7 @@
<nb_uniq_downloads>0</nb_uniq_downloads>
<nb_outlinks>0</nb_outlinks>
<nb_uniq_outlinks>0</nb_uniq_outlinks>
+ <nb_searches>0</nb_searches>
+ <nb_uniq_searches>0</nb_uniq_searches>
+ <nb_keywords>0</nb_keywords>
</result> \ No newline at end of file
diff --git a/tests/javascript/index.php b/tests/javascript/index.php
index 297c70e17f..0a1f40eec6 100644
--- a/tests/javascript/index.php
+++ b/tests/javascript/index.php
@@ -24,7 +24,7 @@ if (file_exists("enable_sqlite")) {
}
if(!$sqlite) {
- echo 'alert("WARNING: Javascript integration tests require sqlite, \n1) ensure this PHP extension is enabled to make sure you run all tests \n2) Then please create an empty file enable_sqlite in tests/javascript/enable_sqlite \n3) Re-execute this page and make sure this popup does not display ");';
+ echo 'alert("WARNING: Javascript integration tests require sqlite, \n1) ensure this PHP extension is enabled to make sure you run all tests \napt-get install php5-sqlite \n2) Then please create an empty file enable_sqlite in tests/javascript/enable_sqlite \n3) Re-execute this page and make sure this popup does not display ");';
}
if ($sqlite) {
echo '
@@ -746,7 +746,7 @@ if ($sqlite) {
});
test("tracking", function() {
- expect(76);
+ expect(79);
/*
* Prevent Opera and HtmlUnit from performing the default action (i.e., load the href URL)
@@ -909,7 +909,12 @@ if ($sqlite) {
deepEqual( tracker.getCustomVariable(2, 3), ["cookiename2PAGE", "cookievalue2PAGE"], "GA compability - setCustomVariable(cvarExists), getCustomVariable()" );
tracker.trackPageView("SaveCustomVariableCookie");
-
+
+ // test Site Search
+ tracker.trackSiteSearch("No result keyword éà", "Search cat", 0);
+ tracker.trackSiteSearch("Keyword with 10 results", false, 10);
+ tracker.trackSiteSearch("search Keyword");
+
//Ecommerce views
tracker.setEcommerceView( "", false, ["CATEGORY1","CATEGORY2"] );
deepEqual( tracker.getCustomVariable(3, "page"), false, "Ecommerce view SKU");
@@ -975,7 +980,7 @@ if ($sqlite) {
xhr.open("GET", "piwik.php?requests=" + getToken(), false);
xhr.send(null);
results = xhr.responseText;
- equal( (/<span\>([0-9]+)\<\/span\>/.exec(results))[1], "21", "count tracking events" );
+ equal( (/<span\>([0-9]+)\<\/span\>/.exec(results))[1], "24", "count tracking events" );
// tracking requests
ok( /PiwikTest/.test( results ), "trackPageView(), setDocumentTitle()" );
@@ -1010,7 +1015,12 @@ if ($sqlite) {
// Test campaign parameters set
ok( /&_rcn=YEAH&_rck=RIGHT!/.test( results), "Test campaign parameters found");
ok( /&_ref=http%3A%2F%2Freferrer.example.com%2Fpage%2Fsub%3Fquery%3Dtest%26test2%3Dtest3/.test( results), "Test cookie Ref URL found ");
-
+
+ // Test site search
+ ok( /search=No%20result%20keyword%20%C3%A9%C3%A0&search_cat=Search%20cat&search_count=0&idsite=1/.test(results), "site search, cat, 0 result ");
+ ok( /search=Keyword%20with%2010%20results&search_count=10&idsite=1/.test(results), "site search, no cat, 10 results ");
+ ok( /search=search%20Keyword&idsite=1/.test(results), "site search, no cat, no results count ");
+
// ecommerce view
ok( /(EcommerceView).*(&cvar=%7B%225%22%3A%5B%22_pkc%22%2C%22CATEGORY%20HERE%22%5D%2C%223%22%3A%5B%22_pks%22%2C%22SKU%22%5D%2C%224%22%3A%5B%22_pkn%22%2C%22NAME%20HERE%22%5D%7D)/.test(results)
|| /(EcommerceView).*(&cvar=%7B%223%22%3A%5B%22_pks%22%2C%22SKU%22%5D%2C%224%22%3A%5B%22_pkn%22%2C%22NAME%20HERE%22%5D%2C%225%22%3A%5B%22_pkc%22%2C%22CATEGORY%20HERE%22%5D%7D)/.test(results), "ecommerce view");