summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--actions/finishopenidlogin.php61
-rw-r--r--actions/register.php86
-rw-r--r--classes/User.php87
3 files changed, 106 insertions, 128 deletions
diff --git a/actions/finishopenidlogin.php b/actions/finishopenidlogin.php
index 89f4ef0bd..827a4e9c7 100644
--- a/actions/finishopenidlogin.php
+++ b/actions/finishopenidlogin.php
@@ -192,64 +192,35 @@ class FinishopenidloginAction extends Action {
return;
}
- $profile = new Profile();
-
- $profile->nickname = $nickname;
-
- 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'];
+ $location = $sreg['postcode'] . ', ' . $sreg['country'];
} else {
- $profile->location = $sreg['country'];
+ $location = $sreg['country'];
}
}
-
- # XXX save language if it's passed
- # XXX save timezone if it's passed
-
- $profile->profileurl = common_profile_url($nickname);
-
- $profile->created = DB_DataObject_Cast::dateTime(); # current time
-
- $id = $profile->insert();
- if (!$id) {
- common_server_error(_('Error saving the profile.'));
- return;
+
+ if ($sreg['fullname'] && strlen($sreg['fullname']) <= 255) {
+ $fullname = $sreg['fullname'];
}
-
- $user = new User();
- $user->id = $id;
- $user->nickname = $nickname;
- $user->uri = common_user_uri($user);
-
+
if ($sreg['email'] && Validate::email($sreg['email'], true)) {
- $user->email = $sreg['email'];
+ $email = $sreg['email'];
}
- $user->created = DB_DataObject_Cast::dateTime(); # current time
-
- $result = $user->insert();
-
- if (!$result) {
- # Try to clean up...
- $profile->delete();
- }
+ # XXX: add language
+ # XXX: add timezone
+
+ $user = User::register(array('nickname' => $nickname,
+ 'email' => $email,
+ 'fullname' => $fullname,
+ 'location' => $location));
$result = oid_link_user($user->id, $canonical, $display);
-
- if (!$result) {
- # Try to clean up...
- $user->delete();
- $profile->delete();
- }
-
- oid_set_last($display);
+
+ oid_set_last($display);
common_set_user($user->nickname);
common_real_login(true);
common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)));
diff --git a/actions/register.php b/actions/register.php
index c53910842..e6b1931ce 100644
--- a/actions/register.php
+++ b/actions/register.php
@@ -82,7 +82,9 @@ class RegisterAction extends Action {
return;
} else if ($password != $confirm) {
$this->show_form(_('Passwords don\'t match.'));
- } else if ($user = $this->register_user($nickname, $password, $email, $fullname, $homepage, $bio, $location)) {
+ } else if ($user = User::register(array('nickname' => $nickname, 'password' => $password, 'email' => $email,
+ 'fullname' => $fullname, 'homepage' => $homepage, 'bio' => $bio,
+ 'location' => $location))) {
if (!$user) {
$this->show_form(_('Invalid username or password.'));
return;
@@ -121,88 +123,6 @@ class RegisterAction extends Action {
return ($user !== false);
}
- function register_user($nickname, $password, $email, $fullname, $homepage, $bio, $location) {
-
- $profile = new Profile();
-
- $profile->query('BEGIN');
-
- $profile->nickname = $nickname;
- $profile->profileurl = common_profile_url($nickname);
- if ($fullname) {
- $profile->fullname = $fullname;
- }
- if ($homepage) {
- $profile->homepage = $homepage;
- }
- if ($bio) {
- $profile->bio = $bio;
- }
- if ($location) {
- $profile->location = $location;
- }
- $profile->created = DB_DataObject_Cast::dateTime(); # current time
-
- $id = $profile->insert();
-
- if (!$id) {
- common_log_db_error($profile, 'INSERT', __FILE__);
- return FALSE;
- }
- $user = new User();
- $user->id = $id;
- $user->nickname = $nickname;
- $user->password = common_munge_password($password, $id);
- $user->created = DB_DataObject_Cast::dateTime(); # current time
- $user->uri = common_user_uri($user);
-
- $result = $user->insert();
-
- if (!$result) {
- common_log_db_error($user, 'INSERT', __FILE__);
- return FALSE;
- }
-
- # Everyone is subscribed to themself
-
- $subscription = new Subscription();
- $subscription->subscriber = $user->id;
- $subscription->subscribed = $user->id;
- $subscription->created = $user->created;
-
- $result = $subscription->insert();
-
- if (!$result) {
- common_log_db_error($subscription, 'INSERT', __FILE__);
- return FALSE;
- }
-
- if ($email) {
-
- $confirm = new Confirm_address();
- $confirm->code = common_confirmation_code(128);
- $confirm->user_id = $user->id;
- $confirm->address = $email;
- $confirm->address_type = 'email';
-
- $result = $confirm->insert();
- if (!$result) {
- common_log_db_error($confirm, 'INSERT', __FILE__);
- return FALSE;
- }
- }
-
- $profile->query('COMMIT');
-
- if ($email) {
- mail_confirm_address($confirm->code,
- $profile->nickname,
- $email);
- }
-
- return $user;
- }
-
function show_top($error=NULL) {
if ($error) {
common_element('p', 'error', $error);
diff --git a/classes/User.php b/classes/User.php
index f2ca13530..491f68df2 100644
--- a/classes/User.php
+++ b/classes/User.php
@@ -145,4 +145,91 @@ class User extends DB_DataObject
return $notice;
}
+
+ static function register($fields) {
+
+ extract($fields);
+
+ $profile = new Profile();
+
+ $profile->query('BEGIN');
+
+ $profile->nickname = $nickname;
+ $profile->profileurl = common_profile_url($nickname);
+
+ if ($fullname) {
+ $profile->fullname = $fullname;
+ }
+ if ($homepage) {
+ $profile->homepage = $homepage;
+ }
+ if ($bio) {
+ $profile->bio = $bio;
+ }
+ if ($location) {
+ $profile->location = $location;
+ }
+ $profile->created = DB_DataObject_Cast::dateTime(); # current time
+
+ $id = $profile->insert();
+
+ if (!$id) {
+ common_log_db_error($profile, 'INSERT', __FILE__);
+ return FALSE;
+ }
+
+ $user = new User();
+
+ $user->id = $id;
+ $user->nickname = $nickname;
+ $user->password = common_munge_password($password, $id);
+ $user->created = DB_DataObject_Cast::dateTime(); # current time
+ $user->uri = common_user_uri($user);
+
+ $result = $user->insert();
+
+ if (!$result) {
+ common_log_db_error($user, 'INSERT', __FILE__);
+ return FALSE;
+ }
+
+ # Everyone is subscribed to themself
+
+ $subscription = new Subscription();
+ $subscription->subscriber = $user->id;
+ $subscription->subscribed = $user->id;
+ $subscription->created = $user->created;
+
+ $result = $subscription->insert();
+
+ if (!$result) {
+ common_log_db_error($subscription, 'INSERT', __FILE__);
+ return FALSE;
+ }
+
+ if ($email) {
+
+ $confirm = new Confirm_address();
+ $confirm->code = common_confirmation_code(128);
+ $confirm->user_id = $user->id;
+ $confirm->address = $email;
+ $confirm->address_type = 'email';
+
+ $result = $confirm->insert();
+ if (!$result) {
+ common_log_db_error($confirm, 'INSERT', __FILE__);
+ return FALSE;
+ }
+ }
+
+ $profile->query('COMMIT');
+
+ if ($email) {
+ mail_confirm_address($confirm->code,
+ $profile->nickname,
+ $email);
+ }
+
+ return $user;
+ }
}