Browse Source

apply sensitive / locale filters for search results

main
ghost 1 year ago
parent
commit
3aa7e5ff3c
  1. 27
      src/Controller/SearchController.php
  2. 36
      src/Service/TorrentService.php

27
src/Controller/SearchController.php

@ -45,15 +45,38 @@ class SearchController extends AbstractController
case 'article': case 'article':
break; break;
case 'torrent': case 'torrent':
$torrents = []; $torrents = [];
foreach ($torrentService->searchTorrents($request->query->get('query')) as $torrent) foreach ($torrentService->searchTorrents($request->query->get('query')) as $torrent)
{ {
// Apply locales filter
if ($lastTorrentLocales = $torrentService->findLastTorrentLocalesByTorrentIdApproved($torrent->getId()))
{
if (!count(
array_intersect(
$lastTorrentLocales->getValue(),
$user->getLocales()
)
)) {
continue;
}
}
// Apply sensitive filters
if ($lastTorrentSensitive = $torrentService->findLastTorrentSensitiveByTorrentIdApproved($torrent->getId()))
{
if ($user->isSensitive() && $lastTorrentSensitive->isValue())
{
continue;
}
}
// Read file // Read file
if (!$file = $torrentService->readTorrentFileByTorrentId($torrent->getId())) if (!$file = $torrentService->readTorrentFileByTorrentId($torrent->getId()))
{ {
continue; // @TODO continue; // @TODO exception
} }
// Generate keywords // Generate keywords
@ -134,7 +157,9 @@ class SearchController extends AbstractController
]); ]);
break; break;
default: default:
throw $this->createNotFoundException(); throw $this->createNotFoundException();
} }
} }

36
src/Service/TorrentService.php

@ -355,6 +355,24 @@ class TorrentService
); );
} }
public function findLastTorrentLocalesByTorrentIdApproved(
int $torrentId,
bool $approved = true
): ?TorrentLocales
{
return $this->entityManagerInterface
->getRepository(TorrentLocales::class)
->findOneBy(
[
'torrentId' => $torrentId,
'approved' => $approved
],
[
'id' => 'DESC'
]
);
}
public function findTorrentLocalesByTorrentId(int $torrentId): array public function findTorrentLocalesByTorrentId(int $torrentId): array
{ {
return $this->entityManagerInterface return $this->entityManagerInterface
@ -466,6 +484,24 @@ class TorrentService
); );
} }
public function findLastTorrentSensitiveByTorrentIdApproved(
int $torrentId,
bool $approved = true
): ?TorrentSensitive
{
return $this->entityManagerInterface
->getRepository(TorrentSensitive::class)
->findOneBy(
[
'torrentId' => $torrentId,
'approved' => $approved,
],
[
'id' => 'DESC'
]
);
}
public function findTorrentSensitiveByTorrentId(int $torrentId): array public function findTorrentSensitiveByTorrentId(int $torrentId): array
{ {
return $this->entityManagerInterface return $this->entityManagerInterface

Loading…
Cancel
Save