diff options
author | Stefan Giehl <stefan@matomo.org> | 2022-10-18 00:02:49 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-18 00:02:49 +0300 |
commit | 6435cdc0665467ce83496030edab00be26d477cc (patch) | |
tree | 118e46f3a24c248cc87ad3c4b354e3d38a69c9e9 | |
parent | 32bb2f99e59ba410b01832f789bc591cad6acf8c (diff) |
Avoid loading goals data multiple times (#19838)
-rw-r--r-- | plugins/Goals/Columns/Metrics/GoalSpecificProcessedMetric.php | 19 |
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) { |