summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@prodromou.name>2008-07-22 12:15:49 -0400
committerEvan Prodromou <evan@prodromou.name>2008-07-22 12:15:49 -0400
commit81e6d50c533964899308e5745745381c340a1764 (patch)
tree1caaad20518b0786b09fd85f51268945974cf8fa
parent64ed01f0aff569da2fd4ed589df9ed4ee9852cb7 (diff)
blow off DB_DataObject joins, write SQL from scratch
darcs-hash:20080722161549-84dde-fedeed101bdef172f4a7aabf2278f1a2277a6d88.gz
-rw-r--r--actions/all.php6
-rw-r--r--actions/allrss.php10
-rw-r--r--actions/twitapistatuses.php4
-rw-r--r--classes/User.php20
4 files changed, 15 insertions, 25 deletions
diff --git a/actions/all.php b/actions/all.php
index 3d3d1c356..0f8cf587c 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 a64b47641..b6701cfdc 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 749f2f084..56a8199b7 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 1772b82e0..4f46653e4 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();
-
- $subscription = new Subscription();
+ $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->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;
}
}