fix for php-5.5
[pharext/pharext] / src / pharext / Task / Cleanup.php
1 <?php
2
3 namespace pharext\Task;
4
5 use pharext\Task;
6
7 use FilesystemIterator;
8 use RecursiveDirectoryIterator;
9 use RecursiveIteratorIterator;
10
11 /**
12 * Recursively cleanup FS entries
13 */
14 class Cleanup implements Task
15 {
16 /**
17 * @var string
18 */
19 private $rm;
20
21 public function __construct($rm) {
22 $this->rm = $rm;
23 }
24
25 /**
26 * @param bool $verbose
27 */
28 public function run($verbose = false) {
29 if ($this->rm instanceof Tempfile) {
30 unset($this->rm);
31 } elseif (is_dir($this->rm)) {
32 $rdi = new RecursiveDirectoryIterator($this->rm,
33 FilesystemIterator::CURRENT_AS_SELF | // needed for 5.5
34 FilesystemIterator::KEY_AS_PATHNAME |
35 FilesystemIterator::SKIP_DOTS);
36 $rii = new RecursiveIteratorIterator($rdi,
37 RecursiveIteratorIterator::CHILD_FIRST);
38 foreach ($rii as $path => $child) {
39 if ($child->isDir()) {
40 rmdir($path);
41 } else {
42 unlink($path);
43 }
44 }
45 rmdir($this->rm);
46 } else {
47 @unlink($this->rm);
48 }
49 }
50 }