X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FUser.php;h=fa1ecdfa0fd2e9569afce6d331823b1145ffd66c;hb=4f3d1e93e97365deac2366bfe422e8301d773a25;hp=b8af0d0a6c84225e3d72638b04e6398902915600;hpb=02a3f24b92f70531c9bf761729d569b8ce5d307c;p=quix0rs-gnu-social.git diff --git a/classes/User.php b/classes/User.php index b8af0d0a6c..fa1ecdfa0f 100644 --- a/classes/User.php +++ b/classes/User.php @@ -24,7 +24,6 @@ if (!defined('LACONICA')) { exit(1); } */ require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; require_once 'Validate.php'; -require_once(INSTALLDIR.'/lib/noticewrapper.php'); class User extends Memcached_DataObject { @@ -58,6 +57,8 @@ class User extends Memcached_DataObject public $autosubscribe; // tinyint(1) public $created; // datetime() not_null public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP + public $inboxed; // tinyint(1) + public $urlshorteningservice; // varchar(50) default_ur1.ca /* Static get */ function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('User',$k,$v); } @@ -66,21 +67,15 @@ class User extends Memcached_DataObject ###END_AUTOCODE function getProfile() { - $profile = DB_DataObject::factory('profile'); - $profile->id = $this->id; - if ($profile->find()) { - $profile->fetch(); - return $profile; - } - return NULL; + return Profile::staticGet('id', $this->id); } function isSubscribed($other) { assert(!is_null($other)); - $sub = DB_DataObject::factory('subscription'); - $sub->subscriber = $this->id; - $sub->subscribed = $other->id; - return $sub->find(); + # XXX: cache results of this query + $sub = Subscription::pkeyGet(array('subscriber' => $this->id, + 'subscribed' => $other->id)); + return (is_null($sub)) ? false : true; } # 'update' won't write key columns, so we have to do it ourselves. @@ -131,7 +126,7 @@ class User extends Memcached_DataObject } function getCarrier() { - return Sms_carrier::staticGet($this->carrier); + return Sms_carrier::staticGet('id', $this->carrier); } function subscribeTo($other) { @@ -148,19 +143,6 @@ class User extends Memcached_DataObject return true; } - function noticesWithFriendsWindow() { - - - $notice = new Notice(); - - $notice->query('SELECT notice.* ' . - 'FROM notice JOIN subscription on notice.profile_id = subscription.subscribed ' . - 'WHERE subscription.subscriber = ' . $this->id . ' ' . - 'ORDER BY created DESC, notice.id DESC ' . - 'LIMIT 0, ' . WITHFRIENDS_CACHE_WINDOW); - - } - static function register($fields) { # MAGICALLY put fields into current scope @@ -285,17 +267,9 @@ class User extends Memcached_DataObject } function hasFave($notice) { - $fave = new Fave(); - $fave->user_id = $this->id; - $fave->notice_id = $notice->id; - if ($fave->find()) { - $result = true; - } else { - $result = false; - } - $fave->free(); - unset($fave); - return $result; + $fave = Fave::pkeyGet(array('user_id' => $this->id, + 'notice_id' => $notice->id)); + return ((is_null($fave)) ? false : true); } function mutuallySubscribed($other) { @@ -319,7 +293,7 @@ class User extends Memcached_DataObject return $user; } - function getReplies($offset=0, $limit=NOTICES_PER_PAGE) { + function getReplies($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0) { $qry = 'SELECT notice.* ' . 'FROM notice JOIN reply ON notice.id = reply.notice_id ' . @@ -327,10 +301,10 @@ class User extends Memcached_DataObject return Notice::getStream(sprintf($qry, $this->id), 'user:replies:'.$this->id, - $offset, $limit); + $offset, $limit, $since_id, $before_id); } - function getNotices($offset=0, $limit=NOTICES_PER_PAGE) { + function getNotices($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0) { $qry = 'SELECT * ' . 'FROM notice ' . @@ -338,29 +312,47 @@ class User extends Memcached_DataObject return Notice::getStream(sprintf($qry, $this->id), 'user:notices:'.$this->id, - $offset, $limit); + $offset, $limit, $since_id, $before_id); } function favoriteNotices($offset=0, $limit=NOTICES_PER_PAGE) { $qry = 'SELECT notice.* ' . 'FROM notice JOIN fave ON notice.id = fave.notice_id ' . - 'WHERE fave.profile_id = %d '; + 'WHERE fave.user_id = %d '; return Notice::getStream(sprintf($qry, $this->id), 'user:faves:'.$this->id, $offset, $limit); } - function noticesWithFriends($offset=0, $limit=NOTICES_PER_PAGE) { - $qry = - 'SELECT notice.* ' . - 'FROM notice JOIN subscription ON notice.profile_id = subscription.subscribed ' . - 'WHERE subscription.subscriber = %d'; + function noticesWithFriends($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $before_id=0) { + $enabled = common_config('inboxes', 'enabled'); + + # Complicated code, depending on whether we support inboxes yet + # XXX: make this go away when inboxes become mandatory + + if ($enabled === false || + ($enabled == 'transitional' && $this->inboxed == 0)) { + $qry = + 'SELECT notice.* ' . + 'FROM notice JOIN subscription ON notice.profile_id = subscription.subscribed ' . + 'WHERE subscription.subscriber = %d '; + $order = NULL; + } else if ($enabled === true || + ($enabled == 'transitional' && $this->inboxed == 1)) { + $qry = + 'SELECT notice.* ' . + 'FROM notice JOIN notice_inbox ON notice.id = notice_inbox.notice_id ' . + 'WHERE notice_inbox.user_id = %d '; + # NOTE: we override ORDER + $order = 'ORDER BY notice_inbox.created DESC, notice_inbox.notice_id DESC '; + } return Notice::getStream(sprintf($qry, $this->id), 'user:notices_with_friends:' . $this->id, - $offset, $limit); + $offset, $limit, $since_id, $before_id, + $order); } function blowFavesCache() {