function delete_dirorfile($dirorfile)
{
    // --------------
    // This function deletes a local directory recursively
    // Credit goes to itportal at gmail dot com, 17-Jul-2006 05:29
    // --------------
    // THIS FUNCTION IS ALMOST IDENTICAL TO THE ONE IN /modules/install/net2ftp_installer.txt
    // Difference: this one only runs in execute mode, doesn't echo any output and returns a value.
    // $return = true if all went well, false if there was an error somewhere.
    // --------------
    $result = true;
    if (is_dir($dirorfile)) {
        $directory = $dirorfile;
        if (substr($dir, -1, 1) == "/") {
            $directory = substr($directory, 0, strlen($directory) - 1);
        }
        if ($handle = opendir("{$directory}")) {
            while (false !== ($item = readdir($handle))) {
                if ($item != "." && $item != "..") {
                    if (is_dir("{$directory}/{$item}")) {
                        $delete_dirorfile_result = delete_dirorfile("{$directory}/{$item}", $mode);
                        $result = $result && $delete_dirorfile_result;
                    } else {
                        $unlink_result = unlink("{$directory}/{$item}");
                        $result = $result && $unlink_result;
                    }
                }
            }
            closedir($handle);
            $rmdir_result = rmdir($directory);
            $result = $result && $rmdir_result;
        }
    } elseif (is_file($dirorfile)) {
        $file = $dirorfile;
        $unlink_result = unlink($file);
        $result = $result && $unlink_result;
    }
    return $result;
}
function delete_dirorfile($dirorfile, $mode)
{
    // --------------
    // This function deletes a local directory recursively
    // Credit goes to itportal at gmail dot com, 17-Jul-2006 05:29
    // --------------
    if ($mode != "execute") {
        $mode = "simulate";
    }
    if (is_dir($dirorfile)) {
        $directory = $dirorfile;
        if (substr($dir, -1, 1) == "/") {
            $directory = substr($directory, 0, strlen($directory) - 1);
        }
        if ($handle = opendir("{$directory}")) {
            while (false !== ($item = readdir($handle))) {
                if ($item != "." && $item != "..") {
                    if (is_dir("{$directory}/{$item}")) {
                        if ($mode == "execute") {
                            echo "Processing directory {$directory}/{$item}<br />\n";
                        }
                        delete_dirorfile("{$directory}/{$item}", $mode);
                    } else {
                        if ($mode == "execute") {
                            unlink("{$directory}/{$item}");
                            echo "Removed file {$directory}/{$item}<br />\n";
                        } elseif ($mode == "simulate") {
                            echo "File {$directory}/{$item}<br />\n";
                        }
                    }
                }
            }
            closedir($handle);
            if ($mode == "execute") {
                rmdir($directory);
                echo "Removed directory {$directory}<br />\n";
            } elseif ($mode == "simulate") {
                echo "Directory {$directory}<br />\n";
            }
        }
    } elseif (is_file($dirorfile)) {
        $file = $dirorfile;
        if ($mode == "execute") {
            unlink($file);
            echo "Removed file {$file}<br />\n";
        } elseif ($mode == "simulate") {
            echo "File {$file}<br />\n";
        }
    } else {
        if ($mode == "execute") {
            echo "Could not remove {$dirorfile}<br />\n.";
        } elseif ($mode == "simulate") {
            echo "Entry {$dirorfile} can't be removed.<br />\n";
        }
    }
}