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;
-use Friendica\Model\Notify;
-use Friendica\Model\Notify\Type;
+use Friendica\Model\Notification;
use Friendica\Model\PermissionSet;
use Friendica\Model\Post;
use Friendica\Model\Post\Category;
}
/**
- * Generate an atom entry for a given item id
+ * Generate an atom entry for a given uri id and user
*
- * @param int $item_id The item id
+ * @param int $uri_id The uri id
+ * @param int $uid The user id
* @param boolean $conversation Show the conversation. If false show the single post.
*
* @return string DFRN feed entry
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public static function itemFeed($item_id, $conversation = false)
+ public static function itemFeed(int $uri_id, int $uid, bool $conversation = false)
{
if ($conversation) {
- $condition = ['parent' => $item_id];
+ $condition = ['parent-uri-id' => $uri_id];
} else {
- $condition = ['id' => $item_id];
+ $condition = ['uri-id' => $uri_id];
}
+ $condition['uid'] = $uid;
+
$items = Post::selectToArray(Item::DELIVER_FIELDLIST, $condition);
if (!DBA::isResult($items)) {
return '';
// send a notification
notification(
[
- "type" => Type::POKE,
- "otype" => Notify\ObjectType::PERSON,
+ "type" => Notification\Type::POKE,
+ "otype" => Notification\ObjectType::PERSON,
"activity" => $verb,
"verb" => $item["verb"],
"uid" => $importer["importer_uid"],
$xt = XML::parseString($item["target"]);
if ($xt->type == Activity\ObjectType::NOTE) {
- $item_tag = Post::selectFirst(['id', 'uri-id', 'tag'], ['uri' => $xt->id, 'uid' => $importer["importer_uid"]]);
+ $item_tag = Post::selectFirst(['id', 'uri-id'], ['uri' => $xt->id, 'uid' => $importer["importer_uid"]]);
if (!DBA::isResult($item_tag)) {
Logger::log("Query failed to execute, no result returned in " . __FUNCTION__);
}
$condition = ['uri' => $uri, 'uid' => $importer["importer_uid"]];
- $item = Post::selectFirst(['id', 'parent', 'contact-id', 'file', 'deleted', 'gravity'], $condition);
+ $item = Post::selectFirst(['id', 'parent', 'contact-id', 'uri-id', 'deleted', 'gravity'], $condition);
if (!DBA::isResult($item)) {
Logger::log("Item with uri " . $uri . " for user " . $importer["importer_uid"] . " wasn't found.", Logger::DEBUG);
return;
}
- if (strstr($item['file'], '[')) {
- Logger::log("Item with uri " . $uri . " for user " . $importer["importer_uid"] . " is filed. So it won't be deleted.", Logger::DEBUG);
+ if (DBA::exists('post-category', ['uri-id' => $item['uri-id'], 'uid' => $importer['importer_uid'], 'type' => Post\Category::FILE])) {
+ Logger::notice("Item is filed. It won't be deleted.", ['uri' => $uri, 'uri-id' => $item['uri_id'], 'uid' => $importer["importer_uid"]]);
return;
}
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()"));