public function QuizQuestion::saveRelationships in Quiz 7.5
Same name and namespace in other branches
- 6.4 question_types/quiz_question/quiz_question.core.inc \QuizQuestion::saveRelationships()
- 7.6 question_types/quiz_question/quiz_question.core.inc \QuizQuestion::saveRelationships()
- 7 question_types/quiz_question/quiz_question.core.inc \QuizQuestion::saveRelationships()
- 7.4 question_types/quiz_question/quiz_question.core.inc \QuizQuestion::saveRelationships()
Save this Question to the specified Quiz.
Parameters
$nid: The node ID.
$vid: The revision ID.
1 call to QuizQuestion::saveRelationships()
- QuizQuestion::save in question_types/
quiz_question/ quiz_question.core.inc - Responsible for handling insert/update of question-specific data.
File
- question_types/
quiz_question/ quiz_question.core.inc, line 341 - Classes used in the Quiz Question module.
Class
- QuizQuestion
- A base implementation of a quiz_question.
Code
public function saveRelationships($nid, $vid) {
$quiz_node = node_load($nid, $vid);
if (variable_get('quiz_auto_revisioning', 1) && quiz_has_been_answered($quiz_node)) {
// We need to revise the quiz node if it has been answered.
$quiz_node->revision = 1;
$quiz_node->log = t('The current revision has been answered. We create a new revision so that the reports from the existing answers stays correct.');
node_save($quiz_node);
drupal_set_message(t('New revision has been created for the @quiz %n', array(
'%n' => $quiz_node->title,
'@quiz' => QUIZ_NAME,
)));
}
$insert_values = array();
$insert_values['parent_nid'] = $quiz_node->nid;
$insert_values['parent_vid'] = $quiz_node->vid;
$insert_values['child_nid'] = $this->node->nid;
$insert_values['child_vid'] = $this->node->vid;
$insert_values['max_score'] = $this
->getMaximumScore();
$insert_values['auto_update_max_score'] = $this
->autoUpdateMaxScore() ? 1 : 0;
$insert_values['weight'] = 1 + db_query('SELECT MAX(weight) FROM {quiz_node_relationship} WHERE parent_vid = :vid', array(
':vid' => $quiz_node->vid,
))
->fetchField();
$randomization = db_query('SELECT randomization FROM {quiz_node_properties} WHERE nid = :nid AND vid = :vid', array(
':nid' => $quiz_node->nid,
':vid' => $quiz_node->vid,
))
->fetchField();
$insert_values['question_status'] = $randomization == 2 ? QUIZ_QUESTION_RANDOM : QUIZ_QUESTION_ALWAYS;
entity_create('quiz_question_relationship', $insert_values)
->save();
// Update max_score for relationships if auto update max score is enabled
// for question.
$quizzes_to_update = array();
$result = db_query('SELECT parent_vid as vid from {quiz_node_relationship} where child_nid = :nid and child_vid = :vid and auto_update_max_score=1', array(
':nid' => $this->node->nid,
':vid' => $this->node->vid,
));
foreach ($result as $record) {
$quizzes_to_update[] = $record->vid;
}
db_update('quiz_node_relationship')
->fields(array(
'max_score' => $this
->getMaximumScore(),
))
->condition('child_nid', $this->node->nid)
->condition('child_vid', $this->node->vid)
->condition('auto_update_max_score', 1)
->execute();
quiz_update_max_score_properties($quizzes_to_update);
quiz_update_max_score_properties(array(
$quiz_node->vid,
));
}