]> git.mjollnir.org Git - moodle.git/commitdiff
Extend the require_login in require_capability a bit
authormoodler <moodler>
Sun, 24 Sep 2006 13:15:13 +0000 (13:15 +0000)
committermoodler <moodler>
Sun, 24 Sep 2006 13:15:13 +0000 (13:15 +0000)
lib/accesslib.php

index c5e9b6188a5305eeaed95a8a024f6e0ab16f72b5..7e7421704a2f62a3e56a10f09aac22761fa34182 100755 (executable)
@@ -236,6 +236,12 @@ function require_capability($capability, $context=NULL, $userid=NULL, $doanythin
     if (empty($userid) and empty($USER->id)) {
         if ($context && ($context->contextlevel == CONTEXT_COURSE)) {
             require_login($context->instanceid);
+        } else if ($context && ($context->contextlevel == CONTEXT_MODULE)) {
+            if ($cm = get_record('course_modules','id',$context->instanceid)) {
+                require_login($cm->course, true, $cm);
+            } else {
+                require_login();
+            }
         } else {
             require_login();
         }
@@ -418,6 +424,10 @@ function capability_search($capability, $context, $capabilities) {
 
     global $USER, $CFG;
 
+    if (!isset($context->id)) {
+        return 0;
+    }
+
     if (isset($capabilities[$context->id][$capability])) {
         debugging("Found $capability in context $context->id at level $context->contextlevel: ".$capabilities[$context->id][$capability], DEBUG_DEVELOPER);
         return ($capabilities[$context->id][$capability]);