public static function searchPackages($term, $search_type) { $packages = []; switch ($search_type) { case 'name': $search = self::select('package', 'pkgver', 'repo')->where('package', 'like', "%{$term}%")->where('del', 0)->where('abs', 0)->get(); break; case 'description': $search = self::select('package', 'pkgver', 'repo')->where(function ($q) use($term) { foreach (Files::searchDescriptions($term) as $pkgname) { $q->orWhere('package', $pkgname); } })->where('del', 0)->where('abs', 0)->get(); break; case 'name-description': $search = self::select('package', 'pkgver', 'repo')->where(function ($q) use($term) { foreach (Files::searchDescriptions($term) as $pkgname) { $q->orWhere('package', $pkgname); } })->orWhere('package', 'like', "%{$term}%")->where('del', 0)->where('abs', 0)->get(); break; } foreach ($search as $package) { array_push($packages, ['package' => $package->package, 'pkgver' => $package->pkgver, 'repo' => $package->repo, 'pkgdesc' => Files::getDescription($package->package)]); } return $packages; }
$perpage = 50; // number of packages per page Head::setTitle('Packages'); if ($pkgrequest == 'page' || $pkgrequest == 'search' && $arg1 == 1) { return view('website.packages', ['package' => true, 'packages' => Abs::getPackages($arg1 - 1, $perpage), 'pages' => Abs::getNumPages($perpage) + 1, 'page' => $arg1, 'search_type' => 'name-description', 'search_term' => '']); } else { if ($pkgrequest == 'search') { $search_type = $arg2 == 1 ? 'name' : $arg2; if (!preg_match('/^(name|description|name-description)$/', $search_type)) { abort(404); } return view('website.packages', ['package' => true, 'packages' => Abs::searchPackages($arg1, $search_type), 'pages' => 1, 'search_type' => $search_type, 'search_term' => $arg1]); } else { if (Abs::exists($pkgrequest)) { $package = Abs::getPackage($pkgrequest); return view('website.packages', ['package' => $package, 'skip_arch' => Abs::getSkipStates($package->skip), 'pkgdesc' => Files::getDescription($pkgrequest)]); } else { return view('website.packages', ['package' => false]); } } } }); Route::get('/team', function () { Head::setTitle('Team'); return view('website.team'); }); Route::get('/wiki/{path?}', function ($path = 'index') { if ($path == 'index') { Head::setTitle('Wiki'); } else { $path = preg_replace('/\\/$/', '', $path);