]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/showstream.php
remove 'nudge' -- it won't be in this release
[quix0rs-gnu-social.git] / actions / showstream.php
index 9d871e41bfa241bb2346afbc5c4bcbb375acee7c..16bffa4ea7edeb1711ae92a8a7893e4a26492a4b 100644 (file)
@@ -58,7 +58,7 @@ class ShowstreamAction extends StreamAction {
 
                $this->show_profile($profile);
 
-               $this->show_notices($profile);
+               $this->show_notices($user);
 
                common_show_footer();
        }
@@ -75,11 +75,27 @@ class ShowstreamAction extends StreamAction {
        }
 
        function show_header($user) {
+               # Feeds
+               common_element('link', array('rel' => 'alternate',
+                                                                        'href' => common_local_url('api', 
+                                                                                                                               array('apiaction' => 'statuses',
+                                                                                                                                         'method' => 'user_timeline.rss',
+                                                                                                                                         'argument' => $user->nickname)),
+                                                                        'type' => 'application/rss+xml',
+                                                                        'title' => sprintf(_('Notice feed for %s'), $user->nickname)));
+               common_element('link', array('rel' => 'alternate feed',
+                                                                        'href' => common_local_url('api', 
+                                                                                                                               array('apiaction' => 'statuses',
+                                                                                                                                         'method' => 'user_timeline.atom',
+                                                                                                                                         'argument' => $user->nickname)),
+                                                                        'type' => 'application/atom+xml',
+                                                                        'title' => sprintf(_('Notice feed for %s'), $user->nickname)));
                common_element('link', array('rel' => 'alternate',
                                                                         'href' => common_local_url('userrss', array('nickname' =>
                                                                                                                                                           $user->nickname)),
-                                                                        'type' => 'application/rss+xml',
+                                                                        'type' => 'application/rdf+xml',
                                                                         'title' => sprintf(_('Notice feed for %s'), $user->nickname)));
+               # FOAF
                common_element('link', array('rel' => 'meta',
                                                                         'href' => common_local_url('foaf', array('nickname' =>
                                                                                                                                                          $user->nickname)),
@@ -149,7 +165,7 @@ class ShowstreamAction extends StreamAction {
                
                $user = User::staticGet('id', $profile->id);
                
-               if ($cur->id != $user->id && $cur->mutuallySubscribed($user)) {
+               if ($cur && $cur->id != $user->id && $cur->mutuallySubscribed($user)) {
                        common_element('a', array('href' => common_local_url('newmessage', array('to' => $user->id))),
                                                   _('Send a message'));
                }
@@ -252,6 +268,11 @@ class ShowstreamAction extends StreamAction {
 
                                $other = Profile::staticGet($subs->subscribed);
 
+                               if (!$other) {
+                                       common_log_db_error($subs, 'SELECT', __FILE__);
+                                       continue;
+                               }
+                               
                                common_element_start('li');
                                common_element_start('a', array('title' => ($other->fullname) ?
                                                                                                $other->fullname :
@@ -330,35 +351,31 @@ class ShowstreamAction extends StreamAction {
                common_element_end('div');
        }
 
-       function show_notices($profile) {
-
-               $notice = DB_DataObject::factory('notice');
-               $notice->profile_id = $profile->id;
-
-               $notice->orderBy('created DESC, notice.id DESC');
+       function show_notices($user) {
 
                $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
 
-               $notice->limit((($page-1)*NOTICES_PER_PAGE), NOTICES_PER_PAGE + 1);
-
-               $cnt = $notice->find();
+               $notice = $user->getNotices(($page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);
+               
+               $cnt = 0;
 
-               if ($cnt > 0) {
+               if ($notice) {
+               
                        common_element_start('ul', array('id' => 'notices'));
-
-                       for ($i = 0; $i < min($cnt, NOTICES_PER_PAGE); $i++) {
-                               if ($notice->fetch()) {
-                                       $this->show_notice($notice);
-                               } else {
-                                       // shouldn't happen!
+                       
+                       while ($notice->fetch()) {
+                               $cnt++;
+                               if ($cnt > NOTICES_PER_PAGE) {
                                        break;
                                }
+                               $this->show_notice($notice);
                        }
 
                        common_element_end('ul');
                }
+               
                common_pagination($page>1, $cnt>NOTICES_PER_PAGE, $page,
-                                                 'showstream', array('nickname' => $profile->nickname));
+                                                 'showstream', array('nickname' => $user->nickname));
        }
 
        function show_last_notice($profile) {
@@ -389,6 +406,13 @@ class ShowstreamAction extends StreamAction {
                # XXX: RDFa
                common_element_start('li', array('class' => 'notice_single',
                                                                                 'id' => 'notice-' . $notice->id));
+               if ($user) {
+                       if ($user->hasFave($notice)) {
+                               common_disfavor_form($notice);
+                       } else {
+                               common_favor_form($notice);
+                       }
+               }
                $noticeurl = common_local_url('shownotice', array('notice' => $notice->id));
                # FIXME: URL, image, video, audio
                common_element_start('p');