Ejemplo n.º 1
0
 public function backupCodeFiles()
 {
     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);
     $code_dirs = array('admin', 'core', 'storefront', 'extensions', 'system', 'static_pages');
     $result = true;
     $files = array_merge(glob(DIR_ROOT . '/.*'), glob(DIR_ROOT . '/*'));
     foreach ($files as $file) {
         if (in_array(basename($file), array('.', '..'))) {
             continue;
         }
         //those filenames give glob for hidden files (see above)
         $res = true;
         if (is_file($file)) {
             $res = $bkp->backupFile($file, false);
         } else {
             if (is_dir($file) && in_array(basename($file), $code_dirs)) {
                 //only dirs from white list
                 $res = $bkp->backupDirectory($file, false);
             }
         }
         $result = !$res ? $res : $result;
     }
     if ($result) {
         $this->load->library('json');
         $this->response->addJSONHeader();
         $output = array('result' => true);
         $this->response->setOutput(AJson::encode($output));
     } else {
         $error = new AError('files backup error');
         return $error->toJSONResponse('APP_ERROR_402', array('error_text' => $bkp->error, 'reset_value' => true));
     }
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }
 /**
  * @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;
 }