]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/imsettings.php
add 'invite-only' mode for registration
[quix0rs-gnu-social.git] / actions / imsettings.php
index e471aafac5860760691382139b23357d569b289e..0aa7631dc2c2fc59314ce269aad42cf65a4985cb 100644 (file)
@@ -24,71 +24,62 @@ require_once(INSTALLDIR.'/lib/jabber.php');
 
 class ImsettingsAction extends SettingsAction {
 
-       function show_top($arr) {
-               $msg = $arr[0];
-               $success = $arr[1];
-               if ($msg) {
-                       $this->message($msg, $success);
-               } else {
-                       common_element('div', 'instructions',
-                                                  _t('You can send and receive notices through '.
-                                                         'Jabber/GTalk instant messages. Configure '.
-                                                         'your address and settings below.'));
-               }
-               $this->settings_menu();
+       function get_instructions() {
+               return _('You can send and receive notices through Jabber/GTalk [instant messages](%%doc.im%%). Configure your address and settings below.');
        }
 
        function show_form($msg=NULL, $success=false) {
                $user = common_current_user();
-               common_show_header(_t('IM settings'), NULL, array($msg, $success),
-                                                  array($this, 'show_top'));
-
-               common_element_start('form', array('method' => 'POST',
+               $this->form_header(_('IM Settings'), $msg, $success);
+               common_element_start('form', array('method' => 'post',
                                                                                   'id' => 'imsettings',
                                                                                   'action' =>
                                                                                   common_local_url('imsettings')));
+               common_hidden('token', common_session_token());
 
-               common_element('h2', NULL, _t('Address'));
+               common_element('h2', NULL, _('Address'));
 
                if ($user->jabber) {
                        common_element_start('p');
                        common_element('span', 'address confirmed', $user->jabber);
                        common_element('span', 'input_instructions',
-                                      _t('Current confirmed Jabber/GTalk address.'));
+                                      _('Current confirmed Jabber/GTalk address.'));
                        common_hidden('jabber', $user->jabber);
                        common_element_end('p');
-                       common_submit('remove', 'Remove');
+                       common_submit('remove', _('Remove'));
                } else {
                        $confirm = $this->get_confirmation();
                        if ($confirm) {
                                common_element_start('p');
                                common_element('span', 'address unconfirmed', $confirm->address);
                                common_element('span', 'input_instructions',
-                                            _t('Awaiting confirmation on this address. Check your ' .
-                                               'Jabber/GTalk account for a message with further ' .
-                                               'instructions.'));
+                                             sprintf(_('Awaiting confirmation on this address. Check your Jabber/GTalk account for a message with further instructions. (Did you add %s to your buddy list?)'), jabber_daemon_address()));
                                common_hidden('jabber', $confirm->address);
                                common_element_end('p');
-                               common_submit('cancel', _t('Cancel'));
+                               common_submit('cancel', _('Cancel'));
                        } else {
-                               common_input('jabber', _t('IM Address'),
+                               common_input('jabber', _('IM Address'),
                                                        ($this->arg('jabber')) ? $this->arg('jabber') : NULL,
-                                                _t('Jabber or GTalk address, like "UserName@example.org". ' .
-                                                   'Make sure to subscribe to ' . jabber_daemon_address() .
-                                                   ' before adding your IM address here.'));
-                               common_submit('add', 'Add');
+                                                sprintf(_('Jabber or GTalk address, like "UserName@example.org". First, make sure to add %s to your buddy list in your IM client or on GTalk.'), jabber_daemon_address()));
+                               common_submit('add', _('Add'));
                        }
                }
 
-               common_element('h2', NULL, _t('Preferences'));
+               common_element('h2', NULL, _('Preferences'));
 
                common_checkbox('jabbernotify',
-                               _t('Send me notices through Jabber/GTalk.'),
+                               _('Send me notices through Jabber/GTalk.'),
                                $user->jabbernotify);
                common_checkbox('updatefrompresence',
-                               _t('Post a notice when my Jabber/GTalk status changes.'),
+                               _('Post a notice when my Jabber/GTalk status changes.'),
                                $user->updatefrompresence);
-               common_submit('save', _t('Save'));
+               common_checkbox('jabberreplies',
+                               _('Send me replies through Jabber/GTalk from people I\'m not subscribed to.'),
+                               $user->jabberreplies);
+               common_checkbox('jabbermicroid',
+                               _('Publish a MicroID for my Jabber/GTalk address.'),
+                               $user->jabbermicroid);
+               common_submit('save', _('Save'));
 
                common_element_end('form');
                common_show_footer();
@@ -108,6 +99,13 @@ class ImsettingsAction extends SettingsAction {
 
        function handle_post() {
 
+               # CSRF protection
+               $token = $this->trimmed('token');
+               if (!$token || $token != common_session_token()) {
+                       $this->show_form(_('There was a problem with your session token. Try again, please.'));
+                       return;
+               }
+
                if ($this->arg('save')) {
                        $this->save_preferences();
                } else if ($this->arg('add')) {
@@ -117,7 +115,7 @@ class ImsettingsAction extends SettingsAction {
                } else if ($this->arg('remove')) {
                        $this->remove_address();
                } else {
-                       $this->show_form(_t('Unexpected form submission.'));
+                       $this->show_form(_('Unexpected form submission.'));
                }
        }
 
@@ -125,6 +123,8 @@ class ImsettingsAction extends SettingsAction {
 
                $jabbernotify = $this->boolean('jabbernotify');
                $updatefrompresence = $this->boolean('updatefrompresence');
+               $jabberreplies = $this->boolean('jabberreplies');
+               $jabbermicroid = $this->boolean('jabbermicroid');
 
                $user = common_current_user();
 
@@ -136,18 +136,20 @@ class ImsettingsAction extends SettingsAction {
 
                $user->jabbernotify = $jabbernotify;
                $user->updatefrompresence = $updatefrompresence;
+               $user->jabberreplies = $jabberreplies;
+               $user->jabbermicroid = $jabbermicroid;
 
                $result = $user->update($original);
 
                if ($result === FALSE) {
                        common_log_db_error($user, 'UPDATE', __FILE__);
-                       common_server_error(_t('Couldnt update user.'));
+                       common_server_error(_('Couldn\'t update user.'));
                        return;
                }
 
                $user->query('COMMIT');
 
-               $this->show_form(_t('Preferences saved.'), true);
+               $this->show_form(_('Preferences saved.'), true);
        }
 
        function add_address() {
@@ -159,7 +161,7 @@ class ImsettingsAction extends SettingsAction {
                # Some validation
 
                if (!$jabber) {
-                       $this->show_form(_t('No Jabber ID.'));
+                       $this->show_form(_('No Jabber ID.'));
                        return;
                }
 
@@ -190,21 +192,17 @@ class ImsettingsAction extends SettingsAction {
 
                if ($result === FALSE) {
                        common_log_db_error($confirm, 'INSERT', __FILE__);
-                       common_server_error(_t('Couldnt insert confirmation code.'));
+                       common_server_error(_('Couldn\'t insert confirmation code.'));
                        return;
                }
 
-               # XXX: queue for offline sending
-
-               jabber_confirm_address($confirm->code,
-                                                          $user->nickname,
-                                                          $jabber);
-
-               # XXX: I18N
+               if (!common_config('queue', 'enabled')) {
+                       jabber_confirm_address($confirm->code,
+                                                                  $user->nickname,
+                                                                  $jabber);
+               }
 
-               $msg = 'A confirmation code was sent to the IM address you added. ' .
-                       ' You must approve ' . jabber_daemon_address() .
-                       ' for sending messages to you.';
+               $msg = sprintf(_('A confirmation code was sent to the IM address you added. You must approve %s for sending messages to you.'), jabber_daemon_address());
 
                $this->show_form($msg, TRUE);
        }
@@ -213,11 +211,11 @@ class ImsettingsAction extends SettingsAction {
                $jabber = $this->arg('jabber');
                $confirm = $this->get_confirmation();
                if (!$confirm) {
-                       $this->show_form(_t('No pending confirmation to cancel.'));
+                       $this->show_form(_('No pending confirmation to cancel.'));
                        return;
                }
                if ($confirm->address != $jabber) {
-                       $this->show_form(_t('That is the wrong IM address.'));
+                       $this->show_form(_('That is the wrong IM address.'));
                        return;
                }
 
@@ -225,11 +223,11 @@ class ImsettingsAction extends SettingsAction {
 
         if (!$result) {
                        common_log_db_error($confirm, 'DELETE', __FILE__);
-            $this->server_error(_t('Couldn\'t delete email confirmation.'));
+            $this->server_error(_('Couldn\'t delete email confirmation.'));
             return;
         }
 
-        $this->show_form(_t('Confirmation cancelled.'), TRUE);
+        $this->show_form(_('Confirmation cancelled.'), TRUE);
        }
 
        function remove_address() {
@@ -240,7 +238,7 @@ class ImsettingsAction extends SettingsAction {
                # Maybe an old tab open...?
 
                if ($user->jabber != $jabber) {
-                   $this->show_form(_t('That is not your Jabber ID.'));
+                   $this->show_form(_('That is not your Jabber ID.'));
                    return;
                }
 
@@ -250,16 +248,14 @@ class ImsettingsAction extends SettingsAction {
                $result = $user->updateKeys($original);
                if (!$result) {
                        common_log_db_error($user, 'UPDATE', __FILE__);
-                       common_server_error(_t('Couldnt update user.'));
+                       common_server_error(_('Couldn\'t update user.'));
                        return;
                }
                $user->query('COMMIT');
 
-               # Unsubscribe to the old address
-
-               jabber_special_presence('unsubscribe', $jabber);
+               # XXX: unsubscribe to the old address
 
-               $this->show_form(_t('The address was removed.'), TRUE);
+               $this->show_form(_('The address was removed.'), TRUE);
        }
 
        function jabber_exists($jabber) {