From e3c4b0c85d3fbae9604b22d3666fe36a3c1c7551 Mon Sep 17 00:00:00 2001 From: Zach Copley <zach@status.net> Date: Fri, 5 Mar 2010 03:14:40 +0000 Subject: A better way to safely delete Foreign_links --- classes/Foreign_link.php | 17 +++++++++++++++++ plugins/TwitterBridge/twitter.php | 11 +---------- plugins/TwitterBridge/twitterauthorization.php | 2 +- plugins/TwitterBridge/twittersettings.php | 11 +---------- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/classes/Foreign_link.php b/classes/Foreign_link.php index ae8c22fd8..e47b2e309 100644 --- a/classes/Foreign_link.php +++ b/classes/Foreign_link.php @@ -113,4 +113,21 @@ class Foreign_link extends Memcached_DataObject return User::staticGet($this->user_id); } + // Make sure we only ever delete one record at a time + function safeDelete() + { + if (!empty($this->user_id) + && !empty($this->foreign_id) + && !empty($this->service)) + { + return $this->delete(); + } else { + common_debug(LOG_WARNING, + 'Foreign_link::safeDelete() tried to delete a ' + . 'Foreign_link without a fully specified compound key: ' + . var_export($this, true)); + return false; + } + } + } diff --git a/plugins/TwitterBridge/twitter.php b/plugins/TwitterBridge/twitter.php index 90805bfc4..2805b3ab5 100644 --- a/plugins/TwitterBridge/twitter.php +++ b/plugins/TwitterBridge/twitter.php @@ -273,16 +273,7 @@ function remove_twitter_link($flink) common_log(LOG_INFO, 'Removing Twitter bridge Foreign link for ' . "user $user->nickname (user id: $user->id)."); - $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(); - } + $result = $flink->safeDelete(); if (empty($result)) { common_log(LOG_ERR, 'Could not remove Twitter bridge ' . diff --git a/plugins/TwitterBridge/twitterauthorization.php b/plugins/TwitterBridge/twitterauthorization.php index bce679622..e20731e5c 100644 --- a/plugins/TwitterBridge/twitterauthorization.php +++ b/plugins/TwitterBridge/twitterauthorization.php @@ -278,7 +278,7 @@ class TwitterauthorizationAction extends Action $result = $flink->find(true); if (!empty($result)) { - $flink->delete(); + $flink->safeDelete(); } $flink->user_id = $user_id; diff --git a/plugins/TwitterBridge/twittersettings.php b/plugins/TwitterBridge/twittersettings.php index f22a059f7..631b29f52 100644 --- a/plugins/TwitterBridge/twittersettings.php +++ b/plugins/TwitterBridge/twittersettings.php @@ -250,16 +250,7 @@ class TwittersettingsAction extends ConnectSettingsAction $user = common_current_user(); $flink = Foreign_link::getByUserID($user->id, TWITTER_SERVICE); - $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(); - } + $result = $flink->safeDelete(); if (empty($result)) { common_log_db_error($flink, 'DELETE', __FILE__); -- cgit v1.2.3-54-g00ecf