diff options
author | Evan Prodromou <evan@prodromou.name> | 2008-07-22 12:02:13 -0400 |
---|---|---|
committer | Evan Prodromou <evan@prodromou.name> | 2008-07-22 12:02:13 -0400 |
commit | 64ed01f0aff569da2fd4ed589df9ed4ee9852cb7 (patch) | |
tree | d385c10c3aef1408bf62fc9003bb2d697536e299 /actions/all.php | |
parent | ab1f2ff9d07088c7a3607ee6d05b1042d735960d (diff) |
centralize and optimize with-friends query
darcs-hash:20080722160213-84dde-2e466b9cc4601a8cb7237770a7df17a2f9dcadb9.gz
Diffstat (limited to 'actions/all.php')
-rw-r--r-- | actions/all.php | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/actions/all.php b/actions/all.php index 20aea7668..3d3d1c356 100644 --- a/actions/all.php +++ b/actions/all.php @@ -48,7 +48,7 @@ class AllAction extends StreamAction { array($this, 'show_header'), $user, array($this, 'show_top')); - $this->show_notices($profile); + $this->show_notices($user); common_show_footer(); } @@ -71,23 +71,19 @@ class AllAction extends StreamAction { $this->views_menu(); } - function show_notices($profile) { - - $notice = DB_DataObject::factory('notice'); - - # XXX: chokety and bad - - $notice->whereAdd('EXISTS (SELECT subscribed from subscription where subscriber = '.$profile->id.' and subscribed = notice.profile_id)', 'OR'); - $notice->whereAdd('profile_id = ' . $profile->id, 'OR'); - - $notice->orderBy('created DESC, notice.id DESC'); - - $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; + function show_notices($user) { + $page = $this->trimmed('page'); + if (!$page) { + $page = 1; + } + + $notice = $user->noticesWithFriends($page); + # 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')); for ($i = 0; $i < min($cnt, NOTICES_PER_PAGE); $i++) { |