]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/profilesettings.php
Fix invite button for public sites
[quix0rs-gnu-social.git] / actions / profilesettings.php
index 8ce119257908821ff0b5cf160e792389391e1b8b..667fea2cf48d3ca29df237aab75bc77f5caaa548 100644 (file)
@@ -203,6 +203,13 @@ class ProfilesettingsAction extends SettingsAction
                             (empty($user->subscribe_policy)) ? User::SUBSCRIBE_POLICY_OPEN : $user->subscribe_policy);
             $this->elementEnd('li');
         }
+        $this->elementStart('li');
+        $this->checkbox('private_stream',
+                        // TRANS: Checkbox label in profile settings.
+                        _('Make updates visible only to my followers'),
+                        ($this->arg('private_stream')) ?
+                        $this->boolean('private_stream') : $user->private_stream);
+        $this->elementEnd('li');
         $this->elementEnd('ul');
         // TRANS: Button to save input in profile settings.
         $this->submit('save', _m('BUTTON','Save'));
@@ -245,6 +252,7 @@ class ProfilesettingsAction extends SettingsAction
             $location = $this->trimmed('location');
             $autosubscribe = $this->boolean('autosubscribe');
             $subscribe_policy = $this->trimmed('subscribe_policy');
+            $private_stream = $this->boolean('private_stream');
             $language = $this->trimmed('language');
             $timezone = $this->trimmed('timezone');
             $tagstring = $this->trimmed('tags');
@@ -290,18 +298,24 @@ class ProfilesettingsAction extends SettingsAction
                 return;
             }
 
-            if ($tagstring) {
-                $tags = array_map('common_canonical_tag', preg_split('/[\s,]+/', $tagstring));
-            } else {
-                $tags = array();
-            }
+            $tags = array();
+            $tag_priv = array();
+            if (is_string($tagstring) && strlen($tagstring) > 0) {
 
-            foreach ($tags as $tag) {
-                if (!common_valid_profile_tag($tag)) {
-                    // TRANS: Validation error in form for profile settings.
-                    // TRANS: %s is an invalid tag.
-                    $this->showForm(sprintf(_('Invalid tag: "%s".'), $tag));
-                    return;
+                $tags = preg_split('/[\s,]+/', $tagstring);
+
+                foreach ($tags as &$tag) {
+                    $private = @$tag[0] === '.';
+
+                    $tag = common_canonical_tag($tag);
+                    if (!common_valid_profile_tag($tag)) {
+                        // TRANS: Validation error in form for profile settings.
+                        // TRANS: %s is an invalid tag.
+                        $this->showForm(sprintf(_('Invalid tag: "%s".'), $tag));
+                        return;
+                    }
+
+                    $tag_priv[$tag] = $private;
                 }
             }
 
@@ -344,11 +358,14 @@ class ProfilesettingsAction extends SettingsAction
             }
 
             // XXX: XOR
-            if (($user->autosubscribe ^ $autosubscribe) || $user->subscribe_policy != $subscribe_policy) {
+            if (($user->autosubscribe ^ $autosubscribe) ||
+                ($user->private_stream ^ $private_stream) ||
+                ($user->subscribe_policy != $subscribe_policy)) {
 
                 $original = clone($user);
 
-                $user->autosubscribe = $autosubscribe;
+                $user->autosubscribe    = $autosubscribe;
+                $user->private_stream   = $private_stream;
                 $user->subscribe_policy = $subscribe_policy;
 
                 $result = $user->update($original);
@@ -433,7 +450,7 @@ class ProfilesettingsAction extends SettingsAction
             }
 
             // Set the user tags
-            $result = $user->setSelfTags($tags);
+            $result = $user->setSelfTags($tags, $tag_priv);
 
             if (!$result) {
                 // TRANS: Server error thrown when user profile settings tags could not be saved.