Ejemplo n.º 1
0
 /**
  * deletes a directory recursively
  *
  * @param string $target
  * @param bool $verbose
  * @return bool
  */
 public static function deleteRecursive($target, $verbose = false)
 {
     $exceptions = array('.', '..');
     if (!($sourcedir = @opendir($target))) {
         if ($verbose) {
             die('Couldn’t open ' . $target);
         }
         return false;
     }
     while (false !== ($sibling = readdir($sourcedir))) {
         if (!in_array($sibling, $exceptions)) {
             $object = str_replace('//', '/', $target . '/' . $sibling);
             if ($verbose) {
                 echo 'Processing: <strong>' . $object . "</strong><br />\n";
             }
             if (is_dir($object)) {
                 App_Filesystem_Folder::deleteRecursive($object);
             }
             if (is_file($object)) {
                 $result = @unlink($object);
                 if ($verbose && $result) {
                     echo "File has been removed<br />\n";
                 }
                 if ($verbose && !$result) {
                     die('Couldn&#146;t remove file');
                 }
             }
         }
     }
     closedir($sourcedir);
     if ($result = @rmdir($target)) {
         if ($verbose) {
             echo "Target directory has been removed<br />\n";
             return true;
         }
     } else {
         if ($verbose) {
             die('Couldn&#146;t remove target directory');
             return false;
         }
     }
 }