]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/TwitterBridge/twittersettings.php
Fix for errant deletion of all Twitter foreign_links
[quix0rs-gnu-social.git] / plugins / TwitterBridge / twittersettings.php
index ca22c95535e794823a7a1908b3230a33b07f931b..f22a059f74fceb0fdc9a82b609643c77c1a2e8f2 100644 (file)
@@ -56,7 +56,7 @@ class TwittersettingsAction extends ConnectSettingsAction
 
     function title()
     {
-        return _('Twitter settings');
+        return _m('Twitter settings');
     }
 
     /**
@@ -67,8 +67,8 @@ class TwittersettingsAction extends ConnectSettingsAction
 
     function getInstructions()
     {
-        return _('Connect your Twitter account to share your updates ' .
-                 'with your Twitter friends and vice-versa.');
+        return _m('Connect your Twitter account to share your updates ' .
+                  'with your Twitter friends and vice-versa.');
     }
 
     /**
@@ -115,38 +115,65 @@ class TwittersettingsAction extends ConnectSettingsAction
 
             $this->elementEnd('fieldset');
         } else {
-            $this->element('legend', null, _('Twitter account'));
+            $this->element('legend', null, _m('Twitter account'));
             $this->elementStart('p', array('id' => 'form_confirmed'));
             $this->element('a', array('href' => $fuser->uri), $fuser->nickname);
             $this->elementEnd('p');
             $this->element('p', 'form_note',
-                           _('Connected Twitter account'));
+                           _m('Connected Twitter account'));
+            $this->elementEnd('fieldset');
+
+            $this->elementStart('fieldset');
+
+            $this->element('legend', null, _m('Disconnect my account from Twitter'));
+
+            if (!$user->password) {
+
+                $this->elementStart('p', array('class' => 'form_guide'));
+                $this->text(_m('Disconnecting your Twitter ' .
+                               'could make it impossible to log in! Please '));
+                $this->element('a',
+                    array('href' => common_local_url('passwordsettings')),
+                        _m('set a password'));
+
+                $this->text(_m(' first.'));
+                $this->elementEnd('p');
+            } else {
 
-            $this->submit('remove', _('Remove'));
+                $note = _m('Keep your %1$s account but disconnect from Twitter. ' .
+                    'You can use your %1$s password to log in.');
+
+                $site = common_config('site', 'name');
+
+                $this->element('p', 'instructions',
+                    sprintf($note, $site));
+
+                $this->submit('disconnect', _m('Disconnect'));
+            }
 
             $this->elementEnd('fieldset');
 
             $this->elementStart('fieldset', array('id' => 'settings_twitter_preferences'));
 
-            $this->element('legend', null, _('Preferences'));
+            $this->element('legend', null, _m('Preferences'));
             $this->elementStart('ul', 'form_data');
             $this->elementStart('li');
             $this->checkbox('noticesend',
-                            _('Automatically send my notices to Twitter.'),
+                            _m('Automatically send my notices to Twitter.'),
                             ($flink) ?
                             ($flink->noticesync & FOREIGN_NOTICE_SEND) :
                             true);
             $this->elementEnd('li');
             $this->elementStart('li');
             $this->checkbox('replysync',
-                            _('Send local "@" replies to Twitter.'),
+                            _m('Send local "@" replies to Twitter.'),
                             ($flink) ?
                             ($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) :
                             true);
             $this->elementEnd('li');
             $this->elementStart('li');
             $this->checkbox('friendsync',
-                            _('Subscribe to my Twitter friends here.'),
+                            _m('Subscribe to my Twitter friends here.'),
                             ($flink) ?
                             ($flink->friendsync & FOREIGN_FRIEND_RECV) :
                             false);
@@ -155,7 +182,7 @@ class TwittersettingsAction extends ConnectSettingsAction
             if (common_config('twitterimport','enabled')) {
                 $this->elementStart('li');
                 $this->checkbox('noticerecv',
-                                _('Import my Friends Timeline.'),
+                                _m('Import my Friends Timeline.'),
                                 ($flink) ?
                                 ($flink->noticesync & FOREIGN_NOTICE_RECV) :
                                 false);
@@ -171,9 +198,9 @@ class TwittersettingsAction extends ConnectSettingsAction
             $this->elementEnd('ul');
 
             if ($flink) {
-                $this->submit('save', _('Save'));
+                $this->submit('save', _m('Save'));
             } else {
-                $this->submit('add', _('Add'));
+                $this->submit('add', _m('Add'));
             }
 
             $this->elementEnd('fieldset');
@@ -198,17 +225,17 @@ class TwittersettingsAction extends ConnectSettingsAction
         // CSRF protection
         $token = $this->trimmed('token');
         if (!$token || $token != common_session_token()) {
-            $this->showForm(_('There was a problem with your session token. '.
-                              'Try again, please.'));
+            $this->showForm(_m('There was a problem with your session token. '.
+                               'Try again, please.'));
             return;
         }
 
         if ($this->arg('save')) {
             $this->savePreferences();
-        } else if ($this->arg('remove')) {
+        } else if ($this->arg('disconnect')) {
             $this->removeTwitterAccount();
         } else {
-            $this->showForm(_('Unexpected form submission.'));
+            $this->showForm(_m('Unexpected form submission.'));
         }
     }
 
@@ -223,15 +250,24 @@ class TwittersettingsAction extends ConnectSettingsAction
         $user = common_current_user();
         $flink = Foreign_link::getByUserID($user->id, TWITTER_SERVICE);
 
-        $result = $flink->delete();
+        $result = false;
+
+        // Be extra careful to make sure we have a good flink
+        // before deleting
+        if (!empty($flink->user_id)
+            && !empty($flink->foreign_id)
+            && !empty($flink->service))
+        {
+            $result = $flink->delete();
+        }
 
         if (empty($result)) {
             common_log_db_error($flink, 'DELETE', __FILE__);
-            $this->serverError(_('Couldn\'t remove Twitter user.'));
+            $this->serverError(_m('Couldn\'t remove Twitter user.'));
             return;
         }
 
-        $this->showForm(_('Twitter account removed.'), true);
+        $this->showForm(_m('Twitter account disconnected.'), true);
     }
 
     /**
@@ -252,7 +288,7 @@ class TwittersettingsAction extends ConnectSettingsAction
 
         if (empty($flink)) {
             common_log_db_error($flink, 'SELECT', __FILE__);
-            $this->showForm(_('Couldn\'t save Twitter preferences.'));
+            $this->showForm(_m('Couldn\'t save Twitter preferences.'));
             return;
         }
 
@@ -262,11 +298,11 @@ class TwittersettingsAction extends ConnectSettingsAction
 
         if ($result === false) {
             common_log_db_error($flink, 'UPDATE', __FILE__);
-            $this->showForm(_('Couldn\'t save Twitter preferences.'));
+            $this->showForm(_m('Couldn\'t save Twitter preferences.'));
             return;
         }
 
-        $this->showForm(_('Twitter preferences saved.'), true);
+        $this->showForm(_m('Twitter preferences saved.'), true);
     }
 
 }