From 5c7b8bf6b29445ba3bb572e7f2b25e99042badfd Mon Sep 17 00:00:00 2001 From: gplane Date: Mon, 24 Apr 2017 17:02:29 +0800 Subject: [PATCH] Optimize filter of skin library --- app/Http/Controllers/SkinlibController.php | 33 +++++++++++----------- resources/views/skinlib/master.tpl | 10 +++---- resources/views/skinlib/show.tpl | 2 +- resources/views/vendor/breadcrumb.tpl | 9 +++--- 4 files changed, 28 insertions(+), 26 deletions(-) diff --git a/app/Http/Controllers/SkinlibController.php b/app/Http/Controllers/SkinlibController.php index 4cb56c02..9a18d659 100644 --- a/app/Http/Controllers/SkinlibController.php +++ b/app/Http/Controllers/SkinlibController.php @@ -32,41 +32,41 @@ class SkinlibController extends Controller { $filter = $request->input('filter', 'skin'); $sort = $request->input('sort', 'time'); - $uid = $request->input('uid', session('uid')); - $page = $request->input('page', 1); - $page = $page <= 0 ? 1 : $page; + $uid = intval($request->input('uid', 0)); + $page = $request->input('page', 1) <= 0 ? 1 : $request->input('page', 1); $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'); - + $textures = Texture::where('type', 'steve')->orWhere('type', 'alex'); } else { - $textures = Texture::where('type', $filter)->orderBy($sort_by, 'desc'); + $textures = Texture::where('type', $filter); + } + + $textures = $textures->orderBy($sort_by, 'desc')->get(); + + if ($uid != 0) { + $textures = $textures->where('uploader', $uid); } if (!is_null($this->user)) { // show private textures when show uploaded textures of current user - if (!$this->user->isAdmin()) - $textures = $textures->where('public', '1') - ->orWhere('uploader', $this->user->uid); + if ($uid != $this->user->uid && !$this->user->isAdmin()) { + $textures = $textures->where('public', 1) + ->merge($textures->where('uploader', $this->user->uid)); + } } else { $textures = $textures->where('public', '1'); } $total_pages = ceil($textures->count() / 20); - $textures = $textures->skip(($page - 1) * 20)->take(20)->get(); + $textures = $textures->slice(($page - 1) * 20); return view('skinlib.index')->with('user', $this->user) ->with('sort', $sort) ->with('filter', $filter) + ->with('uploader', $uid) ->with('textures', $textures) ->with('page', $page) ->with('total_pages', $total_pages); @@ -96,6 +96,7 @@ class SkinlibController extends Controller return view('skinlib.search')->with('user', $this->user) ->with('sort', $sort) ->with('filter', $filter) + ->with('uploader', 0) ->with('q', $q) ->with('textures', $textures); } diff --git a/resources/views/skinlib/master.tpl b/resources/views/skinlib/master.tpl index 30ce267c..1f8534fc 100644 --- a/resources/views/skinlib/master.tpl +++ b/resources/views/skinlib/master.tpl @@ -39,14 +39,14 @@ {{ trans('skinlib.general.filter') }}