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:
authorBeezyT <timo@ezdesign.de>2012-10-15 18:16:05 +0400
committerBeezyT <timo@ezdesign.de>2012-10-15 18:16:05 +0400
commit883c18ff8277fedbcd1f26070e5e90c7d82734d4 (patch)
tree90fb9f12fd25ef9ef6f72c575b889f15ec2cd23c /plugins/Transitions
parentea37dbb4eeeaa9129f54691d9adbbacca24c353d (diff)
refs #2992, refs #3332: integrating previous and following internal searches into transitions. the code is starting to get a little complicated ;-)
git-svn-id: http://dev.piwik.org/svn/trunk@7201 59fd770c-687e-43c8-a1e3-f5a4ff64c105
Diffstat (limited to 'plugins/Transitions')
-rw-r--r--plugins/Transitions/API.php21
-rw-r--r--plugins/Transitions/Controller.php4
-rw-r--r--plugins/Transitions/Transitions.php93
-rw-r--r--plugins/Transitions/templates/transitions.js28
-rw-r--r--plugins/Transitions/templates/transitions.tpl2
5 files changed, 109 insertions, 39 deletions
diff --git a/plugins/Transitions/API.php b/plugins/Transitions/API.php
index e94f28f3aa..e17b85b726 100644
--- a/plugins/Transitions/API.php
+++ b/plugins/Transitions/API.php
@@ -86,15 +86,23 @@ class Piwik_Transitions_API
- $report['pageMetrics']['loops'];
// replace column names in the data tables
- $columnNames = array(
- 'label' => 'url',
- Piwik_Archive::INDEX_NB_ACTIONS => 'referrals'
+ $reportNames = array(
+ 'previousPages' => true,
+ 'previousSiteSearches' => false,
+ 'followingPages' => true,
+ 'followingSiteSearches' => false,
+ 'outlinks' => true,
+ 'downloads' => true
);
- $reportNames = array('previousPages', 'followingPages', 'outlinks', 'downloads');
- foreach ($reportNames as $reportName)
+ foreach ($reportNames as $reportName => $replaceLabel)
{
if (isset($report[$reportName]))
{
+ $columnNames = array(Piwik_Archive::INDEX_NB_ACTIONS => 'referrals');
+ if ($replaceLabel)
+ {
+ $columnNames[Piwik_Archive::INDEX_NB_ACTIONS] = 'referrals';
+ }
$report[$reportName]->filter('ReplaceColumnNames', array($columnNames));
}
}
@@ -137,7 +145,7 @@ class Piwik_Transitions_API
/**
* Add the internal referrers to the report:
- * previous pages
+ * previous pages and previous site searches
*
* @param Piwik_Transitions $transitionsArchiving
* @param $archiveProcessing
@@ -159,6 +167,7 @@ class Piwik_Transitions_API
}
$report['previousPages'] = &$data['previousPages'];
+ $report['previousSiteSearches'] = &$data['previousSiteSearches'];
$report['pageMetrics']['loops'] = $data['loops'];
$report['pageMetrics']['pageviews'] = $data['pageviews'];
}
diff --git a/plugins/Transitions/Controller.php b/plugins/Transitions/Controller.php
index 1a6977447e..7516b61e5c 100644
--- a/plugins/Transitions/Controller.php
+++ b/plugins/Transitions/Controller.php
@@ -27,6 +27,8 @@ class Piwik_Transitions_Controller extends Piwik_Controller
'loopsInline' => 'Transitions_LoopsInline',
'fromPreviousPages' => 'Transitions_FromPreviousPages',
'fromPreviousPagesInline' => 'Transitions_FromPreviousPagesInline',
+ 'fromPreviousSiteSearches' => 'Transitions_FromPreviousSiteSearches',
+ 'fromPreviousSiteSearchesInline' => 'Transitions_FromPreviousSiteSearchesInline',
'fromSearchEngines' => 'Transitions_FromSearchEngines',
'fromSearchEnginesInline' => 'Transitions_FromSearchEnginesInline',
'fromWebsites' => 'Transitions_FromWebsites',
@@ -37,6 +39,8 @@ class Piwik_Transitions_Controller extends Piwik_Controller
'directEntriesInline' => 'Referers_TypeDirectEntries',
'toFollowingPages' => 'Transitions_ToFollowingPages',
'toFollowingPagesInline' => 'Transitions_ToFollowingPagesInline',
+ 'toFollowingSiteSearches' => 'Transitions_ToFollowingSiteSearches',
+ 'toFollowingSiteSearchesInline' => 'Transitions_ToFollowingSiteSearchesInline',
'downloads' => 'Actions_ColumnDownloads',
'downloadsInline' => 'VisitsSummary_NbDownloadsDescription',
'outlinks' => 'Actions_ColumnOutlinks',
diff --git a/plugins/Transitions/Transitions.php b/plugins/Transitions/Transitions.php
index 593b67fc7b..de7da14a65 100644
--- a/plugins/Transitions/Transitions.php
+++ b/plugins/Transitions/Transitions.php
@@ -145,31 +145,48 @@ class Piwik_Transitions extends Piwik_Plugin
$rankingQuery = new Piwik_RankingQuery($limitBeforeGrouping ? $limitBeforeGrouping : $this->limitBeforeGrouping);
$rankingQuery->addLabelColumn(array('name', 'url_prefix'));
$rankingQuery->setColumnToMarkExcludedRows('is_self');
- $rankingQuery->partitionResultIntoMultipleGroups('only_show_this', array(0, 1));
+ $rankingQuery->partitionResultIntoMultipleGroups('action_partition', array(0, 1, 2));
$type = $this->getColumnTypeSuffix($actionType);
- $onlyShowType = Piwik_Tracker_Action::TYPE_ACTION_URL;
+ $mainActionType = Piwik_Tracker_Action::TYPE_ACTION_URL;
$dimension = 'idaction_url_ref';
$isTitle = $actionType == 'title';
if ($isTitle)
{
- $onlyShowType = Piwik_Tracker_Action::TYPE_ACTION_NAME;
+ $mainActionType = Piwik_Tracker_Action::TYPE_ACTION_NAME;
$dimension = 'idaction_name_ref';
}
$addSelect = '
log_action.name, log_action.url_prefix,
CASE WHEN log_link_visit_action.idaction_'.$type.'_ref = '.intval($idaction).' THEN 1 ELSE 0 END AS is_self,
- CASE WHEN log_action.type = '.$onlyShowType.' THEN 1 ELSE 0 END AS only_show_this';
+ CASE
+ WHEN log_action.type = '.$mainActionType.' THEN 1
+ WHEN log_action.type = '.Piwik_Tracker_Action::TYPE_SITE_SEARCH.' THEN 2
+ ELSE 0
+ END AS action_partition';
$where = '
log_link_visit_action.idaction_'.$type.' = '.intval($idaction);
+ if ($dimension == 'idaction_url_ref')
+ {
+ // site search referrers are logged with url_ref=NULL
+ // when we find one, we have to join on name_ref
+ $dimension = 'IF( idaction_url_ref IS NULL, idaction_name_ref, idaction_url_ref )';
+ $joinLogActionOn = $dimension;
+ }
+ else
+ {
+ $joinLogActionOn = $dimension;
+ $dimension = array($dimension);
+ }
+
$orderBy = '`'.Piwik_Archive::INDEX_NB_ACTIONS.'` DESC';
$metrics = array(Piwik_Archive::INDEX_NB_ACTIONS);
- $data = $archiveProcessing->queryActionsByDimension(array($dimension), $where, $metrics, $orderBy,
- $rankingQuery, $dimension, $addSelect);
+ $data = $archiveProcessing->queryActionsByDimension($dimension, $where, $metrics, $orderBy,
+ $rankingQuery, $joinLogActionOn, $addSelect);
$loops = 0;
$nbPageviews = 0;
@@ -189,6 +206,22 @@ class Piwik_Transitions extends Piwik_Plugin
}
}
+ $previousSearchesDataTable = new Piwik_DataTable;
+ if (isset($data['result'][2]))
+ {
+ foreach ($data['result'][2] as &$search)
+ {
+ $nbActions = intval($search[Piwik_Archive::INDEX_NB_ACTIONS]);
+ $previousSearchesDataTable->addRow(new Piwik_DataTable_Row(array(
+ Piwik_DataTable_Row::COLUMNS => array(
+ 'label' => $search['name'],
+ Piwik_Archive::INDEX_NB_ACTIONS => $nbActions
+ )
+ )));
+ $nbPageviews += $nbActions;
+ }
+ }
+
if (isset($data['result'][0]))
{
foreach ($data['result'][0] as &$referrer)
@@ -206,6 +239,7 @@ class Piwik_Transitions extends Piwik_Plugin
return array(
'pageviews' => $nbPageviews,
'previousPages' => $previousPagesDataTable,
+ 'previousSiteSearches' => $previousSearchesDataTable,
'loops' => $loops
);
}
@@ -230,7 +264,7 @@ class Piwik_Transitions extends Piwik_Plugin
}
/**
- * Get information about the following actions (following pages, outlinks, downloads)
+ * Get information about the following actions (following pages, site searches, outlinks, downloads)
*
* @param $idaction
* @param $actionType
@@ -247,8 +281,10 @@ class Piwik_Transitions extends Piwik_Plugin
if (!$isTitle) {
// specific setup for page urls
$types[Piwik_Tracker_Action::TYPE_ACTION_URL] = 'followingPages';
- $dimension = array('idaction_url');
- $joinLogActionColumn = 'idaction_url';
+ $dimension = 'IF( idaction_url IS NULL, idaction_name, idaction_url )';
+ // site search referrers are logged with url=NULL
+ // when we find one, we have to join on name
+ $joinLogActionColumn = $dimension;
$addSelect = 'log_action.name, log_action.url_prefix, log_action.type';
} else {
// specific setup for page titles:
@@ -257,18 +293,30 @@ class Piwik_Transitions extends Piwik_Plugin
// the table joined on url is log_action1
$joinLogActionColumn = array('idaction_url', 'idaction_name');
$dimension = '
- CASE log_action1.type
- WHEN 1 THEN log_action2.idaction
+ CASE
+ ' /* following site search */ . '
+ WHEN log_link_visit_action.idaction_url IS NULL THEN log_action2.idaction
+ ' /* following page view: use page title */ . '
+ WHEN log_action1.type = '.Piwik_Tracker_Action::TYPE_ACTION_URL.' THEN log_action2.idaction
+ ' /* following download or outlink: use url */ . '
ELSE log_action1.idaction
END
';
$addSelect = '
- CASE log_action1.type
- WHEN 1 THEN log_action2.name
+ CASE
+ ' /* following site search */ . '
+ WHEN log_link_visit_action.idaction_url IS NULL THEN log_action2.name
+ ' /* following page view: use page title */ . '
+ WHEN log_action1.type = '.Piwik_Tracker_Action::TYPE_ACTION_URL.' THEN log_action2.name
+ ' /* following download or outlink: use url */ . '
ELSE log_action1.name
END AS name,
- CASE log_action1.type
- WHEN 1 THEN log_action2.type
+ CASE
+ ' /* following site search */ . '
+ WHEN log_link_visit_action.idaction_url IS NULL THEN log_action2.type
+ ' /* following page view: use page title */ . '
+ WHEN log_action1.type = '.Piwik_Tracker_Action::TYPE_ACTION_URL.' THEN log_action2.type
+ ' /* following download or outlink: use url */ . '
ELSE log_action1.type
END AS type,
NULL AS url_prefix
@@ -276,25 +324,18 @@ class Piwik_Transitions extends Piwik_Plugin
}
// these types are available for both titles and urls
+ $types[Piwik_Tracker_Action::TYPE_SITE_SEARCH] = 'followingSiteSearches';
$types[Piwik_Tracker_Action::TYPE_OUTLINK] = 'outlinks';
$types[Piwik_Tracker_Action::TYPE_DOWNLOAD] = 'downloads';
-
$rankingQuery = new Piwik_RankingQuery($limitBeforeGrouping ? $limitBeforeGrouping : $this->limitBeforeGrouping);
$rankingQuery->addLabelColumn(array('name', 'url_prefix'));
$rankingQuery->partitionResultIntoMultipleGroups('type', array_keys($types));
$type = $this->getColumnTypeSuffix($actionType);
- $where = 'log_link_visit_action.idaction_'.$type.'_ref = '.intval($idaction).' AND ';
- if ($isTitle)
- {
- $where .= '(log_link_visit_action.idaction_'.$type.' IS NULL OR '
- . 'log_link_visit_action.idaction_'.$type.' != '.intval($idaction).')';
- }
- else
- {
- $where .= 'log_link_visit_action.idaction_'.$type.' != '.intval($idaction);
- }
+ $where = 'log_link_visit_action.idaction_'.$type.'_ref = '.intval($idaction).' AND '
+ . '(log_link_visit_action.idaction_'.$type.' IS NULL OR '
+ . 'log_link_visit_action.idaction_'.$type.' != '.intval($idaction).')';
$orderBy = '`'.Piwik_Archive::INDEX_NB_ACTIONS.'` DESC';
diff --git a/plugins/Transitions/templates/transitions.js b/plugins/Transitions/templates/transitions.js
index 29fa9cb79c..42a57ba724 100644
--- a/plugins/Transitions/templates/transitions.js
+++ b/plugins/Transitions/templates/transitions.js
@@ -119,8 +119,8 @@ function Piwik_Transitions(actionType, actionName, rowAction) {
this.ajax = new Piwik_Transitions_Ajax();
this.model = new Piwik_Transitions_Model(this.ajax);
- this.leftGroups = ['previousPages', 'searchEngines', 'websites', 'campaigns'];
- this.rightGroups = ['followingPages', 'downloads', 'outlinks'];
+ this.leftGroups = ['previousPages', 'previousSiteSearches', 'searchEngines', 'websites', 'campaigns'];
+ this.rightGroups = ['followingPages', 'followingSiteSearches', 'downloads', 'outlinks'];
}
Piwik_Transitions.prototype.reset = function(actionType, actionName) {
@@ -353,12 +353,14 @@ Piwik_Transitions.prototype.renderCenterBox = function() {
};
showMetric('DirectEntries', 'directEntries', 'left', false);
+ showMetric('PreviousSiteSearches', 'previousSiteSearchesNbTransitions', 'left', false);
showMetric('PreviousPages', 'previousPagesNbTransitions', 'left', true);
showMetric('SearchEngines', 'searchEnginesNbTransitions', 'left', true);
showMetric('Websites', 'websitesNbTransitions', 'left', true);
showMetric('Campaigns', 'campaignsNbTransitions', 'left', true);
showMetric('FollowingPages', 'followingPagesNbTransitions', 'right', true);
+ showMetric('FollowingSiteSearches', 'followingSiteSearchesNbTransitions', 'left', false);
showMetric('Outlinks', 'outlinksNbTransitions', 'right', true);
showMetric('Downloads', 'downloadsNbTransitions', 'right', true);
showMetric('Exits', 'exits', 'right', false);
@@ -764,8 +766,8 @@ function Piwik_Transitions_Canvas(canvasBgLeft, canvasBgRight, canvasLeft, canva
* for more than 3 referrer groups.
*/
Piwik_Transitions_Canvas.prototype.narrowMode = function() {
- this.smallBoxHeight = 30;
- this.boxSpacing = 5;
+ this.smallBoxHeight = 26;
+ this.boxSpacing = 4;
this.narrowMode = true;
};
@@ -910,7 +912,7 @@ Piwik_Transitions_Canvas.prototype.renderBox = function(params) {
var curveHeight = params.curveHeight ? params.curveHeight :
Math.round(this.totalHeightOfConnections * params.share);
curveHeight = Math.max(curveHeight, 1);
-
+
var boxHeight = this.boxHeight;
if (params.smallBox) {
boxHeight = this.smallBoxHeight;
@@ -1015,7 +1017,7 @@ Piwik_Transitions_Canvas.prototype.renderLeftBoxBg = function(context, boxHeight
var leftLower = {x: this.leftCurveBeginX, y: this.leftBoxPositionY + boxHeight};
var rightUpper = {x: this.leftCurveEndX, y: this.leftCurvePositionY};
var rightLower = {x: this.leftCurveEndX, y: this.leftCurvePositionY + curveHeight};
-
+
// derive control points for bezier curve
var center = (this.leftCurveBeginX + this.leftCurveEndX) / 2;
var cp1Upper = {x: center, y: leftUpper.y};
@@ -1183,13 +1185,17 @@ function Piwik_Transitions_Model(ajax) {
Piwik_Transitions_Model.prototype.htmlLoaded = function() {
this.groupTitles.previousPages = Piwik_Transitions_Translations.fromPreviousPages;
+ this.groupTitles.previousSiteSearches = Piwik_Transitions_Translations.fromPreviousSiteSearches;
this.groupTitles.followingPages = Piwik_Transitions_Translations.toFollowingPages;
+ this.groupTitles.followingSiteSearches = Piwik_Transitions_Translations.toFollowingSiteSearches;
this.groupTitles.outlinks = Piwik_Transitions_Translations.outlinks;
this.groupTitles.downloads = Piwik_Transitions_Translations.downloads;
this.shareInGroupTexts = {
previousPages: Piwik_Transitions_Translations.fromPreviousPagesInline,
+ previousSiteSearches: Piwik_Transitions_Translations.fromPreviousSiteSearchesInline,
followingPages: Piwik_Transitions_Translations.toFollowingPagesInline,
+ followingSiteSearches: Piwik_Transitions_Translations.toFollowingSiteSearchesInline,
searchEngines: Piwik_Transitions_Translations.fromSearchEnginesInline,
websites: Piwik_Transitions_Translations.fromWebsitesInline,
campaigns: Piwik_Transitions_Translations.fromCampaignsInline,
@@ -1227,6 +1233,12 @@ Piwik_Transitions_Model.prototype.loadData = function(actionType, actionName, ca
this.outlinksNbTransitions = 0;
this.outlinks = [];
+
+ this.previousSiteSearchesNbTransitions = 0;
+ this.previousSiteSearches = [];
+
+ this.followingSiteSearchesNbTransitions = 0;
+ this.followingSiteSearches = [];
this.date = '';
@@ -1264,10 +1276,12 @@ Piwik_Transitions_Model.prototype.loadData = function(actionType, actionName, ca
}
self.loadAndSumReport(report, 'previousPages');
+ self.loadAndSumReport(report, 'previousSiteSearches');
self.loadAndSumReport(report, 'followingPages');
+ self.loadAndSumReport(report, 'followingSiteSearches');
self.loadAndSumReport(report, 'downloads');
self.loadAndSumReport(report, 'outlinks');
-
+
if (typeof Piwik_Transitions_Model.totalNbPageviews == 'undefined') {
Piwik_Transitions_Model.totalNbPageviews = false;
self.ajax.loadTotalNbPageviews(function(nbPageviews) {
diff --git a/plugins/Transitions/templates/transitions.tpl b/plugins/Transitions/templates/transitions.tpl
index 83bc989dff..0006c2e372 100644
--- a/plugins/Transitions/templates/transitions.tpl
+++ b/plugins/Transitions/templates/transitions.tpl
@@ -8,6 +8,7 @@
<div class="Transitions_IncomingTraffic">
<h3>{'Transitions_IncomingTraffic'|translate}</h3>
<p class="Transitions_PreviousPages">{$translations.fromPreviousPagesInline|translate}</p>
+ <p class="Transitions_PreviousSiteSearches">{$translations.fromPreviousSiteSearchesInline|translate}</p>
<p class="Transitions_SearchEngines">{$translations.fromSearchEnginesInline|translate}</p>
<p class="Transitions_Websites">{$translations.fromWebsitesInline|translate}</p>
<p class="Transitions_Campaigns">{$translations.fromCampaignsInline|translate}</p>
@@ -17,6 +18,7 @@
<div class="Transitions_OutgoingTraffic">
<h3>{'Transitions_OutgoingTraffic'|translate}</h3>
<p class="Transitions_FollowingPages">{$translations.toFollowingPagesInline|translate}</p>
+ <p class="Transitions_FollowingSiteSearches">{$translations.toFollowingSiteSearchesInline|translate}</p>
<p class="Transitions_Downloads">{$translations.downloadsInline|translate}</p>
<p class="Transitions_Outlinks">{$translations.outlinksInline|translate}</p>
<p class="Transitions_Exits">{$translations.exitsInline|translate}</p>