summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Millette <millette@controlyourself.ca>2009-01-22 08:01:40 +0000
committerRobin Millette <millette@plantard.controlezvous.ca>2009-01-22 08:01:40 +0000
commite272adb321fb72043ac7f9a16848ef9386e56571 (patch)
treeb6d5c3196597af65d2a86b80389d0510d7514658
parentc20d0612bf51cff523f55b12095e7213be94355e (diff)
fixed a few bugs and logic problems in groups
-rw-r--r--actions/editgroup.php19
-rw-r--r--actions/leavegroup.php20
-rw-r--r--actions/newgroup.php3
-rw-r--r--actions/showgroup.php6
-rw-r--r--lib/groupeditform.php1
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'));