Merge branch 'MDL-72621-master' of git://github.com/andrewnicols/moodle

This commit is contained in:
Eloy Lafuente (stronk7) 2021-10-07 21:06:07 +02:00
commit 8b577dfb46
5 changed files with 72 additions and 2 deletions

View File

@ -3724,6 +3724,11 @@
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_max_input_vars" level="optional">
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_admin_dir_usage" level="optional">
<FEEDBACK>
<ON_CHECK message="iscustomadminwarnings" />
</FEEDBACK>
</CUSTOM_CHECK>
</CUSTOM_CHECKS>
</MOODLE>
</COMPATIBILITY_MATRIX>

View File

@ -166,8 +166,11 @@ $CFG->directorypermissions = 02777;
//=========================================================================
// 5. DIRECTORY LOCATION (most people can just ignore this setting)
// 5. ADMIN DIRECTORY LOCATION (deprecated)
//=========================================================================
// Please note: Support from this feature has been deprecated and it will be
// removed after Moodle 4.2.
//
// A very few webhosts use /admin as a special URL for you to access a
// control panel or something. Unfortunately this conflicts with the
// standard location for the Moodle admin pages. You can work around this

View File

@ -714,6 +714,7 @@ $string['iplookupinfo'] = 'By default Moodle uses the free online NetGeo (The In
It is recommended to install local copy of free GeoLite2 City database from MaxMind.<br />
IP address location is displayed on simple map or using Google Maps. Please note that you need to have a Google account and apply for free Google Maps API key to enable interactive maps.';
$string['iplookupmaxmindnote'] = 'This product includes GeoLite2 data created by MaxMind, available from <a href="https://www.maxmind.com">https://www.maxmind.com</a>.';
$string['iscustomadminwarnings'] = 'It has been detected that your site is using a custom admin directory. This feature is no longer supported and will be removed after Moodle 4.2.';
$string['ishttpswarning'] = 'It has been detected that your site is not secured using HTTPS. It is strongly recommended to migrate your site to HTTPS for increased security and improved integration with other systems.';
$string['keeptagnamecase'] = 'Keep tag name casing';
$string['lang'] = 'Default language';

View File

@ -33,7 +33,7 @@ require_once($CFG->dirroot . '/calendar/tests/helpers.php');
/**
* Tests various classes and functions in upgradelib.php library.
*/
class core_upgradelib_testcase extends advanced_testcase {
class upgradelib_test extends advanced_testcase {
/**
* Test the {@link upgrade_stale_php_files_present() function
@ -1490,4 +1490,40 @@ class core_upgradelib_testcase extends advanced_testcase {
// Since group override events do not set userid, these events should not be flagged to be fixed.
$this->assertEquals(0, $groupoverrideinfo->bad);
}
/**
* Test the admin_dir_usage check with no admin setting specified.
*/
public function test_admin_dir_usage_not_set(): void {
$result = new environment_results("custom_checks");
$this->assertNull(check_admin_dir_usage($result));
}
/**
* Test the admin_dir_usage check with the default admin setting specified.
*/
public function test_admin_dir_usage_is_default(): void {
global $CFG;
$CFG->admin = 'admin';
$result = new environment_results("custom_checks");
$this->assertNull(check_admin_dir_usage($result));
}
/**
* Test the admin_dir_usage check with a custom admin setting specified.
*/
public function test_admin_dir_usage_non_standard(): void {
global $CFG;
$this->resetAfterTest(true);
$CFG->admin = 'notadmin';
$result = new environment_results("custom_checks");
$this->assertInstanceOf(environment_results::class, check_admin_dir_usage($result));
$this->assertEquals('admin_dir_usage', $result->getInfo());
$this->assertFalse($result->getStatus());
}
}

View File

@ -2707,3 +2707,28 @@ function check_max_input_vars(environment_results $result) {
}
return null;
}
/**
* Check whether the admin directory has been configured and warn if so.
*
* The admin directory has been deprecated since Moodle 4.0.
*
* @param environment_results $result
* @return null|environment_results
*/
function check_admin_dir_usage(environment_results $result): ?environment_results {
global $CFG;
if (empty($CFG->admin)) {
return null;
}
if ($CFG->admin === 'admin') {
return null;
}
$result->setInfo('admin_dir_usage');
$result->setStatus(false);
return $result;
}