]> 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 bc9a636a1586d4bc289d768371a2fb78bea53b42..f22a059f74fceb0fdc9a82b609643c77c1a2e8f2 100644 (file)
@@ -121,8 +121,35 @@ class TwittersettingsAction extends ConnectSettingsAction
             $this->elementEnd('p');
             $this->element('p', 'form_note',
                            _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', _m('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');
 
@@ -205,7 +232,7 @@ class TwittersettingsAction extends ConnectSettingsAction
 
         if ($this->arg('save')) {
             $this->savePreferences();
-        } else if ($this->arg('remove')) {
+        } else if ($this->arg('disconnect')) {
             $this->removeTwitterAccount();
         } else {
             $this->showForm(_m('Unexpected form submission.'));
@@ -223,7 +250,16 @@ 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__);
@@ -231,7 +267,7 @@ class TwittersettingsAction extends ConnectSettingsAction
             return;
         }
 
-        $this->showForm(_m('Twitter account removed.'), true);
+        $this->showForm(_m('Twitter account disconnected.'), true);
     }
 
     /**