move update_user function to openid.php

darcs-hash:20080619135148-84dde-6caaa7f97d2405bc318bfa818c4ac9cbc31cab33.gz
This commit is contained in:
Evan Prodromou 2008-06-19 09:51:48 -04:00
parent 171b4f72ee
commit 0ba9948603
3 changed files with 46 additions and 95 deletions

View File

@ -57,7 +57,7 @@ class FinishaddopenidAction extends Action {
}
$cur =& common_current_user();
$other = $this->get_user($canonical);
$other = oid_get_user($canonical);
if ($other) {
if ($other->id == $cur->id) {
@ -79,7 +79,7 @@ class FinishaddopenidAction extends Action {
return;
}
if ($sreg) {
if (!$this->update_user($cur, $sreg)) {
if (!oid_update_user($cur, $sreg)) {
$this->message(_t('Error updating profile'));
return;
}
@ -100,55 +100,4 @@ class FinishaddopenidAction extends Action {
common_element('p', NULL, $msg);
common_show_footer();
}
function get_user($canonical) {
$user = NULL;
$oid = User_openid::staticGet('canonical', $canonical);
if ($oid) {
$user = User::staticGet('id', $oid->user_id);
}
return $user;
}
function 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 false;
}
$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 false;
}
return true;
}
}

View File

@ -108,7 +108,7 @@ class FinishopenidloginAction extends Action {
if ($user) {
oid_set_last($display);
$this->update_user($user, $sreg);
oid_update_user($user, $sreg);
common_set_user($user->nickname);
$this->go_home($user->nickname);
} else {
@ -124,46 +124,6 @@ class FinishopenidloginAction extends Action {
common_show_footer();
}
function 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;
}
}
function save_values($display, $canonical, $sreg) {
common_ensure_session();
$_SESSION['openid_display'] = $display;
@ -297,7 +257,7 @@ class FinishopenidloginAction extends Action {
return;
}
$this->update_user($user, $sreg);
oid_update_user($user, $sreg);
oid_set_last($display);
common_set_user($user->nickname);
$this->go_home($user->nickname);

View File

@ -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;
}
}