Set object_type to ActivityObject::NOTE on notices imported from Twitter. Previously was unset which caused ActivityHandler to throw an error during onStartOpenNoticeListItemElement() and the notices would not display in the timeline.

This commit is contained in:
Nym Coy 2016-08-09 21:02:57 +05:30
parent 563b3b1328
commit 1f5e306760
2 changed files with 36 additions and 8 deletions

View File

@ -570,4 +570,28 @@ class TwitterBridgePlugin extends Plugin
return true; return true;
} }
/**
* Set the object_type field of previously imported Twitter notices to
* ActivityObject::NOTE if they are unset. Null object_type caused a notice
* not to show on the timeline.
*/
public function onEndUpgrade()
{
printfnq("Ensuring all Twitter notices have an object_type...");
$notice = new Notice();
$notice->whereAdd("source='twitter'");
$notice->whereAdd('object_type IS NULL');
if ($notice->find()) {
while ($notice->fetch()) {
$orig = Notice::getKV('id', $notice->id);
$notice->object_type = ActivityObject::NOTE;
$notice->update($orig);
}
}
printfnq("DONE.\n");
}
} }

View File

@ -137,7 +137,10 @@ class TwitterImport
'twitter', 'twitter',
array('repeat_of' => $original->id, array('repeat_of' => $original->id,
'uri' => $statusUri, 'uri' => $statusUri,
'is_local' => Notice::GATEWAY)); 'is_local' => Notice::GATEWAY,
'object_type' => ActivityObject::NOTE,
'verb' => ActivityVerb::POST
));
common_log(LOG_INFO, "Saved {$repeat->id} as a repeat of {$original->id}"); common_log(LOG_INFO, "Saved {$repeat->id} as a repeat of {$original->id}");
Notice_to_status::saveNew($repeat->id, $statusId); Notice_to_status::saveNew($repeat->id, $statusId);
return $repeat; return $repeat;
@ -146,18 +149,19 @@ class TwitterImport
$notice = new Notice(); $notice = new Notice();
$notice->profile_id = $profile->id; $notice->profile_id = $profile->id;
$notice->uri = $statusUri; $notice->uri = $statusUri;
$notice->url = $statusUri; $notice->url = $statusUri;
$notice->verb = ActivityVerb::POST; $notice->verb = ActivityVerb::POST;
$notice->created = strftime( $notice->object_type = ActivityObject::NOTE;
$notice->created = strftime(
'%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S',
strtotime($status->created_at) strtotime($status->created_at)
); );
$notice->source = 'twitter'; $notice->source = 'twitter';
$notice->reply_to = null; $notice->reply_to = null;
$replyTo = twitter_id($status, 'in_reply_to_status_id'); $replyTo = twitter_id($status, 'in_reply_to_status_id');
if (!empty($replyTo)) { if (!empty($replyTo)) {