Skip to content
Extraits de code Groupes Projets
Valider 381e5d2a rédigé par Thomas Steur's avatar Thomas Steur
Parcourir les fichiers

simplify html table

parent dd12f1e8
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -12,7 +12,6 @@ namespace Piwik\Plugins\CoreVisualizations\Visualizations; ...@@ -12,7 +12,6 @@ namespace Piwik\Plugins\CoreVisualizations\Visualizations;
use Piwik\Common; use Piwik\Common;
use Piwik\Config; use Piwik\Config;
use Piwik\DataTable\DataTableInterface;
use Piwik\DataTable\Filter\AddColumnsProcessedMetricsGoal; use Piwik\DataTable\Filter\AddColumnsProcessedMetricsGoal;
use Piwik\MetricsFormatter; use Piwik\MetricsFormatter;
use Piwik\Piwik; use Piwik\Piwik;
...@@ -21,7 +20,6 @@ use Piwik\Site; ...@@ -21,7 +20,6 @@ use Piwik\Site;
use Piwik\View; use Piwik\View;
use Piwik\ViewDataTable\Visualization; use Piwik\ViewDataTable\Visualization;
use Piwik\Visualization\Config as VizConfig; use Piwik\Visualization\Config as VizConfig;
use Piwik\Visualization\Request;
require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php'; require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php';
require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/HtmlTable/Goals.php'; require_once PIWIK_INCLUDE_PATH . '/plugins/CoreVisualizations/Visualizations/HtmlTable/Goals.php';
...@@ -158,36 +156,6 @@ class HtmlTable extends Visualization ...@@ -158,36 +156,6 @@ class HtmlTable extends Visualization
) { ) {
$properties->show_visualization_only = true; $properties->show_visualization_only = true;
} }
if ($properties->visualization_properties->show_extra_columns) {
$properties->show_exclude_low_population = true;
$properties->datatable_css_class = 'dataTableVizAllColumns';
}
if ($properties->visualization_properties->show_goals_columns) {
$properties->datatable_css_class = 'dataTableVizGoals';
$properties->show_exclude_low_population = true;
$properties->show_goals = true;
$properties->translations += array(
'nb_conversions' => Piwik::translate('Goals_ColumnConversions'),
'conversion_rate' => Piwik::translate('General_ColumnConversionRate'),
'revenue' => Piwik::translate('General_ColumnRevenue'),
'revenue_per_visit' => Piwik::translate('General_ColumnValuePerVisit'),
);
$properties->metrics_documentation['nb_visits'] = Piwik::translate('Goals_ColumnVisits');
if (Common::getRequestVar('documentationForGoalsPage', 0, 'int') == 1) { // TODO: should not use query parameter
$properties->documentation = Piwik::translate('Goals_ConversionByTypeReportDocumentation',
array('<br />', '<br />', '<a href="http://piwik.org/docs/tracking-goals-web-analytics/" target="_blank">', '</a>'));
}
if (!$properties->visualization_properties->disable_subtable_when_show_goals) {
$properties->subtable_controller_action = null;
}
$this->setShowGoalsColumnsProperties();
}
} }
public static function getDefaultPropertyValues() public static function getDefaultPropertyValues()
...@@ -219,226 +187,4 @@ class HtmlTable extends Visualization ...@@ -219,226 +187,4 @@ class HtmlTable extends Visualization
return $defaults; return $defaults;
} }
public function beforeGenericFiltersAreAppliedToLoadedDataTable(DataTableInterface $dataTable, VizConfig $properties, Request $request)
{
if ($properties->visualization_properties->show_extra_columns) {
$dataTable->filter('AddColumnsProcessedMetrics');
$dataTable->filter(function ($dataTable) use ($properties) {
$columnsToDisplay = array('label', 'nb_visits');
if (in_array('nb_uniq_visitors', $dataTable->getColumns())) {
$columnsToDisplay[] = 'nb_uniq_visitors';
}
$columnsToDisplay = array_merge(
$columnsToDisplay, array('nb_actions', 'nb_actions_per_visit', 'avg_time_on_site', 'bounce_rate')
);
// only display conversion rate for the plugins that do not provide "per goal" metrics
// otherwise, conversion rate is meaningless as a whole (since we don't process 'cross goals' conversions)
if (!$properties->show_goals) {
$columnsToDisplay[] = 'conversion_rate';
}
$properties->columns_to_display = $columnsToDisplay;
});
$prettifyTime = array('\Piwik\MetricsFormatter', 'getPrettyTimeFromSeconds');
$dataTable->filter('ColumnCallbackReplace', array('avg_time_on_site', $prettifyTime));
}
}
private function setShowGoalsColumnsProperties()
{
$view = $this->viewDataTable;
// set view properties based on goal requested
$idSite = Common::getRequestVar('idSite', null, 'int');
$idGoal = Common::getRequestVar('idGoal', AddColumnsProcessedMetricsGoal::GOALS_OVERVIEW, 'string');
if ($idGoal == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER) {
$this->setPropertiesForEcommerceView($view);
} else if ($idGoal == AddColumnsProcessedMetricsGoal::GOALS_FULL_TABLE) {
$this->setPropertiesForGoals($view, $idSite, 'all');
} else if ($idGoal == AddColumnsProcessedMetricsGoal::GOALS_OVERVIEW) {
$this->setPropertiesForGoalsOverview($view, $idSite);
} else {
$this->setPropertiesForGoals($view, $idSite, array($idGoal));
}
// add goals columns
$view->filters[] = array('AddColumnsProcessedMetricsGoal', array($ignore = true, $idGoal), $priority = true);
// prettify columns
$setRatePercent = function ($rate, $thang = false) {
return $rate == 0 ? "0%" : $rate;
};
foreach ($view->columns_to_display as $columnName) {
if (strpos($columnName, 'conversion_rate') !== false) {
$view->filters[] = array('ColumnCallbackReplace', array($columnName, $setRatePercent));
}
}
$formatPercent = function ($value) use ($idSite) {
return MetricsFormatter::getPrettyMoney(sprintf("%.1f", $value), $idSite);
};
foreach ($view->columns_to_display as $columnName) {
if ($this->isRevenueColumn($columnName)) {
$view->filters[] = array('ColumnCallbackReplace', array($columnName, $formatPercent));
}
}
// this ensures that the value is set to zero for all rows where the value was not set (no conversion)
$identityFunction = function ($value) {
return $value;
};
foreach ($view->columns_to_display as $columnName) {
if (!$this->isRevenueColumn($columnName)) {
$view->filters[] = array('ColumnCallbackReplace', array($columnName, $identityFunction));
}
}
}
private function setPropertiesForEcommerceView($view)
{
$view->filter_sort_column = 'goal_ecommerceOrder_revenue';
$view->filter_sort_order = 'desc';
$view->columns_to_display = array(
'label', 'nb_visits', 'goal_ecommerceOrder_nb_conversions', 'goal_ecommerceOrder_revenue',
'goal_ecommerceOrder_conversion_rate', 'goal_ecommerceOrder_avg_order_revenue', 'goal_ecommerceOrder_items',
'goal_ecommerceOrder_revenue_per_visit'
);
$view->translations += array(
'goal_ecommerceOrder_conversion_rate' => Piwik::translate('Goals_ConversionRate', Piwik::translate('Goals_EcommerceOrder')),
'goal_ecommerceOrder_nb_conversions' => Piwik::translate('General_EcommerceOrders'),
'goal_ecommerceOrder_revenue' => Piwik::translate('General_TotalRevenue'),
'goal_ecommerceOrder_revenue_per_visit' => Piwik::translate('General_ColumnValuePerVisit'),
'goal_ecommerceOrder_avg_order_revenue' => Piwik::translate('General_AverageOrderValue'),
'goal_ecommerceOrder_items' => Piwik::translate('General_PurchasedProducts')
);
$goalName = Piwik::translate('General_EcommerceOrders');
$view->metrics_documentation += array(
'goal_ecommerceOrder_conversion_rate' => Piwik::translate('Goals_ColumnConversionRateDocumentation', $goalName),
'goal_ecommerceOrder_nb_conversions' => Piwik::translate('Goals_ColumnConversionsDocumentation', $goalName),
'goal_ecommerceOrder_revenue' => Piwik::translate('Goals_ColumnRevenueDocumentation', $goalName),
'goal_ecommerceOrder_revenue_per_visit' => Piwik::translate('Goals_ColumnAverageOrderRevenueDocumentation', $goalName),
'goal_ecommerceOrder_avg_order_revenue' => Piwik::translate('Goals_ColumnAverageOrderRevenueDocumentation', $goalName),
'goal_ecommerceOrder_items' => Piwik::translate('Goals_ColumnPurchasedProductsDocumentation', $goalName),
'revenue_per_visit' => Piwik::translate('Goals_ColumnRevenuePerVisitDocumentation', $goalName)
);
}
private function setPropertiesForGoalsOverview($view, $idSite)
{
$allGoals = $this->getGoals($idSite);
// set view properties
$view->columns_to_display = array('label', 'nb_visits');
foreach ($allGoals as $goal) {
$column = "goal_{$goal['idgoal']}_conversion_rate";
$view->columns_to_display[] = $column;
$view->translations[$column] = Piwik::translate('Goals_ConversionRate', $goal['name']);
$view->metrics_documentation[$column]
= Piwik::translate('Goals_ColumnConversionRateDocumentation', $goal['quoted_name'] ? : $goal['name']);
}
$view->columns_to_display[] = 'revenue_per_visit';
$view->metrics_documentation['revenue_per_visit'] =
Piwik::translate('Goals_ColumnRevenuePerVisitDocumentation', Piwik::translate('Goals_EcommerceAndGoalsMenu'));
}
private function setPropertiesForGoals($view, $idSite, $idGoals)
{
$allGoals = $this->getGoals($idSite);
if ($idGoals == 'all') {
$idGoals = array_keys($allGoals);
} else {
// only sort by a goal's conversions if not showing all goals (for FULL_REPORT)
$view->filter_sort_column = 'goal_' . reset($idGoals) . '_nb_conversions';
$view->filter_sort_order = 'desc';
}
$view->columns_to_display = array('label', 'nb_visits');
$goalColumnTemplates = array(
'goal_%s_nb_conversions',
'goal_%s_conversion_rate',
'goal_%s_revenue',
'goal_%s_revenue_per_visit',
);
// set columns to display (columns of same type but different goals will be next to each other,
// ie, goal_0_nb_conversions, goal_1_nb_conversions, etc.)
foreach ($goalColumnTemplates as $idx => $columnTemplate) {
foreach ($idGoals as $idGoal) {
$column = sprintf($columnTemplate, $idGoal);
$view->columns_to_display[] = $column;
}
}
// set translations & metric docs for goal specific metrics
foreach ($idGoals as $idGoal) {
$goalName = $allGoals[$idGoal]['name'];
$quotedGoalName = $allGoals[$idGoal]['quoted_name'] ? : $goalName;
$view->translations += array(
'goal_' . $idGoal . '_nb_conversions' => Piwik::translate('Goals_Conversions', $goalName),
'goal_' . $idGoal . '_conversion_rate' => Piwik::translate('Goals_ConversionRate', $goalName),
'goal_' . $idGoal . '_revenue' =>
Piwik::translate('%s ' . Piwik::translate('General_ColumnRevenue'), $goalName),
'goal_' . $idGoal . '_revenue_per_visit' =>
Piwik::translate('%s ' . Piwik::translate('General_ColumnValuePerVisit'), $goalName),
);
$view->metrics_documentation += array(
'goal_' . $idGoal . '_nb_conversions' => Piwik::translate('Goals_ColumnConversionsDocumentation', $quotedGoalName),
'goal_' . $idGoal . '_conversion_rate' => Piwik::translate('Goals_ColumnConversionRateDocumentation', $quotedGoalName),
'goal_' . $idGoal . '_revenue' => Piwik::translate('Goals_ColumnRevenueDocumentation', $quotedGoalName),
'goal_' . $idGoal . '_revenue_per_visit' =>
Piwik::translate('Goals_ColumnRevenuePerVisitDocumentation', Piwik::translate('Goals_EcommerceAndGoalsMenu')),
);
}
$view->columns_to_display[] = 'revenue_per_visit';
}
private function getGoals($idSite)
{
// get all goals to display info for
$allGoals = array();
// add the ecommerce goal if ecommerce is enabled for the site
if (Site::isEcommerceEnabledFor($idSite)) {
$ecommerceGoal = array(
'idgoal' => Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER,
'name' => Piwik::translate('Goals_EcommerceOrder'),
'quoted_name' => false
);
$allGoals[$ecommerceGoal['idgoal']] = $ecommerceGoal;
}
// add the site's goals (and escape all goal names)
$siteGoals = APIGoals::getInstance()->getGoals($idSite);
foreach ($siteGoals as &$goal) {
$goal['name'] = Common::sanitizeInputValue($goal['name']);
$goal['quoted_name'] = '"' . $goal['name'] . '"';
$allGoals[$goal['idgoal']] = $goal;
}
return $allGoals;
}
private function isRevenueColumn($name)
{
return strpos($name, '_revenue') !== false || $name == 'revenue_per_visit';
}
} }
\ No newline at end of file
...@@ -11,8 +11,18 @@ ...@@ -11,8 +11,18 @@
namespace Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; namespace Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\DataTable\DataTableInterface;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\Visualization\Config; use Piwik\Visualization\Config;
use Piwik\Common;
use Piwik\DataTable\Filter\AddColumnsProcessedMetricsGoal;
use Piwik\MetricsFormatter;
use Piwik\Piwik;
use Piwik\Plugins\Goals\API as APIGoals;
use Piwik\Site;
use Piwik\View;
use Piwik\ViewDataTable\Visualization;
use Piwik\Visualization\Request;
/** /**
* DataTable Visualization that derives from HtmlTable and sets show_extra_columns to true. * DataTable Visualization that derives from HtmlTable and sets show_extra_columns to true.
...@@ -25,6 +35,39 @@ class AllColumns extends HtmlTable ...@@ -25,6 +35,39 @@ class AllColumns extends HtmlTable
{ {
$properties->visualization_properties->show_extra_columns = true; $properties->visualization_properties->show_extra_columns = true;
$properties->show_exclude_low_population = true;
$properties->datatable_css_class = 'dataTableVizAllColumns';
parent::configureVisualization($properties); parent::configureVisualization($properties);
} }
public function beforeGenericFiltersAreAppliedToLoadedDataTable(DataTableInterface $dataTable, Config $properties, Request $request)
{
$dataTable->filter('AddColumnsProcessedMetrics');
$dataTable->filter(function ($dataTable) use ($properties) {
$columnsToDisplay = array('label', 'nb_visits');
if (in_array('nb_uniq_visitors', $dataTable->getColumns())) {
$columnsToDisplay[] = 'nb_uniq_visitors';
}
$columnsToDisplay = array_merge(
$columnsToDisplay, array('nb_actions', 'nb_actions_per_visit', 'avg_time_on_site', 'bounce_rate')
);
// only display conversion rate for the plugins that do not provide "per goal" metrics
// otherwise, conversion rate is meaningless as a whole (since we don't process 'cross goals' conversions)
if (!$properties->show_goals) {
$columnsToDisplay[] = 'conversion_rate';
}
$properties->columns_to_display = $columnsToDisplay;
});
$prettifyTime = array('\Piwik\MetricsFormatter', 'getPrettyTimeFromSeconds');
$dataTable->filter('ColumnCallbackReplace', array('avg_time_on_site', $prettifyTime));
}
} }
\ No newline at end of file
...@@ -11,8 +11,16 @@ ...@@ -11,8 +11,16 @@
namespace Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; namespace Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\Piwik;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\Visualization\Config; use Piwik\Visualization\Config;
use Piwik\Common;
use Piwik\DataTable\Filter\AddColumnsProcessedMetricsGoal;
use Piwik\MetricsFormatter;
use Piwik\Plugins\Goals\API as APIGoals;
use Piwik\Site;
use Piwik\View;
use Piwik\ViewDataTable\Visualization;
/** /**
* DataTable Visualization that derives from HtmlTable and sets show_goals_columns to true. * DataTable Visualization that derives from HtmlTable and sets show_goals_columns to true.
...@@ -25,6 +33,221 @@ class Goals extends HtmlTable ...@@ -25,6 +33,221 @@ class Goals extends HtmlTable
{ {
$properties->visualization_properties->show_goals_columns = true; $properties->visualization_properties->show_goals_columns = true;
$properties->datatable_css_class = 'dataTableVizGoals';
$properties->show_exclude_low_population = true;
$properties->show_goals = true;
$properties->translations += array(
'nb_conversions' => Piwik::translate('Goals_ColumnConversions'),
'conversion_rate' => Piwik::translate('General_ColumnConversionRate'),
'revenue' => Piwik::translate('General_ColumnRevenue'),
'revenue_per_visit' => Piwik::translate('General_ColumnValuePerVisit'),
);
$properties->metrics_documentation['nb_visits'] = Piwik::translate('Goals_ColumnVisits');
if (Common::getRequestVar('documentationForGoalsPage', 0, 'int') == 1) { // TODO: should not use query parameter
$properties->documentation = Piwik::translate('Goals_ConversionByTypeReportDocumentation',
array('<br />', '<br />', '<a href="http://piwik.org/docs/tracking-goals-web-analytics/" target="_blank">', '</a>'));
}
if (!$properties->visualization_properties->disable_subtable_when_show_goals) {
$properties->subtable_controller_action = null;
}
$this->setShowGoalsColumnsProperties();
parent::configureVisualization($properties); parent::configureVisualization($properties);
} }
private function setShowGoalsColumnsProperties()
{
$view = $this->viewDataTable;
// set view properties based on goal requested
$idSite = Common::getRequestVar('idSite', null, 'int');
$idGoal = Common::getRequestVar('idGoal', AddColumnsProcessedMetricsGoal::GOALS_OVERVIEW, 'string');
if ($idGoal == Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER) {
$this->setPropertiesForEcommerceView($view);
} else if ($idGoal == AddColumnsProcessedMetricsGoal::GOALS_FULL_TABLE) {
$this->setPropertiesForGoals($view, $idSite, 'all');
} else if ($idGoal == AddColumnsProcessedMetricsGoal::GOALS_OVERVIEW) {
$this->setPropertiesForGoalsOverview($view, $idSite);
} else {
$this->setPropertiesForGoals($view, $idSite, array($idGoal));
}
// add goals columns
$view->filters[] = array('AddColumnsProcessedMetricsGoal', array($ignore = true, $idGoal), $priority = true);
// prettify columns
$setRatePercent = function ($rate, $thang = false) {
return $rate == 0 ? "0%" : $rate;
};
foreach ($view->columns_to_display as $columnName) {
if (strpos($columnName, 'conversion_rate') !== false) {
$view->filters[] = array('ColumnCallbackReplace', array($columnName, $setRatePercent));
}
}
$formatPercent = function ($value) use ($idSite) {
return MetricsFormatter::getPrettyMoney(sprintf("%.1f", $value), $idSite);
};
foreach ($view->columns_to_display as $columnName) {
if ($this->isRevenueColumn($columnName)) {
$view->filters[] = array('ColumnCallbackReplace', array($columnName, $formatPercent));
}
}
// this ensures that the value is set to zero for all rows where the value was not set (no conversion)
$identityFunction = function ($value) {
return $value;
};
foreach ($view->columns_to_display as $columnName) {
if (!$this->isRevenueColumn($columnName)) {
$view->filters[] = array('ColumnCallbackReplace', array($columnName, $identityFunction));
}
}
}
private function setPropertiesForEcommerceView($view)
{
$view->filter_sort_column = 'goal_ecommerceOrder_revenue';
$view->filter_sort_order = 'desc';
$view->columns_to_display = array(
'label', 'nb_visits', 'goal_ecommerceOrder_nb_conversions', 'goal_ecommerceOrder_revenue',
'goal_ecommerceOrder_conversion_rate', 'goal_ecommerceOrder_avg_order_revenue', 'goal_ecommerceOrder_items',
'goal_ecommerceOrder_revenue_per_visit'
);
$view->translations += array(
'goal_ecommerceOrder_conversion_rate' => Piwik::translate('Goals_ConversionRate', Piwik::translate('Goals_EcommerceOrder')),
'goal_ecommerceOrder_nb_conversions' => Piwik::translate('General_EcommerceOrders'),
'goal_ecommerceOrder_revenue' => Piwik::translate('General_TotalRevenue'),
'goal_ecommerceOrder_revenue_per_visit' => Piwik::translate('General_ColumnValuePerVisit'),
'goal_ecommerceOrder_avg_order_revenue' => Piwik::translate('General_AverageOrderValue'),
'goal_ecommerceOrder_items' => Piwik::translate('General_PurchasedProducts')
);
$goalName = Piwik::translate('General_EcommerceOrders');
$view->metrics_documentation += array(
'goal_ecommerceOrder_conversion_rate' => Piwik::translate('Goals_ColumnConversionRateDocumentation', $goalName),
'goal_ecommerceOrder_nb_conversions' => Piwik::translate('Goals_ColumnConversionsDocumentation', $goalName),
'goal_ecommerceOrder_revenue' => Piwik::translate('Goals_ColumnRevenueDocumentation', $goalName),
'goal_ecommerceOrder_revenue_per_visit' => Piwik::translate('Goals_ColumnAverageOrderRevenueDocumentation', $goalName),
'goal_ecommerceOrder_avg_order_revenue' => Piwik::translate('Goals_ColumnAverageOrderRevenueDocumentation', $goalName),
'goal_ecommerceOrder_items' => Piwik::translate('Goals_ColumnPurchasedProductsDocumentation', $goalName),
'revenue_per_visit' => Piwik::translate('Goals_ColumnRevenuePerVisitDocumentation', $goalName)
);
}
private function setPropertiesForGoalsOverview($view, $idSite)
{
$allGoals = $this->getGoals($idSite);
// set view properties
$view->columns_to_display = array('label', 'nb_visits');
foreach ($allGoals as $goal) {
$column = "goal_{$goal['idgoal']}_conversion_rate";
$view->columns_to_display[] = $column;
$view->translations[$column] = Piwik::translate('Goals_ConversionRate', $goal['name']);
$view->metrics_documentation[$column]
= Piwik::translate('Goals_ColumnConversionRateDocumentation', $goal['quoted_name'] ? : $goal['name']);
}
$view->columns_to_display[] = 'revenue_per_visit';
$view->metrics_documentation['revenue_per_visit'] =
Piwik::translate('Goals_ColumnRevenuePerVisitDocumentation', Piwik::translate('Goals_EcommerceAndGoalsMenu'));
}
private function setPropertiesForGoals($view, $idSite, $idGoals)
{
$allGoals = $this->getGoals($idSite);
if ($idGoals == 'all') {
$idGoals = array_keys($allGoals);
} else {
// only sort by a goal's conversions if not showing all goals (for FULL_REPORT)
$view->filter_sort_column = 'goal_' . reset($idGoals) . '_nb_conversions';
$view->filter_sort_order = 'desc';
}
$view->columns_to_display = array('label', 'nb_visits');
$goalColumnTemplates = array(
'goal_%s_nb_conversions',
'goal_%s_conversion_rate',
'goal_%s_revenue',
'goal_%s_revenue_per_visit',
);
// set columns to display (columns of same type but different goals will be next to each other,
// ie, goal_0_nb_conversions, goal_1_nb_conversions, etc.)
foreach ($goalColumnTemplates as $idx => $columnTemplate) {
foreach ($idGoals as $idGoal) {
$column = sprintf($columnTemplate, $idGoal);
$view->columns_to_display[] = $column;
}
}
// set translations & metric docs for goal specific metrics
foreach ($idGoals as $idGoal) {
$goalName = $allGoals[$idGoal]['name'];
$quotedGoalName = $allGoals[$idGoal]['quoted_name'] ? : $goalName;
$view->translations += array(
'goal_' . $idGoal . '_nb_conversions' => Piwik::translate('Goals_Conversions', $goalName),
'goal_' . $idGoal . '_conversion_rate' => Piwik::translate('Goals_ConversionRate', $goalName),
'goal_' . $idGoal . '_revenue' =>
Piwik::translate('%s ' . Piwik::translate('General_ColumnRevenue'), $goalName),
'goal_' . $idGoal . '_revenue_per_visit' =>
Piwik::translate('%s ' . Piwik::translate('General_ColumnValuePerVisit'), $goalName),
);
$view->metrics_documentation += array(
'goal_' . $idGoal . '_nb_conversions' => Piwik::translate('Goals_ColumnConversionsDocumentation', $quotedGoalName),
'goal_' . $idGoal . '_conversion_rate' => Piwik::translate('Goals_ColumnConversionRateDocumentation', $quotedGoalName),
'goal_' . $idGoal . '_revenue' => Piwik::translate('Goals_ColumnRevenueDocumentation', $quotedGoalName),
'goal_' . $idGoal . '_revenue_per_visit' =>
Piwik::translate('Goals_ColumnRevenuePerVisitDocumentation', Piwik::translate('Goals_EcommerceAndGoalsMenu')),
);
}
$view->columns_to_display[] = 'revenue_per_visit';
}
private function getGoals($idSite)
{
// get all goals to display info for
$allGoals = array();
// add the ecommerce goal if ecommerce is enabled for the site
if (Site::isEcommerceEnabledFor($idSite)) {
$ecommerceGoal = array(
'idgoal' => Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER,
'name' => Piwik::translate('Goals_EcommerceOrder'),
'quoted_name' => false
);
$allGoals[$ecommerceGoal['idgoal']] = $ecommerceGoal;
}
// add the site's goals (and escape all goal names)
$siteGoals = APIGoals::getInstance()->getGoals($idSite);
foreach ($siteGoals as &$goal) {
$goal['name'] = Common::sanitizeInputValue($goal['name']);
$goal['quoted_name'] = '"' . $goal['name'] . '"';
$allGoals[$goal['idgoal']] = $goal;
}
return $allGoals;
}
private function isRevenueColumn($name)
{
return strpos($name, '_revenue') !== false || $name == 'revenue_per_visit';
}
} }
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter