You are here

function node_import_view_form_submit_download in Node import 6

1 string reference to 'node_import_view_form_submit_download'
node_import_view_form in ./node_import.admin.inc
View a task and its progress.

File

./node_import.admin.inc, line 941

Code

function node_import_view_form_submit_download($form, &$form_state) {
  $task = $form['#task'];
  $file_formats = node_import_format_options('file formats');
  $file_options = $task['file_options'];
  $mime = 'text/plain';
  if (isset($file_options['file_format']) && isset($file_formats[$file_options['file_format']]) && isset($file_formats[$file_options['file_format']]['mime'])) {
    $mime = $file_formats[$file_options['file_format']]['mime'];
  }
  $suffix = pathinfo($task['file']->filename, PATHINFO_EXTENSION);
  $filename = basename($task['file']->filename, '.' . $suffix);
  $sql = "SELECT * FROM {node_import_status} WHERE taskid = %d";
  switch ($form_state['values']['download']['what_rows']) {
    case 'error':
      $filename = $filename . '-reject.' . $suffix;
      $sql .= " AND status = " . NODE_IMPORT_STATUS_ERROR;
      break;
    case 'done':
      $filename = $filename . '-done.' . $suffix;
      $sql .= " AND status = " . NODE_IMPORT_STATUS_DONE;
      break;
    default:
    case 'all':
      $filename = $filename . '-all.' . $suffix;
      break;
  }
  $sql .= " ORDER BY file_offset ASC";
  header('Content-Type: ' . $mime);
  header('Content-Disposition: attachment; filename=' . $filename);
  $objid = in_array('objid', $form_state['values']['download']['what_cols']);
  $errors = in_array('errors', $form_state['values']['download']['what_cols']);
  if ($task['has_headers']) {
    $headers = $task['headers'];
    if ($objid) {
      array_unshift($headers, t('Object'));
    }
    if ($errors) {
      array_unshift($headers, t('Errors'));
    }
    print node_import_write_to_string($headers, $file_options);
  }
  $result = db_query($sql, $task['taskid']);
  while ($row = db_fetch_object($result)) {
    list($file_offset, $data) = node_import_read_from_file($task['file']->filepath, $row->file_offset, $file_options);
    if ($objid) {
      array_unshift($data, $row->objid);
    }
    if ($errors) {
      array_unshift($data, implode("\n", (array) unserialize($row->errors)));
    }
    print node_import_write_to_string($data, $file_options);
  }
  exit;
}