MDL-54771 tool_recyclebin: Don't add temp course to recycle bin

This commit is contained in:
Cameron Ball 2016-07-06 23:13:46 +08:00
parent 1706352d01
commit aa60ab01c3
2 changed files with 17 additions and 0 deletions

View File

@ -158,6 +158,12 @@ function tool_recyclebin_pre_course_module_delete($cm) {
* @param \stdClass $course The course record.
*/
function tool_recyclebin_pre_course_delete($course) {
// It is possible that the course deletion which triggered this hook
// was from an in progress course restore. In that case we do not want
// it in the recycle bin.
if (isset($course->deletesource) && $course->deletesource == 'restore') {
return;
}
// Delete all the items in the course recycle bin, regardless if it enabled or not.
// It may have been enabled, then disabled later on, so may still have content.
$coursebin = new \tool_recyclebin\course_bin($course->id);

View File

@ -38,6 +38,11 @@ class tool_recyclebin_category_bin_tests extends advanced_testcase {
*/
protected $course;
/**
* @var stdClass $coursebeingrestored
*/
protected $coursebeingrestored;
/**
* Setup for each test.
*/
@ -57,10 +62,16 @@ class tool_recyclebin_category_bin_tests extends advanced_testcase {
public function test_pre_course_delete_hook() {
global $DB;
// This simulates a temporary course being cleaned up by a course restore.
$this->coursebeingrestored = $this->getDataGenerator()->create_course();
$this->coursebeingrestored->deletesource = 'restore';
// Should have nothing in the recycle bin.
$this->assertEquals(0, $DB->count_records('tool_recyclebin_category'));
delete_course($this->course, false);
// This should not be added to the recycle bin.
delete_course($this->coursebeingrestored, false);
// Check the course is now in the recycle bin.
$this->assertEquals(1, $DB->count_records('tool_recyclebin_category'));