Index: vbtodrupal/vbpassword.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/vbtodrupal/vbpassword.install,v retrieving revision 1.2 diff -u -p -r1.2 vbpassword.install --- vbtodrupal/vbpassword.install 5 Nov 2007 18:31:51 -0000 1.2 +++ vbtodrupal/vbpassword.install 14 Oct 2008 11:29:39 -0000 @@ -13,9 +13,8 @@ function vbpassword_install() { drupal_updated tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (uid), KEY (salt) - );"); + )"); break; - case 'pgsql': } } @@ -23,5 +22,17 @@ function vbpassword_install() { * Implementation of hook_uninstall(). */ function vbpassword_uninstall() { - db_query('DROP TABLE IF EXISTS {vbuser_salt}'); + db_query('DROP TABLE IF EXISTS {vbuser_salt}'); +} + +/** + * Implementation of hook_update(). + */ +function vbpassword_update_1() { + $ret = array(); + // Update authmap table (this is in vbtodrupal.module from here onward). + $ret[] = update_sql("INSERT INTO {authmap} (authname, uid, module) + SELECT u.name, u.uid, 'vbpassword' AS module FROM {users} u + INNER JOIN {vbuser_salt} salt ON u.uid = salt.uid"); + return $ret; } Index: vbtodrupal/vbpassword.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/vbtodrupal/vbpassword.module,v retrieving revision 1.2.2.1 diff -u -p -r1.2.2.1 vbpassword.module --- vbtodrupal/vbpassword.module 17 Nov 2007 23:12:48 -0000 1.2.2.1 +++ vbtodrupal/vbpassword.module 14 Oct 2008 11:29:39 -0000 @@ -5,16 +5,18 @@ * Implementation of hook_auth() */ function vbpassword_auth($name, $pass, $server) { - // Get salt - $sql = 'SELECT {users}.uid, name, salt, pass '; - $sql .= 'FROM {users} INNER JOIN {vbuser_salt} ON {users}.uid={vbuser_salt}.uid '; - $sql .= 'WHERE LCASE({users}.name)=LCASE(\'%s\');'; + // Get salt. + $sql = "SELECT {users}.uid, name, salt, pass + FROM {users} INNER JOIN {vbuser_salt} ON {users}.uid = {vbuser_salt}.uid + WHERE LCASE({users}.name) = LCASE('%s')"; $user_query = db_fetch_object(db_query($sql, $name)); if ((md5(md5($pass) . $user_query->salt) == $user_query->pass) AND $pass) { - $sql = 'UPDATE {vbuser_salt} SET drupal_updated=1 '; - $sql .= 'WHERE uid=%d;'; + $sql = "UPDATE {vbuser_salt} SET drupal_updated = 1 + WHERE uid = %d"; db_query($sql, $user_query->uid); + // Save the user to gradually move everyone over to native Drupal auth. + user_save($user_query, array("pass" => $pass)); $vblogin = TRUE; } else { $vblogin = FALSE; Index: vbtodrupal/vbtodrupal.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/vbtodrupal/vbtodrupal.module,v retrieving revision 1.4.2.5 diff -u -p -r1.4.2.5 vbtodrupal.module --- vbtodrupal/vbtodrupal.module 3 Jun 2008 07:30:10 -0000 1.4.2.5 +++ vbtodrupal/vbtodrupal.module 14 Oct 2008 11:29:39 -0000 @@ -354,7 +354,7 @@ function _vbtodrupal_convusers() { VBTODRUPAL_ADD_TO_IDS); // Import user salt for vBulletin password auth service. - // This query is the reason this module depends upon vbpassword + // This query (and the next) are the reason this module depends upon vbpassword // (because this table has to exist to import to) $sql = 'INSERT IGNORE INTO %s (uid, salt, drupal_updated) '; $sql .= 'SELECT userid+%d, salt, 0 '; @@ -362,6 +362,12 @@ function _vbtodrupal_convusers() { db_query($sql, _vbtodrupal_db_prefix_tables('{vbuser_salt}', $drupal_db_prefix, $drupal_db_name), VBTODRUPAL_ADD_TO_IDS); + db_query("INSERT INTO %s (authname, uid, module) + SELECT u.name, u.uid, 'vbpassword' AS module FROM %s u + INNER JOIN %s salt ON u.uid = salt.uid", + _vbtodrupal_db_prefix_tables("{authmap}", $drupal_db_prefix, $drupal_db_name), + _vbtodrupal_db_prefix_tables("{users}", $drupal_db_prefix, $drupal_db_name), + _vbtodrupal_db_prefix_tables("{vbuser_salt}", $drupal_db_prefix, $drupal_db_name)); // Yahoo $sql = 'INSERT IGNORE INTO %s (fid, uid, value) ';