You are here

function upload_taxonomy_service_form_submit in Taxonomy import/export via XML 7

What to do when loading from this service

1 string reference to 'upload_taxonomy_service_form_submit'
upload_taxonomy_service_form in services/upload.taxonomy_service.inc
A sub-form that provides UI additions to the taxonomy import form

File

services/upload.taxonomy_service.inc, line 56
declare how to import a taxonomy from file upload.

Code

function upload_taxonomy_service_form_submit($form, &$form_state) {

  // Invoke service and parse response
  $service_id = $form_state['values']['service_id'];

  #$services =   $services_info = taxonomy_xml_services();

  #$service = $services[$service_id];
  $parameters = $form_state['values'];
  $parameters['format'] = $parameters[$service_id]['format'];

  // Retrieve submitted data and parse it
  global $user;

  // @todo there could be an issue when uploading as non-uid-1.
  // file_save_upload may not save unknown extensions.
  $extensions = array(
    'csv',
    'txt',
    'xml',
    'rdf',
  );
  $validator = array(
    'file_validate_extensions' => array(
      0 => join(' ', $extensions),
    ),
  );

  // Currently unsolved.
  if (!($file = file_save_upload('file_upload', $validator))) {
    form_set_error('upload_file', t('Vocabulary import failed: file was not uploaded.'));

    #dpm($_FILES);
    return FALSE;
  }

  // The file object is a wierd wrapper instance.
  //
  //  Drupal7 is odd. How is this supposed to work?
  // http://drupal.org/node/822008
  //
  //
  $file->filepath = drupal_realpath($file->uri);
  $fd = fopen($file->filepath, "rb");
  if (!$fd) {
    form_set_error('upload_file', t('Vocabulary import failed: file %filename cannot be read.', array(
      '%filename' => $file->filepath,
    )));
    return FALSE;
  }
  else {
    $info = fstat($fd);
    $len = $info["size"];
    $text = fread($fd, $len);
    fclose($fd);
    drupal_set_message(t('Loaded file %filename. Now processing it.', array(
      '%filename' => $file->filename,
    )));
    $form_state['values']['file'] = $file;
    taxonomy_xml_invoke_import($text, $parameters, $file->filename);
  }
}