App\Http\Controllers\SkinlibController::index PHP Method

index() public method

public index ( Illuminate\Http\Request $request )
$request Illuminate\Http\Request
    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);
    }