Ejemplo n.º 1
0
 public function dumpTables()
 {
     if ($this->request->get['eta'] > 30) {
         set_time_limit((int) $this->request->get['eta'] * 2);
     }
     $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);
     if (has_value($this->request->get['sql_dump_mode'])) {
         $bkp->sql_dump_mode = $this->request->get['sql_dump_mode'];
     }
     if (has_value($this->request->get['table_list'])) {
         $table_list = $this->request->get['table_list'];
     }
     if (!$table_list) {
         $this->loadModel('tool/backup');
         $table_list = $this->model_tool_backup->getTables();
     }
     $result = $bkp->dumpTables($table_list);
     if ($result) {
         $this->load->library('json');
         $this->response->addJSONHeader();
         $output = array('result' => true);
         $this->response->setOutput(AJson::encode($output));
     } else {
         $error = new AError('dump tables 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;
 }