summaryrefslogtreecommitdiff
path: root/classes/User.php
diff options
context:
space:
mode:
authorCraig Andrews <candrews@integralblue.com>2010-02-02 17:00:10 -0500
committerCraig Andrews <candrews@integralblue.com>2010-02-02 17:00:10 -0500
commit057ec1fceacbfec1f755a5bc6700a188aa70e33f (patch)
tree297839a71d9d3a7a0a7935d5dbcc9c4a3c6c99bb /classes/User.php
parentd14651706cf728f116b7ae44c6a6e37b5eb918a4 (diff)
parentf60f2c523f2e7018ea923898931287e7a99e8f44 (diff)
Merge branch '0.9.x' into 1.0.x
Conflicts: EVENTS.txt lib/imqueuehandler.php lib/jabber.php lib/util.php plugins/Xmpp/Sharing_XMPP.php
Diffstat (limited to 'classes/User.php')
-rw-r--r--classes/User.php204
1 files changed, 118 insertions, 86 deletions
diff --git a/classes/User.php b/classes/User.php
index 57c56849d..e7cecf975 100644
--- a/classes/User.php
+++ b/classes/User.php
@@ -204,8 +204,6 @@ class User extends Memcached_DataObject
$profile = new Profile();
- $profile->query('BEGIN');
-
if(!empty($email))
{
$email = common_canonical_email($email);
@@ -215,7 +213,7 @@ class User extends Memcached_DataObject
$profile->nickname = $nickname;
if(! User::allowed_nickname($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);
@@ -243,22 +241,10 @@ class User extends Memcached_DataObject
$profile->created = common_sql_now();
- $id = $profile->insert();
-
- if (empty($id)) {
- common_log_db_error($profile, 'INSERT', __FILE__);
- return false;
- }
-
$user = new User();
- $user->id = $id;
$user->nickname = $nickname;
- if (!empty($password)) { // may not have a password for OpenID users
- $user->password = common_munge_password($password, $id);
- }
-
// Users who respond to invite email have proven their ownership of that address
if (!empty($code)) {
@@ -277,109 +263,129 @@ class User extends Memcached_DataObject
$user->inboxed = 1;
$user->created = common_sql_now();
- $user->uri = common_user_uri($user);
-
- $result = $user->insert();
- if (!$result) {
- common_log_db_error($user, 'INSERT', __FILE__);
- return false;
- }
-
- // Everyone gets an inbox
+ if (Event::handle('StartUserRegister', array(&$user, &$profile))) {
- $inbox = new Inbox();
+ $profile->query('BEGIN');
- $inbox->user_id = $user->id;
- $inbox->notice_ids = '';
+ $id = $profile->insert();
- $result = $inbox->insert();
+ if (empty($id)) {
+ common_log_db_error($profile, 'INSERT', __FILE__);
+ return false;
+ }
- if (!$result) {
- common_log_db_error($inbox, 'INSERT', __FILE__);
- return false;
- }
+ $user->id = $id;
+ $user->uri = common_user_uri($user);
+ if (!empty($password)) { // may not have a password for OpenID users
+ $user->password = common_munge_password($password, $id);
+ }
- // Everyone is subscribed to themself
+ $result = $user->insert();
- $subscription = new Subscription();
- $subscription->subscriber = $user->id;
- $subscription->subscribed = $user->id;
- $subscription->created = $user->created;
+ if (!$result) {
+ common_log_db_error($user, 'INSERT', __FILE__);
+ return false;
+ }
- $result = $subscription->insert();
+ // Everyone gets an inbox
- if (!$result) {
- common_log_db_error($subscription, 'INSERT', __FILE__);
- return false;
- }
+ $inbox = new Inbox();
- if (!empty($email) && !$user->email) {
+ $inbox->user_id = $user->id;
+ $inbox->notice_ids = '';
- $confirm = new Confirm_address();
- $confirm->code = common_confirmation_code(128);
- $confirm->user_id = $user->id;
- $confirm->address = $email;
- $confirm->address_type = 'email';
+ $result = $inbox->insert();
- $result = $confirm->insert();
if (!$result) {
- common_log_db_error($confirm, 'INSERT', __FILE__);
+ common_log_db_error($inbox, 'INSERT', __FILE__);
return false;
}
- }
- if (!empty($code) && $user->email) {
- $user->emailChanged();
- }
+ // Everyone is subscribed to themself
- // Default system subscription
+ $subscription = new Subscription();
+ $subscription->subscriber = $user->id;
+ $subscription->subscribed = $user->id;
+ $subscription->created = $user->created;
- $defnick = common_config('newuser', 'default');
+ $result = $subscription->insert();
- 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;
+ 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 = $defsub->insert();
+ $result = $confirm->insert();
if (!$result) {
- common_log_db_error($defsub, 'INSERT', __FILE__);
+ common_log_db_error($confirm, 'INSERT', __FILE__);
return false;
}
}
- }
- $profile->query('COMMIT');
+ if (!empty($code) && $user->email) {
+ $user->emailChanged();
+ }
+
+ // Default system subscription
- if (!empty($email) && !$user->email) {
- mail_confirm_address($user, $confirm->code, $profile->nickname, $email);
- }
+ $defnick = common_config('newuser', 'default');
- // Welcome message
+ 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;
- $welcome = common_config('newuser', 'welcome');
+ $result = $defsub->insert();
- 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 (!$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;
@@ -920,4 +926,30 @@ class User extends Memcached_DataObject
return $share;
}
}
+
+ static function siteOwner()
+ {
+ $owner = self::cacheGet('user:site_owner');
+
+ if ($owner === false) { // cache miss
+
+ $pr = new Profile_role();
+
+ $pr->role = Profile_role::OWNER;
+
+ $pr->orderBy('created');
+
+ $pr->limit(1);
+
+ if ($pr->find(true)) {
+ $owner = User::staticGet('id', $pr->profile_id);
+ } else {
+ $owner = null;
+ }
+
+ self::cacheSet('user:site_owner', $owner);
+ }
+
+ return $owner;
+ }
}