Common subdirectories: ldap_integration/includes and ldap_integration_new/includes
diff -up ldap_integration/ldapauth.admin.inc ldap_integration_new/ldapauth.admin.inc
--- ldap_integration/ldapauth.admin.inc	2009-10-27 10:29:16.000000000 -0400
+++ ldap_integration_new/ldapauth.admin.inc	2010-02-18 15:03:08.000000000 -0500
@@ -147,8 +147,8 @@ function ldapauth_admin_settings_submit(
  */
 function ldapauth_admin_list() {
   $form['list'] = array();
-  $result = db_query("SELECT sid, name, status, weight FROM {ldapauth} ORDER BY weight");
-  while ($row = db_fetch_object($result)) {
+  $result = ldapauth_get_server_list();
+  foreach($result as $row) {
     $form['list'][$row->sid] = array(
       'name' => array('#value' => $row->name),
       'status' => array('#value' => $row->status),
@@ -179,7 +179,7 @@ function ldapauth_admin_list_submit($for
       foreach ($form_state['clicked_button']['#post'] as $name => $val) {
         if (preg_match('/^sid_.*_weight/', $name)) {
           $sid = preg_replace(array('/^sid_/', '/_weight$/'), array('', ''), $name);
-          db_query("UPDATE {ldapauth} SET weight = %d WHERE sid = %d", $val, $sid);
+          ldapauth_update_server_weight($sid, $val);
         }
       }
       break;
@@ -202,29 +202,13 @@ function ldapauth_admin_list_submit($for
 function ldapauth_admin_form(&$form_state, $op = NULL, $sid = NULL) {
   drupal_add_js(drupal_get_path('module', 'ldapauth') .'/ldapauth.admin.js');
 
+  $edit = ldapauth_get_server($sid);
   if ($op == "edit" && $sid) {
-    $edit = db_fetch_array(db_query("SELECT * FROM {ldapauth} WHERE sid = %d", $sid));
     $form['sid'] = array(
       '#type' => 'hidden',
       '#value' => $sid,
     );
   }
-  else {
-    $edit = array(
-      'name' => '',
-      'server' => '',
-      'port' => '389',
-      'tls' => 0,
-      'encrypted' => 0,
-      'basedn' => '',
-      'user_attr' => LDAPAUTH_DEFAULT_USER_ATTR,
-      'mail_attr' => LDAPAUTH_DEFAULT_MAIL_ATTR,
-      'binddn' => '',
-      'bindpw' => FALSE,
-      'login_php' => '',
-      'filter_php' => '',
-    );
-  }
 
   $form['server-settings'] = array(
     '#type' => 'fieldset',
@@ -325,11 +309,27 @@ function ldapauth_admin_form(&$form_stat
     '#collapsible' => TRUE,
     '#collapsed' => FALSE,
   );
+
+  if ($edit['binddn'] == 'user') {
+    $userbind = TRUE;
+    $binddn = '';
+  }
+  else {
+    $userbind = FALSE;
+    $binddn = $edit['binddn'];
+  }
+
+  $form['advanced']['userbind'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Use credentials of user logging in for non-anonymous search'),
+    '#default_value' => $userbind,
+  );
+
   if (!$edit['bindpw']) {
     $form['advanced']['binddn'] =  array(
       '#type' => 'textfield',
       '#title' => t('DN for non-anonymous search'),
-      '#default_value' => $edit['binddn'],
+      '#default_value' => $binddn,
       '#size' => 50,
       '#maxlength' => 255,
     );
@@ -373,9 +373,11 @@ function ldapauth_admin_form(&$form_stat
 function ldapauth_admin_form_validate($form, &$form_state) {
   $values = $form_state['values'];
 
-  if (!isset($values['sid'])) {
-    if (db_fetch_object(db_query("SELECT name FROM {ldapauth} WHERE name = '%s'", $values['name']))) {
-      form_set_error('name', t('An LDAP config with the  name %name already exists.', array('%name' => $values['name'])));
+  if(!isset($values['sid'])) {
+    $server = ldapauth_get_server($values['name']);
+    if($server['sid']) {
+      form_set_error('name', t('An LDAP config with the  name %name already exists.'
+        , array('%name' => $values['name'])));
     }
   }
   if (!is_numeric($values['port'])) {
@@ -389,27 +391,18 @@ function ldapauth_admin_form_validate($f
 function ldapauth_admin_form_submit($form, &$form_state) {
   $op = $form_state['clicked_button']['#value'];
   $values = $form_state['values'];
+  /* If user credentials will be used to bind, set binddn to 'user' */
+  if ($values['userbind']) {
+    $values['binddn'] = 'user';
+  }
   switch ($op) {
     case t('Save configuration'):
       if (!isset($values['sid'])) {
-        db_query("INSERT INTO {ldapauth} (name, status, server, port, tls, encrypted, basedn, user_attr, mail_attr, binddn, bindpw, login_php, filter_php) VALUES ('%s', %d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s')", $values['name'], 1, $values['server'], $values['port'], $values['tls'], $values['encrypted'], $values['basedn'], trim($values['user_attr']), trim($values['mail_attr']), $values['binddn'], $values['bindpw'], trim($values['login_php']), trim($values['filter_php']));
-        drupal_set_message(t('LDAP configuration %name has been added.', array('%name' => $values['name'])));
-        watchdog('ldapauth', 'LDAP configuration %name has been added.', array('%name' => $values['name']));
+        ldapauth_insert_server($values);
       }
       else {
-        if (isset($values['bindpw_clear'])) {
-          db_query("UPDATE {ldapauth} SET name = '%s', server = '%s', port = %d, tls = %d, encrypted = %d, basedn = '%s', user_attr = '%s', mail_attr = '%s', login_php = '%s', filter_php = '%s' WHERE sid = %d", $values['name'], $values['server'], $values['port'], $values['tls'], $values['encrypted'], $values['basedn'], trim($values['user_attr']), trim($values['mail_attr']), trim($values['login_php']), trim($values['filter_php']), $values['sid']);
-          if ($values['bindpw_clear']) {
-            db_query("UPDATE {ldapauth} SET bindpw = '' WHERE sid = %d", $values['sid']);
-          }
-        }
-        else {
-          db_query("UPDATE {ldapauth} SET name = '%s', server = '%s', port = %d, tls = %d, encrypted = %d, basedn = '%s', user_attr = '%s', mail_attr = '%s', binddn = '%s', bindpw = '%s', login_php = '%s', filter_php = '%s' WHERE sid = %d", $values['name'], $values['server'], $values['port'], $values['tls'], $values['encrypted'], $values['basedn'], trim($values['user_attr']), trim($values['mail_attr']), $values['binddn'], $values['bindpw'], trim($values['login_php']), trim($values['filter_php']), $values['sid']);
-        }
-        drupal_set_message(t('LDAP Configuration %name has been updated.', array('%name' => $values['name'])));
-        watchdog('ldapauth', 'LDAP Configuration %name has been updated.', array('%name' => $values['name']));
+        ldapauth_update_server($values);
       }
-
       $form_state['redirect'] = 'admin/settings/ldap/ldapauth/list';
       break;
     case t('Test'):
@@ -419,10 +412,12 @@ function ldapauth_admin_form_submit($for
         $dn = $_ldapauth_ldap->getOption('binddn');
         $pass = $_ldapauth_ldap->getOption('bindpw');
         if (!$_ldapauth_ldap->connect($dn, $pass)) {
-          drupal_set_message(t('Authentication with the LDAP server for the dn %dn and saved password failed.', array('%dn' => $dn)), 'error');
+          drupal_set_message(t('Authentication with the LDAP server for the dn %dn and saved password failed.'
+            , array('%dn' => $dn)), 'error');
         }
         else {
-          drupal_set_message(t('Authentication with the LDAP server for the dn %dn and saved password succeeded.', array('%dn' => $dn)));
+          drupal_set_message(t('Authentication with the LDAP server for the dn %dn and saved password succeeded.'
+            , array('%dn' => $dn)));
         }
       }
       else {
@@ -444,10 +439,10 @@ function ldapauth_admin_form_submit($for
  *  Form array.
  */
 function ldapauth_admin_deactivate(&$form_state, $sid) {
-  if (is_numeric($sid) && ($name = db_result(db_query("SELECT name from {ldapauth} WHERE sid = %d", $sid)))) {
+  if (is_numeric($sid) && ($name = ldapauth_get_server_name($sid))) {
     $form['sid'] = array('#type' => 'hidden', '#value' => $sid);
-
-    return confirm_form($form, t('Are you sure you want to de-activate the server %name?', array('%name' => $name)), 'admin/settings/ldap/ldapauth/list', '', t('De-activate'), t('Cancel'));
+    return confirm_form($form, t('Are you sure you want to de-activate the server %name?'
+      , array('%name' => $name)), 'admin/settings/ldap/ldapauth/list', '', t('De-activate'), t('Cancel'));
   }
   else {
     drupal_not_found();
@@ -462,11 +457,8 @@ function ldapauth_admin_deactivate(&$for
  */
 function ldapauth_admin_deactivate_submit($form, &$form_state) {
   $sid = $form_state['values']['sid'];
-  $result = db_query("SELECT name from {ldapauth} WHERE sid = %d", $sid);
-  if ($row = db_fetch_object($result)) {
-    db_query("UPDATE {ldapauth} SET status = '0' WHERE sid = %d", $sid);
-    drupal_set_message(t('LDAP Configuration %name has been de-activated.', array('%name' => $row->name)));
-    watchdog('ldapauth', 'LDAP server %name was de-activated.', array('%name' => $row->name));
+  if (ldapauth_get_server_name($sid)) {
+    ldapauth_update_server_status($sid, 0);
   }
   drupal_goto('admin/settings/ldap/ldapauth/list');
 }
@@ -483,10 +475,10 @@ function ldapauth_admin_deactivate_submi
  *  Form array.
  */
 function ldapauth_admin_activate(&$form_state, $sid) {
-  if (is_numeric($sid) && ($name = db_result(db_query("SELECT name from {ldapauth} WHERE sid = %d", $sid)))) {
+  if (is_numeric($sid) && ($name = ldapauth_get_server_name($sid))) {
     $form['sid'] = array('#type' => 'hidden', '#value' => $sid);
-
-    return confirm_form($form, t('Are you sure you want to activate the server %name?', array('%name' => $name)), 'admin/settings/ldap/ldapauth/list', '', t('Activate'), t('Cancel'));
+    return confirm_form($form, t('Are you sure you want to activate the server %name?'
+      , array('%name' => $name)), 'admin/settings/ldap/ldapauth/list', '', t('Activate'), t('Cancel'));
   }
   else {
     drupal_not_found();
@@ -501,11 +493,8 @@ function ldapauth_admin_activate(&$form_
  */
 function ldapauth_admin_activate_submit($form, &$form_state) {
   $sid = $form_state['values']['sid'];
-  $result = db_query("SELECT name from {ldapauth} WHERE sid = %d", $sid);
-  if ($row = db_fetch_object($result)) {
-    db_query("UPDATE {ldapauth} SET status = '1' WHERE sid = %d", $sid);
-    drupal_set_message(t('LDAP Configuration %name has been activated.', array('%name' => $row->name)));
-    watchdog('ldapauth', 'LDAP server %name was activated.', array('%name' => $row->name));
+  if (ldapauth_get_server_name($sid)) {
+    ldapauth_update_server_status($sid, 1);
   }
   drupal_goto('admin/settings/ldap/ldapauth/list');
 }
@@ -522,13 +511,13 @@ function ldapauth_admin_activate_submit(
  *   The form structure.
  */
 function ldapauth_admin_delete(&$form_state, $sid) {
-  if (is_numeric($sid) && ($name = db_result(db_query("SELECT name from {ldapauth} WHERE sid = %d", $sid)))) {
+  if (is_numeric($sid) && ($name = ldapauth_get_server_name($sid))) {
     $form = array(
       'sid' => array('#type' => 'hidden', '#value' => $sid),
       'name' => array('#type' => 'hidden', '#value' => $name),
     );
-
-    return confirm_form($form, t('Are you sure you want to delete the LDAP server named %name?', array('%name' => $name)), 'admin/settings/ldap/ldapauth/list', NULL, t('Delete'), t('Cancel'));
+    return confirm_form($form, t('Are you sure you want to delete the LDAP server named %name?'
+      , array('%name' => $name)), 'admin/settings/ldap/ldapauth/list', NULL, t('Delete'), t('Cancel'));
   }
   else {
     drupal_not_found();
@@ -542,9 +531,7 @@ function ldapauth_admin_delete(&$form_st
 function ldapauth_admin_delete_submit($form, &$form_state) {
   $values = $form_state['values'];
   if ($values['confirm'] && $values['sid']) {
-    db_query("DELETE FROM {ldapauth} WHERE sid = %d", $values['sid']);
-    drupal_set_message(t('LDAP Configuration %name has been deleted.', array('%name' => $values['name'])));
-    watchdog('ldapauth', 'LDAP Configuration %name has been deleted.', array('%name' => $values['name']));
+    ldapauth_delete_server($values['sid']);
   }
   drupal_goto('admin/settings/ldap/ldapauth/list');
 }
Only in ldap_integration_new: ldapauth.db.inc
Only in ldap_integration_new: ldapauth.drush.inc
diff -up ldap_integration/ldapauth.module ldap_integration_new/ldapauth.module
--- ldap_integration/ldapauth.module	2009-10-27 10:29:16.000000000 -0400
+++ ldap_integration_new/ldapauth.module	2010-02-18 15:03:08.000000000 -0500
@@ -34,6 +34,7 @@ define('LDAPAUTH_DEFAULT_MAIL_ATTR',   v
  * Implements hook_init().
  */
 function ldapauth_init() {
+  require_once(drupal_get_path('module', 'ldapauth') .'/ldapauth.db.inc');
   require_once(drupal_get_path('module', 'ldapauth') .'/includes/LDAPInterface.inc');
 }
 
@@ -164,7 +165,7 @@ function ldapauth_user($op, &$edit, &$ac
       break;
     case 'view':
       if (user_access('administer users') && isset($account->ldap_authentified) && $account->ldap_dn) {
-        $row = db_fetch_object(db_query("SELECT * FROM {ldapauth} WHERE sid = %d", $account->ldap_config));
+        $row = ldapauth_get_server($account->ldap_config);
         $account->content[t(LDAPAUTH_PROFILE)] = array(
          '#type' => 'user_profile_category',
          '#title' => t(LDAPAUTH_PROFILE),
@@ -320,7 +321,7 @@ function ldapauth_authenticate($form_val
 
   if (!$account) {
     // Register this new user.
-    if ($ldap_user = _ldapauth_user_lookup($name)) {
+    if ($ldap_user = _ldapauth_user_lookup($name, $pass)) {
       // If mail attribute is missing, set the name as mail.
       $init = $mail = key_exists(($_ldapauth_ldap->getOption('mail_attr') ? $_ldapauth_ldap->getOption('mail_attr') : LDAPAUTH_DEFAULT_MAIL_ATTR), $ldap_user) ? $ldap_user[$_ldapauth_ldap->getOption('mail_attr')][0] : $name;
 
@@ -393,15 +394,15 @@ function _ldapauth_auth($name, $pass) {
     return FALSE;
 
   // Cycle through LDAP configurations.  First one to succeed wins.
-  $result = db_query("SELECT sid FROM {ldapauth} WHERE status = 1 ORDER BY weight");
-  while ($row = db_fetch_object($result)) {
+  $rows = ldapauth_get_server_list(1);
+  foreach($rows as $row) {
 
     // Initialize LDAP.
     if (!_ldapauth_init($row->sid))
       return FALSE;
 
     // Look up the user in LDAP.
-    if (!($ldap = _ldapauth_user_lookup($name)) || !isset($ldap['dn']))
+    if (!($ldap = _ldapauth_user_lookup($name, $pass)) || !isset($ldap['dn']))
       continue;
 
     // Filter users based on their LDAP data.
@@ -426,7 +427,7 @@ function _ldapauth_auth($name, $pass) {
  * @return
  *   An array with user's LDAP data or NULL if not found.
  */
-function _ldapauth_user_lookup($name) {
+function _ldapauth_user_lookup($name, $pass) {
   global $_ldapauth_ldap;
 
   if (!$_ldapauth_ldap)
@@ -436,7 +437,14 @@ function _ldapauth_user_lookup($name) {
   $login_name = ($code = _ldapauth_ldap_info($_ldapauth_ldap->getOption('sid'), 'login_php')) ? eval($code) : $name;
 
   // If there is no bindn and bindpw - the connect will be an anonymous connect.
-  $_ldapauth_ldap->connect($_ldapauth_ldap->getOption('binddn'), $_ldapauth_ldap->getOption('bindpw'));
+  // If binddn is set to user, we'll use the user credentials to bind
+  $binddn = $_ldapauth_ldap->getOption('binddn');
+  if ($binddn == 'user') {
+    $_ldapauth_ldap->connect($name, $pass);
+  } else {
+    $_ldapauth_ldap->connect($binddn, $_ldapauth_ldap->getOption('bindpw'));
+  }
+
   foreach (explode("\r\n", $_ldapauth_ldap->getOption('basedn')) as $base_dn) {
     if (empty($base_dn))
       continue;
@@ -499,7 +507,7 @@ function _ldapauth_init($sid) {
 
   static $servers = array();
   if (!isset($servers[$sid]))
-    $servers[$sid] = db_fetch_object(db_query("SELECT * FROM {ldapauth} WHERE status = 1 AND sid = %d", $sid));
+    $servers[$sid] = ldapauth_get_server($sid, TRUE, 1);
 
   if ($servers[$sid]) {
     $_ldapauth_ldap = new LDAPInterface();
@@ -536,7 +544,7 @@ function _ldapauth_ldap_info($sid, $req)
 
   static $servers = array();
   if (!isset($servers[$sid]))
-    $servers[$sid] = db_fetch_object(db_query("SELECT * FROM {ldapauth} WHERE sid = %d", $sid));
+    $servers[$sid] = ldapauth_get_server($sid, TRUE);
 
   switch ($req) {
     case 'login_php':
diff -up ldap_integration/ldapdata.admin.inc ldap_integration_new/ldapdata.admin.inc
--- ldap_integration/ldapdata.admin.inc	2009-07-28 10:03:05.000000000 -0400
+++ ldap_integration_new/ldapdata.admin.inc	2010-02-18 15:03:08.000000000 -0500
@@ -72,8 +72,8 @@ function ldapdata_admin_settings_submit(
  */
 function ldapdata_admin_list() {
   $rows = array();
-  $result = db_query("SELECT sid, name, status FROM {ldapauth} ORDER BY weight");
-  while ($row = db_fetch_object($result)) {
+  $result = ldapauth_get_server_list();
+  foreach($result as $row) {
     $rows[] = array(
       'data' => array(
         $row->name,
@@ -123,7 +123,7 @@ function ldapdata_admin_edit(&$form_stat
     );
   }
   elseif ($op == "edit" && $sid) {
-    $edit = db_fetch_array(db_query("SELECT * FROM {ldapauth} WHERE sid = %d", $sid));
+    $edit = ldapauth_get_server($sid);
 
     $ldapdata_mappings = $edit['ldapdata_mappings'] ? unserialize($edit['ldapdata_mappings']) : array();
     $ldapdata_roattrs = $edit['ldapdata_roattrs'] ? unserialize($edit['ldapdata_roattrs']) : array();
@@ -348,23 +348,15 @@ function ldapdata_admin_edit_submit($for
   $values = $form_state['values'];
   switch ($op) {
     case t('Update'):
-      if (isset($values['ldapdata_bindpw_clear'])) {
-        db_query("UPDATE {ldapauth} SET ldapdata_mappings = '%s', ldapdata_roattrs = '%s', ldapdata_rwattrs = '%s', ldapdata_attrs = '%s', ldapdata_filter_php = '%s' WHERE sid = %d", $form_state['ldapdata_mappings'], $form_state['ldapdata_roattrs'], $form_state['ldapdata_rwattrs'], $form_state['ldapdata_attrs'], $form_state['ldapdata_filter_php'], $values['sid']);
-        if ($values['ldapdata_bindpw_clear']) {
-          db_query("UPDATE {ldapauth} SET ldapdata_bindpw = '' WHERE sid = %d", $values['sid']);
-        }
-      }
-      else {
-        db_query("UPDATE {ldapauth} SET ldapdata_mappings = '%s', ldapdata_roattrs = '%s', ldapdata_rwattrs = '%s', ldapdata_binddn = '%s', ldapdata_bindpw = '%s', ldapdata_attrs = '%s', ldapdata_filter_php = '%s' WHERE sid = %d", $form_state['ldapdata_mappings'], $form_state['ldapdata_roattrs'], $form_state['ldapdata_rwattrs'], $values['ldapdata_binddn'], $values['ldapdata_bindpw'], $form_state['ldapdata_attrs'], $form_state['ldapdata_filter_php'], $values['sid']);
-      }
+      ldapdata_update_server($values['sid'], $form_state, $values['ldapdata_bindpw_clear']
+            , $values['binddn'], $values['bindpw']);
       drupal_set_message(t('The configuration options have been saved.'));
       $form_state['redirect'] = 'admin/settings/ldap/ldapdata';
       break;
     case t('Reset'):
       if ($values['confirm'] == 1) {
-
         // Settings reset.
-        db_query("UPDATE {ldapauth} SET ldapdata_mappings = '', ldapdata_roattrs = '', ldapdata_rwattrs = '', ldapdata_binddn = '', ldapdata_bindpw = '', ldapdata_attrs = '', ldapdata_filter_php = '' WHERE sid = %d", $values['sid']);
+        ldapdata_reset($values['sid']);
         drupal_set_message(t('The configuration options have been reset to their default values.'));
       }
       $form_state['redirect'] = 'admin/settings/ldap/ldapdata';
diff -up ldap_integration/ldapdata.module ldap_integration_new/ldapdata.module
--- ldap_integration/ldapdata.module	2009-10-27 10:29:17.000000000 -0400
+++ ldap_integration_new/ldapdata.module	2010-02-18 15:03:08.000000000 -0500
@@ -26,6 +26,7 @@ define('LDAPDATA_MAP_NOTHING',          
  * Implements hook_init()
  */
 function ldapdata_init() {
+  require_once(drupal_get_path('module', 'ldapdata') .'/ldapauth.db.inc');
   require_once(drupal_get_path('module', 'ldapdata') .'/includes/LDAPInterface.inc');
 }
 
@@ -556,7 +557,7 @@ function _ldapdata_edition($sid) {
   if (!($sid = is_object($sid) ? (isset($sid->ldap_config) ? $sid->ldap_config : NULL) : $sid))
     return;
 
-  $row = db_fetch_object(db_query("SELECT ldapdata_binddn, ldapdata_bindpw FROM {ldapauth} WHERE sid = %d", $sid));
+  $row = ldapauth_get_server($sid, TRUE);
 
   return array(
     'dn' => $row->ldapdata_binddn ? $row->ldapdata_binddn : (isset($_SESSION['ldap_login']['dn']) ? $_SESSION['ldap_login']['dn'] : ''),
@@ -598,7 +599,7 @@ function _ldapdata_init($sid) {
 
   static $servers = array();
   if (!isset($servers[$sid]))
-    $servers[$sid] = db_fetch_object(db_query("SELECT * FROM {ldapauth} WHERE status = 1 AND sid = %d", $sid));
+    $servers[$sid] = ldapauth_get_server($sid, TRUE, 1);
 
   if ($servers[$sid]) {
     // Other modules can invoke user load from hook_init() before ldapdata.
@@ -636,7 +637,7 @@ function _ldapdata_ldap_info($sid, $req)
 
   static $servers = array();
   if (!isset($servers[$sid]))
-    $servers[$sid] = db_fetch_object(db_query("SELECT * FROM {ldapauth} WHERE sid = %d", $sid));
+    $servers[$sid] = ldapauth_get_server($sid, TRUE);
 
   switch ($req) {
     case 'mapping_type':
diff -up ldap_integration/ldapgroups.admin.inc ldap_integration_new/ldapgroups.admin.inc
--- ldap_integration/ldapgroups.admin.inc	2009-05-03 20:26:17.000000000 -0400
+++ ldap_integration_new/ldapgroups.admin.inc	2010-02-18 15:03:08.000000000 -0500
@@ -29,8 +29,8 @@ function ldapgroups_admin_settings() {
  */
 function ldapgroups_admin_list() {
   $rows = array();
-  $result = db_query("SELECT sid, name, status FROM {ldapauth} ORDER BY weight");
-  while ($row = db_fetch_object($result)) {
+  $result = ldapauth_get_server_list();
+  foreach($result as $row) {
     $rows[] = array(
       'data' => array(
         $row->name,
@@ -79,7 +79,7 @@ function ldapgroups_admin_edit(&$form_st
     );
   }
   elseif ($op == 'edit' && $sid) {
-    $edit = db_fetch_array(db_query("SELECT * FROM {ldapauth} WHERE sid = %d", $sid));
+    $edit = ldapauth_get_server($sid);
 
     $form['description'] = array(
       '#value' => t('Configure LDAP groups to Drupal roles mapping settings for the %server.', array('%server' => $edit['name'])),
@@ -278,17 +278,15 @@ function ldapgroups_admin_edit_submit($f
   $values = $form_state['values'];
   switch ($op) {
     case t('Update'):
-
       // Update the ldapgroups configuration.
-      db_query("UPDATE {ldapauth} SET ldapgroups_in_dn = %d, ldapgroups_dn_attribute = '%s', ldapgroups_in_attr = %d, ldapgroups_attr = '%s', ldapgroups_as_entries = %d, ldapgroups_entries = '%s', ldapgroups_entries_attribute = '%s', ldapgroups_mappings = '%s', ldapgroups_mappings_filter = %d, ldapgroups_filter_php = '%s', ldapgroups_groups = '%s' WHERE sid = %d", $values['ldapgroups_in_dn'], trim($values['ldapgroups_dn_attribute']), $values['ldapgroups_in_attr'], $form_state['ldapgroups_attr'], $values['ldapgroups_as_entries'], $form_state['ldapgroups_entries'], trim($values['ldapgroups_entries_attribute']), $form_state['ldapgroups_mappings'], $values['ldapgroups_mappings_filter'], trim($values['ldapgroups_filter_php']), $form_state['ldapgroups_groups'], $values['sid']);
+      ldapgroups_server_update($values, $form_state);
       drupal_set_message(t('The configuration options have been saved.'));
       $form_state['redirect'] = 'admin/settings/ldap/ldapgroups';
       break;
     case t('Reset'):
       if ($values['confirm'] == 1) {
-
         // Settings reset.
-        db_query("UPDATE {ldapauth} SET ldapgroups_in_dn = 0, ldapgroups_dn_attribute = '', ldapgroups_in_attr = 0, ldapgroups_attr = '', ldapgroups_as_entries = 0, ldapgroups_entries = '', ldapgroups_entries_attribute = '', ldapgroups_mappings = '', ldapgroups_mappings_filter = '0', ldapgroups_filter_php = '', ldapgroups_groups = '' WHERE sid = %d", $values['sid']);
+        ldapgroups_reset($values['sid']);
         drupal_set_message(t('The configuration options have been reset to their default values.'));
       }
       $form_state['redirect'] = 'admin/settings/ldap/ldapgroups';
diff -up ldap_integration/ldapgroups.inc ldap_integration_new/ldapgroups.inc
--- ldap_integration/ldapgroups.inc	2009-08-25 09:53:20.000000000 -0400
+++ ldap_integration_new/ldapgroups.inc	2010-02-18 15:03:08.000000000 -0500
@@ -92,7 +92,7 @@ function _ldapgroups_detect_groups($user
   // so I just check to see if they would be blank, based on ldap_forget_passwords, and
   // make it read from the database.
   if (LDAPAUTH_FORGET_PASSWORDS || !$_ldapgroups_ldap->connect($dn, $pass)) {
-    $row2 = db_fetch_object(db_query("SELECT binddn, bindpw FROM {ldapauth} WHERE sid = %d", $_ldapgroups_ldap->getOption('sid')));
+    $row2 = ldap_get_server($_ldapgroups_ldap->getOption('sid'), TRUE);
     $dn = $row2->binddn;
     $pass = $row2->bindpw;
     if (!$_ldapgroups_ldap->connect($dn, $pass)) {
@@ -256,7 +256,7 @@ function _ldapgroups_ldap_init($sid) {
 
   static $servers = array();
   if (!isset($servers[$sid]))
-    $servers[$sid] = db_fetch_object(db_query("SELECT * FROM {ldapauth} WHERE status = 1 AND sid = %d", $sid));
+    $servers[$sid] = ldapauth_get_server($sid, TRUE, 1);
 
   if ($servers[$sid]) {
     $_ldapgroups_ldap = new LDAPInterface();
@@ -289,7 +289,7 @@ function _ldapgroups_ldap_info($sid, $re
 
   static $servers = array();
   if (!isset($servers[$sid]))
-    $servers[$sid] = db_fetch_object(db_query("SELECT * FROM {ldapauth} WHERE sid = %d", $sid));
+    $servers[$sid] = ldapauth_get_server($sid, TRUE);
 
   switch ($req) {
     case 'ldapgroups_in_dn':
diff -up ldap_integration/ldapgroups.module ldap_integration_new/ldapgroups.module
--- ldap_integration/ldapgroups.module	2009-08-25 09:23:37.000000000 -0400
+++ ldap_integration_new/ldapgroups.module	2010-02-18 15:03:08.000000000 -0500
@@ -14,6 +14,10 @@ define('LDAPGROUPS_DEFAULT_ENTRIES_ATTRI
 //////////////////////////////////////////////////////////////////////////////
 // Core API hooks
 
+function ldapgroups_init() {
+  require_once(drupal_get_path('module', 'ldapgroups') .'/ldapauth.db.inc');
+}
+
 /**
  * Implementation of hook_menu().
  */
Common subdirectories: ldap_integration/translations and ldap_integration_new/translations
