From: Evan Prodromou <evan@prodromou.name>
Date: Tue, 22 Jul 2008 16:15:49 +0000 (-0400)
Subject: blow off DB_DataObject joins, write SQL from scratch
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=81e6d50c533964899308e5745745381c340a1764;p=quix0rs-gnu-social.git

blow off DB_DataObject joins, write SQL from scratch

darcs-hash:20080722161549-84dde-fedeed101bdef172f4a7aabf2278f1a2277a6d88.gz
---

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();
-		
-		$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;
 	}
 }