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
path: root/core
diff options
context:
space:
mode:
authorThomas Steur <thomas.steur@gmail.com>2015-10-08 14:22:15 +0300
committerThomas Steur <thomas.steur@gmail.com>2015-10-08 14:22:15 +0300
commit0acd2104ff186952b709bf9350efa5e02325d43f (patch)
tree04217ffc95adbd48d1c40cf81817392130905d5f /core
parentecdf19cd57ee12b3549718979d6aaee2cf4ff9e8 (diff)
fixes #8399 create dimension instance only when needed to improve performance
Diffstat (limited to 'core')
-rw-r--r--core/Columns/Updater.php48
1 files changed, 39 insertions, 9 deletions
diff --git a/core/Columns/Updater.php b/core/Columns/Updater.php
index a29ed16330..8dea10ded7 100644
--- a/core/Columns/Updater.php
+++ b/core/Columns/Updater.php
@@ -47,9 +47,9 @@ class Updater extends \Piwik\Updates
*/
public function __construct(array $visitDimensions = null, array $actionDimensions = null, array $conversionDimensions = null)
{
- $this->visitDimensions = $visitDimensions === null ? VisitDimension::getAllDimensions() : $visitDimensions;
- $this->actionDimensions = $actionDimensions === null ? ActionDimension::getAllDimensions() : $actionDimensions;
- $this->conversionDimensions = $conversionDimensions === null ? ConversionDimension::getAllDimensions() : $conversionDimensions;
+ $this->visitDimensions = $visitDimensions;
+ $this->actionDimensions = $actionDimensions;
+ $this->conversionDimensions = $conversionDimensions;
}
public function getMigrationQueries(PiwikUpdater $updater)
@@ -74,6 +74,36 @@ class Updater extends \Piwik\Updates
$updater->executeMigrationQueries(__FILE__, $this->getMigrationQueries($updater));
}
+ private function getVisitDimensions()
+ {
+ // see eg https://github.com/piwik/piwik/issues/8399 we fetch them only on demand to improve performance
+ if (!isset($this->visitDimensions)) {
+ $this->visitDimensions = VisitDimension::getAllDimensions();
+ }
+
+ return $this->visitDimensions;
+ }
+
+ private function getActionDimensions()
+ {
+ // see eg https://github.com/piwik/piwik/issues/8399 we fetch them only on demand to improve performance
+ if (!isset($this->actionDimensions)) {
+ $this->actionDimensions = ActionDimension::getAllDimensions();
+ }
+
+ return $this->actionDimensions;
+ }
+
+ private function getConversionDimensions()
+ {
+ // see eg https://github.com/piwik/piwik/issues/8399 we fetch them only on demand to improve performance
+ if (!isset($this->conversionDimensions)) {
+ $this->conversionDimensions = ConversionDimension::getAllDimensions();
+ }
+
+ return $this->conversionDimensions;
+ }
+
private function getUpdates(PiwikUpdater $updater)
{
$visitColumns = DbHelper::getTableColumns(Common::prefixTable('log_visit'));
@@ -82,17 +112,17 @@ class Updater extends \Piwik\Updates
$allUpdatesToRun = array();
- foreach ($this->visitDimensions as $dimension) {
+ foreach ($this->getVisitDimensions() as $dimension) {
$updates = $this->getUpdatesForDimension($updater, $dimension, 'log_visit.', $visitColumns, $conversionColumns);
$allUpdatesToRun = $this->mixinUpdates($allUpdatesToRun, $updates);
}
- foreach ($this->actionDimensions as $dimension) {
+ foreach ($this->getActionDimensions() as $dimension) {
$updates = $this->getUpdatesForDimension($updater, $dimension, 'log_link_visit_action.', $actionColumns);
$allUpdatesToRun = $this->mixinUpdates($allUpdatesToRun, $updates);
}
- foreach ($this->conversionDimensions as $dimension) {
+ foreach ($this->getConversionDimensions() as $dimension) {
$updates = $this->getUpdatesForDimension($updater, $dimension, 'log_conversion.', $conversionColumns);
$allUpdatesToRun = $this->mixinUpdates($allUpdatesToRun, $updates);
}
@@ -162,15 +192,15 @@ class Updater extends \Piwik\Updates
$actionColumns = DbHelper::getTableColumns(Common::prefixTable('log_link_visit_action'));
$conversionColumns = DbHelper::getTableColumns(Common::prefixTable('log_conversion'));
- foreach ($this->visitDimensions as $dimension) {
+ foreach ($this->getVisitDimensions() as $dimension) {
$versions = $this->mixinVersions($updater, $dimension, VisitDimension::INSTALLER_PREFIX, $visitColumns, $versions);
}
- foreach ($this->actionDimensions as $dimension) {
+ foreach ($this->getActionDimensions() as $dimension) {
$versions = $this->mixinVersions($updater, $dimension, ActionDimension::INSTALLER_PREFIX, $actionColumns, $versions);
}
- foreach ($this->conversionDimensions as $dimension) {
+ foreach ($this->getConversionDimensions() as $dimension) {
$versions = $this->mixinVersions($updater, $dimension, ConversionDimension::INSTALLER_PREFIX, $conversionColumns, $versions);
}