/**
  * Caches the general LDAP configuration.
  */
 private static function readConfiguration($force = false)
 {
     if (!self::$configured || $force) {
         self::$ldapHost = OCP\Config::getAppValue('user_ldap', 'ldap_host', '');
         self::$ldapPort = OCP\Config::getAppValue('user_ldap', 'ldap_port', 389);
         self::$ldapAgentName = OCP\Config::getAppValue('user_ldap', 'ldap_dn', '');
         self::$ldapAgentPassword = base64_decode(OCP\Config::getAppValue('user_ldap', 'ldap_agent_password', ''));
         self::$ldapBase = OCP\Config::getAppValue('user_ldap', 'ldap_base', '');
         self::$ldapBaseUsers = OCP\Config::getAppValue('user_ldap', 'ldap_base_users', self::$ldapBase);
         self::$ldapBaseGroups = OCP\Config::getAppValue('user_ldap', 'ldap_base_groups', self::$ldapBase);
         self::$ldapTLS = OCP\Config::getAppValue('user_ldap', 'ldap_tls', 0);
         self::$ldapNoCase = OCP\Config::getAppValue('user_ldap', 'ldap_nocase', 0);
         self::$ldapUserDisplayName = strtolower(OCP\Config::getAppValue('user_ldap', 'ldap_display_name', 'uid'));
         self::$ldapUserFilter = OCP\Config::getAppValue('user_ldap', 'ldap_userlist_filter', 'objectClass=person');
         self::$ldapLoginFilter = OCP\Config::getAppValue('user_ldap', 'ldap_login_filter', '(uid=%uid)');
         self::$ldapGroupDisplayName = strtolower(OCP\Config::getAppValue('user_ldap', 'ldap_group_display_name', LDAP_GROUP_DISPLAY_NAME_ATTR));
         self::$ldapIgnoreNamingRules = OCP\Config::getSystemValue('ldapIgnoreNamingRules', false);
         if (empty(self::$ldapBaseUsers)) {
             OCP\Util::writeLog('ldap', 'Base for Users is empty, using Base DN', OCP\Util::INFO);
             self::$ldapBaseUsers = self::$ldapBase;
         }
         if (empty(self::$ldapBaseGroups)) {
             OCP\Util::writeLog('ldap', 'Base for Groups is empty, using Base DN', OCP\Util::INFO);
             self::$ldapBaseGroups = self::$ldapBase;
         }
         if (!empty(self::$ldapHost) && !empty(self::$ldapPort) && (!empty(self::$ldapAgentName) && !empty(self::$ldapAgentPassword) || empty(self::$ldapAgentName) && empty(self::$ldapAgentPassword)) && !empty(self::$ldapBase) && !empty(self::$ldapUserDisplayName)) {
             self::$configured = true;
         }
     }
 }