blow off DB_DataObject joins, write SQL from scratch
darcs-hash:20080722161549-84dde-fedeed101bdef172f4a7aabf2278f1a2277a6d88.gz
This commit is contained in:
parent
64ed01f0af
commit
81e6d50c53
@ -78,11 +78,11 @@ class AllAction extends StreamAction {
|
||||
$page = 1;
|
||||
}
|
||||
|
||||
$notice = $user->noticesWithFriends($page);
|
||||
$notice = $user->noticesWithFriends(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
|
||||
|
||||
# XXX: revisit constant scope
|
||||
|
||||
$notice->limit((($page-1)*NOTICES_PER_PAGE), NOTICES_PER_PAGE + 1);
|
||||
|
||||
$cnt = $notice->find();
|
||||
|
||||
if ($cnt > 0) {
|
||||
common_element_start('ul', array('id' => 'notices'));
|
||||
|
@ -43,13 +43,11 @@ class AllrssAction extends Rss10Action {
|
||||
|
||||
$user = $this->user;
|
||||
|
||||
$notice = $user->noticesWithFriends();
|
||||
$notice = $user->noticesWithFriends(0, $limit);
|
||||
|
||||
if ($limit != 0) {
|
||||
$notice->limit(0, $limit);
|
||||
}
|
||||
# XXX: revisit constant scope
|
||||
|
||||
$notice->find();
|
||||
$cnt = $notice->find();
|
||||
|
||||
while ($notice->fetch()) {
|
||||
$notices[] = clone($notice);
|
||||
|
@ -223,9 +223,7 @@ class TwitapistatusesAction extends TwitterapiAction {
|
||||
$link = common_local_url('all', array('nickname' => $user->nickname));
|
||||
$subtitle = sprintf(_("Updates from %s and friends on %s!"), $user->nickname, $sitename);
|
||||
|
||||
$notice->$user->noticesWithFriends();
|
||||
|
||||
$notice->limit((($page-1)*20), $count);
|
||||
$notice->$user->noticesWithFriends(($page-1)*20, $count);
|
||||
|
||||
$cnt = $notice->find();
|
||||
|
||||
|
@ -129,21 +129,15 @@ class User extends DB_DataObject
|
||||
return true;
|
||||
}
|
||||
|
||||
function noticesWithFriends() {
|
||||
function noticesWithFriends($offset=0, $limit=20) {
|
||||
|
||||
$notice = new Notice();
|
||||
|
||||
$notice->selectAs();
|
||||
|
||||
$subscription = new Subscription();
|
||||
|
||||
$subscription->subscriber = $this->id;
|
||||
|
||||
$notice->joinAdd($subscription);
|
||||
$notice->whereAdd('notice.profile_id = subscription.subscribed');
|
||||
$notice->selectAs($subscription, 'sub_%');
|
||||
|
||||
$notice->orderBy('created DESC, notice.id DESC');
|
||||
$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 ' . $offset . ', ' . $limit);
|
||||
|
||||
return $notice;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user