Yup, I like the more direct route like that.  Works great.

Thanks.

Steve

On Feb 26, 2010, at 3:40 PM, nan wich wrote:

> You don't need to load the whole user object to do this - way too much 
> potential overhead.
>  
>   $uid = db_result(db_query("SELECT uid FROM {users} WHERE name = '%s'", 
> $name_you_just_got));
>   db_query("INSERT INTO {users_roles} (uid, rid) VALUES(%d, %d)", $uid, 
> $rid_of_role_to_add);
>  
> Nancy E. Wichmann, PMP
> 
> Injustice anywhere is a threat to justice everywhere. -- Dr. Martin L. King, 
> Jr.
> 
> 
> 
> From: Steve Edwards <[email protected]>
> To: Drupal Development <[email protected]>
> Sent: Fri, February 26, 2010 4:49:02 PM
> Subject: [development] How to add user role during registration with custom 
> form
> 
> I took over a site that uses a custom registration form that directly calls 
> user_register_submit directly, and I need to have a user role added to this 
> user when this form is submitted.  However, I can't add the value to 
> $form_state['values']['roles'] because the function errors out if there is a 
> roles array because it is seen as a 'malicious attempt to alter protected 
> user fields.'  Since that function then calls user_save, it seems that once 
> the user is saved, I need to 1) load the user I just created, 2) add the role 
> to the object, and 3) save it again.  However, in order to call user_load, I 
> need the uid, which isn't returned from user_register_submit.  The only 
> logical thing I can think to do is query the users table with the user name I 
> just created (entered as part of the form), get the rid, and then call 
> user_load and do my thing.
> 
> Is there a better (and easier) way to do this that I'm missing, or am I on 
> the right track?
> 
> Thanks.
> 
> Steve

Reply via email to