parent::handle($args);
$user = $apidata['user'];
-
$status = $this->trimmed('status');
$source = $this->trimmed('source');
+ $in_reply_to_status_id = intval($this->trimmed('in_reply_to_status_id'));
if (!$source) {
$source = 'api';
// as "truncated." Sending this error may screw up some clients
// that assume Twitter will truncate for them. Should we just
// truncate too? -- Zach
- header('HTTP/1.1 406 Not Acceptable');
- print "That's too long. Max notice size is 140 chars.\n";
+ $this->client_error('That\'s too long. Max notice size is 140 chars.', $code = 406, $apidata['content-type']);
exit();
}
- $notice = Notice::saveNew($user->id, $status, $source);
+ $reply_to = NULL;
+
+ if ($in_reply_to_status_id) {
+
+ // check whether notice actually exists
+ $reply = Notice::staticGet($in_reply_to_status_id);
+
+ if ($reply) {
+ $reply_to = $in_reply_to_status_id;
+ } else {
+ $this->client_error('Not found', $code = 404, $apidata['content-type']);
+ exit();
+ }
+ }
+
+ $notice = Notice::saveNew($user->id, $status, $source, 1, $reply_to);
if (is_string($notice)) {
$this->server_error($notice);
- return;
+ exit();
}
common_broadcast_notice($notice);
return true;
}
- static function saveNew($profile_id, $content, $source=NULL, $is_local=1) {
+ static function saveNew($profile_id, $content, $source=NULL, $is_local=1, $reply_to=NULL) {
$notice = new Notice();
$notice->profile_id = $profile_id;
$notice->is_local = $is_local;
+ $notice->reply_to = $reply_to;
$notice->created = DB_DataObject_Cast::dateTime();
$notice->content = $content;
$notice->rendered = common_render_content($notice->content, $notice);
$notice = Notice::staticGet($id);
if ($notice) {
-
if ($apidata['content-type'] == 'xml') {
$this->show_single_xml_status($notice);
} elseif ($apidata['content-type'] == 'json') {
$this->show_single_json_status($notice);
}
} else {
+
+ // XXX: This is all that Twitter does. It doesn't show an XML or JSON error msg.
+ // Should we call client_error() to be more consistent?
header('HTTP/1.1 404 Not Found');
}