--- apply_for_role.module.orig	2008-12-28 20:16:56.000000000 -0300
+++ apply_for_role.module	2008-12-28 21:02:30.000000000 -0300
@@ -454,13 +454,20 @@ function apply_for_role_remove_apply($us
 
 function apply_for_role_add_role($uid, $rid) {
   if (!in_array($rid, array(DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID))) {
-    db_query('INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)', $uid, $rid);
+    $account = user_load(array('uid' => $uid));
+    $myroles = $account->roles;
+    $rolenames = user_roles(TRUE);
+    $myroles[$rid] = $rolenames[$rid];
+    user_save($account, array('roles' => $myroles));
   }
 }
 
 function apply_for_role_delete_role($uid, $rid) {
   if (!in_array($rid, array(DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID))) {
-    db_query('DELETE FROM {users_roles} WHERE uid = %d AND rid = %d', $uid, $rid);
+    $account = user_load(array('uid' => $uid));
+    $myroles = $account->roles;
+    unset($myroles[$rid]);
+    user_save($account, array('roles' => $myroles));
   }
 }
 
