PDA

View Full Version : Profile Edited Hook problem


marocnl
01-28-2009, 10:05 AM
Hi All,

My aim is to "mirror" user profile information to another mySQL table.
So I need to update this mirror table on profile changes (when user edited his profile).

for exemple, if user modify his/her email address in userCP.

The following hook is working but ...

// User Edited Profile on VBulletin

$etnoresult1 = $db->query_first("SELECT field4 FROM vb_userfield WHERE userid = " . $vbulletin->userinfo['userid'] . ";");
$etnoresult2 = $db->query_first("SELECT * FROM vb_user WHERE userid = " . $vbulletin->userinfo['userid'] . ";");

// Update phplist user info

//$db->query_write("UPDATE pl_usr_user SET email = \"" . $etnoresult2['email'] . "\" WHERE uniqid= \"" . $etnoresult1['field4'] . "\" LIMIT 1 ;");

$db->query_write("UPDATE pl_usr_user SET email = \"" . $vbulletin->userinfo['email'] . "\" WHERE uniqid= \"" . $etnoresult1['field4'] . "\" LIMIT 1 ;");


Wherever I put the hook location (see above) both $vbulletin->userinfo['email'] and the value read in vB database is pointing the former email address and not the new one (entered by user).

I tried placing hook in many location like profile_updatepassword_complete, profile_complete, etc.

I tried refresh by calling global.php

I even try to move hook location after $userdata->save(); in profile.php

Hope I am clear enough. Thanks for your help.

vB version is 3.8.0

Dismounted
01-29-2009, 05:38 AM
You should use the hook userdata_post_save_each. This is executed every time user data is updated and will have the necessary variables for the user already there.