You are here

function questions_import_form_validate in Quiz 6.6

Same name and namespace in other branches
  1. 6.3 includes/questions_import/questions_import.admin.inc \questions_import_form_validate()

Implementation of hook_validate()

1 string reference to 'questions_import_form_validate'
questions_import_form in includes/questions_import/questions_import.admin.inc
@function Implementation of hook_form() provides form to upload questions

File

includes/questions_import/questions_import.admin.inc, line 155
Administration file for Questions Import module

Code

function questions_import_form_validate($form, &$form_state) {

  // TODO make the allowed extensions depend on the import type
  $allowed_extensions = 'csv txt xml jcl jqz';

  // it suppose to be a string which file extensions separated by space not an array
  $allowed_size = file_upload_max_size();
  $field_separator = $form_state['values']['field_separator'];
  $import_type_info = explode('_', $form_state['values']['import_type']);
  $import_engine = $import_type_info[0];
  $import_format = $import_type_info[1];

  //$question_type =  $form_state['values']['question_type'];

  // put in a quiz_import dir within the files directory
  $import_archive_path = file_directory_path() . '/' . QUIZ_QUESTIONS_UPLOAD_ARCHIVE_PATH;
  file_check_directory($import_archive_path, FILE_CREATE_DIRECTORY);

  // creates a drupal file object, to be saved in form_state as validated_file
  // one thread says this is bad, http://drupal.org/node/73684
  // but another says it's proper, http://www.imedstudios.com/labs/node/22
  // and it works. -ta
  $file = file_save_upload('upload', array(), $import_archive_path);
  if (!$file) {
    form_set_error('upload', 'You must select a valid file to upload.');
  }
  else {
    $validate_extensions = !$form_state['values']['ignore_filename_extensions'];
    if ($validate_extensions) {
      $error_msg = question_import_validate_extensions($file, $allowed_extensions);
    }
    if ($error_msg != '') {
      form_set_error('upload', $error_msg);
    }
    $error_msg = question_import_validate_size($file, $allowed_size);
    if ($error_msg != '') {
      form_set_error('upload', $error_msg);
    }
    switch ($import_engine) {
      case 'native':
        $validator_function_name = "questions_import_validate_{$import_format}";
        $error_msg = $validator_function_name($file, $field_separator);
        break;
      case 'moodle':

        // FIXME no validating yet for Moodle
        break;
    }
    if ($error_msg != '') {
      form_set_error('upload', $error_msg);
    }
    else {

      // assume upload file validates so keep it
      $success = file_set_status($file, FILE_STATUS_PERMANENT);
      if ($success) {
        $form_state['values']['validated_file'] = $file;
      }
      else {
        form_set_error('upload', "Failed to store file permanently");
      }
    }
  }
}