diff options
author | Benaka Moorthi <benaka.moorthi@gmail.com> | 2013-09-21 11:42:08 +0400 |
---|---|---|
committer | Benaka Moorthi <benaka.moorthi@gmail.com> | 2013-09-21 11:42:08 +0400 |
commit | 49b4d0fa9b345806b977b478ad78977f4d21b35c (patch) | |
tree | 2f13b4367d0f31983b2ddb9fdf78ceab9da21620 /plugins | |
parent | 7ce55dc1a95e75336a594d7266144532762d0ec4 (diff) |
Refs #3089, show site search and avg. page load time info in visitor profile.
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/Live/API.php | 35 | ||||
-rw-r--r-- | plugins/Live/templates/getSingleVisitSummary.twig | 2 | ||||
-rw-r--r-- | plugins/Live/templates/getVisitorProfilePopup.twig | 11 |
3 files changed, 44 insertions, 4 deletions
diff --git a/plugins/Live/API.php b/plugins/Live/API.php index 9df3594f02..c6fa365479 100644 --- a/plugins/Live/API.php +++ b/plugins/Live/API.php @@ -196,6 +196,8 @@ class API $result['totalVisits'] = 0; $result['totalVisitDuration'] = 0; $result['totalActions'] = 0; + $result['totalSearches'] = 0; + $result['totalPageViews'] = 0; $result['totalGoalConversions'] = 0; $result['totalConversionsByGoal'] = array(); @@ -210,6 +212,9 @@ class API $countries = array(); $continents = array(); + $siteSearchKeywords = array(); + + $pageGenerationTimeTotal = 0; // aggregate all requested visits info for total_* info foreach ($visits->getRows() as $visit) { @@ -249,6 +254,21 @@ class API $result['totalAbandonedCartsRevenue'] += $action['revenue']; $result['totalAbandonedCartsItems'] += $action['items']; } + + if (isset($result['siteSearchKeyword'])) { + $keyword = $result['siteSearchKeyword']; + + if (!isset($siteSearchKeywords[$keyword])) { + $siteSearchKeyword[$keyword] = 0; + ++$result['totalSearches']; + } + ++$siteSearchKeywords[$keyword]; + } + + if (isset($result['generationTime'])) { + $pageGenerationTimeTotal += $result['generationTime']; + ++$result['totalPageViews']; + } } $countryCode = $visit->getColumn('countryCode'); @@ -264,12 +284,13 @@ class API ++$continents[$continentCode]; } - // sort countries/continents by visit + // sort countries/continents/search keywords by visit/action asort($countries); asort($continents); + asort($siteSearchKeywords); - // transform country/continents into something that will look good in XML - $result['countries'] = $result['continents'] = array(); + // transform country/continents/search keywords into something that will look good in XML + $result['countries'] = $result['continents'] = $result['searches'] = array(); foreach ($countries as $countryCode => $nbVisits) { $result['countries'][] = array('country' => $countryCode, 'nb_visits' => $nbVisits, @@ -281,6 +302,14 @@ class API 'nb_visits' => $nbVisits, 'prettyName' => \Piwik\Plugins\UserCountry\continentTranslate($continentCode)); } + foreach ($siteSearchKeywords as $keyword => $searchCount) { + $result['searches'][] = array('keyword' => $keyword, + 'searches' => $searchCount); + } + + if ($result['totalPageViews']) { + $result['averagePageGenerationTime'] = $pageGenerationTimeTotal / $result['totalPageViews']; + } $result['totalVisitDurationPretty'] = \Piwik\MetricsFormatter::getPrettyTimeFromSeconds($result['totalVisitDuration']); diff --git a/plugins/Live/templates/getSingleVisitSummary.twig b/plugins/Live/templates/getSingleVisitSummary.twig index 8755c8361a..151e1cd27d 100644 --- a/plugins/Live/templates/getSingleVisitSummary.twig +++ b/plugins/Live/templates/getSingleVisitSummary.twig @@ -14,7 +14,7 @@ <li><span>{{ 'General_IP'|translate }}</span><strong>{{ visitData.visitIp }}</strong></li> <li class="visitor-profile-id"> <span>{{ 'General_Id'|translate|upper }}</span> - {% if widgetizedLink is defined %}<a class="visitor-profile-widget-link" href="{{ widgetizedLink }}" target="_blank" title="{{ 'General_OpenInNewWindow_js'|translate }} - {{ 'Live_VisitorProfile'|translate }} {{ 'General_Id'|translate|upper }} {{ visitData.visitorId }}">{% endif %} + {% if widgetizedLink is defined %}<a class="visitor-profile-widget-link" href="{{ widgetizedLink }}" target="_blank" title="{{ 'General_OpenInNewWindow'|translate }} - {{ 'Live_VisitorProfile'|translate }} {{ 'General_Id'|translate|upper }} {{ visitData.visitorId }}">{% endif %} <strong>{{ visitData.visitorId }}</strong> {% if widgetizedLink is defined %}</a>{% endif %} <a class="visitor-profile-export" href="{{ exportLink }}" target="_blank" title="{{ 'General_ExportThisReport'|translate }}" style="display:none"> diff --git a/plugins/Live/templates/getVisitorProfilePopup.twig b/plugins/Live/templates/getVisitorProfilePopup.twig index 50ea1c92c1..85b4345ebd 100644 --- a/plugins/Live/templates/getVisitorProfilePopup.twig +++ b/plugins/Live/templates/getVisitorProfilePopup.twig @@ -46,6 +46,17 @@ {%- if visitorData.totalAbandonedCarts|default(0) > 0 %} {{ 'Live_AbandonedCartSummary'|translate('<strong>', visitorData.totalAbandonedCarts, '</strong>', visitorData.totalAbandonedCartsItems, '<strong>', visitorData.totalAbandonedCartsRevenue|money(idSite), '</strong>')|raw }}{%- endif -%} </p> {% endif %} + {% if visitorData.totalSearches|default(0) %} + <p> + {{ 'Actions_WidgetSearchKeywords'|translate }}: + {%- for entry in visitorData.searches %} <strong title="{% if entry.searches == 1 %}{{ 'Actions_OneSearch'|translate }}{% else %}{{ 'UserCountryMap_Searches'|translate(entry.searches) }}{% endif %}">{{ entry.keyword }}</strong>{% if not loop.last %},{% endif %}{% endfor %} + </p> + {% endif %} + {% if visitorData.averagePageGenerationTime is defined %} + <p title="{{ 'Live_CalculatedOverNPageViews'|translate(visitorData.totalPageViews) }}"> + {{ 'Live_AveragePageGenerationTime'|translate('<strong>' ~ visitorData.averagePageGenerationTime ~ 's</strong>')|raw }} + </p> + {% endif %} </div> </div> <div class="visitor-profile-important-visits"> |