array( * 'captype' => 'read', * 'contextlevel' => CONTEXT_SYSTEM, * ), * ); * * Note that for all local capabilities you add, you'll need to add language strings. * Moodle will expect to find them in local/lang/en_utf8/local.php (eg for English) * with a key (following the above example) of local:capability * See the next section for local language support. * * * Local language support * ---------------------- * * Moodle supports looking in the local/ directory for language files. * You would need to create local/lang/en_utf8/local.php * and then could call strings like get_string('key', 'local'); * Make sure you don't call the language file something that moodle already has one of, * stick to local or $clientname) * * * Local admin menu items * ---------------------- * * It is possible to add new items to the admin_tree block. * To do this, create a file, local/settings.php * which can access the $ADMIN variable directly and add things to it. * You might do something like: * $ADMIN->add('root', new admin_category($name, $title); * $ADMIN->add('foo', new admin_externalpage($name, $title, $url, $cap); * * * Course deletion * --------------- * * To have your local customisations notified when a course is deleted, * make a file called * * local/lib.php * * In there, implement the function local_delete_course($courseid). This * function will then be called whenever the functions remove_course_contents() * or delete_course() from moodlelib are called. */ /** * This function checks to see whether local database customisations are up-to-date * by comparing $CFG->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 * @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'); if (!defined('CLI_UPGRADE') || !CLI_UPGRADE ) { 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'); if (!defined('CLI_UPGRADE') || !CLI_UPGRADE ) { $DB->set_debug(true); } if (xmldb_local_upgrade($CFG->local_version)) { if (!defined('CLI_UPGRADE') || !CLI_UPGRADE ) { $DB->set_debug(false); } if (set_config('local_version', $local_version)) { notify(get_string('databasesuccess'), 'notifysuccess'); notify(get_string('databaseupgradelocal', '', $local_version), 'notifysuccess'); if (!defined('CLI_UPGRADE') || !CLI_UPGRADE ) { print_continue($continueto); print_footer('none'); exit; } else if (CLI_UPGRADE && ($interactive > CLI_SEMI) ) { console_write(STDOUT,'askcontinue'); if (read_boolean()){ return ; }else { console_write(STDERR,'','',false); } } } else { print_error('cannotupgradedbcustom', 'debug'); } } else { if (!defined('CLI_UPGRADE') || !CLI_UPGRADE ) { $DB->set_debug(false); } print_error('upgradefail', 'debug', '', '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!'); } /// Capabilities if (!update_capabilities('local')) { error('Could not set up the capabilities for local!'); } 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; } ?>