From 10dae695ecc5669ebae9f17e8ecf1fe5150e1720 Mon Sep 17 00:00:00 2001 From: Adrian Perez Date: Fri, 20 Jul 2018 14:25:25 +0200 Subject: [PATCH 1/2] MDL-63002 core_grade: fixed deletion of overriden letters --- grade/edit/letter/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grade/edit/letter/index.php b/grade/edit/letter/index.php index 393afe4c969..dedd4bf2462 100644 --- a/grade/edit/letter/index.php +++ b/grade/edit/letter/index.php @@ -141,7 +141,7 @@ if (!$edit) { if (!$admin and empty($data->override)) { $records = $DB->get_records('grade_letters', array('contextid' => $context->id)); foreach ($records as $record) { - $DB->delete_record('grade_letters', array('id' => $record->id)); + $DB->delete_records('grade_letters', array('id' => $record->id)); // Trigger the letter grade deleted event. $event = \core\event\grade_letter_deleted::create(array( 'objectid' => $record->id, From 1b4cd6be307581f8ece0bbe4b05964ac1a0f8e5d Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Mon, 30 Jul 2018 20:47:57 +0800 Subject: [PATCH 2/2] MDL-63002 core: fixed incorrect calls to non-existent delete_record() --- lib/gradelib.php | 4 ++-- lib/tests/gradelib_test.php | 48 +++++++++++++++++++++++++++++++++++++ mod/lesson/locallib.php | 2 +- 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/lib/gradelib.php b/lib/gradelib.php index cb31417de22..9e37c4267ae 100644 --- a/lib/gradelib.php +++ b/lib/gradelib.php @@ -1401,7 +1401,7 @@ function remove_grade_letters($context, $showfeedback) { $records = $DB->get_records('grade_letters', array('contextid' => $context->id)); foreach ($records as $record) { - $DB->delete_record('grade_letters', array('id' => $record->id)); + $DB->delete_records('grade_letters', array('id' => $record->id)); // Trigger the letter grade deleted event. $event = \core\event\grade_letter_deleted::create(array( 'objectid' => $record->id, @@ -1473,7 +1473,7 @@ function grade_course_category_delete($categoryid, $newparentid, $showfeedback) $context = context_coursecat::instance($categoryid); $records = $DB->get_records('grade_letters', array('contextid' => $context->id)); foreach ($records as $record) { - $DB->delete_record('grade_letters', array('id' => $record->id)); + $DB->delete_records('grade_letters', array('id' => $record->id)); // Trigger the letter grade deleted event. $event = \core\event\grade_letter_deleted::create(array( 'objectid' => $record->id, diff --git a/lib/tests/gradelib_test.php b/lib/tests/gradelib_test.php index f1783158c09..fcc42adf80a 100644 --- a/lib/tests/gradelib_test.php +++ b/lib/tests/gradelib_test.php @@ -56,4 +56,52 @@ class core_gradelib_testcase extends advanced_testcase { $this->assertTrue(grade_update_mod_grades($modinstance)); } + + /** + * Tests the function remove_grade_letters(). + */ + public function test_remove_grade_letters() { + global $DB; + + $this->resetAfterTest(); + + $course = $this->getDataGenerator()->create_course(); + + $context = context_course::instance($course->id); + + // Add a grade letter to the course. + $letter = new stdClass(); + $letter->letter = 'M'; + $letter->lowerboundary = '100'; + $letter->contextid = $context->id; + $DB->insert_record('grade_letters', $letter); + + remove_grade_letters($context, false); + + // Confirm grade letter was deleted. + $this->assertEquals(0, $DB->count_records('grade_letters')); + } + + /** + * Tests the function grade_course_category_delete(). + */ + public function test_grade_course_category_delete() { + global $DB; + + $this->resetAfterTest(); + + $category = coursecat::create(array('name' => 'Cat1')); + + // Add a grade letter to the category. + $letter = new stdClass(); + $letter->letter = 'M'; + $letter->lowerboundary = '100'; + $letter->contextid = context_coursecat::instance($category->id)->id; + $DB->insert_record('grade_letters', $letter); + + grade_course_category_delete($category->id, '', false); + + // Confirm grade letter was deleted. + $this->assertEquals(0, $DB->count_records('grade_letters')); + } } diff --git a/mod/lesson/locallib.php b/mod/lesson/locallib.php index 767b5807b22..0d8d40757ed 100644 --- a/mod/lesson/locallib.php +++ b/mod/lesson/locallib.php @@ -4360,7 +4360,7 @@ abstract class lesson_page extends lesson_base { if (count($answers) > 1) { $answer = array_shift($answers); foreach ($answers as $a) { - $DB->delete_record('lesson_answers', array('id' => $a->id)); + $DB->delete_records('lesson_answers', array('id' => $a->id)); } } else if (count($answers) == 1) { $answer = array_shift($answers);