From dedaf6b3e9a184937539e181c64b80c1db04a0c7 Mon Sep 17 00:00:00 2001 From: diosmosis Date: Tue, 24 Dec 2019 05:15:26 -0800 Subject: MergeDataTables does not correctly merge if table2 has more data than table1 (#15294) * update submodules to fix build * Handle DataTable Maps in VisitFrequency API and in DataTable merger, make sure to correctly copy child datatables. * fix some tests * Copy metadata over. * Updated expected test results. * Adding unit tests. --- plugins/VisitFrequency/API.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'plugins/VisitFrequency') diff --git a/plugins/VisitFrequency/API.php b/plugins/VisitFrequency/API.php index f44d624402..854b0de5f5 100644 --- a/plugins/VisitFrequency/API.php +++ b/plugins/VisitFrequency/API.php @@ -9,8 +9,8 @@ namespace Piwik\Plugins\VisitFrequency; use Piwik\API\Request; -use Piwik\Archive; use Piwik\DataTable; +use Piwik\Period; use Piwik\Piwik; use Piwik\Plugins\API\DataTable\MergeDataTables; use Piwik\Plugins\VisitsSummary\API as APIVisitsSummary; @@ -49,7 +49,12 @@ class API extends \Piwik\Plugin\API $columns = Piwik::getArrayFromApiParameter($columns); /** @var \Piwik\DataTable\DataTableInterface $resultSet */ - $resultSet = new DataTable\Simple(); + if (Period::isMultiplePeriod($date, $period)) { + $resultSet = new DataTable\Map(); + $resultSet->setKeyName('period'); + } else { + $resultSet = new DataTable\Simple(); + } foreach ($visitTypes as $columnSuffix => $visitorTypeSegment) { $modifiedSegment = $this->appendVisitorTypeSegment($segment, $visitorTypeSegment); -- cgit v1.2.3