diff --git a/src/Controller/ActivityController.php b/src/Controller/ActivityController.php index 2f62d78..4ac57f1 100644 --- a/src/Controller/ActivityController.php +++ b/src/Controller/ActivityController.php @@ -764,6 +764,44 @@ class ActivityController extends AbstractController break; + // Torrent Wanted + case $activity::EVENT_TORRENT_WANTED_ADD: + + // Init torrent + if (!$torrent = $torrentService->getTorrent($activity->getTorrentId())) + { + throw $this->createNotFoundException(); + } + + return $this->render( + 'default/activity/event/torrent/wanted/add' . $extension, + [ + 'id' => $activity->getId(), + 'added' => $activity->getAdded(), + 'torrent' => + [ + 'id' => $torrent->getId(), + 'sensitive' => $torrent->isSensitive(), + 'approved' => $torrent->isApproved(), + 'name' => $torrentService->readTorrentFileByTorrentId( + $torrent->getId() + )->getName() + ], + 'session' => + [ + 'user' => + [ + 'id' => $user->getId(), + 'sensitive' => $user->isSensitive(), + 'moderator' => $user->isModerator(), + 'owner' => $user->getId() === $torrent->getUserId(), + ] + ] + ] + ); + + break; + /// Torrent Locales case $activity::EVENT_TORRENT_LOCALES_ADD: diff --git a/src/Controller/TorrentController.php b/src/Controller/TorrentController.php index 09e9755..8027390 100644 --- a/src/Controller/TorrentController.php +++ b/src/Controller/TorrentController.php @@ -2191,6 +2191,17 @@ class TorrentController extends AbstractController } } + // Register activity event only on previous status changed + if ($leechers && !$seeders && + $leechers != (int) $torrent->getLeechers() && $seeders != (int) $torrent->getSeeders()) + { + $activityService->addEventTorrentWantedAdd( + $torrent->getUserId(), // just required field, let's relate with author, because we don't know which exactly user requires for seeders from crontab @TODO + time(), + $torrent->getId() + ); + } + // Update DB $torrentService->updateTorrentScrape( $torrent->getId(), diff --git a/src/Entity/Activity.php b/src/Entity/Activity.php index a08cfcb..3b208b9 100644 --- a/src/Entity/Activity.php +++ b/src/Entity/Activity.php @@ -57,6 +57,8 @@ class Activity public const EVENT_TORRENT_DOWNLOAD_MAGNET_ADD = 2600; + public const EVENT_TORRENT_WANTED_ADD = 2700; + // ... #[ORM\Column] diff --git a/src/Service/ActivityService.php b/src/Service/ActivityService.php index 14eaa9f..4dbbb74 100644 --- a/src/Service/ActivityService.php +++ b/src/Service/ActivityService.php @@ -61,6 +61,8 @@ class ActivityService Activity::EVENT_TORRENT_DOWNLOAD_FILE_ADD, Activity::EVENT_TORRENT_DOWNLOAD_MAGNET_ADD, + + Activity::EVENT_TORRENT_WANTED_ADD, ]; } @@ -365,6 +367,18 @@ class ActivityService ] = $code; break; + + case Activity::EVENT_TORRENT_WANTED_ADD: + + $events + [ + $this->translatorInterface->trans('Torrents') + ] + [ + $this->translatorInterface->trans('Wanted') + ] = $code; + + break; } } @@ -847,6 +861,37 @@ class ActivityService return $activity; } + + public function addEventTorrentWantedAdd( + int $userId, + int $added, + int $torrentId + ): ?Activity + { + $activity = new Activity(); + + $activity->setEvent( + Activity::EVENT_TORRENT_WANTED_ADD + ); + + $activity->setUserId( + $userId + ); + + $activity->setAdded( + $added + ); + + $activity->setTorrentId( + $torrentId + ); + + $this->entityManagerInterface->persist($activity); + $this->entityManagerInterface->flush(); + + return $activity; + } + /// Torrent Download public function addEventTorrentDownloadFileAdd( int $userId, diff --git a/templates/default/activity/event/torrent/wanted/add.html.twig b/templates/default/activity/event/torrent/wanted/add.html.twig new file mode 100644 index 0000000..06c14a5 --- /dev/null +++ b/templates/default/activity/event/torrent/wanted/add.html.twig @@ -0,0 +1,23 @@ +