You are here

function node_import_add_form_validate_next in Node import 6

1 string reference to 'node_import_add_form_validate_next'
node_import_add_form in ./node_import.admin.inc
Creates a new import task by letting the user fill in a wizard.

File

./node_import.admin.inc, line 506

Code

function node_import_add_form_validate_next($form, &$form_state) {
  $values = $form_state['values'];
  $storage = $form_state['storage'];
  $page = $storage['page'];

  // ------------------------------------------------------------
  if ($page == 'file') {

    // If a file is uploaded, select it.
    $validators = array();
    $dest = node_import_directory();
    if ($file = file_save_upload('file_upload', $validators, $dest, FILE_EXISTS_RENAME)) {
      file_set_status($file, FILE_STATUS_PERMANENT);
      drupal_set_message(t('New file %name uploaded to %path.', array(
        '%name' => $file->filename,
        '%path' => $file->filepath,
      )));
      $values['fid'] = $form_state['values']['fid'] = $file->fid;
    }

    // Validate whether a file has been chosen and the file exists.
    $files = node_import_list_files(TRUE);
    if (!isset($values['fid']) || !isset($files[$values['fid']])) {
      form_set_error('fid', t('%select-file field is required. Upload a file first if there are no files uploaded yet.', array(
        '%select-file' => t('Select file'),
      )));
    }
  }

  // ------------------------------------------------------------
  if ($page == 'file_options') {
    if ($values['file_options']['file_format'] == '') {

      // The user has defined his own format. Make sure that when
      // he selects "Other" for one of the options that a value
      // has been filled in.
      $keys = array(
        'record separator' => t('Record separator'),
        'field separator' => t('Field separator'),
        'text delimiter' => t('Text delimiter'),
        'escape character' => t('Escape character'),
      );
      foreach ($keys as $key => $title) {
        if ($values['file_options'][$key] == '' && strlen($values['file_options']['other ' . $key]) == 0) {
          form_set_error('file_options][other ' . $key, t('You need to specify a character to use as %title if you choose %other for it.', array(
            '%title' => $title,
            '%other' => t('Other'),
          )));
        }
      }
    }
  }

  // ------------------------------------------------------------
  if ($page == 'type') {
    $types = node_import_types();
    if (!isset($values['type']) || !isset($types[$values['type']])) {
      form_set_error('type', t('!name field is required.', array(
        '!name' => t('Content type'),
      )));
    }
  }

  // ------------------------------------------------------------
  if ($page == 'map') {
    $fields = node_import_fields($storage['type']);
    foreach ($fields as $fieldname => $fieldinfo) {
      if (empty($fieldinfo['columns'])) {
        if ($fieldinfo['map_required'] && strlen($values['map'][$fieldname]) == 0) {
          form_set_error('map][' . $fieldname, t('!name field is required.', array(
            '!name' => $fieldinfo['title'],
          )));
        }
      }
      else {
        foreach ($fieldinfo['columns'] as $colname => $colinfo) {
          if ($colinfo['map_required'] && strlen($values['map'][$fieldname][$colname]) == 0) {
            form_set_error('map][' . $fieldname . '][' . $colname, t('!name field is required.', array(
              '!name' => $colinfo['title'],
            )));
          }
        }
      }
    }
  }
}