]> source.dussan.org Git - nextcloud-server.git/commitdiff
Cache user and group id's to save some queries
authorRobin Appelman <icewind1991@gmail.com>
Mon, 21 Jun 2010 23:27:44 +0000 (01:27 +0200)
committerRobin Appelman <icewind1991@gmail.com>
Mon, 21 Jun 2010 23:27:44 +0000 (01:27 +0200)
inc/lib_user.php

index 99909a332137ccf9c7862e3100c5ddc1500d1050..089d0cb54a16b4582341a9c64272d400b6542e82 100755 (executable)
@@ -27,6 +27,14 @@ if(!$CONFIG_INSTALLED){
        $_SESSION['username_clean']='';
 }
 
+//cache the userid's an groupid's
+if(!isset($_SESSION['user_id_cache'])){
+       $_SESSION['user_id_cache']=array();
+}
+if(!isset($_SESSION['group_id_cache'])){
+       $_SESSION['group_id_cache']=array();
+}
+
 /**
  * Class for usermanagement
  *
@@ -132,6 +140,9 @@ class OC_USER {
        */
        public static function getuserid($username){
                $usernameclean=strtolower($username);
+               if(isset($_SESSION['user_id_cache'][$usernameclean])){//try to use cached value to save an sql query
+                       return $_SESSION['user_id_cache'][$usernameclean];
+               }
                $usernameclean=OC_DB::escape($usernameclean);
                $query="SELECT user_id FROM  users WHERE user_name_clean = '$usernameclean'";
                $result=OC_DB::select($query);
@@ -139,6 +150,7 @@ class OC_USER {
                        return 0;
                }
                if(isset($result[0]) && isset($result[0]['user_id'])){
+                       $_SESSION['user_id_cache'][$usernameclean]=$result[0]['user_id'];
                        return $result[0]['user_id'];
                }else{
                        return 0;
@@ -150,6 +162,9 @@ class OC_USER {
        *
        */
        public static function getgroupid($groupname){
+               if(isset($_SESSION['group_id_cache'][$groupname])){//try to use cached value to save an sql query
+                       return $_SESSION['group_id_cache'][$groupname];
+               }
                $groupname=OC_DB::escape($groupname);
                $query="SELECT group_id FROM groups WHERE  group_name = '$groupname'";
                $result=OC_DB::select($query);
@@ -157,6 +172,7 @@ class OC_USER {
                        return 0;
                }
                if(isset($result[0]) && isset($result[0]['group_id'])){
+                       $_SESSION['group_id_cache'][$groupname]=$result[0]['group_id'];
                        return $result[0]['group_id'];
                }else{
                        return 0;
@@ -168,6 +184,9 @@ class OC_USER {
        *
        */
        public static function getgroupname($groupid){
+               if($name=array_search($groupid,$_SESSION['group_id_cache'])){//try to use cached value to save an sql query
+                       return $name;
+               }
                $groupid=(integer)$groupid;
                $query="SELECT group_name FROM  groups WHERE  group_id =  '$groupid' LIMIT 1";
                $result=OC_DB::select($query);