From 5fa73701a629b3ecd02cc50c9de3ff30e41cfb79 Mon Sep 17 00:00:00 2001
From: diosmosis <benaka@piwik.pro>
Date: Tue, 25 Nov 2014 06:39:24 -0800
Subject: [PATCH] Fix remaining Plugin.get API methods; delete temporary
 columns in queued filter.

---
 core/Plugin/Report.php        | 2 +-
 plugins/Actions/API.php       | 9 ++++++++-
 plugins/VisitsSummary/API.php | 5 ++++-
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/core/Plugin/Report.php b/core/Plugin/Report.php
index 41f3cfcf56..d2b4aed8df 100644
--- a/core/Plugin/Report.php
+++ b/core/Plugin/Report.php
@@ -379,7 +379,7 @@ class Report
         }
 
         if (empty($restrictToColumns)) {
-            $restrictToColumns = $allMetrics;
+            $restrictToColumns = $this->getAllMetrics();
         }
 
         $processedMetricsById = $this->getProcessedMetricsById();
diff --git a/plugins/Actions/API.php b/plugins/Actions/API.php
index 0cf5bd63a8..2dd7d9a4df 100644
--- a/plugins/Actions/API.php
+++ b/plugins/Actions/API.php
@@ -55,17 +55,24 @@ class API extends \Piwik\Plugin\API
     public function get($idSite, $period, $date, $segment = false, $columns = false)
     {
         Piwik::checkUserHasViewAccess($idSite);
+
+        $report = Report::factory("Actions", "get");
         $archive = Archive::build($idSite, $period, $date, $segment);
 
         $requestedColumns = Piwik::getArrayFromApiParameter($columns);
-        $columns = Report::factory("Actions", "get")->getMetricsRequiredForReport($allColumns = null, $requestedColumns);
+        $columns = $report->getMetricsRequiredForReport($allColumns = null, $requestedColumns);
 
         $inDbColumnNames = array_map(function ($value) { return 'Actions_' . $value; }, $columns);
         $dataTable = $archive->getDataTableFromNumeric($inDbColumnNames);
+
         $dataTable->deleteColumns(array_diff($requestedColumns, $columns));
 
         $newNameMapping = array_combine($inDbColumnNames, $columns);
         $dataTable->filter('ReplaceColumnNames', array($newNameMapping));
+
+        $columnsToShow = $requestedColumns ?: $report->getAllMetrics();
+        $dataTable->queueFilter('ColumnDelete', array($columnsToRemove = array(), $columnsToShow));
+
         return $dataTable;
     }
 
diff --git a/plugins/VisitsSummary/API.php b/plugins/VisitsSummary/API.php
index d6453075a7..283de2c7ee 100644
--- a/plugins/VisitsSummary/API.php
+++ b/plugins/VisitsSummary/API.php
@@ -33,7 +33,10 @@ class API extends \Piwik\Plugin\API
         $columns = $report->getMetricsRequiredForReport($this->getCoreColumns($period), $requestedColumns);
 
         $dataTable = $archive->getDataTableFromNumeric($columns);
-        $dataTable->deleteColumns(array_diff($requestedColumns, $columns));
+
+        $columnsToShow = $requestedColumns ?: $report->getAllMetrics();
+        $dataTable->queueFilter('ColumnDelete', array($columnsToRemove = array(), $columnsToShow));
+
         return $dataTable;
     }
 
-- 
GitLab