// Clear out any bad old foreign_users with the new user's legit URL
// This can happen when users move around or fakester accounts get
// repoed, and things like that.
- $luser = Foreign_user::getForeignUser($twitter_id, TWITTER_SERVICE);
-
- if (!empty($luser)) {
- $result = $luser->delete();
+ try {
+ $fuser = Foreign_user::getForeignUser($twitter_id, TWITTER_SERVICE);
+ $result = $fuser->delete();
if ($result != false) {
common_log(
LOG_INFO,
"Twitter bridge - removed old Twitter user: $screen_name ($twitter_id)."
);
}
+ } catch (NoResultException $e) {
+ // no old foreign users exist for this id
}
$fuser = new Foreign_user();
$fuser->created = common_sql_now();
$result = $fuser->insert();
- if (empty($result)) {
- common_log(LOG_WARNING,
- "Twitter bridge - failed to add new Twitter user: $twitter_id - $screen_name.");
+ if ($result === false) {
+ common_log(LOG_WARNING, "Twitter bridge - failed to add new Twitter user: $twitter_id - $screen_name.");
common_log_db_error($fuser, 'INSERT', __FILE__);
} else {
common_log(LOG_INFO,
{
// Check to see whether the Twitter user is already in the system,
// and update its screen name and uri if so.
- $fuser = Foreign_user::getForeignUser($twitter_id, TWITTER_SERVICE);
+ try {
+ $fuser = Foreign_user::getForeignUser($twitter_id, TWITTER_SERVICE);
- if (!empty($fuser)) {
// Delete old record if Twitter user changed screen name
-
if ($fuser->nickname != $screen_name) {
$oldname = $fuser->nickname;
$fuser->delete();
$screen_name,
$oldname));
}
- } else {
+ } catch (NoResultException $e) {
+ // No old users exist for this id
+
// Kill any old, invalid records for this screen name
- $fuser = Foreign_user::getByNickname($screen_name, TWITTER_SERVICE);
-
- if (!empty($fuser)) {
+ // XXX: Is this really only supposed to be run if the above getForeignUser fails?
+ try {
+ $fuser = Foreign_user::getByNickname($screen_name, TWITTER_SERVICE);
$fuser->delete();
common_log(
LOG_INFO,
$fuser->id
)
);
+ } catch (NoResultException $e) {
+ // No old users exist for this screen_name
}
}
}
// Check to see if notice should go to Twitter
- if (!empty($flink) && ($flink->noticesync & FOREIGN_NOTICE_SEND == FOREIGN_NOTICE_SEND)) {
+ if (!empty($flink) && (($flink->noticesync & FOREIGN_NOTICE_SEND) == FOREIGN_NOTICE_SEND)) {
// If it's not a Twitter-style reply, or if the user WANTS to send replies,
// or if it's in reply to a twitter notice
- if (!preg_match('/^@[a-zA-Z0-9_]{1,15}\b/u', $notice->content) ||
- ($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY == FOREIGN_NOTICE_SEND_REPLY) ||
- is_twitter_notice($notice->reply_to)) {
+ if ( (($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) == FOREIGN_NOTICE_SEND_REPLY) ||
+ is_twitter_notice($notice->reply_to) || is_twitter_notice($notice->repeat_of) ||
+ (empty($notice->reply_to) && !preg_match('/^@[a-zA-Z0-9_]{1,15}\b/u', $notice->content)) ){
return true;
}
}
function is_twitter_notice($id)
{
- $n2s = Notice_to_status::staticGet('notice_id', $id);
+ $n2s = Notice_to_status::getKV('notice_id', $id);
return (!empty($n2s));
}
*/
function broadcast_twitter($notice)
{
- $flink = Foreign_link::getByUserID($notice->profile_id,
- TWITTER_SERVICE);
+ try {
+ $flink = Foreign_link::getByUserID($notice->profile_id, TWITTER_SERVICE);
+ } catch (NoResultException $e) {
+ // Alright so don't broadcast it then! (since there's no foreign link)
+ return true;
+ }
// Don't bother with basic auth, since it's no longer allowed
- if (!empty($flink) && TwitterOAuthClient::isPackedToken($flink->credentials)) {
+ if (TwitterOAuthClient::isPackedToken($flink->credentials)) {
if (is_twitter_bound($notice, $flink)) {
if (!empty($notice->repeat_of) && is_twitter_notice($notice->repeat_of)) {
- $retweet = retweet_notice($flink, Notice::staticGet('id', $notice->repeat_of));
+ $retweet = retweet_notice($flink, Notice::getKV('id', $notice->repeat_of));
if (is_object($retweet)) {
Notice_to_status::saveNew($notice->id, twitter_id($retweet));
return true;
function twitter_status_id($notice)
{
- $n2s = Notice_to_status::staticGet('notice_id', $notice->id);
+ $n2s = Notice_to_status::getKV('notice_id', $notice->id);
if (empty($n2s)) {
return null;
} else {
$params['long'] = $notice->lon;
}
if (!empty($notice->reply_to) && is_twitter_notice($notice->reply_to)) {
- $reply = Notice::staticGet('id', $notice->reply_to);
+ $reply = Notice::getKV('id', $notice->reply_to);
$params['in_reply_to_status_id'] = twitter_status_id($reply);
}
return $params;
}
-function broadcast_oauth($notice, $flink) {
- $user = $flink->getUser();
+function broadcast_oauth($notice, Foreign_link $flink) {
+ try {
+ $user = $flink->getUser();
+ } catch (ServerException $e) {
+ common_log(LOG_WARNING, 'Discarding broadcast_oauth for notice '.$notice->id.' because of exception: '.$e->getMessage());
+ return true;
+ }
$statustxt = format_status($notice);
$params = twitter_update_params($notice);
// Twitter still has a 140-char hardcoded max.
if (mb_strlen($statustxt) > 140) {
- $noticeUrl = common_shorten_url($notice->uri);
+ $noticeUrl = common_shorten_url($notice->getUrl());
$urlLen = mb_strlen($noticeUrl);
$statustxt = mb_substr($statustxt, 0, 140 - ($urlLen + 3)) . ' … ' . $noticeUrl;
}