mirror of
https://github.com/YGGverse/YGGtracker.git
synced 2026-04-01 01:25:39 +00:00
init extended search feature #35
This commit is contained in:
parent
7a1fa12271
commit
5a0342a998
4 changed files with 166 additions and 13 deletions
|
|
@ -14,15 +14,111 @@ use App\Service\ActivityService;
|
|||
class SearchController extends AbstractController
|
||||
{
|
||||
public function module(
|
||||
?string $query,
|
||||
?string $type
|
||||
Request $request,
|
||||
UserService $userService,
|
||||
ActivityService $activityService
|
||||
): Response
|
||||
{
|
||||
// Defaults
|
||||
$locales = [];
|
||||
$categories = [];
|
||||
|
||||
// Extended search
|
||||
if ($request->get('filter'))
|
||||
{
|
||||
// Init user
|
||||
$user = $this->initUser(
|
||||
$request,
|
||||
$userService,
|
||||
$activityService
|
||||
);
|
||||
|
||||
// Locales
|
||||
foreach (explode('|', $this->getParameter('app.locales')) as $locale)
|
||||
{
|
||||
if ($request->get('locales'))
|
||||
{
|
||||
$locales[] =
|
||||
[
|
||||
'value' => $locale,
|
||||
'checked' => in_array($locale, (array) $request->get('locales')) ? true : false,
|
||||
];
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
$locales[] =
|
||||
[
|
||||
'value' => $locale,
|
||||
'checked' => in_array($locale, $user->getLocales()) ? true : false,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
// Categories
|
||||
foreach (explode('|', $this->getParameter('app.categories')) as $category)
|
||||
{
|
||||
if ($request->get('categories'))
|
||||
{
|
||||
$categories[] =
|
||||
[
|
||||
'value' => $category,
|
||||
'checked' => in_array($category, (array) $request->get('categories')) ? true : false,
|
||||
];
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
$categories[] =
|
||||
[
|
||||
'value' => $category,
|
||||
'checked' => in_array($category, $user->getCategories()) ? true : false,
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->render(
|
||||
'default/search/module.html.twig',
|
||||
[
|
||||
'query' => $query ? urldecode($query) : '',
|
||||
'query' => $request->get('query') ? urldecode($request->get('query')) : '',
|
||||
'filter' => $request->get('filter'),
|
||||
'sensitive' => $request->get('sensitive'),
|
||||
'locales' => $locales,
|
||||
'categories' => $categories,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
private function initUser(
|
||||
Request $request,
|
||||
UserService $userService,
|
||||
ActivityService $activityService
|
||||
): ?\App\Entity\User
|
||||
{
|
||||
// Init user
|
||||
if (!$user = $userService->findUserByAddress($request->getClientIp()))
|
||||
{
|
||||
$user = $userService->addUser(
|
||||
$request->getClientIp(),
|
||||
time(),
|
||||
$this->getParameter('app.locale'),
|
||||
explode('|', $this->getParameter('app.locales')),
|
||||
$activityService->getEventCodes(),
|
||||
$this->getParameter('app.theme'),
|
||||
$this->getParameter('app.sensitive'),
|
||||
$this->getParameter('app.yggdrasil'),
|
||||
$this->getParameter('app.posters'),
|
||||
$this->getParameter('app.approved')
|
||||
);
|
||||
|
||||
// Add user join event
|
||||
$activityService->addEventUserAdd(
|
||||
$user->getId(),
|
||||
time()
|
||||
);
|
||||
}
|
||||
|
||||
return $user;
|
||||
}
|
||||
}
|
||||
|
|
@ -265,22 +265,22 @@ class TorrentController extends AbstractController
|
|||
|
||||
// Get total torrents
|
||||
$total = $torrentService->findTorrentsTotal(
|
||||
$user->getId(),
|
||||
$request->get('filter') ? 0 : $user->getId(),
|
||||
$query,
|
||||
$user->getLocales(),
|
||||
$user->getCategories(),
|
||||
$user->isSensitive() ? false : null,
|
||||
$request->get('filter') ? (array) $request->get('locales') : $user->getLocales(),
|
||||
$request->get('filter') ? (array) $request->get('categories') : $user->getCategories(),
|
||||
$request->get('filter') ? ($request->get('sensitive') ? null : false) : ($user->isSensitive() ? false : null),
|
||||
!$user->isModerator() ? true : null,
|
||||
!$user->isModerator() ? true : null,
|
||||
);
|
||||
|
||||
$torrents = [];
|
||||
foreach ($torrentService->findTorrents(
|
||||
$user->getId(),
|
||||
$request->get('filter') ? 0 : $user->getId(),
|
||||
$query,
|
||||
$user->getLocales(),
|
||||
$user->getCategories(),
|
||||
$user->isSensitive() ? false : null,
|
||||
$request->get('filter') ? (array) $request->get('locales') : $user->getLocales(),
|
||||
$request->get('filter') ? (array) $request->get('categories') : $user->getCategories(),
|
||||
$request->get('filter') ? ($request->get('sensitive') ? null : false) : ($user->isSensitive() ? false : null),
|
||||
!$user->isModerator() ? true : null,
|
||||
!$user->isModerator() ? true : null,
|
||||
$this->getParameter('app.pagination'),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue