From 8f897b739e5d2a71cc9848b879c4479140f7d410 Mon Sep 17 00:00:00 2001
From: Stefan Giehl <stefan@piwik.org>
Date: Mon, 27 Mar 2017 23:39:32 +0200
Subject: [PATCH] split commands after 50 files / directories (#11537)

---
 core/FileIntegrity.php | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/core/FileIntegrity.php b/core/FileIntegrity.php
index c7b1222244..23238e5781 100644
--- a/core/FileIntegrity.php
+++ b/core/FileIntegrity.php
@@ -102,11 +102,17 @@ class FileIntegrity
                 $messageDirectoriesToDelete .= Piwik::translate('General_ExceptionDirectoryToDelete', $directoryFoundNotExpected) . '<br/>';
             }
 
-
+            $directories = array();
             foreach ($directoriesFoundButNotExpected as $directoryFoundNotExpected) {
                 $directories[] = realpath($directoryFoundNotExpected);
             }
-            $deleteAllAtOnce = sprintf('rm -Rf %s', implode(' ', $directories));
+
+            $deleteAllAtOnce = array();
+            $chunks = array_chunk($directories, 50);
+
+            foreach ($chunks as $directories) {
+                $deleteAllAtOnce[] = sprintf('rm -Rf %s', implode(' ', $directories));
+            }
 
             $messages[] = Piwik::translate('General_ExceptionUnexpectedDirectory')
                 . '<br/>'
@@ -116,7 +122,7 @@ class FileIntegrity
                 . '<br/><br/>'
                 . Piwik::translate('General_ToDeleteAllDirectoriesRunThisCommand')
                 . '<br/>'
-                . $deleteAllAtOnce
+                . implode('<br />', $deleteAllAtOnce)
                 . '<br/><br/>';
 
         }
@@ -138,10 +144,17 @@ class FileIntegrity
                 $messageFilesToDelete .= Piwik::translate('General_ExceptionFileToDelete', $fileFoundNotExpected) . '<br/>';
             }
 
+            $files = array();
             foreach ($filesFoundButNotExpected as $fileFoundNotExpected) {
                 $files[] = '"' . realpath($fileFoundNotExpected) . '"';
             }
-            $deleteAllAtOnce = sprintf('rm %s', implode(' ', $files));
+
+            $deleteAllAtOnce = array();
+            $chunks = array_chunk($files, 50);
+
+            foreach ($chunks as $files) {
+                $deleteAllAtOnce[] = sprintf('rm %s', implode(' ', $files));
+            }
 
             $messages[] = Piwik::translate('General_ExceptionUnexpectedFile')
                 . '<br/>'
@@ -151,7 +164,7 @@ class FileIntegrity
                 . '<br/><br/>'
                 . Piwik::translate('General_ToDeleteAllFilesRunThisCommand')
                 . '<br/>'
-                . $deleteAllAtOnce
+                . implode('<br />', $deleteAllAtOnce)
                 . '<br/><br/>';
 
             return $messages;
-- 
GitLab