3 * StatusNet, the distributed open-source microblogging tool
5 * Local navigation for subscriptions group of pages
9 * LICENCE: This program is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU Affero General Public License as published by
11 * the Free Software Foundation, either version 3 of the License, or
12 * (at your option) any later version.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU Affero General Public License for more details.
19 * You should have received a copy of the GNU Affero General Public License
20 * along with this program. If not, see <http://www.gnu.org/licenses/>.
24 * @author Evan Prodromou <evan@status.net>
25 * @copyright 2008-2011 StatusNet, Inc.
26 * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
27 * @link http://status.net/
30 if (!defined('STATUSNET') && !defined('LACONICA')) {
34 require_once INSTALLDIR.'/lib/widget.php';
37 * Local nav menu for subscriptions, subscribers
41 * @author Evan Prodromou <evan@status.net>
42 * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
43 * @link http://status.net/
45 class SubGroupNav extends Menu
52 * @param Action $action current action, used for output
54 function __construct($action=null, $user=null)
56 parent::__construct($action);
67 $cur = common_current_user();
68 $action = $this->action->trimmed('action');
70 $this->out->elementStart('ul', array('class' => 'nav'));
72 if (Event::handle('StartSubGroupNav', array($this))) {
74 $this->out->menuItem(common_local_url('showstream', array('nickname' =>
75 $this->user->nickname)),
76 // TRANS: Menu item in local navigation menu.
78 (empty($profile)) ? $this->user->nickname : $profile->getBestName(),
79 $action == 'showstream',
81 $this->out->menuItem(common_local_url('subscriptions',
83 $this->user->nickname)),
84 // TRANS: Menu item in local navigation menu.
85 _m('MENU','Subscriptions'),
86 // TRANS: Menu item title in local navigation menu.
87 // TRANS: %s is a user nickname.
88 sprintf(_('People %s subscribes to.'),
89 $this->user->nickname),
90 $action == 'subscriptions',
92 $this->out->menuItem(common_local_url('subscribers',
94 $this->user->nickname)),
95 // TRANS: Menu item in local navigation menu.
96 _m('MENU','Subscribers'),
97 // TRANS: Menu item title in local navigation menu.
98 // TRANS: %s is a user nickname.
99 sprintf(_('People subscribed to %s.'),
100 $this->user->nickname),
101 $action == 'subscribers',
103 if ($cur && $cur->id == $this->user->id) {
104 // Possibly site admins should be able to get in here too
105 $pending = $this->countPendingSubs();
106 if ($pending || $cur->subscribe_policy == User::SUBSCRIBE_POLICY_MODERATE) {
107 $this->out->menuItem(common_local_url('subqueue',
109 $this->user->nickname)),
110 // TRANS: Menu item in local navigation menu.
111 // TRANS: %d is the number of pending subscription requests.
112 sprintf(_m('MENU','Pending (%d)'), $pending),
113 // TRANS: Menu item title in local navigation menu.
114 sprintf(_('Approve pending subscription requests.'),
115 $this->user->nickname),
116 $action == 'subqueueaction',
120 $this->out->menuItem(common_local_url('usergroups',
122 $this->user->nickname)),
123 // TRANS: Menu item in local navigation menu.
125 // TRANS: Menu item title in local navigation menu.
126 // TRANS: %s is a user nickname.
127 sprintf(_('Groups %s is a member of.'),
128 $this->user->nickname),
129 $action == 'usergroups',
131 $this->out->menuItem(common_local_url('peopletagsubscriptions',
133 $this->user->nickname)),
134 // TRANS: Menu item title in local navigation menu.
136 // TRANS: Menu item title in local navigation menu.
137 // TRANS: %s is a user nickname.
138 sprintf(_('List subscriptions by %s.'),
139 $this->user->nickname),
140 in_array($action, array('peopletagsbyuser', 'peopletagsubscriptions', 'peopletagsforuser')),
141 'nav_timeline_peopletags');
143 if (common_config('invite', 'enabled') && !is_null($cur) && $this->user->id === $cur->id) {
144 $this->out->menuItem(common_local_url('invite'),
145 // TRANS: Menu item in local navigation menu.
147 // TRANS: Menu item title in local navigation menu.
148 // TRANS: %s is the StatusNet sitename.
149 sprintf(_('Invite friends and colleagues to join you on %s.'),
150 common_config('site', 'name')),
155 Event::handle('EndSubGroupNav', array($this));
158 $this->out->elementEnd('ul');
161 function countPendingSubs()
163 $req = new Subscription_queue();
164 $req->subscribed = $this->user->id;
165 return $req->count();