2 // Contains functions that only administrators will ever need to use
4 function upgrade_enrol_plugins($return) {
7 if (!$mods = get_list_of_plugins("enrol") ) {
8 error("No modules installed!");
11 foreach ($mods as $mod) {
13 $fullmod = "$CFG->dirroot/enrol/$mod";
17 if ( is_readable("$fullmod/version.php")) {
18 include_once("$fullmod/version.php"); // defines $module with version etc
20 continue; // Nothing to do.
23 if ( is_readable("$fullmod/db/$CFG->dbtype.php")) {
24 include_once("$fullmod/db/$CFG->dbtype.php"); // defines upgrading function
29 if (!isset($module)) {
33 if (!empty($module->requires
)) {
34 if ($module->requires
> $CFG->version
) {
35 $info->modulename
= $mod;
36 $info->moduleversion
= $module->version
;
37 $info->currentmoodle
= $CFG->version
;
38 $info->requiremoodle
= $module->requires
;
39 notify(get_string('modulerequirementsnotmet', 'error', $info));
45 $module->name
= $mod; // The name MUST match the directory
47 $moduleversion = 'enrol_'.$mod.'_version';
49 if (!isset($CFG->$moduleversion)) {
50 set_config($moduleversion, 0);
53 if ($CFG->$moduleversion == $module->version
) {
55 } else if ($CFG->$moduleversion < $module->version
) {
56 if (empty($updated_modules)) {
57 $strmodulesetup = get_string("modulesetup");
58 print_header($strmodulesetup, $strmodulesetup, $strmodulesetup, "", "", false, " ", " ");
60 print_heading("$module->name module needs upgrading");
61 $upgrade_function = $module->name
."_upgrade";
62 if (function_exists($upgrade_function)) {
64 if ($upgrade_function($CFG->$moduleversion)) {
66 // OK so far, now update the modules record
67 set_config($moduleversion, $module->version
);
68 notify(get_string("modulesuccess", "", $module->name
), "green");
72 notify("Upgrading $module->name from ".$CFG->$moduleversion." to $module->version FAILED!");
75 $updated_modules = true;
77 error("Version mismatch: $module->name can't downgrade ".$CFG->$moduleversion." -> $module->version !");
81 if (!empty($updated_modules)) {
82 print_continue($return);
87 function upgrade_activity_modules($return) {
88 /// Find and check all modules and load them up or upgrade them if necessary
92 if (!$mods = get_list_of_plugins("mod") ) {
93 error("No modules installed!");
96 foreach ($mods as $mod) {
98 if ($mod == "NEWMODULE") { // Someone has unzipped the template, ignore it
102 $fullmod = "$CFG->dirroot/mod/$mod";
106 if ( is_readable("$fullmod/version.php")) {
107 include_once("$fullmod/version.php"); # defines $module with version etc
109 notify("Module $mod: $fullmod/version.php was not readable");
113 if ( is_readable("$fullmod/db/$CFG->dbtype.php")) {
114 include_once("$fullmod/db/$CFG->dbtype.php"); # defines upgrading function
116 notify("Module $mod: $fullmod/db/$CFG->dbtype.php was not readable");
120 if (!isset($module)) {
124 if (!empty($module->requires
)) {
125 if ($module->requires
> $CFG->version
) {
126 $info->modulename
= $mod;
127 $info->moduleversion
= $module->version
;
128 $info->currentmoodle
= $CFG->version
;
129 $info->requiremoodle
= $module->requires
;
130 notify(get_string('modulerequirementsnotmet', 'error', $info));
136 $module->name
= $mod; // The name MUST match the directory
138 if ($currmodule = get_record("modules", "name", $module->name
)) {
139 if ($currmodule->version
== $module->version
) {
141 } else if ($currmodule->version
< $module->version
) {
142 if (empty($updated_modules)) {
143 $strmodulesetup = get_string("modulesetup");
144 print_header($strmodulesetup, $strmodulesetup, $strmodulesetup, "", "", false, " ", " ");
146 print_heading("$module->name module needs upgrading");
147 $upgrade_function = $module->name
."_upgrade";
148 if (function_exists($upgrade_function)) {
150 if ($upgrade_function($currmodule->version
, $module)) {
152 // OK so far, now update the modules record
153 $module->id
= $currmodule->id
;
154 if (! update_record("modules", $module)) {
155 error("Could not update $module->name record in modules table!");
157 notify(get_string("modulesuccess", "", $module->name
), "green");
161 notify("Upgrading $module->name from $currmodule->version to $module->version FAILED!");
164 $updated_modules = true;
166 error("Version mismatch: $module->name can't downgrade $currmodule->version -> $module->version !");
169 } else { // module not installed yet, so install it
170 if (empty($updated_modules)) {
171 $strmodulesetup = get_string("modulesetup");
172 print_header($strmodulesetup, $strmodulesetup, $strmodulesetup, "", "", false, " ", " ");
174 print_heading($module->name
);
175 $updated_modules = true;
177 @set_time_limit
(0); // To allow slow databases to complete the long SQL
178 if (modify_database("$fullmod/db/$CFG->dbtype.sql")) {
180 if ($module->id
= insert_record("modules", $module)) {
181 notify(get_string("modulesuccess", "", $module->name
), "green");
184 error("$module->name module could not be added to the module list!");
187 error("$module->name tables could NOT be set up successfully!");
192 if (!empty($updated_modules)) {
193 print_continue($return);