MDL-81870 core: re-factor duplicate plugin savepoint implementations.

This commit is contained in:
Paul Holden 2024-05-22 20:56:47 +01:00
parent c2eb42fc7b
commit f34e050e9b
No known key found for this signature in database
GPG Key ID: A81A96D6045F6164

View File

@ -373,43 +373,12 @@ function upgrade_main_savepoint($result, $version, $allowabort=true) {
*
* @category upgrade
* @param bool $result false if upgrade step failed, true if completed
* @param string or float $version main version
* @param string|float $version main version
* @param string $modname name of module
* @param bool $allowabort allow user to abort script execution here
* @return void
*/
function upgrade_mod_savepoint($result, $version, $modname, $allowabort=true) {
global $DB;
$component = 'mod_'.$modname;
if (!$result) {
throw new upgrade_exception($component, $version);
}
$dbversion = $DB->get_field('config_plugins', 'value', array('plugin'=>$component, 'name'=>'version'));
if (!$module = $DB->get_record('modules', array('name'=>$modname))) {
throw new \moodle_exception('modulenotexist', 'debug', '', $modname);
}
if ($dbversion >= $version) {
// something really wrong is going on in upgrade script
throw new downgrade_exception($component, $dbversion, $version);
}
set_config('version', $version, $component);
upgrade_log(UPGRADE_LOG_NORMAL, $component, 'Upgrade savepoint reached');
// reset upgrade timeout to default
upgrade_set_timeout();
core_upgrade_time::record_savepoint($version);
// this is a safe place to stop upgrades if user aborts page loading
if ($allowabort and connection_aborted()) {
die;
}
upgrade_plugin_savepoint($result, $version, 'mod', $modname, $allowabort);
}
/**
@ -419,43 +388,12 @@ function upgrade_mod_savepoint($result, $version, $modname, $allowabort=true) {
*
* @category upgrade
* @param bool $result false if upgrade step failed, true if completed
* @param string or float $version main version
* @param string|float $version main version
* @param string $blockname name of block
* @param bool $allowabort allow user to abort script execution here
* @return void
*/
function upgrade_block_savepoint($result, $version, $blockname, $allowabort=true) {
global $DB;
$component = 'block_'.$blockname;
if (!$result) {
throw new upgrade_exception($component, $version);
}
$dbversion = $DB->get_field('config_plugins', 'value', array('plugin'=>$component, 'name'=>'version'));
if (!$block = $DB->get_record('block', array('name'=>$blockname))) {
throw new \moodle_exception('blocknotexist', 'debug', '', $blockname);
}
if ($dbversion >= $version) {
// something really wrong is going on in upgrade script
throw new downgrade_exception($component, $dbversion, $version);
}
set_config('version', $version, $component);
upgrade_log(UPGRADE_LOG_NORMAL, $component, 'Upgrade savepoint reached');
// reset upgrade timeout to default
upgrade_set_timeout();
core_upgrade_time::record_savepoint($version);
// this is a safe place to stop upgrades if user aborts page loading
if ($allowabort and connection_aborted()) {
die;
}
upgrade_plugin_savepoint($result, $version, 'block', $blockname, $allowabort);
}
/**