]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/subgroupnav.php
Misses this file to merge. I like the comments.
[quix0rs-gnu-social.git] / lib / subgroupnav.php
index 4a9b36ae8fa1a198c7d2cb7d2be8f8732c4b62cb..40447dd41a26a7a599abf3df8776771795f8dd95 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Laconica, the distributed open-source microblogging tool
+ * StatusNet, the distributed open-source microblogging tool
  *
  * Local navigation for subscriptions group of pages
  *
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  * @category  Subs
- * @package   Laconica
- * @author    Evan Prodromou <evan@controlyourself.ca>
- * @copyright 2008-2009 Control Yourself, Inc.
+ * @package   StatusNet
+ * @author    Evan Prodromou <evan@status.net>
+ * @copyright 2008-2011 StatusNet, Inc.
  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link      http://laconi.ca/
+ * @link      http://status.net/
  */
 
-if (!defined('LACONICA')) {
+if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
@@ -37,27 +37,24 @@ require_once INSTALLDIR.'/lib/widget.php';
  * Local nav menu for subscriptions, subscribers
  *
  * @category Subs
- * @package  Laconica
- * @author   Evan Prodromou <evan@controlyourself.ca>
+ * @package  StatusNet
+ * @author   Evan Prodromou <evan@status.net>
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
- * @link     http://laconi.ca/
+ * @link     http://status.net/
  */
-
-class SubGroupNav extends Widget
+class SubGroupNav extends Menu
 {
-    var $action = null;
     var $user = null;
 
     /**
      * Construction
      *
      * @param Action $action current action, used for output
+     * @param User   $user   Current user or NULL if "guest"
      */
-
-    function __construct($action=null, $user=null)
+    function __construct(Action $action=null, User $user=null)
     {
         parent::__construct($action);
-        $this->action = $action;
         $this->user = $user;
     }
 
@@ -66,7 +63,6 @@ class SubGroupNav extends Widget
      *
      * @return void
      */
-
     function show()
     {
         $cur = common_current_user();
@@ -76,34 +72,82 @@ class SubGroupNav extends Widget
 
         if (Event::handle('StartSubGroupNav', array($this))) {
 
+            $this->out->menuItem(common_local_url('showstream', array('nickname' =>
+                                                                      $this->user->nickname)),
+                                 // TRANS: Menu item in local navigation menu.
+                                 _m('MENU','Profile'),
+                                 (empty($profile)) ? $this->user->nickname : $profile->getBestName(),
+                                 $action == 'showstream',
+                                 'nav_profile');
             $this->out->menuItem(common_local_url('subscriptions',
                                                   array('nickname' =>
                                                         $this->user->nickname)),
-                                 _('Subscriptions'),
-                                 sprintf(_('People %s subscribes to'),
+                                 // TRANS: Menu item in local navigation menu.
+                                 _m('MENU','Subscriptions'),
+                                 // TRANS: Menu item title in local navigation menu.
+                                 // TRANS: %s is a user nickname.
+                                 sprintf(_('People %s subscribes to.'),
                                          $this->user->nickname),
                                  $action == 'subscriptions',
                                  'nav_subscriptions');
             $this->out->menuItem(common_local_url('subscribers',
                                                   array('nickname' =>
                                                         $this->user->nickname)),
-                                 _('Subscribers'),
-                                 sprintf(_('People subscribed to %s'),
+                                 // TRANS: Menu item in local navigation menu.
+                                 _m('MENU','Subscribers'),
+                                 // TRANS: Menu item title in local navigation menu.
+                                 // TRANS: %s is a user nickname.
+                                 sprintf(_('People subscribed to %s.'),
                                          $this->user->nickname),
                                  $action == 'subscribers',
                                  'nav_subscribers');
+            if ($cur && $cur->id == $this->user->id) {
+                // Possibly site admins should be able to get in here too
+                $pending = $this->countPendingSubs();
+                if ($pending || $cur->subscribe_policy == User::SUBSCRIBE_POLICY_MODERATE) {
+                    $this->out->menuItem(common_local_url('subqueue',
+                                                          array('nickname' =>
+                                                                $this->user->nickname)),
+                                         // TRANS: Menu item in local navigation menu.
+                                         // TRANS: %d is the number of pending subscription requests.
+                                         sprintf(_m('MENU','Pending (%d)'), $pending),
+                                         // TRANS: Menu item title in local navigation menu.
+                                         sprintf(_('Approve pending subscription requests.'),
+                                                 $this->user->nickname),
+                                         $action == 'subqueueaction',
+                                         'nav_subscribers');
+                }
+            }
             $this->out->menuItem(common_local_url('usergroups',
                                                   array('nickname' =>
                                                         $this->user->nickname)),
-                                 _('Groups'),
-                                 sprintf(_('Groups %s is a member of'),
+                                 // TRANS: Menu item in local navigation menu.
+                                 _m('MENU','Groups'),
+                                 // TRANS: Menu item title in local navigation menu.
+                                 // TRANS: %s is a user nickname.
+                                 sprintf(_('Groups %s is a member of.'),
                                          $this->user->nickname),
                                  $action == 'usergroups',
                                  'nav_usergroups');
-            if (!is_null($cur) && $this->user->id === $cur->id) {
+            $this->out->menuItem(common_local_url('peopletagsubscriptions',
+                                                  array('nickname' =>
+                                                        $this->user->nickname)),
+                                 // TRANS: Menu item title in local navigation menu.
+                                 _m('MENU','Lists'),
+                                 // TRANS: Menu item title in local navigation menu.
+                                 // TRANS: %s is a user nickname.
+                                 sprintf(_('List subscriptions by %s.'),
+                                         $this->user->nickname),
+                                 in_array($action, array('peopletagsbyuser', 'peopletagsubscriptions', 'peopletagsforuser')),
+                                 'nav_timeline_peopletags');
+
+            if (common_config('invite', 'enabled') && !is_null($cur) && $this->user->id === $cur->id) {
                 $this->out->menuItem(common_local_url('invite'),
-                                     _('Invite'),
-                                     sprintf(_('Invite friends and colleagues to join you on %s'),
+                                     // TRANS: Menu item in local navigation menu.
+                                     _m('MENU','Invite'),
+                                     // TRANS: Menu item title in local navigation menu.
+                                     // TRANS: %s is the StatusNet sitename.
+                                     sprintf(_('Invite friends and colleagues to join you on %s.'),
                                              common_config('site', 'name')),
                                      $action == 'invite',
                                      'nav_invite');
@@ -114,4 +158,11 @@ class SubGroupNav extends Widget
 
         $this->out->elementEnd('ul');
     }
+
+    function countPendingSubs()
+    {
+        $req = new Subscription_queue();
+        $req->subscribed = $this->user->id;
+        return $req->count();
+    }
 }