* @link http://status.net/
*/
-if (!defined('STATUSNET') && !defined('LACONICA')) {
- exit(1);
-}
-
-require_once(INSTALLDIR.'/lib/profilelist.php');
+if (!defined('GNUSOCIAL')) { exit(1); }
/**
* List of group members
{
parent::prepare($args);
- if ($this->scoped->id != $this->target->id) {
+ if (!$this->target->sameAs($this->scoped)) {
// TRANS: Client error displayed when trying to approve group applicants without being a group administrator.
- $this->clientError(_('You may only approve your own pending subscriptions.'));
+ throw new ClientException(_('You may only approve your own pending subscriptions.'));
}
return true;
}
$cnt = 0;
- $members = $this->target->getRequests($offset, $limit);
-
- if ($members) {
- // @fixme change!
- $member_list = new SubQueueList($members, $this);
- $cnt = $member_list->show();
+ try {
+ $subqueue = $this->target->getRequests($offset, $limit);
+ } catch (NoResultException $e) {
+ // TRANS: If no pending subscription requests are found
+ $this->element('div', null, _m('You have no pending subscription requests.'));
+ return;
}
- $members->free();
+ $list = new SubQueueList($subqueue, $this);
+ $cnt = $list->show();
+
+ $subqueue->free();
$this->pagination($this->page > 1, $cnt > PROFILES_PER_PAGE,
$this->page, 'subqueue',
array('nickname' => $this->target->getNickname())); // urgh
}
}
-
-class SubQueueList extends ProfileList
-{
- function newListItem($profile)
- {
- return new SubQueueListItem($profile, $this->action);
- }
-}
-
-class SubQueueListItem extends ProfileListItem
-{
- function showActions()
- {
- $this->startActions();
- if (Event::handle('StartProfileListItemActionElements', array($this))) {
- $this->showApproveButtons();
- Event::handle('EndProfileListItemActionElements', array($this));
- }
- $this->endActions();
- }
-
- function showApproveButtons()
- {
- $this->out->elementStart('li', 'entity_approval');
- $form = new ApproveSubForm($this->out, $this->profile);
- $form->show();
- $this->out->elementEnd('li');
- }
-}
*/
function getRequests($offset=0, $limit=null)
{
- $qry =
- 'SELECT profile.* ' .
- 'FROM profile JOIN subscription_queue '.
- 'ON profile.id = subscription_queue.subscriber ' .
- 'WHERE subscription_queue.subscribed = %d ' .
- 'ORDER BY subscription_queue.created DESC ';
-
- if ($limit != null) {
- if (common_config('db','type') == 'pgsql') {
- $qry .= ' LIMIT ' . $limit . ' OFFSET ' . $offset;
- } else {
- $qry .= ' LIMIT ' . $offset . ', ' . $limit;
- }
- }
-
- $members = new Profile();
-
- $members->query(sprintf($qry, $this->id));
- return $members;
+ // FIXME: mysql only
+ $subqueue = new Profile();
+ $subqueue->joinAdd(array('id', 'subscription_queue:subscriber'));
+ $subqueue->whereAdd(sprintf('subscription_queue.subscribed = %d', $this->getID()));
+ $subqueue->limit($offset, $limit);
+ $subqueue->orderBy('subscription_queue.created', 'DESC');
+ if (!$subqueue->find()) {
+ throw new NoResultException($subqueue);
+ }
+ return $subqueue;
}
function subscriptionCount()
/** Action object using us. */
var $action = null;
- function __construct($profile, $action=null)
+ function __construct($profile, HTMLOutputter $action=null)
{
parent::__construct($action);
return $cnt;
}
- function newListItem($profile)
+ function newListItem(Profile $target)
{
- return new ProfileListItem($profile, $this->action);
+ return new ProfileListItem($target, $this->action);
}
function maxProfiles()
function startItem()
{
$this->out->elementStart('li', array('class' => 'profile',
- 'id' => 'profile-' . $this->profile->id));
+ 'id' => 'profile-' . $this->getTarget()->getID()));
}
function showProfile()
--- /dev/null
+<?php
+
+if (!defined('GNUSOCIAL')) { exit(1); }
+
+class SubQueueList extends ProfileList
+{
+ public function newListItem(Profile $target)
+ {
+ return new SubQueueListItem($target, $this->action);
+ }
+}
--- /dev/null
+<?php
+
+if (!defined('GNUSOCIAL')) { exit(1); }
+
+class SubQueueListItem extends ProfileListItem
+{
+ public function showActions()
+ {
+ $this->startActions();
+ if (Event::handle('StartProfileListItemActionElements', array($this))) {
+ $this->showApproveButtons();
+ Event::handle('EndProfileListItemActionElements', array($this));
+ }
+ $this->endActions();
+ }
+
+ public function showApproveButtons()
+ {
+ $this->out->elementStart('li', 'entity_approval');
+ $form = new ApproveSubForm($this->out, $this->profile);
+ $form->show();
+ $this->out->elementEnd('li');
+ }
+}