"2fa_recovery_codes" => [
"comment" => "Two-factor authentication recovery codes",
"fields" => [
- "uid" => ["type" => "int unsigned", "not null" => "1", "comment" => "User ID"],
- "code" => ["type" => "varchar(50)", "not null" => "1", "comment" => "Recovery code string"],
+ "uid" => ["type" => "mediumint unsigned", "not null" => "1", "primary" => "1", "relation" => ["user" => "uid"], "comment" => "User ID"],
+ "code" => ["type" => "varchar(50)", "not null" => "1", "primary" => "1", "comment" => "Recovery code string"],
"generated" => ["type" => "datetime", "not null" => "1", "comment" => "Datetime the code was generated"],
"used" => ["type" => "datetime", "comment" => "Datetime the code was used"],
],
*
* @param array $tags
* @param boolean $sensitive
- * @param array $implicit_mentions List of profile URLs to skip
* @return string with tags
*/
- private static function constructTagString(array $tags, $sensitive)
+ private static function constructTagString(array $tags = null, $sensitive = false)
{
if (empty($tags)) {
return '';
$item['object-type'] = ACTIVITY_OBJ_COMMENT;
}
- if (($activity['id'] != $activity['reply-to-id']) && !Item::exists(['uri' => $activity['reply-to-id']])) {
+ if (empty($activity['directmessage']) && ($activity['id'] != $activity['reply-to-id']) && !Item::exists(['uri' => $activity['reply-to-id']])) {
Logger::log('Parent ' . $activity['reply-to-id'] . ' not found. Try to refetch it.');
self::fetchMissingActivity($activity['reply-to-id'], $activity);
}
return [];
}
$object_data['object_id'] = $object_id;
- $object_data['directmessage'] = JsonLD::fetchElement($activity, 'litepub:directMessage');
+
+ // Test if it is an answer to a mail
+ if (DBA::exists('mail', ['uri' => $object_data['reply-to-id']])) {
+ $object_data['directmessage'] = true;
+ } else {
+ $object_data['directmessage'] = JsonLD::fetchElement($activity, 'litepub:directMessage');
+ }
// We had been able to retrieve the object data - so we can trust the source
$trust_source = true;
$object_data['receiver'] = self::getReceivers($object, $object_data['actor'], $object_data['tags']);
- // Test if it is an answer to a mail
- if (DBA::exists('mail', ['uri' => $object_data['reply-to-id']])) {
- $object_data['directmessage'] = true;
- }
-
// Common object data:
// Unhandled
$reply = DBA::selectFirst('mail', ['uri'], ['parent-uri' => $mail['parent-uri'], 'reply' => false]);
+ // Making the post more compatible for Mastodon by:
+ // - Making it a note and not an article (no title)
+ // - Moving the title into the "summary" field that is used as a "content warning"
+ $mail['body'] = '[abstract]' . $mail['title'] . "[/abstract]\n" . $mail['body'];
+ $mail['title'] = '';
+
$mail['author-link'] = $mail['owner-link'] = $mail['from-url'];
$mail['allow_cid'] = '<'.$mail['contact-id'].'>';
$mail['allow_gid'] = '';