<?php
/**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2021, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
use Friendica\Model\Conversation;
use Friendica\Model\Event;
use Friendica\Model\FContact;
+use Friendica\Model\GServer;
use Friendica\Model\Item;
use Friendica\Model\ItemURI;
use Friendica\Model\Mail;
$entry->setAttribute("xmlns:statusnet", ActivityNamespace::STATUSNET);
}
+ $body = Post\Media::addAttachmentsToBody($item['uri-id'], $item['body']);
+
if ($item['private'] == Item::PRIVATE) {
- $body = Item::fixPrivatePhotos($item['body'], $owner['uid'], $item, $cid);
- } else {
- $body = $item['body'];
+ $body = Item::fixPrivatePhotos($body, $owner['uid'], $item, $cid);
}
// Remove the abstract element. It is only locally important.
$item["title"] = XML::getFirstNodeValue($xpath, "atom:title/text()", $entry);
+ if (!empty($item["title"])) {
+ $item["post-type"] = Item::PT_ARTICLE;
+ } else {
+ $item["post-type"] = Item::PT_NOTE;
+ }
+
$item["created"] = XML::getFirstNodeValue($xpath, "atom:published/text()", $entry);
$item["body"] = XML::getFirstNodeValue($xpath, "dfrn:env/text()", $entry);
$item['uri-id'] = ItemURI::insert(['uri' => $item['uri'], 'guid' => $item['guid']]);
+ $item["body"] = Item::improveSharedDataInBody($item);
+
Tag::storeFromBody($item['uri-id'], $item["body"]);
// We store the data from "dfrn:diaspora_signature" in a different table, this is done in "Item::insert"
return 403;
}
}
-
+
// Get the type of the item (Top level post, reply or remote reply)
$entrytype = self::getEntryType($importer, $item);
if (in_array($entrytype, [DFRN::REPLY, DFRN::REPLY_RC])) {
// Will be overwritten for sharing accounts in Item::insert
- if (empty($item['post-type']) && ($entrytype == DFRN::REPLY)) {
- $item['post-type'] = Item::PT_COMMENT;
+ if (empty($item['post-reason']) && ($entrytype == DFRN::REPLY)) {
+ $item['post-reason'] = Item::PR_COMMENT;
}
$posted_id = Item::insert($item);
$header["direction"] = $direction;
if ($direction === Conversation::RELAY) {
- $header['post-type'] = Item::PT_RELAY;
+ $header['post-reason'] = Item::PR_RELAY;
}
// Update the contact table if the data has changed
Logger::log("Import DFRN message for user " . $importer["importer_uid"] . " from contact " . $importer["id"], Logger::DEBUG);
+ if (!empty($importer['gsid'])) {
+ if ($protocol == Conversation::PARCEL_DIASPORA_DFRN) {
+ GServer::setProtocol($importer['gsid'], Post\DeliveryData::DFRN);
+ } elseif ($protocol == Conversation::PARCEL_LEGACY_DFRN) {
+ GServer::setProtocol($importer['gsid'], Post\DeliveryData::LEGACY_DFRN);
+ }
+ }
+
// is it a public forum? Private forums aren't exposed with this method
$forum = intval(XML::getFirstNodeValue($xpath, "/atom:feed/dfrn:community/text()"));