fixed a few bugs and logic problems in groups

This commit is contained in:
Robin Millette 2009-01-22 08:01:40 +00:00 committed by Robin Millette
parent c20d0612bf
commit e272adb321
5 changed files with 36 additions and 13 deletions

View File

@ -88,7 +88,12 @@ class EditgroupAction extends Action
return false; 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) { if (!$this->group) {
$this->clientError(_('No such group'), 404); $this->clientError(_('No such group'), 404);
@ -97,7 +102,7 @@ class EditgroupAction extends Action
$cur = common_current_user(); $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); $this->clientError(_('You must be an admin to edit the group'), 403);
return false; return false;
} }
@ -155,6 +160,13 @@ class EditgroupAction extends Action
function trySave() 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')); $nickname = common_canonical_nickname($this->trimmed('nickname'));
$fullname = $this->trimmed('fullname'); $fullname = $this->trimmed('fullname');
$homepage = $this->trimmed('homepage'); $homepage = $this->trimmed('homepage');
@ -222,4 +234,5 @@ class EditgroupAction extends Action
$group != false && $group != false &&
$group->id != $this->group->id); $group->id != $this->group->id);
} }
} }

View File

@ -57,12 +57,12 @@ class LeavegroupAction extends Action
parent::prepare($args); parent::prepare($args);
if (!common_config('inboxes','enabled')) { 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; return false;
} }
if (!common_logged_in()) { 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; return false;
} }
@ -78,24 +78,30 @@ class LeavegroupAction extends Action
} }
if (!$nickname) { if (!$nickname) {
$this->clientError(_('No nickname'), 404); $this->clientError(_('No nickname.'), 404);
return false; return false;
} }
$this->group = User_group::staticGet('nickname', $nickname); $this->group = User_group::staticGet('nickname', $nickname);
if (!$this->group) { if (!$this->group) {
$this->clientError(_('No such group'), 404); $this->clientError(_('No such group.'), 404);
return false; return false;
} }
$cur = common_current_user(); $cur = common_current_user();
if (!$cur->isMember($group)) { if (!$cur->isMember($this->group)) {
$this->clientError(_('You are not a member of that group'), 403); $this->clientError(_('You are not a member of that group.'), 403);
return false; 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; return true;
} }
@ -150,4 +156,4 @@ class LeavegroupAction extends Action
$this->group->nickname))); $this->group->nickname)));
} }
} }
} }

View File

@ -201,4 +201,5 @@ class NewgroupAction extends Action
$group = User_group::staticGet('nickname', $nickname); $group = User_group::staticGet('nickname', $nickname);
return (!is_null($group) && $group != false); return (!is_null($group) && $group != false);
} }
} }

View File

@ -267,8 +267,10 @@ class ShowgroupAction extends Action
$cur = common_current_user(); $cur = common_current_user();
if ($cur) { if ($cur) {
if ($cur->isMember($this->group)) { if ($cur->isMember($this->group)) {
$lf = new LeaveForm($this, $this->group); if (!$cur->isAdmin($this->group)) {
$lf->show(); $lf = new LeaveForm($this, $this->group);
$lf->show();
}
} else { } else {
$jf = new JoinForm($this, $this->group); $jf = new JoinForm($this, $this->group);
$jf->show(); $jf->show();

View File

@ -133,6 +133,7 @@ class GroupEditForm extends Form
{ {
$this->out->elementStart('ul', 'form_data'); $this->out->elementStart('ul', 'form_data');
$this->out->elementStart('li'); $this->out->elementStart('li');
$this->out->hidden('groupid', $this->group->id);
$this->out->input('nickname', _('Nickname'), $this->out->input('nickname', _('Nickname'),
($this->out->arg('nickname')) ? $this->out->arg('nickname') : $this->group->nickname, ($this->out->arg('nickname')) ? $this->out->arg('nickname') : $this->group->nickname,
_('1-64 lowercase letters or numbers, no punctuation or spaces')); _('1-64 lowercase letters or numbers, no punctuation or spaces'));