From a13df3e3c3dd6881e5359ed8dec4b839f6a502ab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be>
Date: Wed, 7 Mar 2018 16:21:25 +0100
Subject: [PATCH] :ambulance: fix(management) Avoid a lot of array_merge on
 empty arrays

---
 include/management/actions/class_Action.inc        | 3 +--
 include/management/class_management.inc            | 8 ++------
 include/management/class_managementListing.inc     | 2 +-
 include/management/columns/class_ActionsColumn.inc | 4 ++--
 include/management/columns/class_Column.inc        | 3 +--
 plugins/admin/users/class_userManagement.inc       | 9 +++------
 6 files changed, 10 insertions(+), 19 deletions(-)

diff --git a/include/management/actions/class_Action.inc b/include/management/actions/class_Action.inc
index bf25ba4cc..ef8be4db9 100644
--- a/include/management/actions/class_Action.inc
+++ b/include/management/actions/class_Action.inc
@@ -143,9 +143,8 @@ class Action
     );
   }
 
-  function getRowClasses(ListingEntry $entry)
+  function fillRowClasses(&$classes, ListingEntry $entry)
   {
-    return array();
   }
 
   function renderColumnIcons(ListingEntry $entry)
diff --git a/include/management/class_management.inc b/include/management/class_management.inc
index f8177b8f0..2208298ad 100644
--- a/include/management/class_management.inc
+++ b/include/management/class_management.inc
@@ -464,15 +464,11 @@ class management
     return $result;
   }
 
-  function getActionRowClasses(ListingEntry $entry)
+  function fillActionRowClasses(&$classes, ListingEntry $entry)
   {
-    $classes = array();
     foreach ($this->actions as $action) {
-      // TODO optimize
-      $classes = array_merge($classes, $action->getRowClasses($entry));
+      $action->fillRowClasses($classes, $entry);
     }
-
-    return $classes;
   }
 
   /*!
diff --git a/include/management/class_managementListing.inc b/include/management/class_managementListing.inc
index d0860f3d1..29b2188c6 100644
--- a/include/management/class_managementListing.inc
+++ b/include/management/class_managementListing.inc
@@ -168,7 +168,7 @@ class managementListing
           'props'   => $column->getHtmlCellProps(),
           'render'  => $column->renderCell($entry)
         );
-        $row['classes'] = array_merge($row['classes'], $column->getRowClasses($entry));
+        $column->fillRowClasses($row['classes'], $entry);
       }
 
       $row['index']   = $entry->row;
diff --git a/include/management/columns/class_ActionsColumn.inc b/include/management/columns/class_ActionsColumn.inc
index 4ea91a979..62245dcf0 100644
--- a/include/management/columns/class_ActionsColumn.inc
+++ b/include/management/columns/class_ActionsColumn.inc
@@ -28,9 +28,9 @@ class ActionsColumn extends Column
     return FALSE;
   }
 
-  function getRowClasses(ListingEntry $entry)
+  function fillRowClasses(&$classes, ListingEntry $entry)
   {
-    return $this->parent->parent->getActionRowClasses($entry);
+    $this->parent->parent->fillActionRowClasses($classes, $entry);
   }
 
   function renderCell(ListingEntry $entry)
diff --git a/include/management/columns/class_Column.inc b/include/management/columns/class_Column.inc
index 0111b3bac..66b0e9de3 100644
--- a/include/management/columns/class_Column.inc
+++ b/include/management/columns/class_Column.inc
@@ -100,9 +100,8 @@ class Column
     }
   }
 
-  function getRowClasses(ListingEntry $entry)
+  function fillRowClasses(&$classes, ListingEntry $entry)
   {
-    return array();
   }
 
   function renderCell(ListingEntry $entry)
diff --git a/plugins/admin/users/class_userManagement.inc b/plugins/admin/users/class_userManagement.inc
index 85d2ba6eb..a8e2b6872 100644
--- a/plugins/admin/users/class_userManagement.inc
+++ b/plugins/admin/users/class_userManagement.inc
@@ -68,13 +68,10 @@ class LockAction extends Action
     );
   }
 
-  function getRowClasses(ListingEntry $entry)
+  function fillRowClasses(&$classes, ListingEntry $entry)
   {
-    $lockStatus = $this->isLocked($entry);
-    if ($lockStatus === TRUE) {
-      return array('entry-locked');
-    } else {
-      return array();
+    if ($this->isLocked($entry) === TRUE) {
+      $classes[] = 'entry-locked';
     }
   }
 
-- 
GitLab