X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FUser.php;h=7345dc7f94ad68aa31277d4a9a21ad4d0a21d00e;hb=fbd8052d05fda7a967d8440574d2b5013d4e7be1;hp=2abb7eeb69319ae8956e2dc64882f32c9b39a2fb;hpb=b50f300566143837aba3739d62caf679ec19727e;p=quix0rs-gnu-social.git diff --git a/classes/User.php b/classes/User.php index 2abb7eeb69..7345dc7f94 100644 --- a/classes/User.php +++ b/classes/User.php @@ -255,6 +255,19 @@ class User extends Memcached_DataObject $user->inboxed = 1; + // Set default-on options here, otherwise they'll be disabled + // initially for sites using caching, since the initial encache + // doesn't know about the defaults in the database. + $user->emailnotifysub = 1; + $user->emailnotifyfav = 1; + $user->emailnotifynudge = 1; + $user->emailnotifymsg = 1; + $user->emailnotifyattn = 1; + $user->emailmicroid = 1; + $user->emailpost = 1; + $user->jabbermicroid = 1; + $user->viewdesigns = 1; + $user->created = common_sql_now(); if (Event::handle('StartUserRegister', array(&$user, &$profile))) { @@ -269,7 +282,13 @@ class User extends Memcached_DataObject } $user->id = $id; - $user->uri = common_user_uri($user); + + if (!empty($uri)) { + $user->uri = $uri; + } else { + $user->uri = common_user_uri($user); + } + if (!empty($password)) { // may not have a password for OpenID users $user->password = common_munge_password($password, $id); } @@ -360,11 +379,12 @@ class User extends Memcached_DataObject __FILE__); } else { $notice = Notice::saveNew($welcomeuser->id, + // TRANS: Notice given on user registration. + // TRANS: %1$s is the sitename, $2$s is the registering user's nickname. sprintf(_('Welcome to %1$s, @%2$s!'), common_config('site', 'name'), $user->nickname), 'system'); - } } @@ -375,7 +395,6 @@ class User extends Memcached_DataObject } // Things we do when the email changes - function emailChanged() { @@ -393,37 +412,8 @@ class User extends Memcached_DataObject function hasFave($notice) { - $cache = common_memcache(); - - // XXX: Kind of a hack. - - if ($cache) { - // This is the stream of favorite notices, in rev chron - // order. This forces it into cache. - - $ids = Fave::stream($this->id, 0, NOTICE_CACHE_WINDOW); - - // If it's in the list, then it's a fave - - if (in_array($notice->id, $ids)) { - return true; - } - - // If we're not past the end of the cache window, - // then the cache has all available faves, so this one - // is not a fave. - - if (count($ids) < NOTICE_CACHE_WINDOW) { - return false; - } - - // Otherwise, cache doesn't have all faves; - // fall through to the default - } - - $fave = Fave::pkeyGet(array('user_id' => $this->id, - 'notice_id' => $notice->id)); - return ((is_null($fave)) ? false : true); + $profile = $this->getProfile(); + return $profile->hasFave($notice); } function mutuallySubscribed($other) @@ -492,17 +482,8 @@ class User extends Memcached_DataObject function blowFavesCache() { - $cache = common_memcache(); - if ($cache) { - // Faves don't happen chronologically, so we need to blow - // ;last cache, too - $cache->delete(common_cache_key('fave:ids_by_user:'.$this->id)); - $cache->delete(common_cache_key('fave:ids_by_user:'.$this->id.';last')); - $cache->delete(common_cache_key('fave:ids_by_user_own:'.$this->id)); - $cache->delete(common_cache_key('fave:ids_by_user_own:'.$this->id.';last')); - } $profile = $this->getProfile(); - $profile->blowFaveCount(); + $profile->blowFavesCache(); } function getSelfTags() @@ -524,7 +505,7 @@ class User extends Memcached_DataObject if ($this->id == $other->id) { common_log(LOG_WARNING, sprintf( - "Profile ID %d (%s) tried to block his or herself.", + "Profile ID %d (%s) tried to block themself.", $this->id, $this->nickname ) @@ -552,6 +533,9 @@ class User extends Memcached_DataObject if (Subscription::exists($other, $self)) { Subscription::cancel($other, $self); } + if (Subscription::exists($self, $other)) { + Subscription::cancel($self, $other); + } $block->query('COMMIT'); @@ -891,4 +875,45 @@ class User extends Memcached_DataObject return $owner; } + + /** + * Pull the primary site account to use in single-user mode. + * If a valid user nickname is listed in 'singleuser':'nickname' + * in the config, this will be used; otherwise the site owner + * account is taken by default. + * + * @return User + * @throws ServerException if no valid single user account is present + * @throws ServerException if called when not in single-user mode + */ + static function singleUser() + { + if (common_config('singleuser', 'enabled')) { + + $user = null; + + $nickname = common_config('singleuser', 'nickname'); + + if (!empty($nickname)) { + $user = User::staticGet('nickname', $nickname); + } + + // if there was no nickname or no user by that nickname, + // try the site owner. + + if (empty($user)) { + $user = User::siteOwner(); + } + + if (!empty($user)) { + return $user; + } else { + // TRANS: Server exception. + throw new ServerException(_('No single user defined for single-user mode.')); + } + } else { + // TRANS: Server exception. + throw new ServerException(_('Single-user mode code called when not enabled.')); + } + } }