Whoops will only be used under the following conditions:
- Not an AJAX request
- Not a CLI usage
- debugdisplay is set
- composer dependencies are installed
- Whoops is available
- The configuration setting is enabled
* all constans usable in ABORT_AFTER_CONFIG should be always defined
* MDL_PERFDB and $PERF->logwrites not used after legacy log removal
* MDL_PERF_TEST should be documented in codebase
* deprecated warnings in shutdowb manager
It's important to say that this bug apparently (till now) only happens
when an *incorrect* instalation of a site happens, reusing the dataroot
from another existing site.
When that happens, the localcache/bootstrap.php file from the old
site is reused, setting siteidentifier and SYSCONTEXTID when it's not
time for them to be defined yet.
Their existenece leads to reusing some other structures from the old
dataroot (that, again, should have been changed or wiped!), ultimately
leading to all sort of errors about non-existent tables (course,
context...).
With this change we ensure that:
1) Whenever any change to the database configuration (prefix, user,
type..) happens, it's detected and immediately the information
in the localcache/bootstrap.php is discarded and the file removed.
This should fix problems like MDL-73098 itself.
2) We only set SYSCONTEXTID if the file is not stale. Main reason
for doing that check within the localcache/bootstrap.php file
itself is that we cannot "undefine" it @ setup.php. This should
prevent errros like MDL-72888 to happen.
3) Finally, little detail, we only define SYSCONTEXTID if it has
not been defined earlier. In the past, it was recommended to
define it in config.php (exactly to save one DB read) and, sites
having them will face "already defined" warnings.
It is still used widely in the plugins that would stop working suddenly
without being warned via a debugging message. We must keep it forever as
an alias for the wwwroot.
The new setting will allow to host the temporary backup files
into a specific target directory. Defaults to '$CFG->tempdir/backup'.
Calling make_backup_temp_directory() checks that the required sub-directory
will be properly created under the new target directory.