X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Fapprovegroup.php;h=e080be647419f220c5a8d83f974909a4ef033325;hb=9e89a177c76741f7e696f09d778bd8b151f84d3f;hp=c52e0e3c46975fc529156369b2db37b92a395ad0;hpb=bf121a695a13c2b30abf57ea86afbe1e6c2420a7;p=quix0rs-gnu-social.git diff --git a/actions/approvegroup.php b/actions/approvegroup.php index c52e0e3c46..e080be6474 100644 --- a/actions/approvegroup.php +++ b/actions/approvegroup.php @@ -50,20 +50,19 @@ class ApprovegroupAction extends Action /** * Prepare to run */ - function prepare($args) + function prepare(array $args = array()) { parent::prepare($args); if (!common_logged_in()) { // TRANS: Client error displayed when trying to leave a group while not logged in. $this->clientError(_('You must be logged in to leave a group.')); - return false; } $nickname_arg = $this->trimmed('nickname'); $id = intval($this->arg('id')); if ($id) { - $this->group = User_group::staticGet('id', $id); + $this->group = User_group::getKV('id', $id); } else if ($nickname_arg) { $nickname = common_canonical_nickname($nickname_arg); @@ -72,53 +71,62 @@ class ApprovegroupAction extends Action if ($nickname_arg != $nickname) { $args = array('nickname' => $nickname); common_redirect(common_local_url('leavegroup', $args), 301); - return false; } - $local = Local_group::staticGet('nickname', $nickname); + $local = Local_group::getKV('nickname', $nickname); if (!$local) { // TRANS: Client error displayed when trying to leave a non-local group. $this->clientError(_('No such group.'), 404); - return false; } - $this->group = User_group::staticGet('id', $local->group_id); + $this->group = User_group::getKV('id', $local->group_id); } else { // TRANS: Client error displayed when trying to leave a group without providing a group name or group ID. $this->clientError(_('No nickname or ID.'), 404); - return false; } if (!$this->group) { // TRANS: Client error displayed when trying to leave a non-existing group. $this->clientError(_('No such group.'), 404); - return false; } $cur = common_current_user(); if (empty($cur)) { + // TRANS: Client error displayed trying to approve group membership while not logged in. $this->clientError(_('Must be logged in.'), 403); - return false; } if ($this->arg('profile_id')) { if ($cur->isAdmin($this->group)) { - $this->profile = Profile::staticGet('id', $this->arg('profile_id')); + $this->profile = Profile::getKV('id', $this->arg('profile_id')); } else { + // TRANS: Client error displayed trying to approve group membership while not a group administrator. $this->clientError(_('Only group admin can approve or cancel join requests.'), 403); - return false; } } else { + // TRANS: Client error displayed trying to approve group membership without specifying a profile to approve. $this->clientError(_('Must specify a profile.')); - return false; } $this->request = Group_join_queue::pkeyGet(array('profile_id' => $this->profile->id, 'group_id' => $this->group->id)); if (empty($this->request)) { + // TRANS: Client error displayed trying to approve group membership for a non-existing request. + // TRANS: %s is a nickname. $this->clientError(sprintf(_('%s is not in the moderation queue for this group.'), $this->profile->nickname), 403); } + + $this->approve = (bool)$this->arg('approve'); + $this->cancel = (bool)$this->arg('cancel'); + if (!$this->approve && !$this->cancel) { + // TRANS: Client error displayed trying to approve/deny group membership. + $this->clientError(_('Internal error: received neither cancel nor abort.')); + } + if ($this->approve && $this->cancel) { + // TRANS: Client error displayed trying to approve/deny group membership. + $this->clientError(_('Internal error: received both cancel and abort.')); + } return true; } @@ -131,14 +139,18 @@ class ApprovegroupAction extends Action * * @return void */ - function handle($args) + function handle() { - parent::handle($args); + parent::handle(); try { - $this->profile->completeJoinGroup($this->group); + if ($this->approve) { + $this->request->complete(); + } elseif ($this->cancel) { + $this->request->abort(); + } } catch (Exception $e) { - common_log(LOG_ERROR, "Exception canceling group sub: " . $e->getMessage()); + common_log(LOG_ERR, "Exception canceling group sub: " . $e->getMessage()); // TRANS: Server error displayed when cancelling a queued group join request fails. // TRANS: %1$s is the leaving user's nickname, $2$s is the group nickname for which the leave failed. $this->serverError(sprintf(_('Could not cancel request for user %1$s to join group %2$s.'), @@ -149,20 +161,24 @@ class ApprovegroupAction extends Action if ($this->boolean('ajax')) { $this->startHTML('text/xml;charset=utf-8'); $this->elementStart('head'); - // TRANS: Title for leave group page after leaving. - $this->element('title', null, sprintf(_m('TITLE','%1$s left group %2$s'), + // TRANS: Title for leave group page after group join request is approved/disapproved. + // TRANS: %1$s is the user nickname, %2$s is the group nickname. + $this->element('title', null, sprintf(_m('TITLE','%1$s\'s request for %2$s'), $this->profile->nickname, $this->group->nickname)); $this->elementEnd('head'); $this->elementStart('body'); - $jf = new JoinForm($this, $this->group); - $jf->show(); + if ($this->approve) { + // TRANS: Message on page for group admin after approving a join request. + $this->element('p', 'success', _('Join request approved.')); + } elseif ($this->cancel) { + // TRANS: Message on page for group admin after rejecting a join request. + $this->element('p', 'success', _('Join request canceled.')); + } $this->elementEnd('body'); - $this->elementEnd('html'); + $this->endHTML(); } else { - common_redirect(common_local_url('groupmembers', array('nickname' => - $this->group->nickname)), - 303); + common_redirect(common_local_url('groupmembers', array('nickname' => $this->group->nickname)), 303); } } }