X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FWorker%2FDelivery.php;h=49fe47c54c2b2a977a885832ecb5e66fa38460ef;hb=4a95ca280d665eda09529f91eb28b517a471e683;hp=3ae0be140dcdc15a1c68d48fd186e9f497e40b8f;hpb=2d88994ed9f3194b3f8295958e245aa4732c8688;p=friendica.git diff --git a/src/Worker/Delivery.php b/src/Worker/Delivery.php index 3ae0be140d..49fe47c54c 100644 --- a/src/Worker/Delivery.php +++ b/src/Worker/Delivery.php @@ -13,14 +13,14 @@ use Friendica\Core\System; use Friendica\Database\DBA; use Friendica\Model\Contact; use Friendica\Model\Item; +use Friendica\Model\ItemDeliveryData; use Friendica\Model\Queue; use Friendica\Model\User; use Friendica\Protocol\DFRN; use Friendica\Protocol\Diaspora; use Friendica\Protocol\Email; use Friendica\Util\Strings; - -require_once 'include/items.php'; +use Friendica\Util\Network; class Delivery extends BaseObject { @@ -33,9 +33,9 @@ class Delivery extends BaseObject const REMOVAL = 'removeme'; const PROFILEUPDATE = 'profileupdate'; - public static function execute($cmd, $item_id, $contact_id) + public static function execute($cmd, $target_id, $contact_id) { - Logger::log('Invoked: ' . $cmd . ': ' . $item_id . ' to ' . $contact_id, Logger::DEBUG); + Logger::log('Invoked: ' . $cmd . ': ' . $target_id . ' to ' . $contact_id, Logger::DEBUG); $top_level = false; $followup = false; @@ -43,28 +43,28 @@ class Delivery extends BaseObject $items = []; if ($cmd == self::MAIL) { - $target_item = DBA::selectFirst('mail', [], ['id' => $item_id]); + $target_item = DBA::selectFirst('mail', [], ['id' => $target_id]); if (!DBA::isResult($target_item)) { return; } $uid = $target_item['uid']; } elseif ($cmd == self::SUGGESTION) { - $target_item = DBA::selectFirst('fsuggest', [], ['id' => $item_id]); + $target_item = DBA::selectFirst('fsuggest', [], ['id' => $target_id]); if (!DBA::isResult($target_item)) { return; } $uid = $target_item['uid']; } elseif ($cmd == self::RELOCATION) { - $uid = $item_id; + $uid = $target_id; $target_item = []; } else { - $item = Item::selectFirst(['parent'], ['id' => $item_id]); + $item = Item::selectFirst(['parent'], ['id' => $target_id]); if (!DBA::isResult($item) || empty($item['parent'])) { return; } $parent_id = intval($item['parent']); - $condition = ['id' => [$item_id, $parent_id], 'moderated' => false]; + $condition = ['id' => [$target_id, $parent_id], 'moderated' => false]; $params = ['order' => ['id']]; $itemdata = Item::select([], $condition, $params); @@ -72,7 +72,7 @@ class Delivery extends BaseObject if ($item['id'] == $parent_id) { $parent = $item; } - if ($item['id'] == $item_id) { + if ($item['id'] == $target_id) { $target_item = $item; } $items[] = $item; @@ -80,16 +80,23 @@ class Delivery extends BaseObject DBA::close($itemdata); if (empty($target_item)) { - Logger::log('Item ' . $item_id . "wasn't found. Quitting here."); + Logger::log('Item ' . $target_id . "wasn't found. Quitting here."); return; } if (empty($parent)) { - Logger::log('Parent ' . $parent_id . ' for item ' . $item_id . "wasn't found. Quitting here."); + Logger::log('Parent ' . $parent_id . ' for item ' . $target_id . "wasn't found. Quitting here."); return; } - $uid = $target_item['contact-uid']; + if (!empty($target_item['contact-uid'])) { + $uid = $target_item['contact-uid']; + } elseif (!empty($target_item['uid'])) { + $uid = $target_item['uid']; + } else { + Logger::log('Only public users for item ' . $item_id, Logger::DEBUG); + return; + } // avoid race condition with deleting entries if ($items[0]['deleted']) { @@ -101,7 +108,7 @@ class Delivery extends BaseObject // When commenting too fast after delivery, a post wasn't recognized as top level post. // The count then showed more than one entry. The additional check should help. // The check for the "count" should be superfluous, but I'm not totally sure by now, so we keep it. - if ((($parent['id'] == $item_id) || (count($items) == 1)) && ($parent['uri'] === $parent['parent-uri'])) { + if ((($parent['id'] == $target_id) || (count($items) == 1)) && ($parent['uri'] === $parent['parent-uri'])) { Logger::log('Top level post'); $top_level = true; } @@ -142,7 +149,7 @@ class Delivery extends BaseObject } if (empty($items)) { - Logger::log('No delivery data for ' . $cmd . ' - Item ID: ' .$item_id . ' - Contact ID: ' . $contact_id); + Logger::log('No delivery data for ' . $cmd . ' - Item ID: ' .$target_id . ' - Contact ID: ' . $contact_id); } $owner = User::getOwnerDataById($uid); @@ -158,6 +165,10 @@ class Delivery extends BaseObject return; } + if (Network::isUrlBlocked($contact['url'])) { + return; + } + // Transmit via Diaspora if the thread had started as Diaspora post // This is done since the uri wouldn't match (Diaspora doesn't transmit it) if (isset($parent) && ($parent['network'] == Protocol::DIASPORA) && ($contact['network'] == Protocol::DFRN)) { @@ -170,10 +181,18 @@ class Delivery extends BaseObject case Protocol::DFRN: self::deliverDFRN($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup); + + if (in_array($cmd, [Delivery::POST, Delivery::COMMENT])) { + ItemDeliveryData::incrementQueueDone($target_id); + } break; case Protocol::DIASPORA: self::deliverDiaspora($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup); + + if (in_array($cmd, [Delivery::POST, Delivery::COMMENT])) { + ItemDeliveryData::incrementQueueDone($target_id); + } break; case Protocol::OSTATUS: @@ -211,6 +230,8 @@ class Delivery extends BaseObject * @param boolean $public_message Is the content public? * @param boolean $top_level Is it a thread starter? * @param boolean $followup Is it an answer to a remote post? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function deliverDFRN($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup) { @@ -332,6 +353,8 @@ class Delivery extends BaseObject * @param boolean $public_message Is the content public? * @param boolean $top_level Is it a thread starter? * @param boolean $followup Is it an answer to a remote post? + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function deliverDiaspora($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup) { @@ -395,6 +418,8 @@ class Delivery extends BaseObject * @param array $contact Contact record of the receiver * @param array $owner Owner record of the sender * @param array $target_item Item record of the content + * @throws \Friendica\Network\HTTPException\InternalServerErrorException + * @throws \ImagickException */ private static function deliverMail($cmd, $contact, $owner, $target_item) {