From 37e8115d689ec5ab1d625e440683f0d72579c814 Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Wed, 26 Apr 2023 10:42:11 +0100 Subject: [PATCH] MDL-78025 question: move hiding logic into question_delete_question This logic belongs in the API, so it is applied consistently. Also this avoids calling the expensive function questions_in_use twice per question. --- lib/questionlib.php | 5 ++++- question/bank/deletequestion/delete.php | 7 +------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/questionlib.php b/lib/questionlib.php index 19c01ec9f0b..c1a432dd8d3 100644 --- a/lib/questionlib.php +++ b/lib/questionlib.php @@ -28,6 +28,7 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ +use core_question\local\bank\question_version_status; defined('MOODLE_INTERNAL') || die(); @@ -360,8 +361,10 @@ function question_delete_question($questionid): void { $questionstocheck[] = $question->parent; } - // Do not delete a question if it is used by an activity module + // Do not delete a question if it is used by an activity module. Just mark the version hidden. if (questions_in_use($questionstocheck)) { + $DB->set_field('question_versions', 'status', + question_version_status::QUESTION_STATUS_HIDDEN, ['questionid' => $questionid]); return; } diff --git a/question/bank/deletequestion/delete.php b/question/bank/deletequestion/delete.php index b41ba32bdae..dbb697aafec 100644 --- a/question/bank/deletequestion/delete.php +++ b/question/bank/deletequestion/delete.php @@ -83,12 +83,7 @@ if ($deleteselected && ($confirm = optional_param('confirm', '', PARAM_ALPHANUM) foreach ($questionlist as $questionid) { $questionid = (int)$questionid; question_require_capability_on($questionid, 'edit'); - if (questions_in_use(array($questionid))) { - $DB->set_field('question_versions', 'status', - \core_question\local\bank\question_version_status::QUESTION_STATUS_HIDDEN, ['questionid' => $questionid]); - } else { - question_delete_question($questionid); - } + question_delete_question($questionid); } } redirect($returnurl); -- 2.11.4.GIT