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

Fixes #6479, properly set period parameter in subtable & segment requests when...

Fixes #6479, properly set period parameter in subtable & segment requests when period is range in PivotByDimension filter.
parent 452f67fa
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -17,9 +17,11 @@ use Piwik\DataTable\BaseFilter; ...@@ -17,9 +17,11 @@ use Piwik\DataTable\BaseFilter;
use Piwik\DataTable\Row; use Piwik\DataTable\Row;
use Piwik\Log; use Piwik\Log;
use Piwik\Metrics; use Piwik\Metrics;
use Piwik\Period;
use Piwik\Piwik; use Piwik\Piwik;
use Piwik\Plugin\Report; use Piwik\Plugin\Report;
use Piwik\Plugin\Segment; use Piwik\Plugin\Segment;
use Piwik\Site;
/** /**
* DataTable filter that creates a pivot table from a report. * DataTable filter that creates a pivot table from a report.
...@@ -421,15 +423,22 @@ class PivotByDimension extends BaseFilter ...@@ -421,15 +423,22 @@ class PivotByDimension extends BaseFilter
'hideColumns' => '' 'hideColumns' => ''
); );
/** @var Site $site */
$site = $table->getMetadata('site'); $site = $table->getMetadata('site');
if (!empty($site)) { if (!empty($site)) {
$params['idSite'] = $site->getId(); $params['idSite'] = $site->getId();
} }
/** @var Period $period */
$period = $table->getMetadata('period'); $period = $table->getMetadata('period');
if (!empty($period)) { if (!empty($period)) {
$params['date'] = $period->getDateStart()->toString();
$params['period'] = $period->getLabel(); $params['period'] = $period->getLabel();
if ($params['period'] == 'range') {
$params['date'] = $period->getRangeString();
} else {
$params['date'] = $period->getDateStart()->toString();
}
} }
return $params; return $params;
......
...@@ -56,6 +56,16 @@ class PivotByQueryParamTest extends SystemTestCase ...@@ -56,6 +56,16 @@ class PivotByQueryParamTest extends SystemTestCase
)); ));
} }
public function test_PivotBySubtableDimension_CreatesCorrectPivotTable_WhenPeriodIsDateRange()
{
$this->assertApiResponseEqualsExpected("Referrers.getKeywords", array(
'idSite' => self::$fixture->idSite,
'date' => '2009-12-29,2010-01-10',
'period' => 'range',
'pivotBy' => 'Referrers.SearchEngine'
));
}
public function test_PivotBySegment_CreatesCorrectPivotTable() public function test_PivotBySegment_CreatesCorrectPivotTable()
{ {
$this->assertApiResponseEqualsExpected("Referrers.getKeywords", array( $this->assertApiResponseEqualsExpected("Referrers.getKeywords", array(
...@@ -81,6 +91,16 @@ class PivotByQueryParamTest extends SystemTestCase ...@@ -81,6 +91,16 @@ class PivotByQueryParamTest extends SystemTestCase
)); ));
} }
public function test_PivotBySegment_CreatesCorrectPivotTable_WhenPeriodIsRange()
{
$this->assertApiResponseEqualsExpected("Referrers.getKeywords", array(
'idSite' => self::$fixture->idSite,
'date' => '2009-12-29,2010-01-10',
'period' => 'range',
'pivotBy' => 'UserCountry.City'
));
}
public function test_PivotByParam_PlaysNiceWithOtherQueryParams() public function test_PivotByParam_PlaysNiceWithOtherQueryParams()
{ {
$this->assertApiResponseEqualsExpected("Referrers.getKeywords", array( $this->assertApiResponseEqualsExpected("Referrers.getKeywords", array(
......
<?xml version="1.0" encoding="utf-8" ?>
<result>
<row>
<col name="label">this search term</col>
<col name="1. Toronto, Ontario, Canada">0</col>
<col name="2. Yokohama, Kanagawa, Japan">1</col>
<col name="3. Melbourne, Victoria, Australia">2</col>
</row>
<row>
<col name="label">search term 2</col>
<col name="1. Toronto, Ontario, Canada">0</col>
<col name="2. Yokohama, Kanagawa, Japan">2</col>
<col name="3. Melbourne, Victoria, Australia">0</col>
</row>
<row>
<col name="label">search term 3</col>
<col name="1. Toronto, Ontario, Canada">2</col>
<col name="2. Yokohama, Kanagawa, Japan">0</col>
<col name="3. Melbourne, Victoria, Australia">0</col>
</row>
<row>
<col name="label">search term 4</col>
<col name="1. Toronto, Ontario, Canada">2</col>
<col name="2. Yokohama, Kanagawa, Japan">0</col>
<col name="3. Melbourne, Victoria, Australia">0</col>
</row>
<row>
<col name="label">that search term</col>
<col name="1. Toronto, Ontario, Canada">0</col>
<col name="2. Yokohama, Kanagawa, Japan">0</col>
<col name="3. Melbourne, Victoria, Australia">2</col>
</row>
<row>
<col name="label">search term 1</col>
<col name="1. Toronto, Ontario, Canada">0</col>
<col name="2. Yokohama, Kanagawa, Japan">1</col>
<col name="3. Melbourne, Victoria, Australia">0</col>
</row>
</result>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<result>
<row>
<col name="label">this search term</col>
<col name="1. Google">1</col>
<col name="2. Yahoo!">1</col>
<col name="3. Ask">1</col>
<col name="4. Bing">0</col>
<col name="5. Alexa">0</col>
<col name="6. Babylon">0</col>
</row>
<row>
<col name="label">search term 2</col>
<col name="1. Google">0</col>
<col name="2. Yahoo!">0</col>
<col name="3. Ask">0</col>
<col name="4. Bing">0</col>
<col name="5. Alexa">1</col>
<col name="6. Babylon">1</col>
</row>
<row>
<col name="label">search term 3</col>
<col name="1. Google">1</col>
<col name="2. Yahoo!">0</col>
<col name="3. Ask">1</col>
<col name="4. Bing">0</col>
<col name="5. Alexa">0</col>
<col name="6. Babylon">0</col>
</row>
<row>
<col name="label">search term 4</col>
<col name="1. Google">0</col>
<col name="2. Yahoo!">1</col>
<col name="3. Ask">0</col>
<col name="4. Bing">1</col>
<col name="5. Alexa">0</col>
<col name="6. Babylon">0</col>
</row>
<row>
<col name="label">that search term</col>
<col name="1. Google">1</col>
<col name="2. Yahoo!">1</col>
<col name="3. Ask">0</col>
<col name="4. Bing">0</col>
<col name="5. Alexa">0</col>
<col name="6. Babylon">0</col>
</row>
<row>
<col name="label">search term 1</col>
<col name="1. Google">0</col>
<col name="2. Yahoo!">0</col>
<col name="3. Ask">0</col>
<col name="4. Bing">1</col>
<col name="5. Alexa">0</col>
<col name="6. Babylon">0</col>
</row>
</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.
Veuillez vous inscrire ou vous pour commenter