has('search_type') && $request->input('search_type') === 'adv') { $searchType = 'advanced'; } $ordering = $releases->getBrowseOrdering(); $orderBy = ($request->has('ob') && \in_array($request->input('ob'), $ordering, false) ? $request->input('ob') : ''); $page = $request->has('page') && is_numeric($request->input('page')) ? $request->input('page') : 1; $offset = ($page - 1) * config('nntmux.items_per_page'); $subject = ''; $search = ''; $id = ''; $category = [0]; $lastvisit = $this->userdata->lastlogin; if ($searchType === 'basic' && $request->missing('searchadvr') && ($request->has('id') || $request->has('subject') || $request->has('search'))) { $searchString = []; switch (true) { case $request->filled('subject'): $searchString['searchname'] = (string) $request->input('subject') ?? []; $subject = $searchString['searchname']; break; case $request->filled('id'): $searchString['searchname'] = (string) $request->input('id') ?? []; $id = $searchString['searchname']; break; case $request->filled('search'): $searchString['searchname'] = (string) $request->input('search') ?? []; $search = $searchString['searchname']; break; default: $searchString['searchname'] = ''; } $categoryID[] = -1; if ($request->has('t')) { $categoryID = explode(',', $request->input('t')); } $orderByUrls = []; foreach ($releases->getBrowseOrdering() as $orderType) { $orderByUrls['orderby'.$orderType] = url('/search?search='.htmlentities($searchString['searchname'], ENT_QUOTES | ENT_HTML5).'&t='.implode(',', $categoryID).'&ob='.$orderType); } $rslt = $releases->search( $searchString, -1, -1, -1, -1, -1, $offset, config('nntmux.items_per_page'), $orderBy, -1, $this->userdata->categoryexclusions ?? [], 'basic', $categoryID); $results = $this->paginate($rslt ?? [], $rslt[0]->_totalrows ?? 0, config('nntmux.items_per_page'), $page, $request->url(), $request->query()); $category = $categoryID; } else { $orderByUrls = []; } $searchVars = [ 'searchadvr' => '', 'searchadvsubject' => '', 'searchadvposter' => '', 'searchadvfilename' => '', 'searchadvdaysnew' => '', 'searchadvdaysold' => '', 'searchadvgroups' => '', 'searchadvcat' => '', 'searchadvsizefrom' => '', 'searchadvsizeto' => '', 'searchadvhasnfo' => '', 'searchadvhascomments' => '', ]; foreach ($searchVars as $searchVarKey => $searchVar) { $searchVars[$searchVarKey] = ($request->has($searchVarKey) ? (string) $request->input($searchVarKey) : ''); } $searchVars['selectedgroup'] = $searchVars['searchadvgroups']; $searchVars['selectedcat'] = $searchVars['searchadvcat']; $searchVars['selectedsizefrom'] = $searchVars['searchadvsizefrom']; $searchVars['selectedsizeto'] = $searchVars['searchadvsizeto']; if ($searchType !== 'basic' && $request->missing('id') && $request->missing('subject') && $request->anyFilled(['searchadvr', 'searchadvsubject', 'searchadvfilename', 'searchadvposter'])) { $orderByString = ''; foreach ($searchVars as $searchVarKey => $searchVar) { $orderByString .= "&$searchVarKey=".htmlentities($searchVar, ENT_QUOTES | ENT_HTML5); } $orderByString = ltrim($orderByString, '&'); $orderByUrls = []; foreach ($ordering as $orderType) { $orderByUrls['orderby'.$orderType] = url('/search?'.$orderByString.'&search_type=adv&ob='.$orderType); } $searchArr = [ 'searchname' => $searchVars['searchadvr'] === '' ? -1 : $searchVars['searchadvr'], 'name' => $searchVars['searchadvsubject'] === '' ? -1 : $searchVars['searchadvsubject'], 'fromname' => $searchVars['searchadvposter'] === '' ? -1 : $searchVars['searchadvposter'], 'filename' => $searchVars['searchadvfilename'] === '' ? -1 : $searchVars['searchadvfilename'], ]; $rslt = $releases->search( $searchArr, $searchVars['searchadvgroups'], $searchVars['searchadvsizefrom'], $searchVars['searchadvsizeto'], ($searchVars['searchadvdaysnew'] === '' ? -1 : $searchVars['searchadvdaysnew']), ($searchVars['searchadvdaysold'] === '' ? -1 : $searchVars['searchadvdaysold']), $offset, config('nntmux.items_per_page'), $orderBy, -1, $this->userdata->categoryexclusions ?? [], 'advanced', [$searchVars['searchadvcat'] === '' ? -1 : $searchVars['searchadvcat']] ); $results = $this->paginate($rslt ?? [], $rslt[0]->_totalrows ?? 0, config('nntmux.items_per_page'), $page, $request->url(), $request->query()); } $this->viewData = array_merge($this->viewData, $searchVars, $orderByUrls, [ 'subject' => $subject, 'search' => $search, 'id' => $id, 'category' => $category, 'covgroup' => '', 'lastvisit' => $lastvisit, 'sizelist' => [ -1 => '--Select--', 1 => '100MB', 2 => '250MB', 3 => '500MB', 4 => '1GB', 5 => '2GB', 6 => '3GB', 7 => '4GB', 8 => '8GB', 9 => '16GB', 10 => '32GB', 11 => '64GB', ], 'results' => $results, 'sadvanced' => $searchType !== 'basic', 'grouplist' => UsenetGroup::getGroupsForSelect(), 'catlist' => Category::getForSelect(), 'meta_title' => 'Search Nzbs', 'meta_keywords' => 'search,nzb,description,details', 'meta_description' => 'Search for Nzbs', ]); return view('search.index', $this->viewData); } }