diff options
author | Robin Millette <millette@controlyourself.ca> | 2009-01-22 08:01:40 +0000 |
---|---|---|
committer | Robin Millette <millette@plantard.controlezvous.ca> | 2009-01-22 08:01:40 +0000 |
commit | e272adb321fb72043ac7f9a16848ef9386e56571 (patch) | |
tree | b6d5c3196597af65d2a86b80389d0510d7514658 | |
parent | c20d0612bf51cff523f55b12095e7213be94355e (diff) |
fixed a few bugs and logic problems in groups
-rw-r--r-- | actions/editgroup.php | 19 | ||||
-rw-r--r-- | actions/leavegroup.php | 20 | ||||
-rw-r--r-- | actions/newgroup.php | 3 | ||||
-rw-r--r-- | actions/showgroup.php | 6 | ||||
-rw-r--r-- | lib/groupeditform.php | 1 |
5 files changed, 36 insertions, 13 deletions
diff --git a/actions/editgroup.php b/actions/editgroup.php index 82b78cc5c..98ebcb87a 100644 --- a/actions/editgroup.php +++ b/actions/editgroup.php @@ -88,7 +88,12 @@ class EditgroupAction extends Action return false; } - $this->group = User_group::staticGet('nickname', $nickname); + $groupid = $this->trimmed('groupid'); + if ($groupid) { + $this->group = User_group::staticGet('id', $groupid); + } else { + $this->group = User_group::staticGet('nickname', $nickname); + } if (!$this->group) { $this->clientError(_('No such group'), 404); @@ -97,7 +102,7 @@ class EditgroupAction extends Action $cur = common_current_user(); - if (!$cur->isAdmin($group)) { + if (!$cur->isAdmin($this->group)) { $this->clientError(_('You must be an admin to edit the group'), 403); return false; } @@ -155,6 +160,13 @@ class EditgroupAction extends Action function trySave() { + $cur = common_current_user(); + if (!$cur->isAdmin($this->group)) { + $this->clientError(_('You must be an admin to edit the group'), 403); + return; + } + + $nickname = common_canonical_nickname($this->trimmed('nickname')); $fullname = $this->trimmed('fullname'); $homepage = $this->trimmed('homepage'); @@ -222,4 +234,5 @@ class EditgroupAction extends Action $group != false && $group->id != $this->group->id); } -}
\ No newline at end of file +} + diff --git a/actions/leavegroup.php b/actions/leavegroup.php index 587208b36..c7152e3c0 100644 --- a/actions/leavegroup.php +++ b/actions/leavegroup.php @@ -57,12 +57,12 @@ class LeavegroupAction extends Action parent::prepare($args); if (!common_config('inboxes','enabled')) { - $this->serverError(_('Inboxes must be enabled for groups to work')); + $this->serverError(_('Inboxes must be enabled for groups to work.')); return false; } if (!common_logged_in()) { - $this->clientError(_('You must be logged in to join a group.')); + $this->clientError(_('You must be logged in to leave a group.')); return false; } @@ -78,24 +78,30 @@ class LeavegroupAction extends Action } if (!$nickname) { - $this->clientError(_('No nickname'), 404); + $this->clientError(_('No nickname.'), 404); return false; } $this->group = User_group::staticGet('nickname', $nickname); if (!$this->group) { - $this->clientError(_('No such group'), 404); + $this->clientError(_('No such group.'), 404); return false; } $cur = common_current_user(); - if (!$cur->isMember($group)) { - $this->clientError(_('You are not a member of that group'), 403); + if (!$cur->isMember($this->group)) { + $this->clientError(_('You are not a member of that group.'), 403); return false; } + if ($cur->isAdmin($this->group)) { + $this->clientError(_('You may not leave a group while you are its administrator.'), 403); + return false; + + } + return true; } @@ -150,4 +156,4 @@ class LeavegroupAction extends Action $this->group->nickname))); } } -}
\ No newline at end of file +} diff --git a/actions/newgroup.php b/actions/newgroup.php index 41c095ec0..42fd380df 100644 --- a/actions/newgroup.php +++ b/actions/newgroup.php @@ -201,4 +201,5 @@ class NewgroupAction extends Action $group = User_group::staticGet('nickname', $nickname); return (!is_null($group) && $group != false); } -}
\ No newline at end of file +} + diff --git a/actions/showgroup.php b/actions/showgroup.php index 1af080c7e..0a499aff9 100644 --- a/actions/showgroup.php +++ b/actions/showgroup.php @@ -267,8 +267,10 @@ class ShowgroupAction extends Action $cur = common_current_user(); if ($cur) { if ($cur->isMember($this->group)) { - $lf = new LeaveForm($this, $this->group); - $lf->show(); + if (!$cur->isAdmin($this->group)) { + $lf = new LeaveForm($this, $this->group); + $lf->show(); + } } else { $jf = new JoinForm($this, $this->group); $jf->show(); diff --git a/lib/groupeditform.php b/lib/groupeditform.php index fe53918d1..ca674f3c8 100644 --- a/lib/groupeditform.php +++ b/lib/groupeditform.php @@ -133,6 +133,7 @@ class GroupEditForm extends Form { $this->out->elementStart('ul', 'form_data'); $this->out->elementStart('li'); + $this->out->hidden('groupid', $this->group->id); $this->out->input('nickname', _('Nickname'), ($this->out->arg('nickname')) ? $this->out->arg('nickname') : $this->group->nickname, _('1-64 lowercase letters or numbers, no punctuation or spaces')); |