mirror of
https://github.com/moodle/moodle.git
synced 2025-01-18 22:08:20 +01:00
199 lines
7.2 KiB
PHP
199 lines
7.2 KiB
PHP
|
<?php // $Id$
|
||
|
// Contains functions that only administrators will ever need to use
|
||
|
|
||
|
function upgrade_enrol_plugins($return) {
|
||
|
global $CFG;
|
||
|
|
||
|
if (!$mods = get_list_of_plugins("enrol") ) {
|
||
|
error("No modules installed!");
|
||
|
}
|
||
|
|
||
|
foreach ($mods as $mod) {
|
||
|
|
||
|
$fullmod = "$CFG->dirroot/enrol/$mod";
|
||
|
|
||
|
unset($module);
|
||
|
|
||
|
if ( is_readable("$fullmod/version.php")) {
|
||
|
include_once("$fullmod/version.php"); // defines $module with version etc
|
||
|
} else {
|
||
|
continue; // Nothing to do.
|
||
|
}
|
||
|
|
||
|
if ( is_readable("$fullmod/db/$CFG->dbtype.php")) {
|
||
|
include_once("$fullmod/db/$CFG->dbtype.php"); // defines upgrading function
|
||
|
} else {
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
if (!isset($module)) {
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
if (!empty($module->requires)) {
|
||
|
if ($module->requires > $CFG->version) {
|
||
|
$info->modulename = $mod;
|
||
|
$info->moduleversion = $module->version;
|
||
|
$info->currentmoodle = $CFG->version;
|
||
|
$info->requiremoodle = $module->requires;
|
||
|
notify(get_string('modulerequirementsnotmet', 'error', $info));
|
||
|
unset($info);
|
||
|
continue;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$module->name = $mod; // The name MUST match the directory
|
||
|
|
||
|
$moduleversion = 'enrol_'.$mod.'_version';
|
||
|
|
||
|
if (!isset($CFG->$moduleversion)) {
|
||
|
set_config($moduleversion, 0);
|
||
|
}
|
||
|
|
||
|
if ($CFG->$moduleversion == $module->version) {
|
||
|
// do nothing
|
||
|
} else if ($CFG->$moduleversion < $module->version) {
|
||
|
if (empty($updated_modules)) {
|
||
|
$strmodulesetup = get_string("modulesetup");
|
||
|
print_header($strmodulesetup, $strmodulesetup, $strmodulesetup, "", "", false, " ", " ");
|
||
|
}
|
||
|
print_heading("$module->name module needs upgrading");
|
||
|
$upgrade_function = $module->name."_upgrade";
|
||
|
if (function_exists($upgrade_function)) {
|
||
|
$db->debug=true;
|
||
|
if ($upgrade_function($currmodule->version)) {
|
||
|
$db->debug=false;
|
||
|
// OK so far, now update the modules record
|
||
|
set_config($moduleversion, $module->version);
|
||
|
notify(get_string("modulesuccess", "", $module->name), "green");
|
||
|
echo "<hr />";
|
||
|
} else {
|
||
|
$db->debug=false;
|
||
|
notify("Upgrading $module->name from $currmodule->version to $module->version FAILED!");
|
||
|
}
|
||
|
}
|
||
|
$updated_modules = true;
|
||
|
} else {
|
||
|
error("Version mismatch: $module->name can't downgrade $currmodule->version -> $module->version !");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (!empty($updated_modules)) {
|
||
|
print_continue($return);
|
||
|
die;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function upgrade_activity_modules($return) {
|
||
|
/// Find and check all modules and load them up or upgrade them if necessary
|
||
|
|
||
|
global $CFG;
|
||
|
|
||
|
if (!$mods = get_list_of_plugins("mod") ) {
|
||
|
error("No modules installed!");
|
||
|
}
|
||
|
|
||
|
foreach ($mods as $mod) {
|
||
|
|
||
|
if ($mod == "NEWMODULE") { // Someone has unzipped the template, ignore it
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
$fullmod = "$CFG->dirroot/mod/$mod";
|
||
|
|
||
|
unset($module);
|
||
|
|
||
|
if ( is_readable("$fullmod/version.php")) {
|
||
|
include_once("$fullmod/version.php"); # defines $module with version etc
|
||
|
} else {
|
||
|
notify("Module $mod: $fullmod/version.php was not readable");
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
if ( is_readable("$fullmod/db/$CFG->dbtype.php")) {
|
||
|
include_once("$fullmod/db/$CFG->dbtype.php"); # defines upgrading function
|
||
|
} else {
|
||
|
notify("Module $mod: $fullmod/db/$CFG->dbtype.php was not readable");
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
if (!isset($module)) {
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
if (!empty($module->requires)) {
|
||
|
if ($module->requires > $CFG->version) {
|
||
|
$info->modulename = $mod;
|
||
|
$info->moduleversion = $module->version;
|
||
|
$info->currentmoodle = $CFG->version;
|
||
|
$info->requiremoodle = $module->requires;
|
||
|
notify(get_string('modulerequirementsnotmet', 'error', $info));
|
||
|
unset($info);
|
||
|
continue;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$module->name = $mod; // The name MUST match the directory
|
||
|
|
||
|
if ($currmodule = get_record("modules", "name", $module->name)) {
|
||
|
if ($currmodule->version == $module->version) {
|
||
|
// do nothing
|
||
|
} else if ($currmodule->version < $module->version) {
|
||
|
if (empty($updated_modules)) {
|
||
|
$strmodulesetup = get_string("modulesetup");
|
||
|
print_header($strmodulesetup, $strmodulesetup, $strmodulesetup, "", "", false, " ", " ");
|
||
|
}
|
||
|
print_heading("$module->name module needs upgrading");
|
||
|
$upgrade_function = $module->name."_upgrade";
|
||
|
if (function_exists($upgrade_function)) {
|
||
|
$db->debug=true;
|
||
|
if ($upgrade_function($currmodule->version, $module)) {
|
||
|
$db->debug=false;
|
||
|
// OK so far, now update the modules record
|
||
|
$module->id = $currmodule->id;
|
||
|
if (! update_record("modules", $module)) {
|
||
|
error("Could not update $module->name record in modules table!");
|
||
|
}
|
||
|
notify(get_string("modulesuccess", "", $module->name), "green");
|
||
|
echo "<hr />";
|
||
|
} else {
|
||
|
$db->debug=false;
|
||
|
notify("Upgrading $module->name from $currmodule->version to $module->version FAILED!");
|
||
|
}
|
||
|
}
|
||
|
$updated_modules = true;
|
||
|
} else {
|
||
|
error("Version mismatch: $module->name can't downgrade $currmodule->version -> $module->version !");
|
||
|
}
|
||
|
|
||
|
} else { // module not installed yet, so install it
|
||
|
if (empty($updated_modules)) {
|
||
|
$strmodulesetup = get_string("modulesetup");
|
||
|
print_header($strmodulesetup, $strmodulesetup, $strmodulesetup, "", "", false, " ", " ");
|
||
|
}
|
||
|
print_heading($module->name);
|
||
|
$updated_modules = true;
|
||
|
$db->debug = true;
|
||
|
@set_time_limit(0); // To allow slow databases to complete the long SQL
|
||
|
if (modify_database("$fullmod/db/$CFG->dbtype.sql")) {
|
||
|
$db->debug = false;
|
||
|
if ($module->id = insert_record("modules", $module)) {
|
||
|
notify(get_string("modulesuccess", "", $module->name), "green");
|
||
|
echo "<hr />";
|
||
|
} else {
|
||
|
error("$module->name module could not be added to the module list!");
|
||
|
}
|
||
|
} else {
|
||
|
error("$module->name tables could NOT be set up successfully!");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (!empty($updated_modules)) {
|
||
|
print_continue($return);
|
||
|
die;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
?>
|