public function compute(Row $row) { $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal(); $goalMetrics = $this->getGoalMetrics($row); $goalRevenue = $this->getMetric($goalMetrics, 'revenue', $mappingFromNameToIdGoal); $conversions = $this->getMetric($goalMetrics, 'nb_conversions', $mappingFromNameToIdGoal); return Piwik::getQuotientSafe($goalRevenue, $conversions, GoalManager::REVENUE_PRECISION); }
public function compute(Row $row) { $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal(); $goals = $this->getMetric($row, 'goals') ?: array(); $revenue = 0; foreach ($goals as $goalId => $goalMetrics) { if ($goalId == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_CART) { continue; } if ($goalId >= GoalManager::IDGOAL_ORDER || $goalId == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER) { $revenue += (int) $this->getMetric($goalMetrics, 'revenue', $mappingFromNameToIdGoal); } } if ($revenue == 0) { $revenue = (int) $this->getMetric($row, 'revenue'); } $nbVisits = (int) $this->getMetric($row, 'nb_visits'); $conversions = (int) $this->getMetric($row, 'nb_conversions'); // If no visit for this metric, but some conversions, we still want to display some kind of "revenue per visit" // even though it will actually be in this edge case "Revenue per conversion" return Piwik::getQuotientSafe($revenue, $nbVisits == 0 ? $conversions : $nbVisits, GoalManager::REVENUE_PRECISION); }
public function compute(Row $row) { $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal(); $goalMetrics = $this->getGoalMetrics($row); return (int) $this->getMetric($goalMetrics, 'items', $mappingFromNameToIdGoal); }