]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
single flag for private groups
authorEvan Prodromou <evan@status.net>
Mon, 4 Apr 2011 20:58:52 +0000 (16:58 -0400)
committerEvan Prodromou <evan@status.net>
Mon, 4 Apr 2011 20:58:52 +0000 (16:58 -0400)
actions/editgroup.php
actions/newgroup.php
classes/User_group.php
lib/groupeditform.php

index f5bada04fc074e7162a7cb8ad1eebc997b83de8b..e46b1481d0d2ae717e933100aa56d94e3e73b460 100644 (file)
@@ -185,7 +185,15 @@ class EditgroupAction extends GroupDesignAction
             $description = $this->trimmed('description');
             $location    = $this->trimmed('location');
             $aliasstring = $this->trimmed('aliases');
-            $join_policy = intval($this->arg('join_policy'));
+            $private     = $this->boolean('private');
+
+            if ($private) {
+                $force_scope = 1;
+                $join_policy = User_group::JOIN_POLICY_MODERATE;
+            } else {
+                $force_scope = 0;
+                $join_policy = User_group::JOIN_POLICY_OPEN;
+            }
 
             if ($this->nicknameExists($nickname)) {
                 // TRANS: Group edit form validation error.
@@ -267,6 +275,7 @@ class EditgroupAction extends GroupDesignAction
             $this->group->location    = $location;
             $this->group->mainpage    = common_local_url('showgroup', array('nickname' => $nickname));
             $this->group->join_policy = $join_policy;
+            $this->group->force_scope = $force_scope;
 
             $result = $this->group->update($orig);
 
index 540a42b9ba1554a84fa903519ba5cdc47fd985ba..c54e24ed95103226918f16b5e9b7898f058e5e7c 100644 (file)
@@ -130,8 +130,8 @@ class NewgroupAction extends Action
             $homepage    = $this->trimmed('homepage');
             $description = $this->trimmed('description');
             $location    = $this->trimmed('location');
+            $private     = $this->boolean('private');
             $aliasstring = $this->trimmed('aliases');
-            $join_policy = intval($this->arg('join_policy'));
 
             if ($this->nicknameExists($nickname)) {
                 // TRANS: Group create form validation error.
@@ -203,6 +203,14 @@ class NewgroupAction extends Action
                 }
             }
 
+            if ($private) {
+                $force_scope = 1;
+                $join_policy = User_group::JOIN_POLICY_MODERATE;
+            } else {
+                $force_scope = 0;
+                $join_policy = User_group::JOIN_POLICY_OPEN;
+            }
+
             $cur = common_current_user();
 
             // Checked in prepare() above
@@ -217,6 +225,7 @@ class NewgroupAction extends Action
                                                 'aliases'  => $aliases,
                                                 'userid'   => $cur->id,
                                                 'join_policy' => $join_policy,
+                                                'force_scope' => $force_scope,
                                                 'local'    => true));
 
             $this->group = $group;
index a671464d6767c3b2650e70f31ce1646183d0d41b..f72cc57533db1f8eb3f526b2016b6be0788bfcc9 100644 (file)
@@ -515,12 +515,19 @@ class User_group extends Memcached_DataObject
         $group->uri         = $uri;
         $group->mainpage    = $mainpage;
         $group->created     = common_sql_now();
+
         if (isset($fields['join_policy'])) {
             $group->join_policy = intval($fields['join_policy']);
         } else {
             $group->join_policy = 0;
         }
 
+        if (isset($fields['force_scope'])) {
+            $group->force_scope = intval($fields['force_scope']);
+        } else {
+            $group->force_scope = 0;
+        }
+
         if (Event::handle('StartGroupSave', array(&$group))) {
 
             $result = $group->insert();
@@ -644,4 +651,10 @@ class User_group extends Memcached_DataObject
         }
         parent::delete();
     }
+
+    function isPrivate()
+    {
+        return ($this->join_policy == self::JOIN_POLICY_MODERATE &&
+                $this->force_scope == 1);
+    }
 }
index bb0ab4f7fbf845076ee497186c0edacc1e0239f3..c1218ab35450d27a0993e641b4543f4fe7fb5ffa 100644 (file)
@@ -202,17 +202,10 @@ class GroupEditForm extends Form
                 $this->out->elementEnd('li');
             }
             $this->out->elementStart('li');
-            $this->out->dropdown('join_policy',
-                                 // TRANS: Dropdown fieldd label on group edit form.
-                                 _('Membership policy'),
-                                 // TRANS: Group membership policy option.
-                                 array(User_group::JOIN_POLICY_OPEN     => _('Open to all'),
-                                       // TRANS: Group membership policy option.
-                                       User_group::JOIN_POLICY_MODERATE => _('Admin must approve all members')),
-                                 // TRANS: Dropdown field title on group edit form.
-                                 _('Whether admin approval is required to join this group.'),
-                                 false,
-                                 (empty($this->group->join_policy)) ? User_group::JOIN_POLICY_OPEN : $this->group->join_policy);
+            $this->out->checkbox('private', _('Private'), 
+                                  ($this->out->arg('private')) ? $this->out->arg('private') :
+                                 ((!empty($this->group)) ? $this->group->isPrivate() : false),
+                                 _('New members must be approved by admin and all posts are forced to be private'));
             $this->out->elementEnd('li');
             Event::handle('EndGroupEditFormData', array($this));
         }