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:
authorStefan Giehl <stefan@matomo.org>2022-10-18 00:02:49 +0300
committerGitHub <noreply@github.com>2022-10-18 00:02:49 +0300
commit6435cdc0665467ce83496030edab00be26d477cc (patch)
tree118e46f3a24c248cc87ad3c4b354e3d38a69c9e9
parent32bb2f99e59ba410b01832f789bc591cad6acf8c (diff)
Avoid loading goals data multiple times (#19838)
-rw-r--r--plugins/Goals/Columns/Metrics/GoalSpecificProcessedMetric.php19
1 files changed, 13 insertions, 6 deletions
diff --git a/plugins/Goals/Columns/Metrics/GoalSpecificProcessedMetric.php b/plugins/Goals/Columns/Metrics/GoalSpecificProcessedMetric.php
index ad20a36b0a..8ee83ce4b4 100644
--- a/plugins/Goals/Columns/Metrics/GoalSpecificProcessedMetric.php
+++ b/plugins/Goals/Columns/Metrics/GoalSpecificProcessedMetric.php
@@ -71,7 +71,9 @@ abstract class GoalSpecificProcessedMetric extends ProcessedMetric
}
}
- protected function getGoalName()
+ protected static $goalsCache = [];
+
+ protected function getGoalName(): string
{
if ($this->idGoal == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER) {
return Piwik::translate('Goals_EcommerceOrder');
@@ -80,15 +82,20 @@ abstract class GoalSpecificProcessedMetric extends ProcessedMetric
}
if (isset($this->idSite)) {
- $allGoals = Request::processRequest('Goals.getGoals', ['idSite' => $this->idSite, 'filter_limit' => '-1'], $default = []);
- $goalName = @$allGoals[$this->idGoal]['name'];
- return $goalName;
+ if (!isset(self::$goalsCache[$this->idSite])) {
+ self::$goalsCache[$this->idSite] = Request::processRequest(
+ 'Goals.getGoals',
+ ['idSite' => $this->idSite, 'filter_limit' => '-1'],
+ $default = []
+ );
+ }
+ return self::$goalsCache[$this->idSite][$this->idGoal]['name'] ?? '';
} else {
- return "";
+ return '';
}
}
- protected function getGoalNameForDocs()
+ protected function getGoalNameForDocs(): string
{
$goalName = $this->getGoalName();
if ($goalName == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER) {