Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
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
  • Loading branch information
skodak committed Sep 27, 2006
1 parent 3ca2dea commit a36a3a3
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion lib/accesslib.php
Expand Up @@ -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];
Expand Down

0 comments on commit a36a3a3

Please sign in to comment.