diff --git a/src/Model/Item.php b/src/Model/Item.php index 0390730fd..cb998c0fd 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -385,6 +385,9 @@ class Item Post\ThreadUser::update($item['uri-id'], $item['uid'], ['hidden' => true]); } + DI::notify()->deleteForItem($item['uri-id']); + DI::notification()->deleteForItem($item['uri-id']); + Logger::info('Item has been marked for deletion.', ['id' => $item_id]); return true; diff --git a/src/Navigation/Notifications/Repository/Notification.php b/src/Navigation/Notifications/Repository/Notification.php index a9630464a..6a513c5dc 100644 --- a/src/Navigation/Notifications/Repository/Notification.php +++ b/src/Navigation/Notifications/Repository/Notification.php @@ -33,6 +33,7 @@ use Friendica\Navigation\Notifications\Collection; use Friendica\Navigation\Notifications\Entity; use Friendica\Navigation\Notifications\Factory; use Friendica\Network\HTTPException\NotFoundException; +use Friendica\Protocol\Activity; use Friendica\Util\DateTimeFormat; use Psr\Log\LoggerInterface; @@ -268,4 +269,23 @@ class Notification extends BaseRepository return $this->db->delete(self::$table_name, $condition); } + + public function deleteForItem(int $itemUriId): bool + { + $conditionTarget = [ + 'vid' => Verb::getID(Activity::POST), + 'target-uri-id' => $itemUriId, + ]; + + $conditionParent = [ + 'vid' => Verb::getID(Activity::POST), + 'parent-uri-id' => $itemUriId, + ]; + + $this->logger->notice('deleteForItem', ['conditionTarget' => $conditionTarget, 'conditionParent' => $conditionParent]); + + return + $this->db->delete(self::$table_name, $conditionTarget) + && $this->db->delete(self::$table_name, $conditionParent); + } } diff --git a/src/Navigation/Notifications/Repository/Notify.php b/src/Navigation/Notifications/Repository/Notify.php index 3891a6e25..75aff6b87 100644 --- a/src/Navigation/Notifications/Repository/Notify.php +++ b/src/Navigation/Notifications/Repository/Notify.php @@ -807,4 +807,10 @@ class Notify extends BaseRepository return $this->storeAndSend($params, $sitelink, $tsitelink, $hsitelink, $title, $subject, $preamble, $epreamble, $item['body'], $itemlink, true); } + + public function deleteForItem(int $itemUriId): void + { + $this->db->delete('notify', ['otype' => 'item', 'uri-id' => $itemUriId]); + $this->db->delete('notify', ['otype' => 'item', 'parent-uri-id' => $itemUriId]); + } }