AdminMediaController.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use DB, Cache;
  4. use App\{
  5. Media,
  6. Profile,
  7. Status
  8. };
  9. use Carbon\Carbon;
  10. use Illuminate\Http\Request;
  11. use Illuminate\Validation\Rule;
  12. trait AdminMediaController
  13. {
  14. public function media(Request $request)
  15. {
  16. $this->validate($request, [
  17. 'layout' => [
  18. 'nullable',
  19. 'string',
  20. 'min:1',
  21. 'max:4',
  22. Rule::in(['grid','list'])
  23. ],
  24. 'search' => 'nullable|string|min:1|max:20'
  25. ]);
  26. if($request->filled('search')) {
  27. $profiles = Profile::where('username', 'like', '%'.$request->input('search').'%')->pluck('id')->toArray();
  28. $media = Media::whereHas('status')
  29. ->with('status')
  30. ->orderby('id', 'desc')
  31. ->whereIn('profile_id', $profiles)
  32. ->orWhere('mime', $request->input('search'))
  33. ->paginate(12);
  34. } else {
  35. $media = Media::whereHas('status')->with('status')->orderby('id', 'desc')->paginate(12);
  36. }
  37. return view('admin.media.home', compact('media'));
  38. }
  39. public function mediaShow(Request $request, $id)
  40. {
  41. $media = Media::findOrFail($id);
  42. return view('admin.media.show', compact('media'));
  43. }
  44. }