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-09-27 17:29:17 +0400
committerBeezyT <timo@ezdesign.de>2012-09-27 17:29:17 +0400
commitf90da5ade2720a3fc568f78e9b498a9e615e0cf8 (patch)
tree8a8757140dddd7b95c151aab85d35eb8a6423be1 /plugins/Transitions
parentff371ed0149a4933d42390fcdff16fa929a72f0c (diff)
refs #3332 Transitions:
* segmentation works now! * fixing a js bug related to concurrent ajax requests * refactoring of the api class * translation update git-svn-id: http://dev.piwik.org/svn/trunk@7074 59fd770c-687e-43c8-a1e3-f5a4ff64c105
Diffstat (limited to 'plugins/Transitions')
-rw-r--r--plugins/Transitions/API.php108
-rw-r--r--plugins/Transitions/templates/transitions.js17
2 files changed, 86 insertions, 39 deletions
diff --git a/plugins/Transitions/API.php b/plugins/Transitions/API.php
index c05ab7e058..0eae1e8b80 100644
--- a/plugins/Transitions/API.php
+++ b/plugins/Transitions/API.php
@@ -28,21 +28,40 @@ class Piwik_Transitions_API
}
/**
- * This method combines various reports (both from this and from other plugins) and
- * returns a complete report. The report is used in the Transitions API to load all
- * data at once.
+ * This method returns a complete report.
+ * It is used in the Transitions API to load all data at once.
*/
public function getFullReport($pageUrl, $idSite, $period, $date, $segment = false, $limitBeforeGrouping = false)
{
Piwik::checkUserHasViewAccess($idSite);
+ // get idaction of page url
+ $actionsPlugin = new Piwik_Actions;
$pageUrl = Piwik_Common::unsanitizeInputValue($pageUrl);
+ $idaction = $actionsPlugin->getIdActionFromSegment($pageUrl, 'idaction');
+ // prepare archive processing that can be used by the archiving code
+ $archiveProcessing = new Piwik_ArchiveProcessing_Day();
+ $archiveProcessing->setSite(new Piwik_Site($idSite));
+ $archiveProcessing->setPeriod(Piwik_Period::advancedFactory($period, $date));
+ $archiveProcessing->setSegment(new Piwik_Segment($segment, $idSite));
+ $archiveProcessing->initForLiveUsage();
+
+ // prepare the report
$report = array(
'date' => Piwik_Period_Day::advancedFactory($period, $date)->getLocalizedShortString()
);
- $this->addLiveTransitionsDataToReport($report, $pageUrl, $idSite, $period, $date, $segment, $limitBeforeGrouping);
+ // add data to the report
+ $transitionsArchiving = new Piwik_Transitions;
+ $this->addInternalReferrers($transitionsArchiving, $archiveProcessing, $report, $idaction, $limitBeforeGrouping);
+ $this->addFollowingActions($transitionsArchiving, $archiveProcessing, $report, $idaction, $limitBeforeGrouping);
+ $this->addExternalReferrers($transitionsArchiving, $archiveProcessing, $report, $idaction, $limitBeforeGrouping);
+
+ // derive the number of exits from the other metrics
+ $report['pageMetrics']['exits'] = $report['pageMetrics']['pageviews']
+ - $transitionsArchiving->getTotalTransitionsToFollowingActions()
+ - $report['pageMetrics']['loops'];
// replace column names in the data tables
$columnNames = array(
@@ -62,42 +81,70 @@ class Piwik_Transitions_API
}
/**
- * Add transitions data to the report.
- * Fake ArchiveProcessing to do the queries live.
+ * Add the internal referrers to the report:
+ * previous pages
+ *
+ * @param $transitionsArchiving Piwik_Transitions
+ * @param $archiveProcessing
+ * @param $report
+ * @param $idaction
+ * @param $limitBeforeGrouping
+ * @throws Exception
*/
- private function addLiveTransitionsDataToReport(&$report, $pageUrl, $idSite, $period, $date,
- $segment, $limitBeforeGrouping)
- {
- // get idaction of page url
- $actionsPlugin = new Piwik_Actions;
- $idaction = $actionsPlugin->getIdActionFromSegment($pageUrl, 'idaction');
-
- // prepare archive processing that can be reused by the archiving code
- $archiveProcessing = new Piwik_ArchiveProcessing_Day();
- $archiveProcessing->setSite(new Piwik_Site($idSite));
- $archiveProcessing->setPeriod(Piwik_Period::advancedFactory($period, $date));
- $archiveProcessing->setSegment(new Piwik_Segment($segment, $idSite));
- $archiveProcessing->initForLiveUsage();
-
- // launch the archiving code - but live
- $transitionsArchiving = new Piwik_Transitions;
-
- $data = $transitionsArchiving->queryInternalReferrers($idaction, $archiveProcessing, $limitBeforeGrouping);
+ private function addInternalReferrers($transitionsArchiving, $archiveProcessing, &$report,
+ $idaction, $limitBeforeGrouping) {
- if ($data['pageviews'] == 0) {
+ $data = $transitionsArchiving->queryInternalReferrers(
+ $idaction, $archiveProcessing, $limitBeforeGrouping);
+
+ if ($data['pageviews'] == 0)
+ {
throw new Exception('NoDataForUrl');
}
$report['previousPages'] = &$data['previousPages'];
$report['pageMetrics']['loops'] = $data['loops'];
$report['pageMetrics']['pageviews'] = $data['pageviews'];
+ }
+
+ /**
+ * Add the following actions to the report:
+ * following pages, downloads, outlinks
+ *
+ * @param $transitionsArchiving Piwik_Transitions
+ * @param $archiveProcessing
+ * @param $report
+ * @param $idaction
+ * @param $limitBeforeGrouping
+ */
+ private function addFollowingActions($transitionsArchiving, $archiveProcessing, &$report,
+ $idaction, $limitBeforeGrouping) {
- $data = $transitionsArchiving->queryFollowingActions($idaction, $archiveProcessing, $limitBeforeGrouping);
- foreach ($data as $tableName => $table) {
+ $data = $transitionsArchiving->queryFollowingActions(
+ $idaction, $archiveProcessing, $limitBeforeGrouping);
+
+ foreach ($data as $tableName => $table)
+ {
$report[$tableName] = $table;
}
+ }
+
+ /**
+ * Add the external referrers to the report:
+ * direct entries, websites, campaigns, search engines
+ *
+ * @param $transitionsArchiving
+ * @param $archiveProcessing
+ * @param $report
+ * @param $idaction
+ * @param $limitBeforeGrouping
+ */
+ private function addExternalReferrers($transitionsArchiving, $archiveProcessing, &$report,
+ $idaction, $limitBeforeGrouping) {
- $data = $transitionsArchiving->queryExternalReferrers($idaction, $archiveProcessing, $limitBeforeGrouping);
+ /** @var $transitionsArchiving Piwik_Transitions */
+ $data = $transitionsArchiving->queryExternalReferrers(
+ $idaction, $archiveProcessing, $limitBeforeGrouping);
$report['pageMetrics']['entries'] = 0;
$report['referrers'] = array();
@@ -130,11 +177,6 @@ class Piwik_Transitions_API
}
}
- // derive the number of exits from the other metrics
- $report['pageMetrics']['exits'] = $report['pageMetrics']['pageviews']
- - $transitionsArchiving->getTotalTransitionsToFollowingActions()
- - $report['pageMetrics']['loops'];
-
// if there's no data for referrers, Piwik_API_ResponseBuilder::handleMultiDimensionalArray
// does not detect the multi dimensional array and the data is rendered differently, which
// causes an exception.
diff --git a/plugins/Transitions/templates/transitions.js b/plugins/Transitions/templates/transitions.js
index 163b4916e9..3e29ddf347 100644
--- a/plugins/Transitions/templates/transitions.js
+++ b/plugins/Transitions/templates/transitions.js
@@ -1022,15 +1022,15 @@ Piwik_Transitions_Canvas.prototype.clearSide = function(side, onlyBg) {
function Piwik_Transitions_Model(ajax) {
this.ajax = ajax;
+
+ this.groupTitles = {};
}
Piwik_Transitions_Model.prototype.htmlLoaded = function() {
- this.groupTitles = {
- previousPages: Piwik_Transitions_Translations.fromPreviousPages,
- followingPages: Piwik_Transitions_Translations.toFollowingPages,
- outlinks: Piwik_Transitions_Translations.outlinks,
- downloads: Piwik_Transitions_Translations.downloads
- };
+ this.groupTitles.previousPages = Piwik_Transitions_Translations.fromPreviousPages;
+ this.groupTitles.followingPages = Piwik_Transitions_Translations.toFollowingPages;
+ this.groupTitles.outlinks = Piwik_Transitions_Translations.outlinks;
+ this.groupTitles.downloads = Piwik_Transitions_Translations.downloads;
this.shareInGroupTexts = {
previousPages: Piwik_Transitions_Translations.fromPreviousPagesInline,
@@ -1227,6 +1227,11 @@ Piwik_Transitions_Ajax.prototype.callApi = function(method, params, callback) {
if (params.period == 'range') {
params.date = piwik.startDateString + ',' + params.date;
}
+
+ var segment = broadcast.getValueFromHash('segment', window.location.href);
+ if (segment) {
+ params.segment = segment;
+ }
piwikHelper.queueAjaxRequest($.post('index.php', params, function(result) {
if (typeof result.result != 'undefined' && result.result == 'error') {