mirror of
https://github.com/YGGverse/YGGtracker.git
synced 2025-09-10 21:32:24 +00:00
apply sensitive / locale filters for search results
This commit is contained in:
parent
d2cb66f51d
commit
3aa7e5ff3c
@ -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
|
||||
]);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
throw $this->createNotFoundException();
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
);
|
||||
}
|
||||
|
||||
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…
x
Reference in New Issue
Block a user