function quiz_questions_form_validate in Quiz 6.6
Same name and namespace in other branches
- 8.4 quiz.admin.inc \quiz_questions_form_validate()
- 6.3 quiz.admin.inc \quiz_questions_form_validate()
- 6.4 quiz.admin.inc \quiz_questions_form_validate()
- 6.5 quiz.admin.inc \quiz_questions_form_validate()
- 7.6 quiz.admin.inc \quiz_questions_form_validate()
- 7 quiz.admin.inc \quiz_questions_form_validate()
- 7.4 quiz.admin.inc \quiz_questions_form_validate()
- 7.5 quiz.admin.inc \quiz_questions_form_validate()
Validate that the supplied questions are real.
1 call to quiz_questions_form_validate()
- qcollection_questions_form_validate in includes/
qcollection/ qcollection.inc - Validate that the supplied questions are real.
File
- ./
quiz.admin.inc, line 310 - Administrator interface for Quiz module.
Code
function quiz_questions_form_validate($form, $form_state) {
$question_types = array_keys(_quiz_get_question_types());
$removed = explode(',', $form_state['values']['remove_from_quiz']);
$placeholders = db_placeholders($question_types, 'varchar');
$sql = 'SELECT COUNT(nid) FROM {node} WHERE type IN (' . $placeholders . ') AND nid = %d';
$already_checked = array();
$weight_map = $form_state['values']['weights'];
if (empty($weight_map)) {
form_set_error('none', 'No questions were included.');
return;
}
foreach ($weight_map as $id => $weight) {
if (in_array($id, $removed)) {
// Ignore items that are going to be removed anyway.
continue;
}
list($state, $nid) = explode('-', $id, 2);
$params = $question_types;
// Copy array.
$params[] = $nid;
if (db_result(db_query($sql, $params)) == 0) {
form_set_error('none', 'One of the supplied questions was invalid. It has been removed from the quiz.');
unset($form_state['values']['weights'][$id]);
}
elseif (in_array($nid, $already_checked)) {
form_set_error('none', 'A duplicate question has been removed. You can only ask a question once per quiz.');
unset($form_state['values']['weights'][$id]);
}
else {
$already_checked[] = $nid;
}
}
}