/** * remove an array of files in a directory, and a list of subdirectories * which will only be deleted if 'includeEmpty' is true * @param PhingFile $d directory to work from * @param array &$files array of files to delete; can be of zero length * @param array &$dirs array of directories to delete; can of zero length */ private function removeFiles(PhingFile $d, &$files, &$dirs) { if (count($files) > 0) { $this->log("Deleting " . count($files) . " files from " . $d->__toString()); for ($j = 0, $_j = count($files); $j < $_j; $j++) { $f = new PhingFile($d, $files[$j]); $this->log("Deleting " . $f->getAbsolutePath(), $this->verbosity); try { $f->delete(); } catch (Exception $e) { $message = "Unable to delete file " . $f->__toString() . ": " . $e->getMessage(); if ($this->failonerror) { throw new BuildException($message); } else { $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); } } } } if (count($dirs) > 0 && $this->includeEmpty) { $dirCount = 0; for ($j = count($dirs) - 1; $j >= 0; --$j) { $dir = new PhingFile($d, $dirs[$j]); $dirFiles = $dir->listDir(); if ($dirFiles === null || count($dirFiles) === 0) { $this->log("Deleting " . $dir->__toString(), $this->verbosity); try { $dir->delete(); $dirCount++; } catch (Exception $e) { $message = "Unable to delete directory " . $dir->__toString(); if ($this->failonerror) { throw new BuildException($message); } else { $this->log($message, $this->quiet ? Project::MSG_VERBOSE : Project::MSG_WARN); } } } } if ($dirCount > 0) { $this->log("Deleted {$dirCount} director" . ($dirCount == 1 ? "y" : "ies") . " from " . $d->__toString()); } } }