diff options
author | mattab <matthieu.aubry@gmail.com> | 2013-11-13 06:31:46 +0400 |
---|---|---|
committer | mattab <matthieu.aubry@gmail.com> | 2013-11-13 06:31:46 +0400 |
commit | 511b067ebec4d34636a06b0fd480773be935c4b8 (patch) | |
tree | 9a92b469f1458a03b6143183222aeb964daa324c /core/ArchiveProcessor.php | |
parent | d81c7f005134db0085b02d3d883d1a0636477eec (diff) |
Minor
Diffstat (limited to 'core/ArchiveProcessor.php')
-rw-r--r-- | core/ArchiveProcessor.php | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/core/ArchiveProcessor.php b/core/ArchiveProcessor.php index 441bd149e2..c09cd3b611 100644 --- a/core/ArchiveProcessor.php +++ b/core/ArchiveProcessor.php @@ -17,6 +17,7 @@ use Piwik\DataAccess\ArchiveWriter; use Piwik\DataAccess\LogAggregator; use Piwik\DataTable\Manager; use Piwik\DataTable\Map; +use Piwik\DataTable\Row; use Piwik\Db; use Piwik\Period; @@ -344,8 +345,9 @@ class ArchiveProcessor protected function aggregateDataTableRecord($name, $columnsAggregationOperation = null, $columnsToRenameAfterAggregation = null) { $dataTable = $this->getArchive()->getDataTableExpanded($name, $idSubTable = null, $depth = null, $addMetadataSubtableId = false); - $table = $this->getAggregatedDataTableMap($dataTable, $columnsAggregationOperation, $columnsToRenameAfterAggregation); - return $table; + $dataTable = $this->getAggregatedDataTableMap($dataTable, $columnsAggregationOperation); + $this->renameColumnsAfterAggregation($dataTable, $columnsToRenameAfterAggregation); + return $dataTable; } protected function getOperationForColumns($columns, $defaultOperation) @@ -361,13 +363,13 @@ class ArchiveProcessor return $operationForColumn; } - protected function enrichWithUniqueVisitorsMetric(&$results) + protected function enrichWithUniqueVisitorsMetric(Row $row) { - if (isset($results['nb_uniq_visitors'])) { + if ( $row->getColumn('nb_uniq_visitors') !== false) { if (SettingsPiwik::isUniqueVisitorsEnabled($this->getParams()->getPeriod()->getLabel())) { - $results['nb_uniq_visitors'] = (float)$this->computeNbUniqVisitors(); + $row->setColumn('nb_uniq_visitors', (float)$this->computeNbUniqVisitors()); } else { - unset($results['nb_uniq_visitors']); + $row->deleteColumn('nb_uniq_visitors'); } } } @@ -407,7 +409,7 @@ class ArchiveProcessor * @param $columnsToRenameAfterAggregation array * @return DataTable */ - protected function getAggregatedDataTableMap($data, $columnsAggregationOperation, $columnsToRenameAfterAggregation = null) + protected function getAggregatedDataTableMap($data, $columnsAggregationOperation) { $table = new DataTable(); if (!empty($columnsAggregationOperation)) { @@ -419,14 +421,6 @@ class ArchiveProcessor } else { $table->addDataTable($data); } - - // Rename columns after aggregation - if (is_null($columnsToRenameAfterAggregation)) { - $columnsToRenameAfterAggregation = self::$columnsToRenameAfterAggregation; - } - foreach ($columnsToRenameAfterAggregation as $oldName => $newName) { - $table->renameColumn($oldName, $newName); - } return $table; } @@ -446,6 +440,17 @@ class ArchiveProcessor } } + protected function renameColumnsAfterAggregation(DataTable $table, $columnsToRenameAfterAggregation = null) + { + // Rename columns after aggregation + if (is_null($columnsToRenameAfterAggregation)) { + $columnsToRenameAfterAggregation = self::$columnsToRenameAfterAggregation; + } + foreach ($columnsToRenameAfterAggregation as $oldName => $newName) { + $table->renameColumn($oldName, $newName); + } + } + protected function getAggregatedNumericMetrics($columns, $operationToApply) { if (!is_array($columns)) { @@ -456,17 +461,21 @@ class ArchiveProcessor $dataTable = $this->getArchive()->getDataTableFromNumeric($columns); $results = $this->getAggregatedDataTableMap($dataTable, $operationForColumn); - if ($results->getRowsCount() > 1) { throw new Exception("A DataTable is an unexpected state:" . var_export($results, true)); } + $rowMetrics = $results->getFirstRow(); + if($this->getParams()->isSingleSiteDayArchive()) { + $this->enrichWithUniqueVisitorsMetric($rowMetrics); + } + $this->renameColumnsAfterAggregation($results); + if ($rowMetrics === false) { $metrics = array(); } else { $metrics = $rowMetrics->getColumns(); } - $this->enrichWithUniqueVisitorsMetric($metrics); foreach ($columns as $name) { if (!isset($metrics[$name])) { |