From 0ba99486039b10686a520e22ef50385625e5b9ae Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 19 Jun 2008 09:51:48 -0400 Subject: move update_user function to openid.php darcs-hash:20080619135148-84dde-6caaa7f97d2405bc318bfa818c4ac9cbc31cab33.gz --- lib/openid.php | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'lib/openid.php') 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; + } +} -- cgit v1.2.3-54-g00ecf