added strict context level checks to get_context_instance() MDL-6709 , the reason is to find typos and buggy code that would be otherwise unnoticed

This commit is contained in:
skodak 2006-09-27 17:58:17 +00:00
parent 3ca2dea51d
commit a36a3a3f98

View File

@ -1208,16 +1208,24 @@ function validate_context($contextlevel, $instanceid) {
function get_context_instance($contextlevel=NULL, $instance=SITEID) {
global $context_cache, $context_cache_id, $CONTEXT;
static $allowed_contexts = array(CONTEXT_SYSTEM, CONTEXT_PERSONAL, CONTEXT_USER, CONTEXT_COURSECAT, CONTEXT_COURSE, CONTEXT_GROUP, CONTEXT_MODULE, CONTEXT_BLOCK);
/// If no level is supplied then return the current global context if there is one
if (empty($contextlevel)) {
if (empty($CONTEXT)) {
debugging("Error: get_context_instance() called without a context");
//fatal error, code must be fixed
error("Error: get_context_instance() called without a context");
} else {
return $CONTEXT;
}
}
/// check allowed context levels
if (!in_array($contextlevel, $allowed_contexts)) {
// fatal error, code must be fixed - probably typo or switched parameters
error('Error: get_context_instance() called with incorrect context level "'.s($contextlevel).'"');
}
/// Check the cache
if (isset($context_cache[$contextlevel][$instance])) { // Already cached
return $context_cache[$contextlevel][$instance];