]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/public.php
Merge branch 'master' into 1.0.x
[quix0rs-gnu-social.git] / actions / public.php
index 84306e1fccf23418da9ad97d450821b659d0471f..e4f98dacc35a41c782665853ccce1be1cc50c8bf 100644 (file)
@@ -59,6 +59,7 @@ class PublicAction extends Action
 
     var $page = null;
     var $notice;
+    var $userProfile = null;
 
     function isReadOnly($args)
     {
@@ -85,15 +86,9 @@ class PublicAction extends Action
 
         common_set_returnto($this->selfUrl());
 
-        $profile = null;
-        
-        $user = common_current_user();
+        $this->userProfile = Profile::current();
 
-        if (!empty($user)) {
-            $profile = $user->getProfile();
-        }
-
-        $stream = new PublicNoticeStream($profile);
+        $stream = new ThreadingPublicNoticeStream($this->userProfile);
 
         $this->notice = $stream->getNotices(($this->page-1)*NOTICES_PER_PAGE,
                                             NOTICES_PER_PAGE + 1);
@@ -167,7 +162,12 @@ class PublicAction extends Action
      */
     function getFeeds()
     {
-        return array(new Feed(Feed::RSS1, common_local_url('publicrss'),
+        return array(new Feed(Feed::JSON,
+                              common_local_url('ApiTimelinePublic',
+                                               array('format' => 'as')),
+                              // TRANS: Link description for public timeline feed.
+                              _('Public Stream Feed (Activity Streams JSON)')),
+                    new Feed(Feed::RSS1, common_local_url('publicrss'),
                               // TRANS: Link description for public timeline feed.
                               _('Public Stream Feed (RSS 1.0)')),
                      new Feed(Feed::RSS2,
@@ -213,7 +213,7 @@ class PublicAction extends Action
      */
     function showContent()
     {
-        $nl = new ThreadedNoticeList($this->notice, $this);
+        $nl = new ThreadedNoticeList($this->notice, $this, $this->userProfile);
 
         $cnt = $nl->show();
 
@@ -227,14 +227,26 @@ class PublicAction extends Action
 
     function showSections()
     {
-        // $top = new TopPostersSection($this);
-        // $top->show();
+        // Show invite button, as long as site isn't closed, and
+        // we have a logged in user.
+        if (!common_config('site', 'closed') && common_logged_in()) {
+            if (!common_config('site', 'private')) {
+                $ibs = new InviteButtonSection(
+                    $this,
+                    // TRANS: Button text for inviting more users to the StatusNet instance.
+                    // TRANS: Less business/enterprise-oriented language for public sites.
+                    _m('BUTTON', 'Send invite')
+                );
+            } else {
+                $ibs = new InviteButtonSection($this);
+            }
+            $ibs->show();
+        }
+
         $pop = new PopularNoticeSection($this);
         $pop->show();
-        $gbp = new GroupsByMembersSection($this);
-        $gbp->show();
-        $ptp = new PeopletagsBySubsSection($this);
-        $ptp->show();
+        $cloud = new PublicTagCloudSection($this);
+        $cloud->show();
         $feat = new FeaturedUsersSection($this);
         $feat->show();
     }
@@ -259,3 +271,11 @@ class PublicAction extends Action
         $this->elementEnd('div');
     }
 }
+
+class ThreadingPublicNoticeStream extends ThreadingNoticeStream
+{
+    function __construct($profile)
+    {
+        parent::__construct(new PublicNoticeStream($profile));
+    }
+}