From 81e6d50c533964899308e5745745381c340a1764 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 22 Jul 2008 12:15:49 -0400 Subject: [PATCH] blow off DB_DataObject joins, write SQL from scratch darcs-hash:20080722161549-84dde-fedeed101bdef172f4a7aabf2278f1a2277a6d88.gz --- actions/all.php | 6 +++--- actions/allrss.php | 10 ++++------ actions/twitapistatuses.php | 4 +--- classes/User.php | 20 +++++++------------- 4 files changed, 15 insertions(+), 25 deletions(-) diff --git a/actions/all.php b/actions/all.php index 3d3d1c3563..0f8cf587cd 100644 --- a/actions/all.php +++ b/actions/all.php @@ -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')); diff --git a/actions/allrss.php b/actions/allrss.php index a64b476414..b6701cfdc7 100644 --- a/actions/allrss.php +++ b/actions/allrss.php @@ -43,13 +43,11 @@ class AllrssAction extends Rss10Action { $user = $this->user; - $notice = $user->noticesWithFriends(); + $notice = $user->noticesWithFriends(0, $limit); + + # XXX: revisit constant scope - if ($limit != 0) { - $notice->limit(0, $limit); - } - - $notice->find(); + $cnt = $notice->find(); while ($notice->fetch()) { $notices[] = clone($notice); diff --git a/actions/twitapistatuses.php b/actions/twitapistatuses.php index 749f2f0849..56a8199b78 100644 --- a/actions/twitapistatuses.php +++ b/actions/twitapistatuses.php @@ -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(); diff --git a/classes/User.php b/classes/User.php index 1772b82e0e..4f46653e43 100644 --- a/classes/User.php +++ b/classes/User.php @@ -128,23 +128,17 @@ class User extends DB_DataObject return true; } - - function noticesWithFriends() { + + function noticesWithFriends($offset=0, $limit=20) { $notice = new Notice(); - $notice->selectAs(); + $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); - $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'); - return $notice; } }