summaryrefslogtreecommitdiff
path: root/actions
diff options
context:
space:
mode:
Diffstat (limited to 'actions')
-rw-r--r--actions/twittersettings.php62
1 files changed, 41 insertions, 21 deletions
diff --git a/actions/twittersettings.php b/actions/twittersettings.php
index cf50be62a..1115708a5 100644
--- a/actions/twittersettings.php
+++ b/actions/twittersettings.php
@@ -138,16 +138,45 @@ class TwittersettingsAction extends SettingsAction {
return;
}
- $fuser = DB_DataObject::factory('foreign_user');
- $fuser->id = $twitter_id;
- $fuser->service = 1; // Twitter
- $fuser->uri = "http://www.twitter.com/$twitter_username";
- $fuser->nickname = $twitter_username;
- $fuser->created = common_sql_now();
- $result = $fuser->insert();
+ $fuser = null;
+ $result = null;
+
+ // Check to see whether the Twitter user is already in the system,
+ // and update its username and uri if so.
+ $fuser = Foreign_User::getForeignUser($twitter_id, 1);
+
+ if ($fuser) {
+
+ $original = clone($fuser);
+
+ $fuser->nickname = $twitter_username;
+ $fuser->uri = "http://www.twitter.com/$twitter_username";
+
+ $result = $fuser->updateKeys($original);
+
+ if (!$result) {
+ common_log_db_error($fuser, 'UPDATE', __FILE__);
+ }
+
+ } else {
+
+ // Otherwise, add the Twitter user
+ $fuser = DB_DataObject::factory('foreign_user');
+
+ $fuser->nickname = $twitter_username;
+ $fuser->uri = "http://www.twitter.com/$twitter_username";
+ $fuser->id = $twitter_id;
+ $fuser->service = 1; // Twitter
+ $fuser->created = common_sql_now();
+ $result = $fuser->insert();
+
+ if (!$result) {
+ common_log_db_error($fuser, 'INSERT', __FILE__);
+ }
+
+ }
if (!$result) {
- common_log_db_error($fuser, 'INSERT', __FILE__);
$this->show_form(_('Unable to save your Twitter settings!'));
return;
}
@@ -162,7 +191,7 @@ class TwittersettingsAction extends SettingsAction {
$flink->created = common_sql_now();
$this->set_flags($flink, $noticesync, $replysync, $friendsync);
-
+
$flink_id = $flink->insert();
if (!$flink_id) {
@@ -179,7 +208,6 @@ class TwittersettingsAction extends SettingsAction {
// For now we assume one Twitter acct per Laconica acct
$flink = Foreign_link::getForeignLink($user->id, 1);
- $fuser = Foreign_user::getForeignUser($flink->foreign_id, 1);
$flink_foreign_id = $this->arg('flink_foreign_id');
if (!$flink) {
@@ -193,14 +221,6 @@ class TwittersettingsAction extends SettingsAction {
return;
}
- $result = $fuser->delete();
-
- if (!$result) {
- common_log_db_error($fuser, 'DELETE', __FILE__);
- $this->show_form(_('Couldn\'t remove Twitter user.'));
- return;
- }
-
$result = $flink->delete();
if (!$result) {
@@ -229,7 +249,7 @@ class TwittersettingsAction extends SettingsAction {
$flink->query('BEGIN');
$original = clone($flink);
-
+
$this->set_flags($flink, $noticesync, $replysync, $friendsync);
$result = $flink->update($original);
@@ -318,7 +338,7 @@ class TwittersettingsAction extends SettingsAction {
} else {
$flink->noticesync &= ~FOREIGN_NOTICE_SEND;
}
-
+
if ($replysync) {
$flink->noticesync |= FOREIGN_NOTICE_SEND_REPLY;
} else {
@@ -330,7 +350,7 @@ class TwittersettingsAction extends SettingsAction {
} else {
$flink->friendsync &= ~FOREIGN_FRIEND_RECV;
}
-
+
$flink->profilesync = 0; // XXX: leave as default?
}
} \ No newline at end of file