public function hasDeletedDirectories($filesToDelete)
{
$dirsToDelete = [];
foreach ($filesToDelete as $file) {
// Break directories into a list of items
$parts = explode('/', $file);
// Remove files name from the list
array_pop($parts);
foreach ($parts as $i => $part) {
$prefix = '';
// Add the parent directories to directory name
for ($x = 0; $x < $i; ++$x) {
$prefix .= $parts[$x] . '/';
}
$part = $prefix . $part;
// If directory doesn't exist, add to files to delete
// Relative path won't work consistently, thus getcwd().
if (!is_dir(getcwd() . '/' . $part)) {
$dirsToDelete[] = $part;
}
}
}
// Remove duplicates
$dirsToDeleteUnique = array_unique($dirsToDelete);
// Reverse order to delete inner children before parents
$dirsToDeleteOrder = array_reverse($dirsToDeleteUnique);
$this->debug('Directories to be deleted: ' . print_r($dirsToDeleteOrder, true));
return $dirsToDeleteOrder;
}