protected function getTopDimensions($idGoal)
{
$columnNbConversions = 'goal_' . $idGoal . '_nb_conversions';
$columnConversionRate = 'goal_' . $idGoal . '_conversion_rate';
$topDimensionsToLoad = array();
if (\Piwik\Plugin\Manager::getInstance()->isPluginActivated('UserCountry')) {
$topDimensionsToLoad += array('country' => 'UserCountry.getCountry');
}
$keywordNotDefinedString = '';
if (\Piwik\Plugin\Manager::getInstance()->isPluginActivated('Referrers')) {
$keywordNotDefinedString = APIReferrers::getKeywordNotDefinedString();
$topDimensionsToLoad += array('keyword' => 'Referrers.getKeywords', 'website' => 'Referrers.getWebsites');
}
$topDimensions = array();
foreach ($topDimensionsToLoad as $dimensionName => $apiMethod) {
$request = new Request("method={$apiMethod}\n &format=original\n &filter_update_columns_when_show_all_goals=1\n &idGoal=" . AddColumnsProcessedMetricsGoal::GOALS_FULL_TABLE . "\n &filter_sort_order=desc\n &filter_sort_column={$columnNbConversions}" . "&filter_limit=" . (self::COUNT_TOP_ROWS_TO_DISPLAY + 2));
$datatable = $request->process();
$topDimension = array();
$count = 0;
foreach ($datatable->getRows() as $row) {
$conversions = $row->getColumn($columnNbConversions);
if ($conversions > 0 && $count < self::COUNT_TOP_ROWS_TO_DISPLAY && !($dimensionName == 'keyword' && $row->getColumn('label') == $keywordNotDefinedString)) {
$topDimension[] = array('name' => $row->getColumn('label'), 'nb_conversions' => $conversions, 'conversion_rate' => $this->formatConversionRate($row->getColumn($columnConversionRate)), 'metadata' => $row->getMetadata());
$count++;
}
}
$topDimensions[$dimensionName] = $topDimension;
}
return $topDimensions;
}