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);
 }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
 public function compute(Row $row)
 {
     $mappingFromNameToIdGoal = Metrics::getMappingFromNameToIdGoal();
     $goalMetrics = $this->getGoalMetrics($row);
     return (int) $this->getMetric($goalMetrics, 'items', $mappingFromNameToIdGoal);
 }