function quiz_update_quiz_question_relationship in Quiz 7.5
Same name and namespace in other branches
- 8.4 quiz.module \quiz_update_quiz_question_relationship()
- 5.2 quiz.module \quiz_update_quiz_question_relationship()
- 6.6 quiz.module \quiz_update_quiz_question_relationship()
- 6.2 quiz.module \quiz_update_quiz_question_relationship()
- 6.3 quiz.module \quiz_update_quiz_question_relationship()
- 6.4 quiz.module \quiz_update_quiz_question_relationship()
- 6.5 quiz.module \quiz_update_quiz_question_relationship()
- 7.6 quiz.module \quiz_update_quiz_question_relationship()
- 7 quiz.module \quiz_update_quiz_question_relationship()
- 7.4 quiz.module \quiz_update_quiz_question_relationship()
Copies quiz-question relation entries in the quiz_node_relationship table from an old version of a quiz to a new.
Parameters
int $old_quiz_vid: The quiz vid prior to a new revision.
int $new_quiz_vid: The quiz vid of the latest revision.
int $quiz_nid: The quiz node id.
Related topics
1 call to quiz_update_quiz_question_relationship()
- quiz_update in ./
quiz.module - Implements hook_update().
File
- ./
quiz.module, line 1775 - quiz.module Main file for the Quiz module.
Code
function quiz_update_quiz_question_relationship($old_quiz_vid, $new_quiz_vid, $quiz_nid) {
// Query for questions in previous version.
$result = db_select('quiz_node_relationship', 'qnr')
->fields('qnr', array(
'parent_nid',
'child_nid',
'child_vid',
'question_status',
'weight',
'max_score',
'auto_update_max_score',
'qnr_id',
'qnr_pid',
))
->condition('parent_nid', $quiz_nid)
->condition('parent_vid', $old_quiz_vid)
->condition('question_status', QUIZ_QUESTION_NEVER, '!=')
->execute();
// Only proceed if query returned data.
if ($result
->rowCount()) {
$questions = $result
->fetchAll();
foreach ($questions as $quiz_question) {
$quiz_question->old_qnr_id = $quiz_question->qnr_id;
$quiz_question->parent_nid = $quiz_nid;
$quiz_question->parent_vid = $new_quiz_vid;
unset($quiz_question->qnr_id);
$quiz_question = (object) $quiz_question;
entity_save('quiz_question_relationship', $quiz_question);
}
// Update the parentage when a new revision is created.
// @todo this is copy pasta from quiz_set_questions
foreach ($questions as $question) {
db_update('quiz_node_relationship')
->condition('qnr_pid', $question->old_qnr_id)
->condition('parent_nid', $quiz_nid)
->condition('parent_vid', $new_quiz_vid)
->fields(array(
'qnr_pid' => $question->qnr_id,
))
->execute();
}
}
// Update terms if any
$result = db_select('quiz_terms', 'qt')
->fields('qt', array(
'nid',
'tid',
'weight',
'max_score',
'number',
))
->condition('vid', $old_quiz_vid)
->execute();
// Only proceed if query returned data.
if ($result
->rowCount()) {
$insert_query = db_insert('quiz_terms')
->fields(array(
'nid',
'vid',
'tid',
'weight',
'max_score',
'number',
));
while ($quiz_term = $result
->fetchAssoc()) {
$insert_query
->values(array(
'nid' => $quiz_nid,
'vid' => $new_quiz_vid,
'tid' => $quiz_term['tid'],
'weight' => $quiz_term['weight'],
'max_score' => $quiz_term['max_score'],
'number' => $quiz_term['number'],
));
}
$insert_query
->execute();
}
}