Skip to content
Extraits de code Groupes Projets
Valider c21bd2dd rédigé par diosmosis's avatar diosmosis
Parcourir les fichiers

Do not compute conversion_rate in Goals archiving logic, instead compute as normal ProcessedMetric.

parent 88a7fa1f
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 57 ajouts et 57 suppressions
...@@ -368,27 +368,22 @@ class Report ...@@ -368,27 +368,22 @@ class Report
* *
* This method should be used in **Plugin.get** API methods. * This method should be used in **Plugin.get** API methods.
* *
* @param string[]|null $allColumns The list of all available columns. Defaults to this report's metrics * @param string[]|null $allMetrics The list of all available metrics. Defaults to this report's metrics.
* and processed metrics.
* @param string[]|null $restrictToColumns The requested columns. * @param string[]|null $restrictToColumns The requested columns.
* @return string[] * @return string[]
*/ */
public function getMetricsRequiredForReport($allColumns = null, $restrictToColumns = null) public function getMetricsRequiredForReport($allMetrics = null, $restrictToColumns = null)
{ {
if (empty($allColumns)) { if (empty($allMetrics)) {
$allColumns = $this->metrics; $allMetrics = $this->metrics;
foreach ($this->processedMetrics as $processedMetric) {
$allColumns[] = $processedMetric instanceof ProcessedMetric ? $processedMetric->getName() : $processedMetric;
}
} }
if (empty($restrictToColumns)) { if (empty($restrictToColumns)) {
$restrictToColumns = $allColumns; $restrictToColumns = $allMetrics;
} }
$processedMetricsById = $this->getProcessedMetricsById(); $processedMetricsById = $this->getProcessedMetricsById();
$metricsSet = array_flip($allColumns); $metricsSet = array_flip($allMetrics);
$metrics = array(); $metrics = array();
foreach ($restrictToColumns as $column) { foreach ($restrictToColumns as $column) {
...@@ -420,6 +415,17 @@ class Report ...@@ -420,6 +415,17 @@ class Report
return $this->getMetricTranslations($this->processedMetrics); return $this->getMetricTranslations($this->processedMetrics);
} }
/**
* Returns the array of all metrics displayed by this report.
*
* @return array
* @api
*/
public function getAllMetrics()
{
return array_keys(array_merge($this->getMetrics(), $this->getProcessedMetrics()));
}
/** /**
* Returns an array of metric documentations and their corresponding translations. Eg * Returns an array of metric documentations and their corresponding translations. Eg
* `array('nb_visits' => 'If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after...')`. * `array('nb_visits' => 'If a visitor comes to your website for the first time or if he visits a page more than 30 minutes after...')`.
......
...@@ -343,27 +343,28 @@ class API extends \Piwik\Plugin\API ...@@ -343,27 +343,28 @@ class API extends \Piwik\Plugin\API
// Mapping string idGoal to internal ID // Mapping string idGoal to internal ID
$idGoal = self::convertSpecialGoalIds($idGoal); $idGoal = self::convertSpecialGoalIds($idGoal);
$isEcommerceGoal = $idGoal === GoalManager::IDGOAL_ORDER || $idGoal === GoalManager::IDGOAL_CART;
$allMetrics = Goals::getGoalColumns($idGoal); $allMetrics = Goals::getGoalColumns($idGoal);
$requestedColumns = Piwik::getArrayFromApiParameter($columns); $requestedColumns = Piwik::getArrayFromApiParameter($columns);
$columnsToGet = Report::factory("Goals", "get")->getMetricsRequiredForReport($allMetrics, $requestedColumns);
$inDbMetricNames = array_map(function ($value) use ($idGoal) { return Archiver::getRecordName($value, $idGoal); }, $columnsToGet); $report = Report::factory("Goals", "get");
$columnsToGet = $report->getMetricsRequiredForReport($allMetrics, $requestedColumns);
$inDbMetricNames = array_map(function ($name) use ($idGoal) {
return $name == 'nb_visits' ? $name : Archiver::getRecordName($name, $idGoal);
}, $columnsToGet);
$dataTable = $archive->getDataTableFromNumeric($inDbMetricNames); $dataTable = $archive->getDataTableFromNumeric($inDbMetricNames);
$newNameMapping = array_combine($inDbMetricNames, $columnsToGet); $newNameMapping = array_combine($inDbMetricNames, $columnsToGet);
$dataTable->filter('ReplaceColumnNames', array($newNameMapping)); $dataTable->filter('ReplaceColumnNames', array($newNameMapping));
$dataTable->deleteColumns(array_diff($requestedColumns, $columnsToGet));
// TODO: this should be in Goals/Get.php but it depends on idGoal parameter which isn't always in _GET (ie, // TODO: this should be in Goals/Get.php but it depends on idGoal parameter which isn't always in _GET (ie,
// it's not in ProcessedReport.php). more refactoring must be done to report class before this can be // it's not in ProcessedReport.php). more refactoring must be done to report class before this can be
// corrected. // corrected.
if ((in_array('avg_order_revenue', $requestedColumns) if ((in_array('avg_order_revenue', $requestedColumns)
|| empty($requestedColumns)) || empty($requestedColumns))
&& ($idGoal === GoalManager::IDGOAL_ORDER && $isEcommerceGoal
|| $idGoal === GoalManager::IDGOAL_CART)
) { ) {
$dataTable->filter(function (DataTable $table) { $dataTable->filter(function (DataTable $table) {
$extraProcessedMetrics = $table->getMetadata(DataTable::EXTRA_PROCESSED_METRICS_METADATA_NAME); $extraProcessedMetrics = $table->getMetadata(DataTable::EXTRA_PROCESSED_METRICS_METADATA_NAME);
...@@ -372,6 +373,16 @@ class API extends \Piwik\Plugin\API ...@@ -372,6 +373,16 @@ class API extends \Piwik\Plugin\API
}); });
} }
// remove temporary metrics that were not explicitly requested
$allColumns = $allMetrics;
$allColumns[] = 'conversion_rate';
if ($isEcommerceGoal) {
$allColumns[] = 'avg_order_revenue';
}
$columnsToShow = $requestedColumns ?: $allColumns;
$dataTable->queueFilter('ColumnDelete', array($columnsToRemove = array(), $columnsToShow));
return $dataTable; return $dataTable;
} }
......
...@@ -154,7 +154,6 @@ class Archiver extends \Piwik\Plugin\Archiver ...@@ -154,7 +154,6 @@ class Archiver extends \Piwik\Plugin\Archiver
// Stats for all goals // Stats for all goals
$nbConvertedVisits = $this->getProcessor()->getNumberOfVisitsConverted(); $nbConvertedVisits = $this->getProcessor()->getNumberOfVisitsConverted();
$metrics = array( $metrics = array(
self::getRecordName('conversion_rate') => $this->getConversionRate($nbConvertedVisits),
self::getRecordName('nb_conversions') => $totalConversions, self::getRecordName('nb_conversions') => $totalConversions,
self::getRecordName('nb_visits_converted') => $nbConvertedVisits, self::getRecordName('nb_visits_converted') => $nbConvertedVisits,
self::getRecordName('revenue') => $totalRevenue, self::getRecordName('revenue') => $totalRevenue,
...@@ -172,11 +171,6 @@ class Archiver extends \Piwik\Plugin\Archiver ...@@ -172,11 +171,6 @@ class Archiver extends \Piwik\Plugin\Archiver
$recordName = self::getRecordName($metricName, $idGoal); $recordName = self::getRecordName($metricName, $idGoal);
$numericRecords[$recordName] = $value; $numericRecords[$recordName] = $value;
} }
if (!empty($array[Metrics::INDEX_GOAL_NB_VISITS_CONVERTED])) {
$conversion_rate = $this->getConversionRate($array[Metrics::INDEX_GOAL_NB_VISITS_CONVERTED]);
$recordName = self::getRecordName('conversion_rate', $idGoal);
$numericRecords[$recordName] = $conversion_rate;
}
} }
return $numericRecords; return $numericRecords;
} }
...@@ -195,12 +189,6 @@ class Archiver extends \Piwik\Plugin\Archiver ...@@ -195,12 +189,6 @@ class Archiver extends \Piwik\Plugin\Archiver
return 'Goal_' . $idGoalStr . $recordName; return 'Goal_' . $idGoalStr . $recordName;
} }
protected function getConversionRate($count)
{
$visits = $this->getProcessor()->getNumberOfVisits();
return round(100 * $count / $visits, GoalManager::REVENUE_PRECISION);
}
protected function insertReports($recordName, $visitsToConversions) protected function insertReports($recordName, $visitsToConversions)
{ {
foreach ($visitsToConversions as $idGoal => $table) { foreach ($visitsToConversions as $idGoal => $table) {
...@@ -389,19 +377,13 @@ class Archiver extends \Piwik\Plugin\Archiver ...@@ -389,19 +377,13 @@ class Archiver extends \Piwik\Plugin\Archiver
$fieldsToSum = array(); $fieldsToSum = array();
foreach ($goalIdsToSum as $goalId) { foreach ($goalIdsToSum as $goalId) {
$metricsToSum = Goals::getGoalColumns($goalId); $metricsToSum = Goals::getGoalColumns($goalId);
unset($metricsToSum[array_search('conversion_rate', $metricsToSum)]);
foreach ($metricsToSum as $metricName) { foreach ($metricsToSum as $metricName) {
$fieldsToSum[] = self::getRecordName($metricName, $goalId); $fieldsToSum[] = self::getRecordName($metricName, $goalId);
} }
} }
$records = $this->getProcessor()->aggregateNumericMetrics($fieldsToSum); $this->getProcessor()->aggregateNumericMetrics($fieldsToSum);
// also recording conversion_rate for each goal
foreach ($goalIdsToSum as $goalId) { foreach ($goalIdsToSum as $goalId) {
$nb_conversions = $records[self::getRecordName('nb_visits_converted', $goalId)];
$conversion_rate = $this->getConversionRate($nb_conversions);
$this->getProcessor()->insertNumericRecord(self::getRecordName('conversion_rate', $goalId), $conversion_rate);
// sum up the visits to conversion data table & the days to conversion data table // sum up the visits to conversion data table & the days to conversion data table
$this->getProcessor()->aggregateDataTableRecords(array( $this->getProcessor()->aggregateDataTableRecords(array(
self::getRecordName(self::VISITS_UNTIL_RECORD_NAME, $goalId), self::getRecordName(self::VISITS_UNTIL_RECORD_NAME, $goalId),
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
namespace Piwik\Plugins\Goals\Reports; namespace Piwik\Plugins\Goals\Reports;
use Piwik\Piwik; use Piwik\Piwik;
use Piwik\Plugins\CoreHome\Columns\Metrics\ConversionRate;
class Get extends BaseGoal class Get extends BaseGoal
{ {
...@@ -17,11 +18,11 @@ class Get extends BaseGoal ...@@ -17,11 +18,11 @@ class Get extends BaseGoal
parent::init(); parent::init();
$this->name = Piwik::translate('Goals_Goals'); $this->name = Piwik::translate('Goals_Goals');
$this->processedMetrics = array('avg_order_revenue'); $this->processedMetrics = array(new ConversionRate(), 'avg_order_revenue');
$this->documentation = ''; // TODO $this->documentation = ''; // TODO
$this->order = 1; $this->order = 1;
$this->orderGoal = 50; $this->orderGoal = 50;
$this->metrics = array('nb_conversions', 'nb_visits_converted', 'conversion_rate', 'revenue'); $this->metrics = array('nb_conversions', 'nb_visits_converted', 'revenue');
$this->parameters = null; $this->parameters = null;
} }
......
...@@ -22,7 +22,7 @@ class GetVisitsUntilConversion extends BaseGoal ...@@ -22,7 +22,7 @@ class GetVisitsUntilConversion extends BaseGoal
$this->name = Piwik::translate('Goals_VisitsUntilConv'); $this->name = Piwik::translate('Goals_VisitsUntilConv');
$this->dimension = new VisitsUntilConversion(); $this->dimension = new VisitsUntilConversion();
$this->constantRowsCount = true; $this->constantRowsCount = true;
$this->processedMetrics = false; $this->processedMetrics = array();
$this->parameters = array(); $this->parameters = array();
$this->metrics = array('nb_conversions'); $this->metrics = array('nb_conversions');
$this->order = 5; $this->order = 5;
......
...@@ -22,7 +22,7 @@ class GetVisitsUntilConversionEcommerceOrder extends BaseEcommerce ...@@ -22,7 +22,7 @@ class GetVisitsUntilConversionEcommerceOrder extends BaseEcommerce
$this->name = Piwik::translate('General_EcommerceOrders') . ' - ' . Piwik::translate('Goals_VisitsUntilConv'); $this->name = Piwik::translate('General_EcommerceOrders') . ' - ' . Piwik::translate('Goals_VisitsUntilConv');
$this->dimension = new VisitsUntilConversion(); $this->dimension = new VisitsUntilConversion();
$this->constantRowsCount = true; $this->constantRowsCount = true;
$this->processedMetrics = false; $this->processedMetrics = array();
$this->metrics = array('nb_conversions'); $this->metrics = array('nb_conversions');
$this->order = 11; $this->order = 11;
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<result> <result>
<nb_conversions>2</nb_conversions> <nb_conversions>2</nb_conversions>
<nb_visits_converted>2</nb_visits_converted> <nb_visits_converted>2</nb_visits_converted>
<conversion_rate>66.67</conversion_rate>
<revenue>5020.22</revenue> <revenue>5020.22</revenue>
<items>8</items> <items>8</items>
<avg_order_revenue>2510.11</avg_order_revenue> <avg_order_revenue>2510.11</avg_order_revenue>
<conversion_rate>66.67%</conversion_rate>
</result> </result>
\ No newline at end of file
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<result> <result>
<nb_conversions>3</nb_conversions> <nb_conversions>3</nb_conversions>
<nb_visits_converted>3</nb_visits_converted> <nb_visits_converted>3</nb_visits_converted>
<conversion_rate>60</conversion_rate>
<revenue>7530.33</revenue> <revenue>7530.33</revenue>
<items>12</items> <items>12</items>
<avg_order_revenue>2510.11</avg_order_revenue> <avg_order_revenue>2510.11</avg_order_revenue>
<conversion_rate>60%</conversion_rate>
</result> </result>
\ No newline at end of file
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
<result> <result>
<nb_conversions>1</nb_conversions> <nb_conversions>1</nb_conversions>
<nb_visits_converted>1</nb_visits_converted> <nb_visits_converted>1</nb_visits_converted>
<conversion_rate>33.33</conversion_rate>
<revenue>10</revenue> <revenue>10</revenue>
<conversion_rate>33.33%</conversion_rate>
</result> </result>
\ No newline at end of file
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
<result> <result>
<nb_conversions>1</nb_conversions> <nb_conversions>1</nb_conversions>
<nb_visits_converted>1</nb_visits_converted> <nb_visits_converted>1</nb_visits_converted>
<conversion_rate>20</conversion_rate>
<revenue>10</revenue> <revenue>10</revenue>
<conversion_rate>20%</conversion_rate>
</result> </result>
\ No newline at end of file
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
<result> <result>
<nb_conversions>2</nb_conversions> <nb_conversions>2</nb_conversions>
<nb_visits_converted>1</nb_visits_converted> <nb_visits_converted>1</nb_visits_converted>
<conversion_rate>33.33</conversion_rate>
<revenue>3111.11</revenue> <revenue>3111.11</revenue>
<revenue_subtotal>2500</revenue_subtotal> <revenue_subtotal>2500</revenue_subtotal>
<revenue_tax>511</revenue_tax> <revenue_tax>511</revenue_tax>
...@@ -10,4 +9,5 @@ ...@@ -10,4 +9,5 @@
<revenue_discount>666</revenue_discount> <revenue_discount>666</revenue_discount>
<items>10</items> <items>10</items>
<avg_order_revenue>1555.56</avg_order_revenue> <avg_order_revenue>1555.56</avg_order_revenue>
<conversion_rate>33.33%</conversion_rate>
</result> </result>
\ No newline at end of file
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
<result> <result>
<nb_conversions>4</nb_conversions> <nb_conversions>4</nb_conversions>
<nb_visits_converted>2</nb_visits_converted> <nb_visits_converted>2</nb_visits_converted>
<conversion_rate>40</conversion_rate>
<revenue>13351.11</revenue> <revenue>13351.11</revenue>
<revenue_subtotal>2700</revenue_subtotal> <revenue_subtotal>2700</revenue_subtotal>
<revenue_tax>531</revenue_tax> <revenue_tax>531</revenue_tax>
...@@ -10,4 +9,5 @@ ...@@ -10,4 +9,5 @@
<revenue_discount>686</revenue_discount> <revenue_discount>686</revenue_discount>
<items>12</items> <items>12</items>
<avg_order_revenue>3337.78</avg_order_revenue> <avg_order_revenue>3337.78</avg_order_revenue>
<conversion_rate>40%</conversion_rate>
</result> </result>
\ No newline at end of file
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
<result> <result>
<nb_conversions>3</nb_conversions> <nb_conversions>3</nb_conversions>
<nb_visits_converted>2</nb_visits_converted> <nb_visits_converted>2</nb_visits_converted>
<conversion_rate>66.67</conversion_rate>
<revenue>3121.11</revenue> <revenue>3121.11</revenue>
<conversion_rate>66.67%</conversion_rate>
</result> </result>
\ No newline at end of file
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
<result> <result>
<nb_conversions>5</nb_conversions> <nb_conversions>5</nb_conversions>
<nb_visits_converted>4</nb_visits_converted> <nb_visits_converted>4</nb_visits_converted>
<conversion_rate>80</conversion_rate>
<revenue>13361.11</revenue> <revenue>13361.11</revenue>
<conversion_rate>80%</conversion_rate>
</result> </result>
\ No newline at end of file
...@@ -35,10 +35,10 @@ ...@@ -35,10 +35,10 @@
</columns> </columns>
<reportData> <reportData>
<nb_conversions>2</nb_conversions> <nb_conversions>2</nb_conversions>
<conversion_rate>66.67%</conversion_rate>
<revenue>$ 5020.22</revenue> <revenue>$ 5020.22</revenue>
<items>8</items> <items>8</items>
<avg_order_revenue>$ 2510.11</avg_order_revenue> <avg_order_revenue>$ 2510.11</avg_order_revenue>
<conversion_rate>66.67%</conversion_rate>
</reportData> </reportData>
<reportMetadata /> <reportMetadata />
<reportTotal> <reportTotal>
......
...@@ -13,13 +13,13 @@ ...@@ -13,13 +13,13 @@
<metrics> <metrics>
<nb_conversions>Conversions</nb_conversions> <nb_conversions>Conversions</nb_conversions>
<nb_visits_converted>Visits with Conversions</nb_visits_converted> <nb_visits_converted>Visits with Conversions</nb_visits_converted>
<conversion_rate>Conversion Rate</conversion_rate>
<revenue>Revenue</revenue> <revenue>Revenue</revenue>
</metrics> </metrics>
<metricsDocumentation> <metricsDocumentation>
<conversion_rate>The percentage of visits that triggered a goal conversion.</conversion_rate> <conversion_rate>The percentage of visits that triggered a goal conversion.</conversion_rate>
</metricsDocumentation> </metricsDocumentation>
<processedMetrics> <processedMetrics>
<conversion_rate>Conversion Rate</conversion_rate>
<avg_order_revenue>Average Order Value</avg_order_revenue> <avg_order_revenue>Average Order Value</avg_order_revenue>
</processedMetrics> </processedMetrics>
<imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Goals&amp;apiAction=get&amp;idGoal=1&amp;period=day&amp;date=2011-03-07,2011-04-05</imageGraphUrl> <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=Goals&amp;apiAction=get&amp;idGoal=1&amp;period=day&amp;date=2011-03-07,2011-04-05</imageGraphUrl>
...@@ -29,15 +29,15 @@ ...@@ -29,15 +29,15 @@
<columns> <columns>
<nb_conversions>Conversions</nb_conversions> <nb_conversions>Conversions</nb_conversions>
<nb_visits_converted>Visits with Conversions</nb_visits_converted> <nb_visits_converted>Visits with Conversions</nb_visits_converted>
<conversion_rate>Conversion Rate</conversion_rate>
<revenue>Revenue</revenue> <revenue>Revenue</revenue>
<conversion_rate>Conversion Rate</conversion_rate>
<avg_order_revenue>Average Order Value</avg_order_revenue> <avg_order_revenue>Average Order Value</avg_order_revenue>
</columns> </columns>
<reportData> <reportData>
<nb_conversions>1</nb_conversions> <nb_conversions>1</nb_conversions>
<nb_visits_converted>1</nb_visits_converted> <nb_visits_converted>1</nb_visits_converted>
<conversion_rate>33.33%</conversion_rate>
<revenue>$ 10</revenue> <revenue>$ 10</revenue>
<conversion_rate>33.33%</conversion_rate>
<avg_order_revenue>$ 0</avg_order_revenue> <avg_order_revenue>$ 0</avg_order_revenue>
</reportData> </reportData>
<reportMetadata /> <reportMetadata />
......
...@@ -46,7 +46,6 @@ ...@@ -46,7 +46,6 @@
<reportData> <reportData>
<nb_conversions>2</nb_conversions> <nb_conversions>2</nb_conversions>
<nb_visits_converted>1</nb_visits_converted> <nb_visits_converted>1</nb_visits_converted>
<conversion_rate>33.33%</conversion_rate>
<revenue>$ 3111.11</revenue> <revenue>$ 3111.11</revenue>
<revenue_subtotal>$ 2500</revenue_subtotal> <revenue_subtotal>$ 2500</revenue_subtotal>
<revenue_tax>$ 511</revenue_tax> <revenue_tax>$ 511</revenue_tax>
...@@ -54,6 +53,7 @@ ...@@ -54,6 +53,7 @@
<revenue_discount>$ 666</revenue_discount> <revenue_discount>$ 666</revenue_discount>
<items>10</items> <items>10</items>
<avg_order_revenue>$ 1555.56</avg_order_revenue> <avg_order_revenue>$ 1555.56</avg_order_revenue>
<conversion_rate>33.33%</conversion_rate>
</reportData> </reportData>
<reportMetadata /> <reportMetadata />
<reportTotal> <reportTotal>
......
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
<result> <result>
<nb_conversions>0</nb_conversions> <nb_conversions>0</nb_conversions>
<nb_visits_converted>0</nb_visits_converted> <nb_visits_converted>0</nb_visits_converted>
<conversion_rate>0</conversion_rate>
<revenue>0</revenue> <revenue>0</revenue>
<conversion_rate>0%</conversion_rate>
</result> </result>
\ No newline at end of file
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
<result> <result>
<nb_conversions>1</nb_conversions> <nb_conversions>1</nb_conversions>
<nb_visits_converted>1</nb_visits_converted> <nb_visits_converted>1</nb_visits_converted>
<conversion_rate>100</conversion_rate>
<revenue>10</revenue> <revenue>10</revenue>
<conversion_rate>100%</conversion_rate>
</result> </result>
\ No newline at end of file
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
<result> <result>
<nb_conversions>1</nb_conversions> <nb_conversions>1</nb_conversions>
<nb_visits_converted>1</nb_visits_converted> <nb_visits_converted>1</nb_visits_converted>
<conversion_rate>100</conversion_rate>
<revenue>10</revenue> <revenue>10</revenue>
<conversion_rate>100%</conversion_rate>
</result> </result>
\ 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