MDL-31528 navigation: Replaced calls to deprecated context_instance_preload
authorSam Hemelryk <sam@moodle.com>
Tue, 6 Mar 2012 22:37:21 +0000 (11:37 +1300)
committerSam Hemelryk <sam@moodle.com>
Thu, 15 Mar 2012 21:36:00 +0000 (10:36 +1300)
course/category.php
lib/navigationlib.php

index a2697e5..9a74df8 100644 (file)
@@ -251,14 +251,16 @@ if (has_capability('moodle/category:viewhiddencategories', $context)) {
 }
 // We're going to preload the context for the subcategory as we know that we
 // need it later on for formatting.
-list($ctxselect, $ctxjoin) = context_instance_preload_sql('cc.id', CONTEXT_COURSECAT, 'ctx');
-$sql = "SELECT cc.* $ctxselect
+
+$ctxselect = context_helper::get_preload_record_columns_sql('ctx');
+$sql = "SELECT cc.*, $ctxselect
           FROM {course_categories} cc
-               $ctxjoin
-         WHERE cc.parent = :parentid
+          JOIN {context} ctx ON cc.id = ctx.instanceid
+         WHERE cc.parent = :parentid AND
+               ctx.contextlevel = :contextlevel
                $categorywhere
       ORDER BY cc.sortorder ASC";
-$subcategories = $DB->get_recordset_sql($sql, array('parentid' => $category->id));
+$subcategories = $DB->get_recordset_sql($sql, array('parentid' => $category->id, 'contextlevel' => CONTEXT_COURSECAT));
 // Prepare a table to display the sub categories.
 $table = new html_table;
 $table->attributes = array('border' => '0', 'cellspacing' => '2', 'cellpadding' => '4', 'class' => 'generalbox boxaligncenter category_subcategories');
@@ -266,7 +268,7 @@ $table->head = array(new lang_string('subcategories'));
 $table->data = array();
 foreach ($subcategories as $subcategory) {
     // Preload the context we will need it to format the category name shortly.
-    context_instance_preload($subcategory);
+    context_helper::preload_from_record($subcategory);
     $context = get_context_instance(CONTEXT_COURSECAT, $subcategory->id);
     // Prepare the things we need to create a link to the subcategory
     $attributes = $subcategory->visible ? array() : array('class' => 'dimmed');
index 1b7fb96..b018a4a 100644 (file)
@@ -1484,13 +1484,16 @@ class global_navigation extends navigation_node {
             $categoryselect = '';
         }
 
-        list($ccselect, $ccjoin) = context_instance_preload_sql('c.id', CONTEXT_COURSE, 'ctx');
+        $ccselect = context_helper::get_preload_record_columns_sql('ctx');
+        $params['contextlevel'] = CONTEXT_COURSE;
         list($courseids, $courseparams) = $DB->get_in_or_equal(array_keys($this->addedcourses) + array(SITEID), SQL_PARAMS_NAMED, 'lcourse', false);
-        $sql = "SELECT c.id, c.sortorder, c.visible, c.fullname, c.shortname, c.category, cat.path AS categorypath $ccselect
+        $sql = "SELECT c.id, c.sortorder, c.visible, c.fullname, c.shortname, c.category, cat.path AS categorypath, $ccselect
                   FROM {course} c
-                       $ccjoin
+                  JOIN {context} ctx ON c.id = ctx.instanceid
              LEFT JOIN {course_categories} cat ON cat.id=c.category
-                 WHERE c.id {$courseids} {$categoryselect}
+                 WHERE c.id {$courseids} AND
+                       ctx.contextlevel = :contextlevel
+                       {$categoryselect}
               ORDER BY c.sortorder ASC";
         $limit = 20;
         if (!empty($CFG->navcourselimit)) {
@@ -1500,7 +1503,7 @@ class global_navigation extends navigation_node {
 
         $coursenodes = array();
         foreach ($courses as $course) {
-            context_instance_preload($course);
+            context_helper::preload_from_record($course);
             $coursenodes[$course->id] = $this->add_course($course);
         }
         return $coursenodes;
@@ -1980,10 +1983,14 @@ class global_navigation extends navigation_node {
             $user = $USER;
         } else if (!is_object($user)) {
             // If the user is not an object then get them from the database
-            list($select, $join) = context_instance_preload_sql('u.id', CONTEXT_USER, 'ctx');
-            $sql = "SELECT u.* $select FROM {user} u $join WHERE u.id = :userid";
-            $user = $DB->get_record_sql($sql, array('userid' => (int)$user), MUST_EXIST);
-            context_instance_preload($user);
+            $select = context_helper::get_preload_record_columns_sql('ctx');
+            $sql = "SELECT u.*, $select
+                      FROM {user} u
+                      JOIN {context} ctx ON u.id = ctx.instanceid
+                     WHERE u.id = :userid AND
+                           ctx.contextlevel = :contextlevel";
+            $user = $DB->get_record_sql($sql, array('userid' => (int)$user, 'contextlevel' => CONTEXT_USER), MUST_EXIST);
+            context_helper::preload_from_record($user);
         }
 
         $iscurrentuser = ($user->id == $USER->id);
@@ -3699,10 +3706,14 @@ class settings_navigation extends navigation_node {
             if (!empty($this->page->course->id) && $this->page->course->id == $courseid) {
                 $course = $this->page->course;
             } else {
-                list($select, $join) = context_instance_preload_sql('c.id', CONTEXT_COURSE, 'ctx');
-                $sql = "SELECT c.* $select FROM {course} c $join WHERE c.id = :courseid";
-                $course = $DB->get_record_sql($sql, array('courseid' => $courseid), MUST_EXIST);
-                context_instance_preload($course);
+                $select = context_helper::get_preload_record_columns_sql('ctx');
+                $sql = "SELECT c.*, $select
+                          FROM {course} c
+                          JOIN {context} ctx ON c.id = ctx.instanceid
+                         WHERE c.id = :courseid AND ctx.contextlevel = :contextlevel";
+                $params = array('courseid' => $courseid, 'contextlevel' => CONTEXT_COURSE);
+                $course = $DB->get_record_sql($sql, $params, MUST_EXIST);
+                context_helper::preload_from_record($course);
             }
         } else {
             $course = $SITE;
@@ -3716,14 +3727,17 @@ class settings_navigation extends navigation_node {
             $user = $USER;
             $usercontext = get_context_instance(CONTEXT_USER, $user->id);       // User context
         } else {
-
-            list($select, $join) = context_instance_preload_sql('u.id', CONTEXT_USER, 'ctx');
-            $sql = "SELECT u.* $select FROM {user} u $join WHERE u.id = :userid";
-            $user = $DB->get_record_sql($sql, array('userid' => $userid), IGNORE_MISSING);
+            $select = context_helper::get_preload_record_columns_sql('ctx');
+            $sql = "SELECT u.*, $select
+                      FROM {user} u
+                      JOIN {context} ctx ON u.id = ctx.instanceid
+                     WHERE u.id = :userid AND ctx.contextlevel = :contextlevel";
+            $params = array('userid' => $userid, 'contextlevel' => CONTEXT_USER);
+            $user = $DB->get_record_sql($sql, $params, IGNORE_MISSING);
             if (!$user) {
                 return false;
             }
-            context_instance_preload($user);
+            context_helper::preload_from_record($user);
 
             // Check that the user can view the profile
             $usercontext = get_context_instance(CONTEXT_USER, $user->id); // User context