public function index(Request $request)
{
$filter = $request->input('filter', 'skin');
$sort = $request->input('sort', 'time');
$uid = $request->input('uid', 0);
$page = $request->input('page', 1);
$page = $page <= 0 ? 1 : $page;
$sort_by = $sort == "time" ? "upload_at" : $sort;
if ($filter == "skin") {
$textures = Texture::where(function ($query) {
$query->where('type', '=', 'steve')->orWhere('type', '=', 'alex');
})->orderBy($sort_by, 'desc');
} elseif ($filter == "user") {
$textures = Texture::where('uploader', $uid)->orderBy($sort_by, 'desc');
} else {
$textures = Texture::where('type', $filter)->orderBy($sort_by, 'desc');
}
if (!is_null($this->user)) {
// show private textures when show uploaded textures of current user
if ($uid != $this->user->uid && !$this->user->isAdmin()) {
$textures = $textures->where('public', '1');
}
} else {
$textures = $textures->where('public', '1');
}
$total_pages = ceil($textures->count() / 20);
$textures = $textures->skip(($page - 1) * 20)->take(20)->get();
return view('skinlib.index')->with('user', $this->user)->with('sort', $sort)->with('filter', $filter)->with('textures', $textures)->with('page', $page)->with('total_pages', $total_pages);
}