/**
 * xtc_remove()
 *
 * @param mixed $source
 * @return
 */
function xtc_remove($source)
{
    global $messageStack, $xtc_remove_error;
    if (isset($xtc_remove_error)) {
        $xtc_remove_error = false;
    }
    if (is_dir($source)) {
        $dir = dir($source);
        while ($file = $dir->read()) {
            if ($file != '.' && $file != '..') {
                if (is_writeable($source . '/' . $file)) {
                    xtc_remove($source . '/' . $file);
                } else {
                    $messageStack->add(sprintf(ERROR_FILE_NOT_REMOVEABLE, $source . '/' . $file), 'error');
                    $xtc_remove_error = true;
                }
            }
        }
        $dir->close();
        if (is_writeable($source)) {
            rmdir($source);
        } else {
            $messageStack->add(sprintf(ERROR_DIRECTORY_NOT_REMOVEABLE, $source), 'error');
            $xtc_remove_error = true;
        }
    } else {
        if (is_writeable($source)) {
            unlink($source);
        } else {
            $messageStack->add(sprintf(ERROR_FILE_NOT_REMOVEABLE, $source), 'error');
            $xtc_remove_error = true;
        }
    }
}
                    $buffer = fread($fp, filesize(DIR_FS_BACKUP . $_GET['file']));
                    fclose($fp);
                    header('Content-type: application/x-octet-stream');
                    header('Content-disposition: attachment; filename=' . $_GET['file']);
                    echo $buffer;
                    exit;
                }
            } else {
                $messageStack->add(ERROR_DOWNLOAD_LINK_NOT_ACCEPTABLE, 'error');
            }
            break;
        case 'deleteconfirm':
            if (strstr($_GET['file'], '..')) {
                xtc_redirect(xtc_href_link(FILENAME_BACKUP));
            }
            xtc_remove(DIR_FS_BACKUP . '/' . $_GET['file']);
            if (!$xtc_remove_error) {
                $messageStack->add_session(SUCCESS_BACKUP_DELETED, 'success');
                xtc_redirect(xtc_href_link(FILENAME_BACKUP));
            }
            break;
        case 'restorelocalnow':
            $file = xtc_try_upload('sql_file', DIR_FS_BACKUP, '777', array('sql', 'gz'));
            xtc_redirect(xtc_href_link(FILENAME_BACKUP));
            break;
    }
}
// check if the backup directory exists
$dir_ok = false;
if (is_dir(DIR_FS_BACKUP)) {
    $dir_ok = true;