summaryrefslogtreecommitdiffstats
path: root/apps/user_ldap/user_ldap.php
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@owncloud.com>2012-06-07 18:55:32 +0200
committerArthur Schiwon <blizzz@owncloud.com>2012-06-07 18:55:32 +0200
commitc2f557f1dd89b2ca5a612d7cbf7ab940ea8d1b68 (patch)
tree8e4276ee6df572862a9a1686063280f3338bf3fd /apps/user_ldap/user_ldap.php
parent66265984352850c4045fb5e921ebc1322aa471cd (diff)
downloadnextcloud-server-c2f557f1dd89b2ca5a612d7cbf7ab940ea8d1b68.tar.gz
nextcloud-server-c2f557f1dd89b2ca5a612d7cbf7ab940ea8d1b68.zip
LDAP: cache the results, reduce LDAP searches
Diffstat (limited to 'apps/user_ldap/user_ldap.php')
-rw-r--r--apps/user_ldap/user_ldap.php13
1 files changed, 9 insertions, 4 deletions
diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php
index ba66c7a9ca8..9281aebe81d 100644
--- a/apps/user_ldap/user_ldap.php
+++ b/apps/user_ldap/user_ldap.php
@@ -34,6 +34,9 @@ class OC_USER_LDAP extends OC_User_Backend {
// will be retrieved from LDAP server
protected $ldap_dc = false;
+ // cache getUsers()
+ protected $_users = null;
+
public function __construct() {
$this->ldapUserFilter = OCP\Config::getAppValue('user_ldap', 'ldap_userlist_filter', '(objectClass=posixAccount)');
$this->ldapQuotaAttribute = OCP\Config::getAppValue('user_ldap', 'ldap_quota_attr', '');
@@ -108,9 +111,11 @@ class OC_USER_LDAP extends OC_User_Backend {
* Get a list of all users.
*/
public function getUsers(){
- $ldap_users = OC_LDAP::fetchListOfUsers($this->ldapUserFilter, array(OC_LDAP::conf('ldapUserDisplayName'), 'dn'));
- $users = OC_LDAP::ownCloudUserNames($ldap_users);
- return $users;
+ if(is_null($this->_users)) {
+ $ldap_users = OC_LDAP::fetchListOfUsers($this->ldapUserFilter, array(OC_LDAP::conf('ldapUserDisplayName'), 'dn'));
+ $this->_users = OC_LDAP::ownCloudUserNames($ldap_users);
+ }
+ return $this->_users;
}
/**
@@ -119,7 +124,7 @@ class OC_USER_LDAP extends OC_User_Backend {
* @return boolean
*/
public function userExists($uid){
- return in_array($uid, self::getUsers());
+ return in_array($uid, $this->getUsers());
}
}