local_version to the variable $local_version defined in * local/version.php. If not, it looks for a function called 'xmldb_local_upgrade' * in a file called 'local/db/upgrade.php', and if it's there calls it with the * appropiate $oldversion parameter. Then it updates $CFG->local_version. * On success it prints a continue link. On failure it prints an error. * * @uses $CFG * @uses $db to do something really evil with the debug setting that should probably be eliminated. TODO! * @param string $continueto a URL passed to print_continue() if the local upgrades succeed. */ function upgrade_local_db($continueto) { global $CFG, $db; // if we don't have code version or a db upgrade file, just return true, we're unneeded if (!file_exists($CFG->dirroot.'/local/version.php') || !file_exists($CFG->dirroot.'/local/db/upgrade.php')) { return true; } require_once ($CFG->dirroot .'/local/version.php'); // Get code versions if (empty($CFG->local_version)) { // normally we'd install, but just replay all the upgrades. $CFG->local_version = 0; } if ($local_version > $CFG->local_version) { // upgrade! $strdatabaseupgrades = get_string('databaseupgrades'); print_header($strdatabaseupgrades, $strdatabaseupgrades, build_navigation(array(array('name' => $strdatabaseupgrades, 'link' => null, 'type' => 'misc'))), '', upgrade_get_javascript()); upgrade_log_start(); require_once ($CFG->dirroot .'/local/db/upgrade.php'); $db->debug=true; if (xmldb_local_upgrade($CFG->local_version)) { $db->debug=false; if (set_config('local_version', $local_version)) { notify(get_string('databasesuccess'), 'notifysuccess'); notify(get_string('databaseupgradelocal', '', $local_version), 'notifysuccess'); print_continue($continueto); print_footer('none'); exit; } else { error('Upgrade of local database customisations failed! (Could not update version in config table)'); } } else { $db->debug=false; error('Upgrade failed! See local/version.php'); } } else if ($local_version < $CFG->local_version) { upgrade_log_start(); notify('WARNING!!! The local version you are using is OLDER than the version that made these databases!'); } upgrade_log_finish(); } /** * Notify local code that a course is being deleted. * Look for a function local_delete_course() in a file called * local/lib.php andn call it if it is there. * * @param int $courseid the course that is being deleted. * @param bool $showfeedback Whether to display notifications on success. * @return false if local_delete_course failed, or true if * there was noting to do or local_delete_course succeeded. */ function notify_local_delete_course($courseid, $showfeedback) { global $CFG; $localfile = $CFG->dirroot .'/local/lib.php'; if (file_exists($localfile)) { require_once($localfile); if (function_exists('local_delete_course')) { if (local_delete_course($courseid)) { if ($showfeedback) { notify(get_string('deleted') . ' local data'); } } else { return false; } } } return true; } ?>