Skip to content

Commit

Permalink
MDL-34430 qtype essay: upgrade from MDL-31393 needs a progress bar.
Browse files Browse the repository at this point in the history
  • Loading branch information
timhunt committed Aug 22, 2012
1 parent 7033316 commit 49e7719
Showing 1 changed file with 39 additions and 29 deletions.
68 changes: 39 additions & 29 deletions question/type/essay/db/upgrade.php
Expand Up @@ -41,41 +41,51 @@ function xmldb_qtype_essay_upgrade($oldversion) {
// Put any upgrade step following this // Put any upgrade step following this


if ($oldversion < 2011102701) { if ($oldversion < 2011102701) {
// In Moodle <= 2.0 essay had both question.generalfeedback and question_answers.feedback. $sql = "
// This was silly, and in Moodel >= 2.1 only question.generalfeedback. To avoid
// dataloss, we concatenate question_answers.feedback onto the end of question.generalfeedback.
$toupdate = $DB->get_recordset_sql("
SELECT q.id,
q.generalfeedback,
q.generalfeedbackformat,
qa.feedback,
qa.feedbackformat
FROM {question} q FROM {question} q
JOIN {question_answers} qa ON qa.question = q.id JOIN {question_answers} qa ON qa.question = q.id
WHERE q.qtype = 'essay' WHERE q.qtype = 'essay'
AND " . $DB->sql_isnotempty('question_answers', 'feedback', false, true)); AND " . $DB->sql_isnotempty('question_answers', 'feedback', false, true);

// In Moodle <= 2.0 essay had both question.generalfeedback and question_answers.feedback.
foreach ($toupdate as $data) { // This was silly, and in Moodel >= 2.1 only question.generalfeedback. To avoid
upgrade_set_timeout(60); // dataloss, we concatenate question_answers.feedback onto the end of question.generalfeedback.
if ($data->generalfeedbackformat == $data->feedbackformat) { $count = $DB->count_records_sql("
$DB->set_field('question', 'generalfeedback', SELECT COUNT(1) $sql");
$data->generalfeedback . $data->feedback, if ($count) {
array('id' => $data->id)); $progressbar = new progress_bar('essay23', 500, true);

$done = 0;
} else {
$newdata = new stdClass(); $toupdate = $DB->get_recordset_sql("
$newdata->id = $data->id; SELECT q.id,
$newdata->generalfeedback = q.generalfeedback,
qtype_essay_convert_to_html($data->generalfeedback, $data->generalfeedbackformat) . q.generalfeedbackformat,
qtype_essay_convert_to_html($data->feedback, $data->feedbackformat); qa.feedback,
$newdata->generalfeedbackformat = FORMAT_HTML; qa.feedbackformat
$DB->update_record('question', $newdata); $sql");

foreach ($toupdate as $data) {
$progressbar->update($done, $count, "Updating essay feedback ($done/$count).");
upgrade_set_timeout(60);
if ($data->generalfeedbackformat == $data->feedbackformat) {
$DB->set_field('question', 'generalfeedback',
$data->generalfeedback . $data->feedback,
array('id' => $data->id));

} else {
$newdata = new stdClass();
$newdata->id = $data->id;
$newdata->generalfeedback =
qtype_essay_convert_to_html($data->generalfeedback, $data->generalfeedbackformat) .
qtype_essay_convert_to_html($data->feedback, $data->feedbackformat);
$newdata->generalfeedbackformat = FORMAT_HTML;
$DB->update_record('question', $newdata);
}
} }
}


$toupdate->close(); $progressbar->update($count, $count, "Updating essay feedback complete!");
$toupdate->close();
}


// Essay savepoint reached. // Essay savepoint reached.
upgrade_plugin_savepoint(true, 2011102701, 'qtype', 'essay'); upgrade_plugin_savepoint(true, 2011102701, 'qtype', 'essay');
Expand Down

0 comments on commit 49e7719

Please sign in to comment.