<?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\Core\Worker;
use Friendica\Model\Conversation;
use Friendica\Model\FContact;
+use Friendica\Model\Item;
+use Friendica\Model\Post;
use Friendica\Protocol\Relay;
class Delivery
const REMOVAL = 'removeme';
const PROFILEUPDATE = 'profileupdate';
- public static function execute($cmd, $target_id, $contact_id)
+ public static function execute(string $cmd, int $post_uriid, int $contact_id, int $sender_uid = 0)
{
- Logger::info('Invoked', ['cmd' => $cmd, 'target' => $target_id, 'contact' => $contact_id]);
+ Logger::info('Invoked', ['cmd' => $cmd, 'target' => $post_uriid, 'sender_uid' => $sender_uid, 'contact' => $contact_id]);
$top_level = false;
$followup = false;
$items = [];
if ($cmd == self::MAIL) {
- $target_item = DBA::selectFirst('mail', [], ['id' => $target_id]);
+ $target_item = DBA::selectFirst('mail', [], ['id' => $post_uriid]);
if (!DBA::isResult($target_item)) {
return;
}
$uid = $target_item['uid'];
} elseif ($cmd == self::SUGGESTION) {
- $target_item = DBA::selectFirst('fsuggest', [], ['id' => $target_id]);
+ $target_item = DBA::selectFirst('fsuggest', [], ['id' => $post_uriid]);
if (!DBA::isResult($target_item)) {
return;
}
$uid = $target_item['uid'];
} elseif ($cmd == self::RELOCATION) {
- $uid = $target_id;
+ $uid = $post_uriid;
$target_item = [];
} else {
- $item = Model\Item::selectFirst(['parent'], ['id' => $target_id]);
+ $item = Model\Post::selectFirst(['id', 'parent'], ['uri-id' => $post_uriid, 'uid' => $sender_uid]);
if (!DBA::isResult($item) || empty($item['parent'])) {
+ Logger::warning('Post not found', ['uri-id' => $post_uriid, 'uid' => $sender_uid]);
return;
}
+ $target_id = intval($item['id']);
$parent_id = intval($item['parent']);
- $condition = ['id' => [$target_id, $parent_id], 'visible' => true, 'moderated' => false];
+ $condition = ['id' => [$target_id, $parent_id], 'visible' => true];
$params = ['order' => ['id']];
- $itemdata = Model\Item::select([], $condition, $params);
+ $itemdata = Model\Post::select(Item::DELIVER_FIELDLIST, $condition, $params);
- while ($item = Model\Item::fetch($itemdata)) {
+ while ($item = Model\Post::fetch($itemdata)) {
if ($item['verb'] == Activity::ANNOUNCE) {
continue;
}
}
$condition = ['uri' => $target_item['thr-parent'], 'uid' => $target_item['uid']];
- $thr_parent = Model\Item::selectFirst(['network', 'object'], $condition);
+ $thr_parent = Model\Post::selectFirst(['network', 'object'], $condition);
if (!DBA::isResult($thr_parent)) {
// Shouldn't happen. But when this does, we just take the parent as thread parent.
// That's totally okay for what we use this variable here.
}
if (empty($items)) {
- Logger::log('No delivery data for ' . $cmd . ' - Item ID: ' .$target_id . ' - Contact ID: ' . $contact_id);
+ Logger::notice('No delivery data', ['command' => $cmd, 'uri-id' => $post_uriid, 'cid' => $contact_id]);
}
$owner = Model\User::getOwnerDataById($uid);
$contact['network'] = Protocol::DFRN;
}
- Logger::notice('Delivering', ['cmd' => $cmd, 'target' => $target_id, 'followup' => $followup, 'network' => $contact['network']]);
+ Logger::notice('Delivering', ['cmd' => $cmd, 'uri-id' => $post_uriid, 'followup' => $followup, 'network' => $contact['network']]);
switch ($contact['network']) {
case Protocol::DFRN:
if (empty($target_item['title'])) {
$condition = ['uri' => $target_item['parent-uri'], 'uid' => $owner['uid']];
- $title = Model\Item::selectFirst(['title'], $condition);
+ $title = Model\Post::selectFirst(['title'], $condition);
if (DBA::isResult($title) && ($title['title'] != '')) {
$subject = $title['title'];
} else {
$condition = ['parent-uri' => $target_item['parent-uri'], 'uid' => $owner['uid']];
- $title = Model\Item::selectFirst(['title'], $condition);
+ $title = Model\Post::selectFirst(['title'], $condition);
if (DBA::isResult($title) && ($title['title'] != '')) {
$subject = $title['title'];