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

MDL-71314 course: add category record snapshot to deletion event.

This commit is contained in:
Paul Holden 2021-06-24 19:02:59 +01:00
parent a747fd3055
commit c8f0fee909
3 changed files with 19 additions and 2 deletions

@ -2034,6 +2034,7 @@ class core_course_category implements renderable, cacheable_object, IteratorAggr
$DB->delete_records('event', array('categoryid' => $this->id));
// Finally delete the category and it's context.
$categoryrecord = $this->get_db_record();
$DB->delete_records('course_categories', array('id' => $this->id));
$coursecatcontext = context_coursecat::instance($this->id);
@ -2048,6 +2049,7 @@ class core_course_category implements renderable, cacheable_object, IteratorAggr
'context' => $coursecatcontext,
'other' => array('name' => $this->name)
));
$event->add_record_snapshot($event->objecttable, $categoryrecord);
$event->set_coursecat($this);
$event->trigger();
@ -2223,6 +2225,7 @@ class core_course_category implements renderable, cacheable_object, IteratorAggr
}
// Finally delete the category and it's context.
$categoryrecord = $this->get_db_record();
$DB->delete_records('course_categories', array('id' => $this->id));
$context->delete();
@ -2233,6 +2236,7 @@ class core_course_category implements renderable, cacheable_object, IteratorAggr
'context' => $context,
'other' => array('name' => $this->name, 'contentmovedcategoryid' => $newparentid)
));
$event->add_record_snapshot($event->objecttable, $categoryrecord);
$event->set_coursecat($this);
$event->trigger();

@ -1995,7 +1995,8 @@ class core_course_courselib_testcase extends advanced_testcase {
// Create a category.
$category = $this->getDataGenerator()->create_category();
// Save the context before it is deleted.
// Save the original record/context before it is deleted.
$categoryrecord = $category->get_db_record();
$categorycontext = context_coursecat::instance($category->id);
// Catch the update event.
@ -2014,6 +2015,10 @@ class core_course_courselib_testcase extends advanced_testcase {
$this->assertEquals('course_categories', $event->objecttable);
$this->assertEquals($category->id, $event->objectid);
$this->assertEquals($categorycontext->id, $event->contextid);
$this->assertEquals([
'name' => $category->name,
], $event->other);
$this->assertEquals($categoryrecord, $event->get_record_snapshot($event->objecttable, $event->objectid));
$this->assertEquals('course_category_deleted', $event->get_legacy_eventname());
$this->assertEquals(null, $event->get_url());
$this->assertEventLegacyData($category, $event);
@ -2024,7 +2029,8 @@ class core_course_courselib_testcase extends advanced_testcase {
$category = $this->getDataGenerator()->create_category();
$category2 = $this->getDataGenerator()->create_category();
// Save the context before it is moved and then deleted.
// Save the original record/context before it is moved and then deleted.
$category2record = $category2->get_db_record();
$category2context = context_coursecat::instance($category2->id);
// Catch the update event.
@ -2043,6 +2049,11 @@ class core_course_courselib_testcase extends advanced_testcase {
$this->assertEquals('course_categories', $event->objecttable);
$this->assertEquals($category2->id, $event->objectid);
$this->assertEquals($category2context->id, $event->contextid);
$this->assertEquals([
'name' => $category2->name,
'contentmovedcategoryid' => $category->id,
], $event->other);
$this->assertEquals($category2record, $event->get_record_snapshot($event->objecttable, $event->objectid));
$this->assertEquals('course_category_deleted', $event->get_legacy_eventname());
$this->assertEventLegacyData($category2, $event);
$expectedlog = array(SITEID, 'category', 'delete', 'index.php', $category2->name . '(ID ' . $category2->id . ')');

@ -48,6 +48,8 @@ compatibility (to not break third-party plugins without it), legacy_format_rende
course formats don't have their own renderer.
* New external core_course\external\get_state returns current state information for a given course.
* New external function core_course_update_course runs given action to edit course status.
* The `\core\event\course_category_deleted` event is now created with a snapshot of the category record being deleted,
available inside event observers via `$event->get_record_snapshot`
=== 3.11 ===
* A new callback xxx_coursemodule_definition_after_data that allows plugins to extend activity forms after the data is set.