/** * 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;