Skip to content

Commit

Permalink
MDL-77829 core: Added environment check for mod_assignment
Browse files Browse the repository at this point in the history
Decided to add an environment check before uninstalling the
mod_assignment plugin to prevent data lost.
  • Loading branch information
stevandoMoodle committed Apr 10, 2023
1 parent ca59050 commit 83aa818
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 0 deletions.
5 changes: 5 additions & 0 deletions admin/environment.xml
Expand Up @@ -4109,6 +4109,11 @@
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_xmlrpc_usage" level="optional">
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_mod_assignment" level="required">
<FEEDBACK>
<ON_ERROR message="modassignmentinuse" />
</FEEDBACK>
</CUSTOM_CHECK>
</CUSTOM_CHECKS>
</MOODLE>
</COMPATIBILITY_MATRIX>
1 change: 1 addition & 0 deletions lang/en/admin.php
Expand Up @@ -1513,6 +1513,7 @@
$string['xmlrpcwebserviceenabled'] = 'It has been detected that the XML-RPC Web Service protocol is enabled on your site. This feature relies on the PHP XML-RPC extension which is no longer maintained by PHP.';
$string['yuicomboloading'] = 'YUI combo loading';
$string['ziprequired'] = 'The Zip PHP extension is now required by Moodle, info-ZIP binaries or PclZip library are not used anymore.';
$string['modassignmentinuse'] = 'It has been detected that your site is still using the Assignment 2.2 plugin. You may resolve this before upgrading by 1) Backing up your Assignment 2.2 activities and restoring them as new Assignment activities; or 2) Deleting the data from the assignment tables in the database.';


$string['caching'] = 'Caching';
Expand Down
23 changes: 23 additions & 0 deletions lib/tests/upgradelib_test.php
Expand Up @@ -1526,4 +1526,27 @@ public function test_admin_dir_usage_non_standard(): void {
$this->assertEquals('admin_dir_usage', $result->getInfo());
$this->assertFalse($result->getStatus());
}

/**
* Test the check_mod_assignment check if mod_assignment is still used.
*
* @covers ::check_mod_assignment
* @return void
*/
public function test_check_mod_assignment_is_used(): void {
global $DB;

$this->resetAfterTest();
$result = new environment_results('custom_checks');

if ($DB->get_manager()->table_exists('assignment')) {
$DB->insert_record('assignment', (object)['name' => 'test_assign', 'intro' => 'test_assign_intro']);

$this->assertNotNull(check_mod_assignment($result));
$this->assertEquals('Assignment 2.2 is in use', $result->getInfo());
$this->assertFalse($result->getStatus());
} else {
$this->assertTrue($result->getStatus());
}
}
}
19 changes: 19 additions & 0 deletions lib/upgradelib.php
Expand Up @@ -2778,3 +2778,22 @@ function check_xmlrpc_usage(environment_results $result): ?environment_results {

return null;
}

/**
* Check whether the mod_assignment is currently being used.
*
* @param environment_results $result
* @return environment_results|null
*/
function check_mod_assignment(environment_results $result): ?environment_results {
global $DB;

// Check the number of records.
if ($DB->get_manager()->table_exists('assignment') && $DB->count_records('assignment') > 0) {
$result->setInfo('Assignment 2.2 is in use');
$result->setFeedbackStr('modassignmentinuse');
return $result;
}

return null;
}

0 comments on commit 83aa818

Please sign in to comment.