From 619a5a663ffc63b450add4ab1884f2149d8ca239 Mon Sep 17 00:00:00 2001 From: Daniel Thee Roperto Date: Mon, 26 Sep 2016 12:00:15 +1000 Subject: [PATCH] Issue #50 - Automatically unset maintenance_message and log an error if it had something. --- classes/local/outagelib.php | 9 ++++++ tests/phpunit/outagelib_test.php | 50 ++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 tests/phpunit/outagelib_test.php diff --git a/classes/local/outagelib.php b/classes/local/outagelib.php index befcc7d..5a18c96 100644 --- a/classes/local/outagelib.php +++ b/classes/local/outagelib.php @@ -132,6 +132,15 @@ class outagelib { if (is_null($next)) { unset_config('maintenance_later'); } else { + $message = get_config('moodle', 'maintenance_message'); + if ($message) { + if (!defined('PHPUNIT_TEST') || !PHPUNIT_TEST) { + error_log('Disabling $CFG->maintenance_message to allow our template page to take place.'); + error_log('Previous value: '.$message); + } + // We cannot do much if forced config, but the logs will show the error. + unset_config('maintenance_message'); + } set_config('maintenance_later', $next->starttime); } } diff --git a/tests/phpunit/outagelib_test.php b/tests/phpunit/outagelib_test.php new file mode 100644 index 0000000..58fc50e --- /dev/null +++ b/tests/phpunit/outagelib_test.php @@ -0,0 +1,50 @@ +. + +use auth_outage\dml\outagedb; +use auth_outage\local\outage; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Tests performed on outagelib class. + * + * @package auth_outage + * @author Daniel Thee Roperto + * @copyright 2016 Catalyst IT + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class outagelib_test extends advanced_testcase { + public function test_maintenancemessage() { + global $CFG; + $this->resetAfterTest(true); + static::setAdminUser(); + + $now = time(); + $outage = new outage([ + 'autostart' => true, + 'warntime' => $now, + 'starttime' => $now + 100, + 'stoptime' => $now + 200, + 'title' => 'Title', + 'description' => 'Description', + ]); + + set_config('maintenance_message', 'A message.'); + outagedb::save($outage); + self::assertFalse((bool)get_config('moodle', 'maintenance_message')); + } +}