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 @@ -45,15 +45,38 @@ class SearchController extends AbstractController
case 'article':
break;
case 'torrent':
$torrents = [];
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
if (!$file = $torrentService->readTorrentFileByTorrentId($torrent->getId()))
{
continue; // @TODO
continue; // @TODO exception
}
// Generate keywords
@ -134,7 +157,9 @@ class SearchController extends AbstractController @@ -134,7 +157,9 @@ class SearchController extends AbstractController
]);
break;
default:
throw $this->createNotFoundException();
}
}

36
src/Service/TorrentService.php

@ -355,6 +355,24 @@ class TorrentService @@ -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
{
return $this->entityManagerInterface
@ -466,6 +484,24 @@ class TorrentService @@ -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
{
return $this->entityManagerInterface

Loading…
Cancel
Save