We are no longer offering accounts on this server. Consider https://gitlab.freedesktop.org/ as a place to host projects.

Commit 0ba99486 authored by Evan Prodromou's avatar Evan Prodromou

move update_user function to openid.php

darcs-hash:20080619135148-84dde-6caaa7f97d2405bc318bfa818c4ac9cbc31cab33.gz
parent 171b4f72
......@@ -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;
}
}
......@@ -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);
......
......@@ -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;
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment