Index: apply_for_role.install =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/apply_for_role/apply_for_role.install,v retrieving revision 1.6 diff -u -p -r1.6 apply_for_role.install --- apply_for_role.install 30 Mar 2008 06:42:55 -0000 1.6 +++ apply_for_role.install 2 Aug 2008 17:31:12 -0000 @@ -60,3 +60,17 @@ function apply_for_role_uninstall() { variable_del('apply_for_role_multiple'); variable_del('apply_for_role_register'); } + +/** + * Remove any applications that don't have a matching user. + */ +function apply_for_role_update_6000() { + // There's not a db agnostic way to do this in one query. PostgeSQL doesn't + // allow JOINs in a DELETE and old 4.x versions of MySQL don't support + // subselects. So we just suck it up and run multipl queries. + $result = db_query("SELECT ura.uid FROM {users_roles_apply} ura LEFT JOIN {users} u ON ura.uid = u.uid WHERE u.uid IS NULL"); + while ($row = db_fetch_object($result)) { + $ret[] = update_sql("DELETE FROM {users_roles_apply} WHERE uid = ". (int) $row->uid); + } + return $ret; +}