diff options
Diffstat (limited to 'actions')
-rw-r--r-- | actions/profilesettings.php | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/actions/profilesettings.php b/actions/profilesettings.php index 614ec4fec..eeeb8592f 100644 --- a/actions/profilesettings.php +++ b/actions/profilesettings.php @@ -52,6 +52,8 @@ class ProfilesettingsAction extends SettingsAction { common_input('location', _('Location'), ($this->arg('location')) ? $this->arg('location') : $profile->location, _('Where you are, like "City, State (or Region), Country"')); + common_checkbox('autosubscribe', _('Automatically subscribe to whoever subscribes to me (best for non-humans)'), + ($this->arg('autosubscribe') : $this->boolean('autosubscribe') : $user->autosubscribe); common_submit('submit', _('Save')); common_element_end('form'); common_show_footer(); @@ -64,7 +66,8 @@ class ProfilesettingsAction extends SettingsAction { $homepage = $this->trimmed('homepage'); $bio = $this->trimmed('bio'); $location = $this->trimmed('location'); - + $autosubscribe = $this->boolean('autosubscribe'); + # Some validation if (!Validate::string($nickname, array('min_length' => 1, @@ -115,6 +118,22 @@ class ProfilesettingsAction extends SettingsAction { } } + # XOR + + if ($user->autosubscribe ^ $autosubscribe) { + $original = clone($user); + + $user->nickname = $nickname; + + $result = $user->update($original); + + if ($result === FALSE) { + common_log_db_error($user, 'UPDATE', __FILE__); + common_server_error(_('Couldn\'t update user.')); + return; + } + } + $profile = $user->getProfile(); $orig_profile = clone($profile); |