header('Content-type: application/x-octet-stream'); header('Content-disposition: attachment; filename=' . basename($dump->backup_file)); readfile($dump->backup_file); unlink($dump->backup_file); exit; } else { $messageStack->add_session(SUCCESS_DATABASE_SAVED, 'success'); } tep_redirect(tep_href_link(FILENAME_BACKUP)); break; case 'restorenow': case 'restorelocalnow': if ($action == 'restorenow') { if (file_exists(DIR_FS_BACKUP . basename($HTTP_GET_VARS['file']))) { $dump->restore_file = DIR_FS_BACKUP . basename($HTTP_GET_VARS['file']); $dump->restore(); } } elseif ($action == 'restorelocalnow') { if (is_uploaded_file($_FILES['sql_file']['tmp_name'])) { $dump->restore_file = $_FILES['sql_file']['tmp_name']; $dump->restore(); } } $messageStack->add_session(SUCCESS_DATABASE_RESTORED, 'success'); tep_redirect(tep_href_link(FILENAME_BACKUP)); break; case 'download': $extension = substr($HTTP_GET_VARS['file'], -3); if ($extension == 'zip' || $extension == '.gz' || $extension == 'sql') { if ($fp = fopen(DIR_FS_BACKUP . basename($HTTP_GET_VARS['file']), 'rb')) { $buffer = fread($fp, filesize(DIR_FS_BACKUP . basename($HTTP_GET_VARS['file'])));
if (!file_exists(PATH)) { @mkdir(PATH, 0777) || die("Не удалось создать каталог для бекапа"); @chmod(PATH, 0777); } $SK = new dumper(); define('C_DEFAULT', 1); define('C_RESULT', 2); define('C_ERROR', 3); define('C_WARNING', 4); $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : ''; switch ($action) { case 'backup': $SK->backup(); break; case 'restore': $SK->restore(); break; default: $SK->main(); } mysql_close(); if (!defined('AUTOMODE')) { echo "<SCRIPT>document.getElementById('timer').innerHTML = '" . round(array_sum(explode(' ', microtime())) - $timer, 4) . " sec.'</SCRIPT>"; } class dumper { function dumper() { $this->SET['last_action'] = 0; $this->SET['last_db_backup'] = ''; $this->SET['tables'] = '';
$dumper = new dumper(); $dumper->backup($_POST['filter'], $_POST['pack'], $_POST['pack_rate']); $smarty->assign("file_name", $dumper->filename); $smarty->assign("tables_list", $dumper->tables_list); $smarty->assign("table_size", $dumper->table_size); $smarty->assign("file_size", $dumper->file_size); $smarty->assign("tables_count", $dumper->tables_count); $smarty->assign("rows_count", $dumper->rows_count); $smarty->assign("action", "backup"); } if (isset($_POST['submit_restore'])) { Common::check_priv("0"); require_once BASE_PATH . '/lib/class.db_backup.php'; $dumper = new dumper(); if (isset($_POST['file']) && $_POST['file'] != '') { $dumper->restore($_POST['file']); } $smarty->assign("file_date", $dumper->file_date); $smarty->assign("q_number", $dumper->q_number); $smarty->assign("t_number", $dumper->t_number); $smarty->assign("r_number", $dumper->r_number); $smarty->assign("action", "restore"); } if ($_SESSION['fw_user']['priv'] == '0') { foreach (glob(BASE_PATH . "/backup/" . DB_NAME . "_*.*") as $filename) { $filename = explode("/", $filename); $files_list[] = $filename[count($filename) - 1]; } if (isset($files_list)) { $smarty->assign("files_list", $files_list); }