diff options
Diffstat (limited to 'plugins/Goals/Goals.php')
-rw-r--r-- | plugins/Goals/Goals.php | 71 |
1 files changed, 69 insertions, 2 deletions
diff --git a/plugins/Goals/Goals.php b/plugins/Goals/Goals.php index 0700d8aa75..b1d10e16f3 100644 --- a/plugins/Goals/Goals.php +++ b/plugins/Goals/Goals.php @@ -8,8 +8,13 @@ */ namespace Piwik\Plugins\Goals; +use Piwik\Columns\ComputedMetricFactory; +use Piwik\Columns\Dimension; +use Piwik\Columns\MetricsList; use Piwik\Common; use Piwik\Piwik; +use Piwik\Plugin\ArchivedMetric; +use Piwik\Plugin\ComputedMetric; use Piwik\Plugin\ReportsProvider; use Piwik\Tracker\GoalManager; use Piwik\Category\Subcategory; @@ -77,11 +82,74 @@ class Goals extends \Piwik\Plugin 'SitesManager.deleteSite.end' => 'deleteSiteGoals', 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys', 'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations', - 'Category.addSubcategories' => 'addSubcategories' + 'Category.addSubcategories' => 'addSubcategories', + 'Metric.addMetrics' => 'addMetrics', + 'Metric.addComputedMetrics' => 'addComputedMetrics' ); return $hooks; } + public function addComputedMetrics(MetricsList $list, ComputedMetricFactory $computedMetricFactory) + { + $idSite = Common::getRequestVar('idSite', 0, 'int'); + $goals = API::getInstance()->getGoals($idSite); + + foreach ($goals as $goal) { + $metric = $computedMetricFactory->createComputedMetric('goal_' . $goal['idgoal'] . '_conversion', 'nb_uniq_visitors', ComputedMetric::AGGREGATION_RATE); + $goalName = Piwik::translate('Goals_GoalX', $goal['name']); + $metricName = Piwik::translate('Goals_ConversionRate', $goalName); + $metric->setTranslatedName($metricName); + $list->addMetric($metric); + } + } + + public function addMetrics(MetricsList $metricsList) + { + $idSite = Common::getRequestVar('idSite', 0, 'int'); + $goals = API::getInstance()->getGoals($idSite); + + foreach ($goals as $goal) { + $custom = new GoalDimension($goal, 'idgoal', 'Conversions goal "' . $goal['name'] . '" (ID ' . $goal['idgoal'] .' )'); + $custom->setType(Dimension::TYPE_NUMBER); + $custom->setSqlSegment('count(distinct log_conversion.idvisit, log_conversion.buster)'); + + $metric = new ArchivedMetric($custom, ArchivedMetric::AGGREGATION_SUM); + $metric->setQuery('count(distinct log_conversion.idvisit, log_conversion.buster)'); + $metric->setTranslatedName($custom->getName()); + $metric->setDocumentation('The number of times this goal was converted.'); + $metric->setCategory($custom->getCategoryId()); + $metric->setName('goal_' . $goal['idgoal'] . '_conversion'); + $metricsList->addMetric($metric); + + $custom = new GoalDimension($goal, 'revenue', 'Revenue goal "' . $goal['name'] . '" (ID ' . $goal['idgoal'] .' )'); + $custom->setType(Dimension::TYPE_MONEY); + $metric = new ArchivedMetric($custom, ArchivedMetric::AGGREGATION_SUM); + $metric->setTranslatedName($custom->getName()); + $metric->setName('goal_' . $goal['idgoal'] . '_revenue'); + $metric->setDocumentation('The amount of revenue that was generated by converting this goal.'); + $metric->setCategory($custom->getCategoryId()); + $metricsList->addMetric($metric); + + $custom = new GoalDimension($goal, 'visitor_days_since_first', 'Days to conversion goal "' . $goal['name'] . '" (ID ' . $goal['idgoal'] .' )'); + $custom->setType(Dimension::TYPE_NUMBER); + $metric = new ArchivedMetric($custom, ArchivedMetric::AGGREGATION_SUM); + $metric->setTranslatedName($custom->getName()); + $metric->setCategory($custom->getCategoryId()); + $metric->setDocumentation('The number of days it took a visitor to convert this goal.'); + $metric->setName('goal_' . $goal['idgoal'] . '_daystoconversion'); + $metricsList->addMetric($metric); + + $custom = new GoalDimension($goal, 'visitor_count_visits', 'Visits to conversion goal "' . $goal['name'] . '" (ID ' . $goal['idgoal'] .' )'); + $custom->setType(Dimension::TYPE_NUMBER); + $metric = new ArchivedMetric($custom, ArchivedMetric::AGGREGATION_SUM); + $metric->setTranslatedName($custom->getName()); + $metric->setCategory($custom->getCategoryId()); + $metric->setDocumentation('The number of visits it took a visitor to convert this goal.'); + $metric->setName('goal_' . $goal['idgoal'] . '_visitstoconversion'); + $metricsList->addMetric($metric); + } + } + public function addSubcategories(&$subcategories) { $idSite = Common::getRequestVar('idSite', 0, 'int'); @@ -108,7 +176,6 @@ class Goals extends \Piwik\Plugin } } - public function addMetricTranslations(&$translations) { $metrics = array( |