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:
authormattab <matthieu.aubry@gmail.com>2014-03-12 12:24:24 +0400
committermattab <matthieu.aubry@gmail.com>2014-03-12 12:24:24 +0400
commit3d3f3c0d9c79f75e05f7683197e53ac01064e3c6 (patch)
treec7f8e0202636ea920b42de2f4623999c6a394320 /plugins/Actions/API.php
parentdd9ec8712f10024cd4536ec9f15f98002980ea8d (diff)
Fixes #4768 Implement performance improvement for period=range: do not archive sub-tables (only the parent table).
The sub-tables will be archived only when idSubtable is found, or flat=1, or expanded=1
Diffstat (limited to 'plugins/Actions/API.php')
-rw-r--r--plugins/Actions/API.php28
1 files changed, 20 insertions, 8 deletions
diff --git a/plugins/Actions/API.php b/plugins/Actions/API.php
index ba96ce198b..14efde7db2 100644
--- a/plugins/Actions/API.php
+++ b/plugins/Actions/API.php
@@ -9,6 +9,7 @@
namespace Piwik\Plugins\Actions;
use Exception;
+use Piwik\API\Request;
use Piwik\Archive;
use Piwik\Common;
@@ -119,8 +120,7 @@ class API extends \Piwik\Plugin\API
public function getPageUrls($idSite, $period, $date, $segment = false, $expanded = false, $idSubtable = false,
$depth = false)
{
- $dataTable = Archive::getDataTableFromArchive(
- 'Actions_actions_url', $idSite, $period, $date, $segment, $expanded, $idSubtable, $depth);
+ $dataTable = $this->getDataTableFromArchive('Actions_actions_url', $idSite, $period, $date, $segment, $expanded, $idSubtable, $depth);
$this->filterPageDatatable($dataTable);
$this->filterActionsDataTable($dataTable, $expanded);
return $dataTable;
@@ -207,7 +207,7 @@ class API extends \Piwik\Plugin\API
public function getPageTitles($idSite, $period, $date, $segment = false, $expanded = false, $idSubtable = false)
{
- $dataTable = Archive::getDataTableFromArchive('Actions_actions', $idSite, $period, $date, $segment, $expanded, $idSubtable);
+ $dataTable = $this->getDataTableFromArchive('Actions_actions', $idSite, $period, $date, $segment, $expanded, $idSubtable);
$this->filterPageDatatable($dataTable);
$this->filterActionsDataTable($dataTable, $expanded);
return $dataTable;
@@ -248,7 +248,7 @@ class API extends \Piwik\Plugin\API
public function getDownloads($idSite, $period, $date, $segment = false, $expanded = false, $idSubtable = false)
{
- $dataTable = Archive::getDataTableFromArchive('Actions_downloads', $idSite, $period, $date, $segment, $expanded, $idSubtable);
+ $dataTable = $this->getDataTableFromArchive('Actions_downloads', $idSite, $period, $date, $segment, $expanded, $idSubtable);
$this->filterActionsDataTable($dataTable, $expanded);
return $dataTable;
}
@@ -263,7 +263,7 @@ class API extends \Piwik\Plugin\API
public function getOutlinks($idSite, $period, $date, $segment = false, $expanded = false, $idSubtable = false)
{
- $dataTable = Archive::getDataTableFromArchive('Actions_outlink', $idSite, $period, $date, $segment, $expanded, $idSubtable);
+ $dataTable = $this->getDataTableFromArchive('Actions_outlink', $idSite, $period, $date, $segment, $expanded, $idSubtable);
$this->filterActionsDataTable($dataTable, $expanded);
return $dataTable;
}
@@ -299,7 +299,7 @@ class API extends \Piwik\Plugin\API
protected function getSiteSearchKeywordsRaw($idSite, $period, $date, $segment)
{
- $dataTable = Archive::getDataTableFromArchive('Actions_sitesearch', $idSite, $period, $date, $segment, $expanded = false);
+ $dataTable = $this->getDataTableFromArchive('Actions_sitesearch', $idSite, $period, $date, $segment, $expanded = false);
return $dataTable;
}
@@ -396,7 +396,7 @@ class API extends \Piwik\Plugin\API
if ($table === false) {
// fetch the data table
- $table = call_user_func_array(array('Piwik\Archive', 'getDataTableFromArchive'), $callBackParameters);
+ $table = call_user_func_array(array($this, 'getDataTableFromArchive'), $callBackParameters);
if ($table instanceof DataTable\Map) {
// search an array of tables, e.g. when using date=last30
@@ -460,7 +460,7 @@ class API extends \Piwik\Plugin\API
// match found on this level and more levels remaining: go deeper
$idSubTable = $row->getIdSubDataTable();
$callBackParameters[6] = $idSubTable;
- $table = call_user_func_array(array('Piwik\Archive', 'getDataTableFromArchive'), $callBackParameters);
+ $table = call_user_func_array(array($this, 'getDataTableFromArchive'), $callBackParameters);
return $this->doFilterPageDatatableSearch($callBackParameters, $table, $searchTree);
}
@@ -552,4 +552,16 @@ class API extends \Piwik\Plugin\API
{
$dataTable->filter('ColumnCallbackDeleteRow', array('exit_nb_visits', function ($visits) { return !strlen($visits); }));
}
+
+ protected function getDataTableFromArchive($name, $idSite, $period, $date, $segment, $expanded = false, $idSubtable = null, $depth = null)
+ {
+ $skipAggregationOfSubTables = false;
+ if($period == 'range'
+ && empty($idSubtable)
+ && empty($expanded)
+ && !Request::shouldLoadFlatten()) {
+ $skipAggregationOfSubTables = true;
+ }
+ return Archive::getDataTableFromArchive($name, $idSite, $period, $date, $segment, $expanded, $idSubtable, $skipAggregationOfSubTables, $depth);
+ }
}