]> git.mjollnir.org Git - moodle.git/commitdiff
question bank: MDL-18531 if someone can use questions in the quiz context, but not...
authortjhunt <tjhunt>
Wed, 18 Mar 2009 05:02:27 +0000 (05:02 +0000)
committertjhunt <tjhunt>
Wed, 18 Mar 2009 05:02:27 +0000 (05:02 +0000)
lib/questionlib.php

index e6e8c139713b5455b5caa598558e0cf7fd7cdb46..4efaaaf65dbeaa7427c8891623f38d8cd134a031 100644 (file)
@@ -2117,7 +2117,6 @@ function get_question_responses($question, $state) {
     return $r;
 }
 
-
 /**
 * Gets the response given by the user in a particular state
 *
@@ -2327,11 +2326,18 @@ function question_edit_url($context) {
 */
 function question_make_default_categories($contexts) {
     global $DB;
+    static $preferredlevels = array(
+        CONTEXT_COURSE => 4,
+        CONTEXT_MODULE => 3,
+        CONTEXT_COURSECAT => 2,
+        CONTEXT_SYSTEM => 1,
+    );
 
     $toreturn = null;
+    $preferredness = 0;
     // If it already exists, just return it.
     foreach ($contexts as $key => $context) {
-        if (!$exists = $DB->record_exists("question_categories", array('contextid'=>$context->id))){
+        if (!$exists = $DB->record_exists("question_categories", array('contextid'=>$context->id))) {
             // Otherwise, we need to make one
             $category = new stdClass;
             $contextname = print_context_name($context, false, true);
@@ -2348,12 +2354,15 @@ function question_make_default_categories($contexts) {
             $category = question_get_default_category($context->id);
         }
 
-        if ($context->contextlevel == CONTEXT_COURSE){
-            $toreturn = clone($category);
+        if ($preferredlevels[$context->contextlevel] > $preferredness && has_capability('moodle/question:use', $context)) {
+            $toreturn = $category;
+            $preferredness = $preferredlevels[$context->contextlevel];
         }
     }
 
-
+    if (!is_null($toreturn)) {
+        $toreturn = clone($toreturn);
+    }
     return $toreturn;
 }