]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/subgroupnav.php
common_to_alphanumeric added, filtering Notice->source in classic layout
[quix0rs-gnu-social.git] / lib / subgroupnav.php
index 31c3ea0b568e8ed62b1e0524cec920ba621ef958..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();
@@ -74,38 +70,99 @@ class SubGroupNav extends Widget
 
         $this->out->elementStart('ul', array('class' => 'nav'));
 
-        $this->out->menuItem(common_local_url('subscriptions',
-                                              array('nickname' =>
-                                                    $this->user->nickname)),
-                             _('Subscriptions'),
-                             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'),
-                                     $this->user->nickname),
-                             $action == 'subscribers',
-                             'nav_subscribers');
-        $this->out->menuItem(common_local_url('usergroups',
-                                              array('nickname' =>
-                                                    $this->user->nickname)),
-                             _('Groups'),
-                             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('invite'),
-                                 _('Invite'),
-                                 sprintf(_('Invite friends and colleagues to join you on %s'),
-                                         common_config('site', 'name')),
-                                 $action == 'invite',
-                                 'nav_invite');
+        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)),
+                                 // 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)),
+                                 // 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)),
+                                 // 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');
+            $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'),
+                                     // 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');
+            }
+
+            Event::handle('EndSubGroupNav', array($this));
         }
+
         $this->out->elementEnd('ul');
     }
+
+    function countPendingSubs()
+    {
+        $req = new Subscription_queue();
+        $req->subscribed = $this->user->id;
+        return $req->count();
+    }
 }