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]);
+
+ if (!empty($sender_uid)) {
+ $post = Post::selectFirst(['id'], ['uri-id' => $post_uriid, 'uid' => $sender_uid]);
+ if (!DBA::isResult($post)) {
+ Logger::warning('Post not found', ['uri-id' => $post_uriid, 'uid' => $sender_uid]);
+ return;
+ }
+ $target_id = $post['id'];
+ } elseif (!in_array($cmd, [Delivery::MAIL, Delivery::SUGGESTION, Delivery::REMOVAL, Delivery::RELOCATION])) {
+ $post = Post::selectFirst(['id', 'uid', 'uri-id'], ['item-id' => $post_uriid]);
+ if (DBA::isResult($post)) {
+ $target_id = $post['id'];
+ $sender_uid = $post['uid'];
+ $post_uriid = $post['uri-id'];
+ }
+ } else {
+ $target_id = $post_uriid;
+ }
$top_level = false;
$followup = false;
$uid = $target_id;
$target_item = [];
} else {
- $item = Model\Item::selectFirst(['parent'], ['id' => $target_id]);
+ $item = Model\Post::selectFirst(['parent'], ['id' => $target_id]);
if (!DBA::isResult($item) || empty($item['parent'])) {
return;
}
$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($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'];