MDL-64049 core: Cache prefs for current user
authorAndrew Nicols <andrew@nicols.co.uk>
Fri, 16 Nov 2018 05:58:54 +0000 (13:58 +0800)
committerAndrew Nicols <andrew@nicols.co.uk>
Mon, 19 Nov 2018 03:23:59 +0000 (11:23 +0800)
We were already caching these preferences when a user object is provided
to get_user_preferences, or when $USER is provided.

This changee swaps get_user_preferences to use the global USER object
when the USER->id matches the userid supplied to the function.

lib/moodlelib.php
repository/flickr/tests/privacy_test.php

index 6d758b2..18e7a74 100644 (file)
@@ -2088,7 +2088,11 @@ function get_user_preferences($name = null, $default = null, $user = null) {
     } else if (isset($user->id)) {
         // Is a valid object.
     } else if (is_numeric($user)) {
     } else if (isset($user->id)) {
         // Is a valid object.
     } else if (is_numeric($user)) {
-        $user = (object)array('id' => (int)$user);
+        if ($USER->id == $user) {
+            $user = $USER;
+        } else {
+            $user = (object)array('id' => (int)$user);
+        }
     } else {
         throw new coding_exception('Invalid $user parameter in get_user_preferences() call');
     }
     } else {
         throw new coding_exception('Invalid $user parameter in get_user_preferences() call');
     }
index 1d9613b..c86476b 100644 (file)
@@ -64,18 +64,11 @@ class repository_flickr_privacy_testcase extends provider_testcase {
         $this->assertFalse($writer->has_any_data());
 
         // Test exporting of Flickr repository user preferences *with* OAuth token/secret preference configured.
         $this->assertFalse($writer->has_any_data());
 
         // Test exporting of Flickr repository user preferences *with* OAuth token/secret preference configured.
-        $preference = (object) [
-            'userid' => $user->id,
-            'name' => 'repository_flickr_access_token',
-            'value' => 'dummy flickr oauth access token'
-        ];
-        $DB->insert_record('user_preferences', $preference);
-        $preference = (object) [
-            'userid' => $user->id,
-            'name' => 'repository_flickr_access_token_secret',
-            'value' => 'dummy flickr oauth access token secret'
-        ];
-        $DB->insert_record('user_preferences', $preference);
+        set_user_preferences([
+            'repository_flickr_access_token' => 'dummy flickr oauth access token',
+            'repository_flickr_access_token_secret' => 'dummy flickr oauth access token secret',
+        ], $user->id);
+
         provider::export_user_preferences($user->id);
         $writer = writer::with_context($contextuser);
 
         provider::export_user_preferences($user->id);
         $writer = writer::with_context($contextuser);