mirror of
https://github.com/moodle/moodle.git
synced 2025-04-17 22:45:54 +02:00
MDL-76459 xmldb: Add environmental check to verify $CFG->prefix
While, right now, sites using long (> 10 chars) $CFG->prefix can continue working (because we still don't have any table > 28 chars), as soon as some new table with long name is added, it won't work with PostgreSQL anymore (if the 63 limit is raised). Hence, this environmental check will verify on both install and upgrade that the $CFG->prefix is always <= 10 chars. Sites with longer prefixes will need to rename all their tables (and maybe other objects, depending on the dbtype) to use a shorter prefix.
This commit is contained in:
parent
8ac8ea416a
commit
1e3c3ec907
@ -4301,6 +4301,8 @@
|
||||
</CUSTOM_CHECK>
|
||||
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_mod_assignment" level="required">
|
||||
</CUSTOM_CHECK>
|
||||
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_db_prefix_length" level="required">
|
||||
</CUSTOM_CHECK>
|
||||
</CUSTOM_CHECKS>
|
||||
</MOODLE>
|
||||
</COMPATIBILITY_MATRIX>
|
||||
|
@ -467,6 +467,7 @@ $string['customusermenuitems'] = 'User menu items';
|
||||
$string['datarootsecurityerror'] = '<p><strong>SECURITY WARNING!</strong></p><p>Your dataroot directory is in the wrong location and is exposed to the web. This means that all your private files are available to anyone in the world, and some of them could be used by a cracker to obtain unauthorised administrative access to your site!</p>
|
||||
<p>You <em>must</em> move dataroot directory ({$a}) to a new location that is not within your public web directory, and update the <code>$CFG->dataroot</code> setting in your config.php accordingly.</p>';
|
||||
$string['datarootsecuritywarning'] = 'Your site configuration might not be secure. Please make sure that your dataroot directory ({$a}) is not directly accessible via web.';
|
||||
$string['dbprefixtoolong'] = 'Your site\'s database prefix ($CFG->prefix) is too long ({$a->current} characters). The maximum number of characters allowed is {$a->maximum}.';
|
||||
$string['dbsessions'] = 'Use database for session information';
|
||||
$string['debug'] = 'Debug messages';
|
||||
$string['debugall'] = 'ALL: Show all reasonable PHP debug messages';
|
||||
|
@ -2524,6 +2524,26 @@ function check_igbinary322_version(environment_results $result) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function checks that the database prefix ($CFG->prefix) is <= 10
|
||||
*
|
||||
* @param environment_results $result
|
||||
* @return environment_results|null updated results object, or null if the prefix check is passing ok.
|
||||
*/
|
||||
function check_db_prefix_length(environment_results $result) {
|
||||
global $CFG;
|
||||
|
||||
$prefixlen = strlen($CFG->prefix) ?? 0;
|
||||
if ($prefixlen > 10) {
|
||||
$parameters = (object)['current' => $prefixlen, 'maximum' => 10];
|
||||
$result->setFeedbackStr(['dbprefixtoolong', 'admin', $parameters]);
|
||||
$result->setInfo('db prefix too long');
|
||||
$result->setStatus(false);
|
||||
return $result;
|
||||
}
|
||||
return null; // All, good. By returning null we hide the check.
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert the upgrade key is provided, if it is defined.
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user