You are here

function quiz_categorized_form_validate in Quiz 8.4

Same name and namespace in other branches
  1. 6.4 quiz.admin.inc \quiz_categorized_form_validate()
  2. 7.6 quiz.admin.inc \quiz_categorized_form_validate()
  3. 7 quiz.admin.inc \quiz_categorized_form_validate()
  4. 7.4 quiz.admin.inc \quiz_categorized_form_validate()
  5. 7.5 quiz.admin.inc \quiz_categorized_form_validate()

Validate the categorized form

File

./quiz.admin.inc, line 321
Administrator interface for Quiz module.

Code

function quiz_categorized_form_validate($form, &$form_state) {
  if (_quiz_is_int(arg(1))) {
    if (node_last_changed(arg(1)) > $form_state['values']['timestamp']) {
      form_set_error('changed', $form_state, t('This content has been modified by another user, changes cannot be saved.'));
    }
  }
  else {
    form_set_error('changed', $form_state, t('A critical error has occured. Please report error code 28 on the quiz project page.'));
    return;
  }
  if (!empty($form_state['values']['term'])) {
    $tid = _quiz_get_id_from_string($form_state['values']['term']);
    if ($tid === FALSE) {
      $terms = _quiz_search_terms($form_state['values']['term']);
      $num_terms = count($terms);
      if ($num_terms == 1) {
        $tid = key($terms);
      }
      elseif ($num_terms > 1) {
        form_set_error('term', $form_state, t('You need to be more specific, or use the autocomplete feature. The term name you entered matches several terms: %terms', array(
          '%terms' => implode(', ', $terms),
        )));
      }
      elseif ($num_terms == 0) {
        form_set_error('term', $form_state, t("The term name you entered doesn't match any registered question terms."));
      }
    }
    if (in_array($tid, array_keys($form))) {
      form_set_error('term', $form_state, t('The category you are trying to add has already been added to this quiz.'));
    }
    else {
      form_set_value($form['tid'], $tid, $form_state);
    }
    if (!_quiz_is_int($form_state['values']['number'])) {
      form_set_error('number', $form_state, t('The number of questions needs to be a positive integer'));
    }
    if (!_quiz_is_int($form_state['values']['max_score'], 0)) {
      form_set_error('max_score', $form_state, t('The max score needs to be a positive integer or 0'));
    }
  }
}