function uif_validate_user_file in User Import Framework 6
Same name and namespace in other branches
- 7 uif.admin.inc \uif_validate_user_file()
 
Read the user import file and validate on the way.
Parameters
$filepath: filepath to the user import file @param $data returns with array of users @return FALSE if no errors found array of error strings if error found
1 call to uif_validate_user_file()
- uif_import_form_validate in ./
uif.admin.inc  - Validate the import data.
 
File
- ./
uif.admin.inc, line 156  - Simple, extensible user import from a CSV file.
 
Code
function uif_validate_user_file($filepath, &$data, $form_state) {
  $data = array();
  $data['user'] = array();
  $line = 0;
  // Without this fgetcsv() fails for Mac-created files
  ini_set('auto_detect_line_endings', TRUE);
  if ($fp = fopen($filepath, 'r')) {
    // Read the header and allow alterations
    $header_row = fgetcsv($fp);
    drupal_alter('uif_header', $header_row);
    $header_row = uif_normalize_header(array_map('trim', $header_row));
    $line++;
    $errors = module_invoke_all('uif_validate_header', $header_row, $form_state);
    uif_add_line_number($errors, $line);
    if (!empty($errors)) {
      return $errors;
    }
    $data['header'] = $header_row;
    // Read the data
    $errors = array();
    while (!feof($fp) && count($errors) < 20) {
      // Read a row and allow alterations
      $row = fgetcsv($fp);
      drupal_alter('uif_row', $row, $header_row);
      $line++;
      if (uif_row_has_data($row)) {
        $user_row = uif_clean_and_key_row($header_row, $row, $line);
        $uid = db_result(db_query_range("SELECT uid FROM {users} WHERE mail LIKE '%s'", $user_row['email'], 0, 1));
        $more_errors = module_invoke_all('uif_validate_user', $user_row, $uid, $header_row, $form_state);
        uif_add_line_number($more_errors, $line);
        $errors = array_merge($errors, $more_errors);
        $data['user'][] = $user_row;
      }
    }
    // Any errors?
    if (!empty($errors)) {
      return $errors;
    }
  }
  else {
    return t('Cannot open that import file.');
  }
  // Final validation opportunity after header and all users validated individually.
  $errors = module_invoke_all('uif_validate_all_users', $data['user'], $form_state);
  if (!empty($errors)) {
    return $errors;
  }
}