]> git.mjollnir.org Git - moodle.git/commitdiff
accesslib: simplify and speedup create_context()
authormartinlanghoff <martinlanghoff>
Wed, 19 Sep 2007 07:12:56 +0000 (07:12 +0000)
committermartinlanghoff <martinlanghoff>
Wed, 19 Sep 2007 07:12:56 +0000 (07:12 +0000)
Callers _must_ do their homework before calling create_context().
This allows us to save 2/3 queries per call (!!!).

As it stands, callers are all in accesslib anyway.

lib/accesslib.php

index 5cd35f19a6d2605439eea9d417d9a665941e4197..12cc0c33329509bef7d37ab6f6df2dedf1070f6e 100755 (executable)
@@ -1964,34 +1964,29 @@ function islegacy($capabilityname) {
 
 /**
  * Create a new context record for use by all roles-related stuff
+ * assumes that the caller has done the homework.
+ *
  * @param $level
  * @param $instanceid
  *
  * @return object newly created context (or existing one with a debug warning)
  */
 function create_context($contextlevel, $instanceid) {
-    if (!$context = get_record('context','contextlevel',$contextlevel,'instanceid',$instanceid)) {
-        if (!validate_context($contextlevel, $instanceid)) {
-            debugging('Error: Invalid context creation request for level "'.s($contextlevel).'", instance "'.s($instanceid).'".');
-            return NULL;
-        }
-        if ($contextlevel == CONTEXT_SYSTEM) {
-            return create_system_context();
+    if ($contextlevel == CONTEXT_SYSTEM) {
+        return create_system_context();
+    }
 
-        }
-        $context = new object();
-        $context->contextlevel = $contextlevel;
-        $context->instanceid = $instanceid;
-        if ($id = insert_record('context',$context)) {
-            $c = get_record('context','id',$id);
-            return $c;
-        } else {
-            debugging('Error: could not insert new context level "'.s($contextlevel).'", instance "'.s($instanceid).'".');
-            return NULL;
-        }
+    $context = new object();
+    $context->contextlevel = $contextlevel;
+    $context->instanceid = $instanceid;
+    if ($id = insert_record('context',$context)) {
+        $c = get_record('context','id',$id);
+        return $c;
     } else {
-        debugging('Warning: Context id "'.s($context->id).'" not created, because it already exists.');
-        return $context;
+        debugging('Error: could not insert new context level "'.
+                  s($contextlevel).'", instance "'.
+                  s($instanceid).'".');
+        return NULL;
     }
 }