Skip to content

Commit

Permalink
Fixes #4503 visitConvertedGoalId now works in all reports. Note that …
Browse files Browse the repository at this point in the history
…this also fixes another bug in the Ecommerce items reports!
  • Loading branch information
mattab committed Feb 11, 2014
1 parent 0003030 commit 17d6057
Show file tree
Hide file tree
Showing 21 changed files with 78 additions and 387 deletions.
2 changes: 2 additions & 0 deletions core/Segment.php
Expand Up @@ -346,6 +346,8 @@ private function generateJoins($tables)
$join = "log_conversion_item.idvisit = log_visit.idvisit";
} elseif ($conversionItemAvailable && $table === 'log_link_visit_action') {
$join = "log_conversion_item.idvisit = log_link_visit_action.idvisit";
} elseif ($conversionItemAvailable && $table === 'log_conversion') {
$join = "log_conversion_item.idvisit = log_conversion.idvisit";
} else {
throw new Exception("Table '$table' can't be joined for segmentation");
}
Expand Down
15 changes: 8 additions & 7 deletions plugins/Goals/API.php
Expand Up @@ -212,7 +212,7 @@ protected function getItems($recordName, $idSite, $period, $date, $abandonedCart

$dataTable->filter('Sort', array(Metrics::INDEX_ECOMMERCE_ITEM_REVENUE));

$this->enrichItemsTableWithViewMetrics($dataTable, $recordName, $idSite, $period, $date);
$this->enrichItemsTableWithViewMetrics($dataTable, $recordName, $idSite, $period, $date, $segment);

// First rename the avg_price_viewed column
$renameColumn = array(self::AVG_PRICE_VIEWED => 'avg_price');
Expand Down Expand Up @@ -255,9 +255,9 @@ protected function renameNotDefinedRow($dataTable, $notDefinedStringPretty)
}
}

protected function enrichItemsDataTableWithItemsViewMetrics($dataTable, $idSite, $period, $date, $idSubtable)
protected function enrichItemsDataTableWithItemsViewMetrics($dataTable, $idSite, $period, $date, $segment, $idSubtable)
{
$ecommerceViews = \Piwik\Plugins\CustomVariables\API::getInstance()->getCustomVariablesValuesFromNameId($idSite, $period, $date, $idSubtable, $segment = false, $_leavePriceViewedColumn = true);
$ecommerceViews = \Piwik\Plugins\CustomVariables\API::getInstance()->getCustomVariablesValuesFromNameId($idSite, $period, $date, $idSubtable, $segment, $_leavePriceViewedColumn = true);

// For Product names and SKU reports, and for Category report
// Use the Price (tracked on page views)
Expand Down Expand Up @@ -513,11 +513,12 @@ public function getVisitsUntilConversion($idSite, $period, $date, $segment = fal
* @param $idSite
* @param $period
* @param $date
* @param $segment
*/
protected function enrichItemsTableWithViewMetrics($dataTable, $recordName, $idSite, $period, $date)
protected function enrichItemsTableWithViewMetrics($dataTable, $recordName, $idSite, $period, $date, $segment)
{
// Enrich the datatable with Product/Categories views, and conversion rates
$customVariables = \Piwik\Plugins\CustomVariables\API::getInstance()->getCustomVariables($idSite, $period, $date, $segment = false, $expanded = false,
$customVariables = \Piwik\Plugins\CustomVariables\API::getInstance()->getCustomVariables($idSite, $period, $date, $segment, $expanded = false,
$_leavePiwikCoreVariables = true);
$mapping = array(
'Goals_ItemsSku' => '_pks',
Expand Down Expand Up @@ -548,7 +549,7 @@ protected function enrichItemsTableWithViewMetrics($dataTable, $recordName, $idS
$row = $customVariableTableForDate->getRowFromLabel($customVarNameToLookFor);
if ($row) {
$idSubtable = $row->getIdSubDataTable();
$this->enrichItemsDataTableWithItemsViewMetrics($dataTableForDate, $idSite, $period, $dateRewrite, $idSubtable);
$this->enrichItemsDataTableWithItemsViewMetrics($dataTableForDate, $idSite, $period, $dateRewrite, $segment, $idSubtable);
}
$dataTable->addTable($dataTableForDate, $key);
}
Expand All @@ -558,7 +559,7 @@ protected function enrichItemsTableWithViewMetrics($dataTable, $recordName, $idS
$row = $customVariables->getRowFromLabel($customVarNameToLookFor);
if ($row) {
$idSubtable = $row->getIdSubDataTable();
$this->enrichItemsDataTableWithItemsViewMetrics($dataTable, $idSite, $period, $date, $idSubtable);
$this->enrichItemsDataTableWithItemsViewMetrics($dataTable, $idSite, $period, $date, $segment, $idSubtable);
}
$this->renameNotDefinedRow($dataTable, $notDefinedStringPretty);
}
Expand Down
4 changes: 2 additions & 2 deletions tests/PHPUnit/Integration/EcommerceOrderWithItemsTest.php
Expand Up @@ -196,8 +196,8 @@ public function getApiForTesting()
'idSite' => $idSite,
'date' => $dateTime,
'periods' => array('day'),
'segment' => 'visitConvertedGoalId!=1',
'testSuffix' => '_SegmentVisitHasNotConvertedGoal1')),
'segment' => 'visitConvertedGoalId==666',
'testSuffix' => '_SegmentNoVisit_HaveConvertedNonExistingGoal')),

// test segment pageTitle
array('VisitsSummary.get', array('idSite' => $idSite, 'date' => $dateTime,
Expand Down
Expand Up @@ -3,27 +3,9 @@
<row>
<label>Electronics &amp; Cameras</label>
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_visits>3</nb_visits>
<nb_actions>6</nb_actions>
<avg_price>814.37</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>Product Category not defined</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>3</nb_visits>
<nb_actions>5</nb_actions>
<avg_price>710.4</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>Category TWO LEFT in cart</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
<avg_price>0</avg_price>
<nb_actions>3</nb_actions>
<avg_price>888.56</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
Expand Down Expand Up @@ -63,4 +45,13 @@
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>Product Category not defined</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<avg_price>888</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
</result>
@@ -1,29 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
<row>
<label>Product Category not defined</label>
<nb_visits>4</nb_visits>
<nb_actions>7</nb_actions>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<avg_price>1376.4</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>Electronics &amp; Cameras</label>
<nb_visits>3</nb_visits>
<nb_actions>6</nb_actions>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<avg_price>814.37</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>Category TWO LEFT in cart</label>
<nb_visits>3</nb_visits>
<nb_visits>2</nb_visits>
<nb_actions>3</nb_actions>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<avg_price>0</avg_price>
<avg_price>888.56</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
Expand Down Expand Up @@ -63,4 +45,13 @@
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>Product Category not defined</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_price>888</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
</result>
Expand Up @@ -3,27 +3,9 @@
<row>
<label>PRODUCT name</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
<nb_actions>5</nb_actions>
<avg_price>832.78</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>PRODUCT THREE LEFT in cart</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
<nb_visits>1</nb_visits>
<nb_actions>4</nb_actions>
<avg_price>666</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>PRODUCT TWO LEFT in cart</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
<avg_price>0</avg_price>
<avg_price>888.37</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
Expand Down
@@ -1,29 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
<row>
<label>PRODUCT THREE LEFT in cart</label>
<nb_visits>3</nb_visits>
<nb_actions>6</nb_actions>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<avg_price>1332</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>PRODUCT name</label>
<nb_visits>2</nb_visits>
<nb_actions>5</nb_actions>
<nb_visits>1</nb_visits>
<nb_actions>4</nb_actions>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_price>832.78</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>PRODUCT TWO LEFT in cart</label>
<nb_visits>3</nb_visits>
<nb_actions>3</nb_actions>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<avg_price>0</avg_price>
<avg_price>888.37</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
Expand Down
Expand Up @@ -3,18 +3,9 @@
<row>
<label>SKU VERY nice indeed</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>3</nb_visits>
<nb_actions>8</nb_actions>
<avg_price>697.71</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>SKU IN ABANDONED CART TWO</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
<avg_price>0</avg_price>
<nb_visits>1</nb_visits>
<nb_actions>3</nb_actions>
<avg_price>777</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
Expand Down
Expand Up @@ -2,19 +2,10 @@
<result>
<row>
<label>SKU VERY nice indeed</label>
<nb_visits>4</nb_visits>
<nb_actions>10</nb_actions>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<avg_price>1363.71</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>SKU IN ABANDONED CART TWO</label>
<nb_visits>3</nb_visits>
<nb_visits>1</nb_visits>
<nb_actions>3</nb_actions>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<avg_price>0</avg_price>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<avg_price>777</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
Expand Down
@@ -1,66 +1,2 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
<row>
<label>Electronics &amp; Cameras</label>
<nb_uniq_visitors>2</nb_uniq_visitors>
<nb_visits>3</nb_visits>
<nb_actions>6</nb_actions>
<avg_price>814.37</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>Product Category not defined</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>3</nb_visits>
<nb_actions>5</nb_actions>
<avg_price>710.4</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>Category TWO LEFT in cart</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
<avg_price>0</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>Multiple Category 1</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<avg_price>0</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>Multiple Category 2</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<avg_price>0</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>Multiple Category 4</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<avg_price>0</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
<row>
<label>Multiple Category 5</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<avg_price>0</avg_price>
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
</result>
<result />

0 comments on commit 17d6057

Please sign in to comment.