X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FUser.php;h=ca3281107e65ea0fc0e9f5144bd39fe75c2f8f54;hb=1dc051a9eb0d8ba9173aa5698dc849c9a19360f4;hp=726a7e5c30d7954b52449e69fbebe6148d98f18c;hpb=ad2fd9abd43e55e53efa43e781e2877d3e7eec24;p=quix0rs-gnu-social.git diff --git a/classes/User.php b/classes/User.php index 726a7e5c30..ca3281107e 100644 --- a/classes/User.php +++ b/classes/User.php @@ -65,9 +65,6 @@ class User extends Managed_DataObject public $created; // datetime() not_null public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP - /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User',$k,$v); } - /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE @@ -123,16 +120,18 @@ class User extends Managed_DataObject ); } - protected $_profile = -1; + protected $_profile = null; /** * @return Profile + * + * @throws UserNoProfileException if user has no profile */ - function getProfile() + public function getProfile() { - if (is_int($this->_profile) && $this->_profile == -1) { // invalid but distinct from null - $this->_profile = Profile::staticGet('id', $this->id); - if (empty($this->_profile)) { + if (!($this->_profile instanceof Profile)) { + $this->_profile = Profile::getKV('id', $this->id); + if (!($this->_profile instanceof Profile)) { throw new UserNoProfileException($this); } } @@ -225,15 +224,7 @@ class User extends Managed_DataObject function getCarrier() { - return Sms_carrier::staticGet('id', $this->carrier); - } - - /** - * @deprecated use Subscription::start($sub, $other); - */ - function subscribeTo($other) - { - return Subscription::start($this->getProfile(), $other); + return Sms_carrier::getKV('id', $this->carrier); } function hasBlocked($other) @@ -263,7 +254,7 @@ class User extends Managed_DataObject * ?string 'uri' permalink to notice; defaults to local notice URL * @return mixed User object or false on failure */ - static function register($fields) { + static function register(array $fields) { // MAGICALLY put fields into current scope @@ -318,7 +309,7 @@ class User extends Managed_DataObject // Users who respond to invite email have proven their ownership of that address if (!empty($code)) { - $invite = Invitation::staticGet($code); + $invite = Invitation::getKV($code); if ($invite && $invite->address && $invite->address_type == 'email' && $invite->address == $email) { $user->email = $invite->address; } @@ -346,7 +337,7 @@ class User extends Managed_DataObject $user->created = common_sql_now(); - if (Event::handle('StartUserRegister', array(&$user, &$profile))) { + if (Event::handle('StartUserRegister', array($profile))) { $profile->query('BEGIN'); @@ -435,12 +426,12 @@ class User extends Managed_DataObject $defnick = common_config('newuser', 'default'); if (!empty($defnick)) { - $defuser = User::staticGet('nickname', $defnick); + $defuser = User::getKV('nickname', $defnick); if (empty($defuser)) { common_log(LOG_WARNING, sprintf("Default user %s does not exist.", $defnick), __FILE__); } else { - Subscription::start($user, $defuser); + Subscription::start($profile, $defuser->getProfile()); } } @@ -455,7 +446,7 @@ class User extends Managed_DataObject $welcome = common_config('newuser', 'welcome'); if (!empty($welcome)) { - $welcomeuser = User::staticGet('nickname', $welcome); + $welcomeuser = User::getKV('nickname', $welcome); if (empty($welcomeuser)) { common_log(LOG_WARNING, sprintf("Welcome user %s does not exist.", $defnick), __FILE__); @@ -470,7 +461,7 @@ class User extends Managed_DataObject } } - Event::handle('EndUserRegister', array(&$profile, &$user)); + Event::handle('EndUserRegister', array($profile)); } return $user; @@ -486,8 +477,15 @@ class User extends Managed_DataObject if ($invites->find()) { while ($invites->fetch()) { - $other = User::staticGet($invites->user_id); - subs_subscribe_to($other, $this); + try { + $other = Profile::getKV('id', $invites->user_id); + if (!($other instanceof Profile)) { // remove when getKV throws exceptions + continue; + } + Subscription::start($other, $this->getProfile()); + } catch (Exception $e) { + continue; + } } } } @@ -597,7 +595,7 @@ class User extends Managed_DataObject return Profile_tag::setTags($this->id, $this->id, $newtags, $privacy); } - function block($other) + function block(Profile $other) { // Add a new block record @@ -643,11 +641,11 @@ class User extends Managed_DataObject return true; } - function unblock($other) + function unblock(Profile $other) { // Get the block record - $block = Profile_block::get($this->id, $other->id); + $block = Profile_block::exists($this->getProfile(), $other); if (!$block) { return false; @@ -705,10 +703,10 @@ class User extends Managed_DataObject return $profile->leaveGroup($group); } - function getSubscriptions($offset=0, $limit=null) + function getSubscribed($offset=0, $limit=null) { $profile = $this->getProfile(); - return $profile->getSubscriptions($offset, $limit); + return $profile->getSubscribed($offset, $limit); } function getSubscribers($offset=0, $limit=null) @@ -736,7 +734,7 @@ class User extends Managed_DataObject $profile = new Profile(); - $cnt = $profile->query(sprintf($qry, $this->id, $tag)); + $cnt = $profile->query(sprintf($qry, $this->id, $profile->escape($tag))); return $profile; } @@ -758,7 +756,7 @@ class User extends Managed_DataObject $profile = new Profile(); - $profile->query(sprintf($qry, $this->id, $tag)); + $profile->query(sprintf($qry, $this->id, $profile->escape($tag))); return $profile; } @@ -865,54 +863,31 @@ class User extends Managed_DataObject throw new Exception(_('Not implemented since inbox change.')); } - function shareLocation() - { - $cfg = common_config('location', 'share'); - - if ($cfg == 'always') { - return true; - } else if ($cfg == 'never') { - return false; - } else { // user - $share = true; - - $prefs = User_location_prefs::staticGet('user_id', $this->id); - - if (empty($prefs)) { - $share = common_config('location', 'sharedefault'); - } else { - $share = $prefs->share_location; - $prefs->free(); - } - - return $share; - } - } - - static function siteOwner() + public 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; + if (!$pr->find(true)) { + throw new NoResultException($pr); } + $owner = User::getKV('id', $pr->profile_id); + self::cacheSet('user:site_owner', $owner); } - return $owner; + if ($owner instanceof User) { + return $owner; + } + + throw new ServerException(_('No site owner configured.')); } /** @@ -925,35 +900,23 @@ class User extends Managed_DataObject * @throws ServerException if no valid single user account is present * @throws ServerException if called when not in single-user mode */ - static function singleUser() + public 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 (!common_config('singleuser', 'enabled')) { + // TRANS: Server exception. + throw new ServerException(_('Single-user mode code called when not enabled.')); + } - if (!empty($user)) { + if ($nickname = common_config('singleuser', 'nickname')) { + $user = User::getKV('nickname', $nickname); + if ($user instanceof 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.')); } + + // If there was no nickname or no user by that nickname, + // try the site owner. Throws exception if not configured. + return User::siteOwner(); } /** @@ -1055,11 +1018,11 @@ class User extends Managed_DataObject static function recoverPassword($nore) { - $user = User::staticGet('email', common_canonical_email($nore)); + $user = User::getKV('email', common_canonical_email($nore)); if (!$user) { try { - $user = User::staticGet('nickname', common_canonical_nickname($nore)); + $user = User::getKV('nickname', common_canonical_nickname($nore)); } catch (NicknameException $e) { // invalid } @@ -1076,7 +1039,7 @@ class User extends Managed_DataObject $confirm_email->address_type = 'email'; $confirm_email->find(); if ($confirm_email->fetch()) { - $user = User::staticGet($confirm_email->user_id); + $user = User::getKV($confirm_email->user_id); } else { $confirm_email = null; } @@ -1149,10 +1112,10 @@ class User extends Managed_DataObject function streamModeOnly() { if (common_config('oldschool', 'enabled')) { - $osp = Old_school_prefs::staticGet('user_id', $this->id); + $osp = Old_school_prefs::getKV('user_id', $this->id); if (!empty($osp)) { return $osp->stream_mode_only; - } + } } return false; @@ -1161,7 +1124,7 @@ class User extends Managed_DataObject function conversationTree() { if (common_config('oldschool', 'enabled')) { - $osp = Old_school_prefs::staticGet('user_id', $this->id); + $osp = Old_school_prefs::getKV('user_id', $this->id); if (!empty($osp)) { return $osp->conversation_tree; } @@ -1173,11 +1136,42 @@ class User extends Managed_DataObject function streamNicknames() { if (common_config('oldschool', 'enabled')) { - $osp = Old_school_prefs::staticGet('user_id', $this->id); + $osp = Old_school_prefs::getKV('user_id', $this->id); if (!empty($osp)) { return $osp->stream_nicknames; } } return false; } + + function registrationActivity() + { + $profile = $this->getProfile(); + + $service = new ActivityObject(); + + $service->type = ActivityObject::SERVICE; + $service->title = common_config('site', 'name'); + $service->link = common_root_url(); + $service->id = $service->link; + + $act = new Activity(); + + $act->actor = ActivityObject::fromProfile($profile); + $act->verb = ActivityVerb::JOIN; + + $act->objects[] = $service; + + $act->id = TagURI::mint('user:register:%d', + $this->id); + + $act->time = strtotime($this->created); + + $act->title = _("Register"); + + $act->content = sprintf(_('%1$s joined %2$s.'), + $profile->getBestName(), + $service->title); + return $act; + } }