From: moodler Date: Thu, 19 Aug 2004 09:37:42 +0000 (+0000) Subject: New library for admin-only functions X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=173cc1c342d87e19b16d3fda22419236c9546480;p=moodle.git New library for admin-only functions --- diff --git a/lib/adminlib.php b/lib/adminlib.php new file mode 100644 index 0000000000..5800820e3d --- /dev/null +++ b/lib/adminlib.php @@ -0,0 +1,198 @@ +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 "
"; + } 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 "
"; + } 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 "
"; + } 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; + } +} + +?>