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

This commit is contained in:
Paul Holden
2021-07-01 10:31:57 +08:00
committed by Andrew Nicols
parent b18f066ff2
commit a263679bdd
3 changed files with 19 additions and 2 deletions
+4
View File
@@ -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();
+13 -2
View File
@@ -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 . ')');
+2
View File
@@ -13,6 +13,8 @@ information provided here is intended especially for developers.
- activity_dates_information_in_activity_should_not_exist()
- Given the activity date information in "<ActivityName>" should not exist
* A user preference usemodchooser has been removed and the activities/resources (non-ajax) activity chooser has been deprecated and will be removed in the future.
* 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.10 ===