diff --git a/admin/environment.xml b/admin/environment.xml index 6faa7ded027..55a1aee8825 100644 --- a/admin/environment.xml +++ b/admin/environment.xml @@ -3724,6 +3724,11 @@ + + + + + diff --git a/lang/en/admin.php b/lang/en/admin.php index bbff0ee8b1e..fa4712986d1 100644 --- a/lang/en/admin.php +++ b/lang/en/admin.php @@ -709,6 +709,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.
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 https://www.maxmind.com.'; +$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'; diff --git a/lib/tests/upgradelib_test.php b/lib/tests/upgradelib_test.php index b9769af0d04..e6bc221f1c7 100644 --- a/lib/tests/upgradelib_test.php +++ b/lib/tests/upgradelib_test.php @@ -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()); + } } diff --git a/lib/upgradelib.php b/lib/upgradelib.php index 5d4c5643611..b9f4f7f9cc0 100644 --- a/lib/upgradelib.php +++ b/lib/upgradelib.php @@ -2694,3 +2694,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; +}