65 lines
2.6 KiB
Diff
65 lines
2.6 KiB
Diff
|
Index: invite.module
|
||
|
===================================================================
|
||
|
RCS file: /cvs/drupal-contrib/contributions/modules/invite/invite.module,v
|
||
|
retrieving revision 1.25.2.6
|
||
|
diff -u -p -r1.25.2.6 invite.module
|
||
|
--- invite.module 27 Apr 2009 17:24:44 -0000 1.25.2.6
|
||
|
+++ invite.module 15 Jun 2009 12:30:45 -0000
|
||
|
@@ -423,7 +423,7 @@ function invite_user($op, &$edit, &$acco
|
||
|
}
|
||
|
}
|
||
|
if ($invite) {
|
||
|
- _invite_accept($invite, $account);
|
||
|
+ _invite_accept($invite, $account, $edit);
|
||
|
|
||
|
// Flag the inviting user, this triggers status notifications and
|
||
|
// saves us some queries otherwise.
|
||
|
@@ -449,7 +449,7 @@ function invite_user($op, &$edit, &$acco
|
||
|
* @param $account
|
||
|
* The user object of the invitee.
|
||
|
*/
|
||
|
-function _invite_accept($invite, $account) {
|
||
|
+function _invite_accept($invite, $account, &$edit) {
|
||
|
// Update the invitation record.
|
||
|
db_query("UPDATE {invite} SET email = '%s', invitee = %d, joined = %d WHERE reg_code = '%s'", $account->mail, $account->uid, time(), $invite->reg_code);
|
||
|
// Delete all invites to these e-mail addresses, except this one.
|
||
|
@@ -458,7 +458,7 @@ function _invite_accept($invite, $accoun
|
||
|
// notification queue.
|
||
|
db_query("INSERT INTO {invite_notifications} (uid, invitee) SELECT uid, %d from {invite} WHERE (email = '%s' OR email = '%s') AND canceled = 0", $account->uid, $invite->email, $account->mail);
|
||
|
// Escalate the invitee's role.
|
||
|
- _invite_escalate_role($account);
|
||
|
+ _invite_escalate_role($account, $edit);
|
||
|
// Unblock user account.
|
||
|
db_query("UPDATE {users} SET status = 1 WHERE uid = %d", $account->uid);
|
||
|
}
|
||
|
@@ -469,7 +469,7 @@ function _invite_accept($invite, $accoun
|
||
|
* @param $account
|
||
|
* The user object of the invitee.
|
||
|
*/
|
||
|
-function _invite_escalate_role($account) {
|
||
|
+function _invite_escalate_role($account, &$edit) {
|
||
|
// Default target role.
|
||
|
$roles = array('default');
|
||
|
|
||
|
@@ -489,15 +489,12 @@ function _invite_escalate_role($account)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
- // Notify other modules of changed user.
|
||
|
- $edit = array('roles' => $targets);
|
||
|
- user_module_invoke('update', $edit, $account);
|
||
|
-
|
||
|
- // Save new user role(s).
|
||
|
- foreach ($targets as $target) {
|
||
|
- db_query("DELETE FROM {users_roles} WHERE uid = %d AND rid = %d", $account->uid, $target);
|
||
|
- db_query("INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)", $account->uid, $target);
|
||
|
+ // Let user_save() save the new user role(s).
|
||
|
+ if (!is_array($edit['roles'])) {
|
||
|
+ $edit['roles'] = array();
|
||
|
}
|
||
|
+ $edit['roles'] += $targets;
|
||
|
+ $account->roles += $targets;
|
||
|
|
||
|
// Notify other modules of role escalation.
|
||
|
$args = array('invitee' => $account, 'inviter' => $inviter, 'roles' => $targets);
|