diff options
author | Evan Prodromou <evan@prodromou.name> | 2008-06-19 09:51:48 -0400 |
---|---|---|
committer | Evan Prodromou <evan@prodromou.name> | 2008-06-19 09:51:48 -0400 |
commit | 0ba99486039b10686a520e22ef50385625e5b9ae (patch) | |
tree | 67aa87989c0e65272b9c2baaf25620f49b993588 /lib/openid.php | |
parent | 171b4f72ee5a84d2a67b99aca7df9406e68f60c1 (diff) |
move update_user function to openid.php
darcs-hash:20080619135148-84dde-6caaa7f97d2405bc318bfa818c4ac9cbc31cab33.gz
Diffstat (limited to 'lib/openid.php')
-rw-r--r-- | lib/openid.php | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/openid.php b/lib/openid.php index 6dbeebd2b..111cc4a0c 100644 --- a/lib/openid.php +++ b/lib/openid.php @@ -181,3 +181,45 @@ function oid_authenticate($openid_url, $returnto, $immediate=false) { } } } + +# update a user from sreg parameters + +function oid_update_user(&$user, &$sreg) { + + $profile = $user->getProfile(); + + $orig_profile = clone($profile); + + if ($sreg['fullname'] && strlen($sreg['fullname']) <= 255) { + $profile->fullname = $sreg['fullname']; + } + + if ($sreg['country']) { + if ($sreg['postcode']) { + # XXX: use postcode to get city and region + # XXX: also, store postcode somewhere -- it's valuable! + $profile->location = $sreg['postcode'] . ', ' . $sreg['country']; + } else { + $profile->location = $sreg['country']; + } + } + + # XXX save language if it's passed + # XXX save timezone if it's passed + + if (!$profile->update($orig_profile)) { + common_server_error(_t('Error saving the profile.')); + return; + } + + $orig_user = clone($user); + + if ($sreg['email'] && Validate::email($sreg['email'], true)) { + $user->email = $sreg['email']; + } + + if (!$user->update($orig_user)) { + common_server_error(_t('Error saving the user.')); + return; + } +} |