continue;
}
+ // Don't save it if the user is protected
+ // FIXME: save it but treat it as private
+
+ if ($status->user->protected) {
+ continue;
+ }
+
$this->saveStatus($status, $flink);
}
$flink->update();
}
- function saveStatus($status, $flink)
+ function saveStatus($status, $flink=null)
{
$profile = $this->ensureProfile($status->user);
if (empty($profile)) {
common_log(LOG_ERR, $this->name() .
' - Problem saving notice. No associated Profile.');
- return;
+ return null;
}
- $statusUri = 'http://twitter.com/'
- . $status->user->screen_name
- . '/status/'
- . $status->id;
+ $statusUri = $this->makeStatusURI($status->user->screen_name, $status->id);
// check to see if we've already imported the status
$this->name() .
" - Ignoring duplicate import: $statusUri"
);
- return;
+ return $dupe;
+ }
+
+ // If it's a retweet, save it as a repeat!
+
+ if (!empty($status->retweeted_status)) {
+ $original = $this->saveStatus($status->retweeted_status);
+ return $original->repeat($profile->id, 'twitter');
}
$notice = new Notice();
);
$notice->source = 'twitter';
+
$notice->reply_to = null;
+
+ if (!empty($status->in_reply_to_status_id)) {
+ $replyUri = $this->makeStatusURI($status->in_reply_to_screen_name, $status->in_reply_to_status_id);
+ $reply = Notice::staticGet('uri', $replyUri);
+ if (!empty($reply)) {
+ $notice->reply_to = $reply->id;
+ $notice->conversation = $reply->conversation;
+ }
+ }
+
+ if (empty($notice->conversation)) {
+ $conv = Conversation::create();
+ $notice->conversation = $conv->id;
+ }
+
$notice->is_local = Notice::GATEWAY;
$notice->content = common_shorten_links($status->text);
Event::handle('EndNoticeSave', array($notice));
}
- $orig = clone($notice);
- $conv = Conversation::create();
-
- $notice->conversation = $conv->id;
-
- if (!$notice->update($orig)) {
- common_log_db_error($notice, 'UPDATE', __FILE__);
- common_log(LOG_ERR, $this->name() .
- ' - Problem saving notice.');
+ if (!empty($flink)) {
+ Inbox::insertNotice($flink->user_id, $notice->id);
}
-
- Inbox::insertNotice($flink->user_id, $notice->id);
$notice->blowOnInsert();
return $notice;
}
+ /**
+ * Make an URI for a status.
+ *
+ * @param object $status status object
+ *
+ * @return string URI
+ */
+
+ function makeStatusURI($username, $id)
+ {
+ return 'http://twitter.com/'
+ . $username
+ . '/status/'
+ . $id;
+ }
+
/**
* Look up a Profile by profileurl field. Profile::staticGet() was
* not working consistently.