1
0
mirror of https://github.com/moodle/moodle.git synced 2025-04-24 18:04:43 +02:00

MDL-65050 core: move function code to question_preview_cleanup_task

This commit also deletes the legacy question_preview_cron() function.
This commit is contained in:
Simey Lameze 2019-03-28 16:28:04 +08:00
parent 5a01c2409a
commit 10810f421b
2 changed files with 21 additions and 33 deletions

@ -45,12 +45,29 @@ class question_preview_cleanup_task extends scheduled_task {
* Throw exceptions on errors (the job will be retried).
*/
public function execute() {
global $CFG;
// Run question bank clean-up.
require_once($CFG->libdir . '/questionlib.php');
\question_bank::cron();
// We delete previews that have not been touched for 24 hours.
$lastmodifiedcutoff = time() - DAYSECS;
mtrace("\n Cleaning up old question previews...", '');
$oldpreviews = new \qubaid_join('{question_usages} quba', 'quba.id',
'quba.component = :qubacomponent
AND NOT EXISTS (
SELECT 1
FROM {question_attempts} subq_qa
JOIN {question_attempt_steps} subq_qas ON subq_qas.questionattemptid = subq_qa.id
JOIN {question_usages} subq_qu ON subq_qu.id = subq_qa.questionusageid
WHERE subq_qa.questionusageid = quba.id
AND subq_qu.component = :qubacomponent2
AND (subq_qa.timemodified > :qamodifiedcutoff
OR subq_qas.timecreated > :stepcreatedcutoff)
)
',
['qubacomponent' => 'core_question_preview', 'qubacomponent2' => 'core_question_preview',
'qamodifiedcutoff' => $lastmodifiedcutoff, 'stepcreatedcutoff' => $lastmodifiedcutoff]);
\question_engine::delete_questions_usage_by_activities($oldpreviews);
mtrace('done.');
}
}

@ -327,32 +327,3 @@ function restart_preview($previewid, $questionid, $displayoptions, $context) {
redirect(question_preview_url($questionid, $displayoptions->behaviour,
$displayoptions->maxmark, $displayoptions, $displayoptions->variant, $context));
}
/**
* Scheduled tasks relating to question preview. Specifically, delete any old
* previews that are left over in the database.
*/
function question_preview_cron() {
$maxage = 24*60*60; // We delete previews that have not been touched for 24 hours.
$lastmodifiedcutoff = time() - $maxage;
mtrace("\n Cleaning up old question previews...", '');
$oldpreviews = new qubaid_join('{question_usages} quba', 'quba.id',
'quba.component = :qubacomponent
AND NOT EXISTS (
SELECT 1
FROM {question_attempts} subq_qa
JOIN {question_attempt_steps} subq_qas ON subq_qas.questionattemptid = subq_qa.id
JOIN {question_usages} subq_qu ON subq_qu.id = subq_qa.questionusageid
WHERE subq_qa.questionusageid = quba.id
AND subq_qu.component = :qubacomponent2
AND (subq_qa.timemodified > :qamodifiedcutoff
OR subq_qas.timecreated > :stepcreatedcutoff)
)
',
array('qubacomponent' => 'core_question_preview', 'qubacomponent2' => 'core_question_preview',
'qamodifiedcutoff' => $lastmodifiedcutoff, 'stepcreatedcutoff' => $lastmodifiedcutoff));
question_engine::delete_questions_usage_by_activities($oldpreviews);
mtrace('done.');
}