public function CompressBackup() { if ($this->request->get['eta'] > 30) { set_time_limit((int) $this->request->get['eta'] + 30); } $backup_name = preg_replace('[^0-9A-z_\\.]', '', $this->request->get['backup_name']); $backup_name = !$backup_name ? 'manual_backup' : $backup_name; $bkp = new ABackup($backup_name); $arc_basename = DIR_BACKUP . $bkp->getBackupName(); if (is_file($arc_basename . '.tar')) { unlink($arc_basename . '.tar'); } if (is_file($arc_basename . '.tar.gz')) { unlink($arc_basename . '.tar.gz'); } $result = $bkp->archive($arc_basename . '.tar.gz', DIR_BACKUP, $bkp->getBackupName()); if ($result) { $this->load->library('json'); $this->response->addJSONHeader(); $output = array('result' => true, 'filename' => $bkp->getBackupName()); $this->response->setOutput(AJson::encode($output)); } else { $error = new AError('compress backup error'); return $error->toJSONResponse('APP_ERROR_402', array('error_text' => $bkp->error, 'reset_value' => true)); } }
/** * @param array $tables * @param bool|true $rl * @param bool|false $config * @param string $sql_dump_mode * @return bool */ public function backup($tables, $rl = true, $config = false, $sql_dump_mode = 'data_only') { $bkp = new ABackup('manual_backup' . '_' . date('Y-m-d-H-i-s')); if ($bkp->error) { return false; } // do sql dump if (!in_array($sql_dump_mode, array('data_only', 'recreate'))) { $sql_dump_mode = 'data_only'; } $bkp->sql_dump_mode = $sql_dump_mode; $bkp->dumpTables($tables); if ($rl) { $bkp->backupDirectory(DIR_RESOURCE, false); } if ($config) { $bkp->backupFile(DIR_ROOT . '/system/config.php', false); } $result = $bkp->archive(DIR_BACKUP . $bkp->getBackupName() . '.tar.gz', DIR_BACKUP, $bkp->getBackupName()); if (!$result) { $this->errors[] = $bkp->error; } else { $this->backup_filename = $bkp->getBackupName(); } return $result; }
/** * Function make backup and move it into admin/system/backup/directory * @param string $extension_id * @return bool */ public function backupPrevious($extension_id = '') { $old_path = !$extension_id ? DIR_ROOT . '/' . $this->session->data['package_info']['dst_dir'] : DIR_EXT; $package_id = !$extension_id ? $this->session->data['package_info']['package_id'] : $extension_id; if (!$package_id) { return false; } if (file_exists($old_path . $package_id)) { $backup = new ABackup($extension_id); $backup_dirname = $backup->getBackupName(); if ($backup_dirname) { if (!$backup->backupDirectory($old_path . $package_id)) { $this->error = $backup->error; return false; } if (!$backup->dumpDatabase()) { return false; } if (!$backup->archive(DIR_BACKUP . $backup_dirname . '.tar.gz', DIR_BACKUP, $backup_dirname)) { return false; } } else { return false; } $info = $this->extensions->getExtensionInfo($package_id); $install_upgrade_history = new ADataset('install_upgrade_history', 'admin'); $install_upgrade_history->addRows(array('date_added' => date("Y-m-d H:i:s", time()), 'name' => $package_id, 'version' => $info['version'], 'backup_file' => $backup_dirname . '.tar.gz', 'backup_date' => date("Y-m-d H:i:s", time()), 'type' => 'backup', 'user' => $this->user->getUsername())); //delete previous version $this->removeDir($old_path . $package_id); } return true; }
/** * @return bool */ private function _upgradeCore() { $package_info =& $this->session->data['package_info']; if (versionCompare(VERSION, $package_info['package_version'], ">=")) { $this->session->data['error'] = str_replace('%VERSION%', VERSION, $this->language->get('error_core_version')) . $package_info['package_version'] . '!'; unset($this->session->data['package_info']); $this->redirect($this->_get_begin_href()); } $corefiles = $package_info['package_content']['core']; $pmanager = new APackageManager(); //#1 backup files $backup = new ABackup('abantecart_' . str_replace('.', '', VERSION)); foreach ($corefiles as $core_file) { if (file_exists(DIR_ROOT . '/' . $core_file)) { if (!$backup->backupFile(DIR_ROOT . '/' . $core_file, false)) { return false; } } } //#2 backup database if ($backup->dumpDatabase()) { $backup_dirname = $backup->getBackupName(); if ($backup_dirname) { if (!$backup->dumpDatabase()) { $this->session->data['error'] = $backup->error; return false; } if (!$backup->archive(DIR_BACKUP . $backup_dirname . '.tar.gz', DIR_BACKUP, $backup_dirname)) { $this->session->data['error'] = $backup->error; return false; } } else { $this->session->data['error'] = 'Error: Unknown directory name for backup.'; return false; } $install_upgrade_history = new ADataset('install_upgrade_history', 'admin'); $install_upgrade_history->addRows(array('date_added' => date("Y-m-d H:i:s", time()), 'name' => 'Backup before core upgrade. Core version: ' . VERSION, 'version' => VERSION, 'backup_file' => $backup_dirname . '.tar.gz', 'backup_date' => date("Y-m-d H:i:s", time()), 'type' => 'backup', 'user' => $this->user->getUsername())); } else { $this->session->data['error'] = $backup->error; return false; } //#3 replace files $pmanager->replaceCoreFiles(); //#4 run sql and php upgare procedure files $package_dirname = $package_info['tmp_dir'] . $package_info['package_dir']; /** * @var SimpleXmlElement $config */ $config = simplexml_load_string(file_get_contents($package_dirname . '/package.xml')); if (!$config) { $this->session->data['error'] = 'Error: package.xml from package content is not valid xml-file!'; unset($this->session->data['package_info']); $this->redirect($this->_get_begin_href()); } $pmanager->upgradeCore($config); $pmanager->updateCoreVersion((string) $config->version); return true; }
public function backup($tables, $rl = true, $config = false) { $sql_dump = ''; // make dump foreach ($tables as $table) { if (DB_PREFIX) { if (strpos($table, DB_PREFIX) === FALSE) { $status = FALSE; } else { $status = TRUE; } } else { $status = TRUE; } if ($status) { $sql_dump .= 'TRUNCATE TABLE `' . $table . '`;' . "\n\n"; $query = $this->db->query("SELECT * FROM `" . $table . "`"); foreach ($query->rows as $result) { $fields = ''; foreach (array_keys($result) as $value) { $fields .= '`' . $value . '`, '; } $values = ''; foreach (array_values($result) as $value) { $value = str_replace(array("", "\n", "\r", ""), array('\\0', '\\n', '\\r', '\\Z'), $value); $value = str_replace(array("\n", "\r", "\t"), array('\\n', '\\r', '\\t'), $value); $value = str_replace('\\', '\\\\', $value); $value = str_replace('\'', '\\\'', $value); $value = str_replace('\\\\n', '\\n', $value); $value = str_replace('\\\\r', '\\r', $value); $value = str_replace('\\\\t', '\\t', $value); $values .= '\'' . $value . '\', '; } $sql_dump .= 'INSERT INTO `' . $table . '` (' . preg_replace('/, $/', '', $fields) . ') VALUES (' . preg_replace('/, $/', '', $values) . ');' . "\n"; } $sql_dump .= "\n\n"; } } $result = false; $bkp = new ABackup('manual_backup'); if (!$bkp->error) { $backup_dir = DIR_BACKUP . $bkp->getBackupName() . '/'; $fp = fopen($backup_dir . 'data/dump.sql', 'w'); fwrite($fp, $sql_dump); fclose($fp); if ($rl) { $bkp->backupDirectory(DIR_RESOURCE, false); } if ($config) { $bkp->backupFile(DIR_ROOT . '/system/config.php', false); } $result = $bkp->archive(DIR_BACKUP . $bkp->getBackupName() . '.tar.gz', DIR_BACKUP, $bkp->getBackupName()); if (!$result) { $this->error = $bkp->error; } else { $this->backup_filename = $bkp->getBackupName(); } } return $result; }