]> source.dussan.org Git - nextcloud-server.git/commitdiff
Delay loading user preferences until we need them 31363/head
authorJoas Schilling <coding@schilljs.com>
Fri, 25 Feb 2022 23:34:17 +0000 (00:34 +0100)
committerJoas Schilling <coding@schilljs.com>
Mon, 28 Feb 2022 12:49:12 +0000 (13:49 +0100)
Signed-off-by: Joas Schilling <coding@schilljs.com>
lib/private/User/User.php

index 5fa1272f95cc811e2693fa69143d1d59ab774444..0a51622428bb9f998206d8a775dbbbc02e82a476 100644 (file)
@@ -73,7 +73,7 @@ class User implements IUser {
        /** @var IEventDispatcher */
        private $dispatcher;
 
-       /** @var bool */
+       /** @var bool|null */
        private $enabled;
 
        /** @var Emitter|Manager */
@@ -82,7 +82,7 @@ class User implements IUser {
        /** @var string */
        private $home;
 
-       /** @var int */
+       /** @var int|null */
        private $lastLogin;
 
        /** @var \OCP\IConfig */
@@ -104,9 +104,6 @@ class User implements IUser {
                }
                $this->config = $config;
                $this->urlGenerator = $urlGenerator;
-               $enabled = $this->config->getUserValue($uid, 'core', 'enabled', 'true');
-               $this->enabled = ($enabled === 'true');
-               $this->lastLogin = $this->config->getUserValue($uid, 'login', 'lastLogin', 0);
                if (is_null($this->urlGenerator)) {
                        $this->urlGenerator = \OC::$server->getURLGenerator();
                }
@@ -231,14 +228,17 @@ class User implements IUser {
         * @return int
         */
        public function getLastLogin() {
-               return $this->lastLogin;
+               if ($this->lastLogin === null) {
+                       $this->lastLogin = (int) $this->config->getUserValue($this->uid, 'login', 'lastLogin', 0);
+               }
+               return (int) $this->lastLogin;
        }
 
        /**
         * updates the timestamp of the most recent login of this user
         */
        public function updateLastLoginTimestamp() {
-               $firstTimeLogin = ($this->lastLogin === 0);
+               $firstTimeLogin = ($this->getLastLogin() === 0);
                $this->lastLogin = time();
                $this->config->setUserValue(
                        $this->uid, 'login', 'lastLogin', $this->lastLogin);
@@ -406,7 +406,11 @@ class User implements IUser {
         * @return bool
         */
        public function isEnabled() {
-               return $this->enabled;
+               if ($this->enabled === null) {
+                       $enabled = $this->config->getUserValue($this->uid, 'core', 'enabled', 'true');
+                       $this->enabled = $enabled === 'true';
+               }
+               return (bool) $this->enabled;
        }
 
        /**