function getUser()
{
- return User::getKV($this->user_id);
+ return Profile::getByID($this->user_id)->getUser();
}
function getProfile()
{
- return Profile::getKV('id', $this->user_id);
+ return Profile::getByID($this->user_id);
}
// Make sure we only ever delete one record at a time
function tryLogin()
{
- $flink = Foreign_link::getByForeignID($this->fbuid, FACEBOOK_SERVICE);
-
- if (!empty($flink)) {
+ try {
+ $flink = Foreign_link::getByForeignID($this->fbuid, FACEBOOK_SERVICE);
$user = $flink->getUser();
- if (!empty($user)) {
-
- common_log(
- LOG_INFO,
- sprintf(
- 'Logged in Facebook user %s as user %d (%s)',
- $this->fbuid,
- $user->nickname,
- $user->id
- ),
- __FILE__
- );
+ common_log(
+ LOG_INFO,
+ sprintf(
+ 'Logged in Facebook user %s as user %d (%s)',
+ $this->fbuid,
+ $user->nickname,
+ $user->id
+ ),
+ __FILE__
+ );
- common_set_user($user);
- common_real_login(true);
+ common_set_user($user);
+ common_real_login(true);
- // clear out the stupid cookie
- setcookie('fb_access_token', '', time() - 3600); // one hour ago
+ // clear out the stupid cookie
+ setcookie('fb_access_token', '', time() - 3600); // one hour ago
- $this->goHome($user->nickname);
- }
+ $this->goHome($user->nickname);
- } else {
+ } catch (NoResultException $e) {
$this->showForm(null, $this->bestNewNickname());
}
}
$this->notice = $notice;
$profile_id = $profile ? $profile->id : $notice->profile_id;
- $this->flink = Foreign_link::getByUserID(
- $profile_id,
- FACEBOOK_SERVICE
- );
-
- if (!empty($this->flink)) {
+ try {
+ $this->flink = Foreign_link::getByUserID($profile_id, FACEBOOK_SERVICE);
$this->user = $this->flink->getUser();
+ } catch (NoResultException $e) {
+ // at least $this->flink could've gotten set to something,
+ // but the logic that was here before didn't care, so let's not care either
}
}
$flink = Foreign_link::getByForeignID($this->twuid, TWITTER_SERVICE);
$user = $flink->getUser();
- if ($user instanceof User) {
- common_debug('TwitterBridge Plugin - ' .
- "Logged in Twitter user $flink->foreign_id as user $user->id ($user->nickname)");
+ common_debug('TwitterBridge Plugin - ' .
+ "Logged in Twitter user $flink->foreign_id as user $user->id ($user->nickname)");
- common_set_user($user);
- common_real_login(true);
- $this->goHome($user->nickname);
- }
+ common_set_user($user);
+ common_real_login(true);
+ $this->goHome($user->nickname);
} catch (NoResultException $e) {
// Either no Foreign_link was found or not the user connected to it.
// Let's just continue to allow creating or logging in as a new user.
}
common_debug("TwitterBridge Plugin - No flink found for twuid: {$this->twuid} - new user");
+ // FIXME: what do we want to do here? I forgot
return;
throw new ServerException(_m('No foreign link found for Twitter user'));
}
$this->elementEnd('ul');
- if ($this->flink) {
+ if ($this->flink instanceof Foreign_link) {
// TRANS: Button text for saving Twitter integration settings.
$this->submit('save', _m('BUTTON','Save'));
} else {
return $flinks;
}
+ // FIXME: make it so we can force a Foreign_link here without colliding with parent
function childTask($flink) {
// Each child ps needs its own DB connection
unset($_DB_DATAOBJECT['CONNECTIONS']);
}
- function fetchTwitterFriends($flink)
+ function fetchTwitterFriends(Foreign_link $flink)
{
$friends = array();
return $friends;
}
- function subscribeTwitterFriends($flink)
+ function subscribeTwitterFriends(Foreign_link $flink)
{
+ try {
+ $profile = $flink->getProfile();
+ } catch (NoResultException $e) {
+ common_log(LOG_WARNING, 'Foreign_link has no matching local profile for local ID: '.$flink->user_id);
+ }
+
$friends = $this->fetchTwitterFriends($flink);
if (empty($friends)) {
return false;
}
- $profile = $flink->getProfile();
-
foreach ($friends as $friend) {
$friend_name = $friend->screen_name;
continue;
}
- // Check to see if there's a related local user
-
- $friend_flink = Foreign_link::getByForeignID($friend_id,
- TWITTER_SERVICE);
-
- if (!empty($friend_flink)) {
+ // Check to see if there's a related local user and try to subscribe
+ try {
+ $friend_flink = Foreign_link::getByForeignID($friend_id, TWITTER_SERVICE);
// Get associated user and subscribe her
-
- $friend_profile = Profile::getKV('id', $friend_flink->user_id);
-
- if ($friend_profile instanceof Profile) {
- try {
- $other = Profile::getKV('id', $invites->user_id);
- Subscription::start($profile, $friend_profile);
- common_log(LOG_INFO,
- $this->name() . ' - Subscribed ' .
- "{$friend_profile->nickname} to {$profile->nickname}.");
- } catch (Exception $e) {
- common_debug($this->name() .
- ' - Tried and failed subscribing ' .
- "{$friend_profile->nickname} to {$profile->nickname} - " .
- $e->getMessage());
- }
- }
+ $friend_profile = $friend_flink->getProfile();
+
+ Subscription::start($profile, $friend_profile);
+ common_log(LOG_INFO,
+ $this->name() . ' - Subscribed ' .
+ "{$friend_profile->nickname} to {$profile->nickname}.");
+ } catch (NoResultException $e) {
+ // either no foreign link for this friend's foreign ID or no profile found on local ID.
+ } catch (Exception $e) {
+ common_debug($this->name() .
+ ' - Tried and failed subscribing ' .
+ "{$friend_profile->nickname} to {$profile->nickname} - " .
+ $e->getMessage());
}
}
return $flinks;
}
+ // FIXME: make it so we can force a Foreign_link here without colliding with parent
function childTask($flink) {
// Each child ps needs its own DB connection
unset($_DB_DATAOBJECT['CONNECTIONS']);
}
- function getTimeline($flink, $timelineUri = 'home_timeline')
+ function getTimeline(Foreign_link $flink, $timelineUri = 'home_timeline')
{
- if (empty($flink)) {
- common_log(LOG_ERR, $this->name() .
- " - Can't retrieve Foreign_link for foreign ID $fid");
- return;
- }
-
common_log(LOG_DEBUG, $this->name() . ' - Trying to get ' . $timelineUri .
' timeline for Twitter user ' . $flink->foreign_id);
$importer = new TwitterImport();
$notice = $importer->importStatus($status);
if ($notice instanceof Notice) {
- $flink = Foreign_link::getByForeignID($receiver, TWITTER_SERVICE);
- if ($flink instanceof Foreign_link) {
+ try {
+ $flink = Foreign_link::getByForeignID($receiver, TWITTER_SERVICE);
common_log(LOG_DEBUG, "TweetInQueueHandler - Got flink so add notice ".
$notice->id." to attentions for user ".$flink->user_id);
try {
common_log(LOG_ERR, "Failed adding notice {$notice->id} to attentions for user {$flink->user_id}: " .
$e->getMessage());
}
- } else {
+ } catch (NoResultException $e) {
common_log(LOG_DEBUG, "TweetInQueueHandler - No flink found for foreign user ".$receiver);
}
}
}
foreach ($status->entities->user_mentions as $mention) {
- $flink = Foreign_link::getByForeignID($mention->id, TWITTER_SERVICE);
- if (!empty($flink)) {
- $user = User::getKV('id', $flink->user_id);
- if (!empty($user)) {
- $reply = new Reply();
- $reply->notice_id = $notice->id;
- $reply->profile_id = $user->id;
- $reply->modified = $notice->created;
- common_log(LOG_INFO, __METHOD__ . ": saving reply: notice {$notice->id} to profile {$user->id}");
- $id = $reply->insert();
- }
+ try {
+ $flink = Foreign_link::getByForeignID($mention->id, TWITTER_SERVICE);
+ $user = $flink->getUser();
+ $reply = new Reply();
+ $reply->notice_id = $notice->id;
+ $reply->profile_id = $user->id;
+ $reply->modified = $notice->created;
+ common_log(LOG_INFO, __METHOD__ . ": saving reply: notice {$notice->id} to profile {$user->id}");
+ $id = $reply->insert();
+ } catch (NoResultException $e) {
+ common_log(LOG_WARNING, 'No local user found for Foreign_link with local User id: '.$flink->user_id);
}
}
}
*/
function twitterAuthForUser(User $user)
{
- $flink = Foreign_link::getByUserID($user->id,
- TWITTER_SERVICE);
- if (!$flink) {
- throw new ServerException("No Twitter config for this user.");
- }
-
+ $flink = Foreign_link::getByUserID($user->id, TWITTER_SERVICE);
$token = TwitterOAuthClient::unpackToken($flink->credentials);
if (!$token) {
throw new ServerException("No Twitter OAuth credentials for this user.");
*/
function twitterAuthForUser(User $user)
{
- $flink = Foreign_link::getByUserID($user->id,
- TWITTER_SERVICE);
- if (!$flink) {
- throw new ServerException("No Twitter config for this user.");
- }
-
+ $flink = Foreign_link::getByUserID($user->id, TWITTER_SERVICE);
$token = TwitterOAuthClient::unpackToken($flink->credentials);
if (!$token) {
throw new ServerException("No Twitter OAuth credentials for this user.");
*/
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::getKV('id', $notice->repeat_of));
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);