From 199b7fe84c7b4093112427dfde170a002cffbf91 Mon Sep 17 00:00:00 2001
From: Thomas Steur <thomas.steur@gmail.com>
Date: Wed, 18 Mar 2015 21:48:07 +0000
Subject: [PATCH] a summary row does not have a subtable, so we can simply get
 the rows without summary row and avoid creating many new arrays

---
 core/DataTable.php                                       | 8 ++++----
 core/DataTable/Filter/Sort.php                           | 2 +-
 core/DataTable/Filter/Truncate.php                       | 2 +-
 plugins/Actions/DataTable/Filter/Actions.php             | 2 +-
 plugins/Referrers/DataTable/Filter/UrlsFromWebsiteId.php | 2 +-
 5 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/core/DataTable.php b/core/DataTable.php
index 96f136a158..2e94d5e89e 100644
--- a/core/DataTable.php
+++ b/core/DataTable.php
@@ -374,7 +374,7 @@ class DataTable implements DataTableInterface, \IteratorAggregate, \ArrayAccess
         usort($this->rows, $functionCallback);
 
         if ($this->isSortRecursiveEnabled()) {
-            foreach ($this->getRows() as $row) {
+            foreach ($this->getRowsWithoutSummaryRow() as $row) {
 
                 $subTable = $row->getSubtable();
                 if ($subTable) {
@@ -487,7 +487,7 @@ class DataTable implements DataTableInterface, \IteratorAggregate, \ArrayAccess
      */
     public function filterSubtables($className, $parameters = array())
     {
-        foreach ($this->getRows() as $row) {
+        foreach ($this->getRowsWithoutSummaryRow() as $row) {
             $subtable = $row->getSubtable();
             if ($subtable) {
                 $subtable->filter($className, $parameters);
@@ -508,7 +508,7 @@ class DataTable implements DataTableInterface, \IteratorAggregate, \ArrayAccess
      */
     public function queueFilterSubtables($className, $parameters = array())
     {
-        foreach ($this->getRows() as $row) {
+        foreach ($this->getRowsWithoutSummaryRow() as $row) {
             $subtable = $row->getSubtable();
             if ($subtable) {
                 $subtable->queueFilter($className, $parameters);
@@ -1601,7 +1601,7 @@ class DataTable implements DataTableInterface, \IteratorAggregate, \ArrayAccess
     public function mergeSubtables($labelColumn = false, $useMetadataColumn = false)
     {
         $result = new DataTable();
-        foreach ($this->getRows() as $row) {
+        foreach ($this->getRowsWithoutSummaryRow() as $row) {
             $subtable = $row->getSubtable();
             if ($subtable !== false) {
                 $parentLabel = $row->getColumn('label');
diff --git a/core/DataTable/Filter/Sort.php b/core/DataTable/Filter/Sort.php
index 3b11ec370c..53c21f526a 100644
--- a/core/DataTable/Filter/Sort.php
+++ b/core/DataTable/Filter/Sort.php
@@ -279,7 +279,7 @@ class Sort extends BaseFilter
         unset($sortedRows);
 
         if ($table->isSortRecursiveEnabled()) {
-            foreach ($table->getRows() as $row) {
+            foreach ($table->getRowsWithoutSummaryRow() as $row) {
 
                 $subTable = $row->getSubtable();
                 if ($subTable) {
diff --git a/core/DataTable/Filter/Truncate.php b/core/DataTable/Filter/Truncate.php
index 04b4cef2a8..ec95811c50 100644
--- a/core/DataTable/Filter/Truncate.php
+++ b/core/DataTable/Filter/Truncate.php
@@ -77,7 +77,7 @@ class Truncate extends BaseFilter
         $table->queueFilter('ReplaceSummaryRowLabel', array($this->labelSummaryRow));
 
         if ($this->filterRecursive) {
-            foreach ($table->getRows() as $row) {
+            foreach ($table->getRowsWithoutSummaryRow() as $row) {
                 if ($row->isSubtableLoaded()) {
                     $this->filter($row->getSubtable());
                 }
diff --git a/plugins/Actions/DataTable/Filter/Actions.php b/plugins/Actions/DataTable/Filter/Actions.php
index 71abe4190b..8d13311677 100644
--- a/plugins/Actions/DataTable/Filter/Actions.php
+++ b/plugins/Actions/DataTable/Filter/Actions.php
@@ -43,7 +43,7 @@ class Actions extends BaseFilter
             return urldecode($label);
         }));
 
-        foreach ($table->getRows() as $row) {
+        foreach ($table->getRowsWithoutSummaryRow() as $row) {
             $subtable = $row->getSubtable();
             if ($subtable) {
                 $this->filter($subtable);
diff --git a/plugins/Referrers/DataTable/Filter/UrlsFromWebsiteId.php b/plugins/Referrers/DataTable/Filter/UrlsFromWebsiteId.php
index c35d60b463..ff67c22e40 100644
--- a/plugins/Referrers/DataTable/Filter/UrlsFromWebsiteId.php
+++ b/plugins/Referrers/DataTable/Filter/UrlsFromWebsiteId.php
@@ -36,7 +36,7 @@ class UrlsFromWebsiteId extends BaseFilter
         }));
         $table->queueFilter('ColumnCallbackReplace', array('label', 'Piwik\Plugins\Referrers\getPathFromUrl'));
 
-        foreach ($table->getRows() as $row) {
+        foreach ($table->getRowsWithoutSummaryRow() as $row) {
             $subtable = $row->getSubtable();
             if ($subtable) {
                 $this->filter($subtable);
-- 
GitLab