add hooks for user registration
This commit is contained in:
parent
2a054a50fb
commit
8cb8b357a4
@ -699,3 +699,12 @@ StartShowContentLicense: Showing the default license for content
|
|||||||
|
|
||||||
EndShowContentLicense: Showing the default license for content
|
EndShowContentLicense: Showing the default license for content
|
||||||
- $action: the current action
|
- $action: the current action
|
||||||
|
|
||||||
|
StartUserRegister: When a new user is being registered
|
||||||
|
- &$profile: new profile data (no ID)
|
||||||
|
- &$user: new user account (no ID or URI)
|
||||||
|
|
||||||
|
EndUserRegister: When a new user has been registered
|
||||||
|
- &$profile: new profile data
|
||||||
|
- &$user: new user account
|
||||||
|
|
||||||
|
199
classes/User.php
199
classes/User.php
@ -209,8 +209,6 @@ class User extends Memcached_DataObject
|
|||||||
|
|
||||||
$profile = new Profile();
|
$profile = new Profile();
|
||||||
|
|
||||||
$profile->query('BEGIN');
|
|
||||||
|
|
||||||
if(!empty($email))
|
if(!empty($email))
|
||||||
{
|
{
|
||||||
$email = common_canonical_email($email);
|
$email = common_canonical_email($email);
|
||||||
@ -220,7 +218,7 @@ class User extends Memcached_DataObject
|
|||||||
$profile->nickname = $nickname;
|
$profile->nickname = $nickname;
|
||||||
if(! User::allowed_nickname($nickname)){
|
if(! User::allowed_nickname($nickname)){
|
||||||
common_log(LOG_WARNING, sprintf("Attempted to register a nickname that is not allowed: %s", $profile->nickname),
|
common_log(LOG_WARNING, sprintf("Attempted to register a nickname that is not allowed: %s", $profile->nickname),
|
||||||
__FILE__);
|
__FILE__);
|
||||||
}
|
}
|
||||||
$profile->profileurl = common_profile_url($nickname);
|
$profile->profileurl = common_profile_url($nickname);
|
||||||
|
|
||||||
@ -248,16 +246,8 @@ class User extends Memcached_DataObject
|
|||||||
|
|
||||||
$profile->created = common_sql_now();
|
$profile->created = common_sql_now();
|
||||||
|
|
||||||
$id = $profile->insert();
|
|
||||||
|
|
||||||
if (empty($id)) {
|
|
||||||
common_log_db_error($profile, 'INSERT', __FILE__);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$user = new User();
|
$user = new User();
|
||||||
|
|
||||||
$user->id = $id;
|
|
||||||
$user->nickname = $nickname;
|
$user->nickname = $nickname;
|
||||||
|
|
||||||
if (!empty($password)) { // may not have a password for OpenID users
|
if (!empty($password)) { // may not have a password for OpenID users
|
||||||
@ -282,109 +272,126 @@ class User extends Memcached_DataObject
|
|||||||
$user->inboxed = 1;
|
$user->inboxed = 1;
|
||||||
|
|
||||||
$user->created = common_sql_now();
|
$user->created = common_sql_now();
|
||||||
$user->uri = common_user_uri($user);
|
|
||||||
|
|
||||||
$result = $user->insert();
|
if (Event::handle('StartUserRegister', array(&$user, &$profile))) {
|
||||||
|
|
||||||
if (!$result) {
|
$profile->query('BEGIN');
|
||||||
common_log_db_error($user, 'INSERT', __FILE__);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Everyone gets an inbox
|
$id = $profile->insert();
|
||||||
|
|
||||||
$inbox = new Inbox();
|
if (empty($id)) {
|
||||||
|
common_log_db_error($profile, 'INSERT', __FILE__);
|
||||||
$inbox->user_id = $user->id;
|
|
||||||
$inbox->notice_ids = '';
|
|
||||||
|
|
||||||
$result = $inbox->insert();
|
|
||||||
|
|
||||||
if (!$result) {
|
|
||||||
common_log_db_error($inbox, '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 (!empty($email) && !$user->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;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($code) && $user->email) {
|
$user->id = $id;
|
||||||
$user->emailChanged();
|
$user->uri = common_user_uri($user);
|
||||||
}
|
|
||||||
|
|
||||||
// Default system subscription
|
$result = $user->insert();
|
||||||
|
|
||||||
$defnick = common_config('newuser', 'default');
|
if (!$result) {
|
||||||
|
common_log_db_error($user, 'INSERT', __FILE__);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($defnick)) {
|
// Everyone gets an inbox
|
||||||
$defuser = User::staticGet('nickname', $defnick);
|
|
||||||
if (empty($defuser)) {
|
|
||||||
common_log(LOG_WARNING, sprintf("Default user %s does not exist.", $defnick),
|
|
||||||
__FILE__);
|
|
||||||
} else {
|
|
||||||
$defsub = new Subscription();
|
|
||||||
$defsub->subscriber = $user->id;
|
|
||||||
$defsub->subscribed = $defuser->id;
|
|
||||||
$defsub->created = $user->created;
|
|
||||||
|
|
||||||
$result = $defsub->insert();
|
$inbox = new Inbox();
|
||||||
|
|
||||||
|
$inbox->user_id = $user->id;
|
||||||
|
$inbox->notice_ids = '';
|
||||||
|
|
||||||
|
$result = $inbox->insert();
|
||||||
|
|
||||||
|
if (!$result) {
|
||||||
|
common_log_db_error($inbox, '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 (!empty($email) && !$user->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) {
|
if (!$result) {
|
||||||
common_log_db_error($defsub, 'INSERT', __FILE__);
|
common_log_db_error($confirm, 'INSERT', __FILE__);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
$profile->query('COMMIT');
|
|
||||||
|
|
||||||
if (!empty($email) && !$user->email) {
|
|
||||||
mail_confirm_address($user, $confirm->code, $profile->nickname, $email);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Welcome message
|
|
||||||
|
|
||||||
$welcome = common_config('newuser', 'welcome');
|
|
||||||
|
|
||||||
if (!empty($welcome)) {
|
|
||||||
$welcomeuser = User::staticGet('nickname', $welcome);
|
|
||||||
if (empty($welcomeuser)) {
|
|
||||||
common_log(LOG_WARNING, sprintf("Welcome user %s does not exist.", $defnick),
|
|
||||||
__FILE__);
|
|
||||||
} else {
|
|
||||||
$notice = Notice::saveNew($welcomeuser->id,
|
|
||||||
sprintf(_('Welcome to %1$s, @%2$s!'),
|
|
||||||
common_config('site', 'name'),
|
|
||||||
$user->nickname),
|
|
||||||
'system');
|
|
||||||
|
|
||||||
|
if (!empty($code) && $user->email) {
|
||||||
|
$user->emailChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Default system subscription
|
||||||
|
|
||||||
|
$defnick = common_config('newuser', 'default');
|
||||||
|
|
||||||
|
if (!empty($defnick)) {
|
||||||
|
$defuser = User::staticGet('nickname', $defnick);
|
||||||
|
if (empty($defuser)) {
|
||||||
|
common_log(LOG_WARNING, sprintf("Default user %s does not exist.", $defnick),
|
||||||
|
__FILE__);
|
||||||
|
} else {
|
||||||
|
$defsub = new Subscription();
|
||||||
|
$defsub->subscriber = $user->id;
|
||||||
|
$defsub->subscribed = $defuser->id;
|
||||||
|
$defsub->created = $user->created;
|
||||||
|
|
||||||
|
$result = $defsub->insert();
|
||||||
|
|
||||||
|
if (!$result) {
|
||||||
|
common_log_db_error($defsub, 'INSERT', __FILE__);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$profile->query('COMMIT');
|
||||||
|
|
||||||
|
if (!empty($email) && !$user->email) {
|
||||||
|
mail_confirm_address($user, $confirm->code, $profile->nickname, $email);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Welcome message
|
||||||
|
|
||||||
|
$welcome = common_config('newuser', 'welcome');
|
||||||
|
|
||||||
|
if (!empty($welcome)) {
|
||||||
|
$welcomeuser = User::staticGet('nickname', $welcome);
|
||||||
|
if (empty($welcomeuser)) {
|
||||||
|
common_log(LOG_WARNING, sprintf("Welcome user %s does not exist.", $defnick),
|
||||||
|
__FILE__);
|
||||||
|
} else {
|
||||||
|
$notice = Notice::saveNew($welcomeuser->id,
|
||||||
|
sprintf(_('Welcome to %1$s, @%2$s!'),
|
||||||
|
common_config('site', 'name'),
|
||||||
|
$user->nickname),
|
||||||
|
'system');
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Event::handle('EndUserRegister', array(&$profile, &$user));
|
||||||
}
|
}
|
||||||
|
|
||||||
return $user;
|
return $user;
|
||||||
|
Loading…
Reference in New Issue
Block a user