Handle the case where a screen name has shifted from one Twitter ID to another

This commit is contained in:
Zach Copley 2010-07-08 21:17:10 +00:00
parent 7746611f20
commit 4c5098cd32
2 changed files with 35 additions and 2 deletions

View File

@ -39,6 +39,22 @@ class Foreign_user extends Memcached_DataObject
return null;
}
static function getByNickname($nickname, $service)
{
if (empty($nickname) || empty($service)) {
return null;
} else {
$fuser = new Foreign_user();
$fuser->service = $service;
$fuser->nickname = $nickname;
$fuser->limit(1);
$result = $fuser->find(true);
return empty($result) ? null : $fuser;
}
}
function updateKeys(&$orig)
{
$this->_connect();

View File

@ -75,8 +75,6 @@ function save_twitter_user($twitter_id, $screen_name)
if (!empty($fuser)) {
$result = true;
// Delete old record if Twitter user changed screen name
if ($fuser->nickname != $screen_name) {
@ -88,6 +86,25 @@ function save_twitter_user($twitter_id, $screen_name)
$screen_name,
$oldname));
}
} else {
// Kill any old, invalid records for this screen name
$fuser = Foreign_user::getByNickname($screen_name, TWITTER_SERVICE);
if (!empty($fuser)) {
$fuser->delete();
common_log(
LOG_INFO,
sprintf(
'Twitter bridge - deteted old record for Twitter ' .
'screen name "%s" belonging to Twitter ID %d.',
$screen_name,
$fuser->id
)
);
}
}
return add_twitter_user($twitter_id, $screen_name);