From 3fcef07707b10af7676577bde39c85277b75e893 Mon Sep 17 00:00:00 2001
From: Dave Goodwin $text Updating to version $target_version \n";
+ echo " Updating to version $target_version \n";
$ok = $function();
if(!$ok) {
echo "Oh dear. Something probably went wrong; exiting after trying $function\n
$ok
"; $target_version += 1; } echo "Upgrade complete
\n"; @@ -153,3 +156,62 @@ function _update_query($sql) { * return _update_query("UPDATE logindetails SET foo = bar WHERE x = y"); * } */ + +/** Add ldap table into the schema if it's not there already */ +function upgrade_1() { + $table = table_by_key('ldap'); + return db_query("CREATE TABLE IF NOT EXISTS `$table` ( + `ldap_id` bigint(20) NOT NULL AUTO_INCREMENT, + `ldap_knownname` text NOT NULL, + `ldap_host` text NOT NULL, + `ldap_port` text NOT NULL, + `ldap_username` text, + `ldap_password` text, + `ldap_basedn` text, + `ldap_filter` text, + `ldap_filter_attr` text, + PRIMARY KEY (`ldap_id`) + ) "); +} + +function upgrade_2() { + + $sdtable = table_by_key('sitedetails'); + $ldaptable = table_by_key('ldap'); + + $site_details = db_query_one("SELECT * FROM {$sdtable}"); + if(empty($site_details['ldap_host']) || empty($site_details['basedn'])) { + var_dump($site_details); + return "No ldap information here to use for migrating"; + } + // some empty records may be already here? + db_query("DELETE FROM {$ldaptable} WHERE ldap_host = ?", array('')); + + $rows = db_query("SELECT * FROM {$ldaptable} WHERE ldap_host = ?", array($site_details['ldap_host'])); + if(sizeof($rows) > 0) { + echo "LDAP migration appears to have already taken place!"; + return true; + } + + if(!empty($site_details['ldap_host']) && !empty($site_details['basedn'])) { + $ldap_details = array('ldap_knownname' => $site_details['ldap_host'], + 'ldap_host' => $site_details['ldap_host'], + 'ldap_port' => $site_details['ldap_port'], + 'ldap_username' => $site_details['bind_dn'], + 'ldap_password' => $site_details['bind_pwd'], + 'ldap_basedn' => $site_details['basedn'], + 'ldap_filter' => $site_details['LDAP_filter'], + 'ldap_filter_attr' => $site_details['LDAP_preference']); + + $fields = array_keys($ldap_details); + $qmarks = ''; + $comma = ''; + foreach($fields as $field) { + $qmarks .= $comma . '?'; + $comma = ','; + } + _debug("Running SQL to copy sitedetails stuff into the ldap table - " . print_r($ldap_details, true)); + $ok = db_query_one("INSERT INTO {$ldaptable} ($fields) VALUES($qmarks)", array_values($ldap_details)); + return "Migrated LDAP settings from sitedetails to ldap - ok ? " . ( $ok ? 'true' : 'false' ); + } +}