Ejemplo n.º 1
0
 public function backupConfig()
 {
     $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);
     $result = $bkp->backupFile(DIR_ROOT . '/system/config.php', false);
     $output = array('result' => $result ? true : false);
     $this->load->library('json');
     $this->response->addJSONHeader();
     $this->response->setOutput(AJson::encode($output));
 }
Ejemplo n.º 2
0
 /**
  * @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;
 }
 /**
  * @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;
 }
Ejemplo n.º 4
0
 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;
 }